#!/bin/bash ## PRE INSTALLATION OPERATIONS source $RECEIVER_BASH_DIRECTORY/variables.sh source $RECEIVER_BASH_DIRECTORY/functions.sh clear log_project_title log_title_heading "Setting up the ACARSDEC decoder" log_title_message "------------------------------------------------------------------------------" if ! whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" \ --title "ACARSDEC decoder Setup" \ --yesno "ACARSDEC is a multi-channels acars decoder with built-in rtl_sdr, airspy front end or sdrplay device. Since 3.0, It comes with a database backend : acarsserv to store received acars messages.\n\nWould you like to begin the setup process now?" \ 11 78; then echo "" log_alert_heading "INSTALLATION HALTED" log_alert_message "Setup has been halted at the request of the user" echo "" log_title_message "------------------------------------------------------------------------------" log_title_heading "ACARSDEC decoder setup halted" echo "" exit 1 fi ## GATHER REQUIRED INFORMATION FROM THE USER log_heading "Determine the device type to build ACARSDEC for" log_message "Asking which type of device will be used by ACARSDEC" device=$(whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" \ --title "Device Type" \ --menu "Please choose the RTL-SDR device type which is to be used by ACARSDEC." \ 11 78 3 \ "RTL-SDR" "" \ "AirSpy" "" \ "SDRPlay" "" \ 3>&1 1>&2 2>&3) exit_status=$? if [[ $exit_status != 0 ]]; then echo "" log_alert_heading "INSTALLATION HALTED" log_alert_message "Setup has been halted at the request of the user" echo "" log_title_message "------------------------------------------------------------------------------" log_title_heading "ACARSDEC decoder setup halted" echo "" exit 1 fi ask_for_device_assignments "acarsdec" if [[ $? -ne 0 ]] ; then log_alert_heading "INSTALLATION HALTED" log_alert_message "Setup has been halted due to lack of required information" echo "" log_title_message "------------------------------------------------------------------------------" log_title_heading "ACARSDEC decoder setup halted" exit 1 fi if [[ -z $RECEIVER_DEVICE_ASSIGNED_TO_ACARS_DECODER ]]; then RECEIVER_DEVICE_ASSIGNED_TO_ACARS_DECODER="0" fi current_acars_frequencies="130.025 130.425 130.450 131.125 131.550" if [[ "${acars_decoder_installed}" == "true" ]]; then log_message "Determining which frequencies are currently assigned" exec_start=`get_config "ExecStart" "/etc/systemd/system/acarsdec.service"` current_acars_frequencies=`sed -e "s#.*-r ${RECEIVER_DEVICE_ASSIGNED_TO_ACARS_DECODER} \(\)#\1#" <<< "${exec_start}"` fi log_message "Asking the user for ACARS frequencies to monitor" acars_fequencies_title="Enter ACARS Frequencies" while [[ -z $acars_fequencies ]] ; do acars_fequencies=$(whiptail --backtitle "ACARS Frequencies" \ --title "${acars_fequencies_title}" \ --inputbox "\nEnter the ACARS frequencies you would like to monitor." \ 8 78 \ "${current_acars_frequencies}" 3>&1 1>&2 2>&3) exit_status=$? if [[ $exit_status != 0 ]]; then log_alert_heading "INSTALLATION HALTED" log_alert_message "Setup has been halted due to lack of required information" echo "" log_title_message "------------------------------------------------------------------------------" log_title_heading "ACARSDEC decoder setup halted" exit 1 fi acars_fequencies_title="Enter ACARS Frequencies (REQUIRED)" done ## CHECK FOR PREREQUISITE PACKAGES log_heading "Installing packages needed to fulfill dependencies for FlightAware PiAware client" check_package cmake check_package libjansson-dev check_package libpaho-mqtt-dev check_package libsndfile1-dev check_package libsqlite3-dev check_package libusb-1.0-0-dev check_package libxml2-dev check_package pkg-config check_package zlib1g-dev case $RECEIVER_OS_DISTRIBUTION in ubuntu) distro_php_version="" ;; debian) if [[ "${RECEIVER_OS_CODE_NAME}" == "bookworm" ]]; then distro_php_version="8.2"; fi if [[ "${RECEIVER_OS_CODE_NAME}" == "bullseye" ]]; then distro_php_version="7.4"; fi ;; esac check_package sqlite3 check_package php${distro_php_version}-sqlite3 case "${device}" in "RTL-SDR") check_package librtlsdr-dev ;; "AirSpy") check_package libairspy-dev ;; "SDRPlay") check_package libmirisdr-dev ;; esac ## BLACKLIST UNWANTED RTL-SDR MODULES log_heading "Blacklist unwanted RTL-SDR kernel modules" blacklist_modules ## CLONE OR PULL THE LIBACARS GIT REPOSITORY log_heading "Preparing the libacars Git repository" if [[ -d $RECEIVER_BUILD_DIRECTORY/libacars && -d $RECEIVER_BUILD_DIRECTORY/libacars/.git ]]; then log_message "Entering the libacars git repository directory" cd $RECEIVER_BUILD_DIRECTORY/libacars log_message "Updating the local libacars git repository" echo "" git pull else log_message "Entering the libacars build directory" cd $RECEIVER_BUILD_DIRECTORY log_message "Cloning the libacars git repository locally" echo "" git clone https://github.com/szpajder/libacars.git fi ## BUILD AND INSTALL THE LIBACARS LIBRARY log_heading "Building the libacars library" if [[ ! -d $RECEIVER_BUILD_DIRECTORY/libacars/build ]]; then log_message "Creating the libacars build directory" echo "" mkdir -vp $RECEIVER_BUILD_DIRECTORY/libacars/build echo "" fi if [[ -n "$(ls -A $RECEIVER_BUILD_DIRECTORY/libacars/build 2>/dev/null)" ]]; then log_message "Deleting all files currently residing in the libacars build directory" rm -rf $RECEIVER_BUILD_DIRECTORY/libacars/build/* fi log_message "Entering the libacars build directory" cd $RECEIVER_BUILD_DIRECTORY/libacars/build log_message "Executing cmake" echo "" cmake ../ echo "" log_message "Executing make" echo "" make echo "" log_message "Executing make install" echo "" sudo make install echo "" log_message "Running ldconfig" sudo ldconfig ## CLONE OR PULL THE ACARSDEC GIT REPOSITORY log_heading "Preparing the ACARSDEC Git repository" if [[ -d $RECEIVER_BUILD_DIRECTORY/acarsdec && -d $RECEIVER_BUILD_DIRECTORY/acarsdec/.git ]]; then log_message "Entering the ACARSDEC git repository directory" cd $RECEIVER_BUILD_DIRECTORY/acarsdec log_message "Updating the local ACARSDEC git repository" echo "" git pull else log_message "Entering the build directory" cd $RECEIVER_BUILD_DIRECTORY log_message "Cloning the ACARSDEC git repository locally" echo "" git clone https://github.com/TLeconte/acarsdec.git fi ## BUILD AND INSTALL THE ACARSDEC BINARY log_heading "Building the ACARSDEC binary" if [[ ! -d $RECEIVER_BUILD_DIRECTORY/acarsdec/build ]]; then log_message "Creating the ACARSDEC build directory" echo "" mkdir -vp $RECEIVER_BUILD_DIRECTORY/acarsdec/build echo "" fi if [[ -n "$(ls -A $RECEIVER_BUILD_DIRECTORY/acarsdec/build 2>/dev/null)" ]]; then log_message "Deleting all files currently residing in the ACARSDEC build directory" rm -rf $RECEIVER_BUILD_DIRECTORY/acarsdec/build/* fi log_message "Entering the ACARSDEC build directory" cd $RECEIVER_BUILD_DIRECTORY/acarsdec/build log_message "Executing cmake" echo "" case "${device}" in "RTL-SDR") cmake .. -Drtl=ON ;; "AirSpy") cmake .. -Dairspy=ON ;; "SDRPlay") cmake .. -Dsdrplay=ON ;; esac echo "" log_message "Executing make" echo "" make echo "" log_message "Executing make install" echo "" sudo make install ## CLONE OR PULL THE ACARSSERV GIT REPOSITORY log_heading "Preparing the acarsserv Git repository" if [[ -d $RECEIVER_BUILD_DIRECTORY/acarsserv && -d $RECEIVER_BUILD_DIRECTORY/acarsserv/.git ]]; then log_message "Entering the acarsserv git repository directory" cd $RECEIVER_BUILD_DIRECTORY/acarsserv log_message "Updating the local acarsserv git repository" echo "" git pull else log_message "Entering the build directory" cd $RECEIVER_BUILD_DIRECTORY log_message "Cloning the acarsserv git repository locally" echo "" git clone https://github.com/TLeconte/acarsserv.git fi ## BUILD AND INSTALL THE ACARSSERV BINARY log_heading "Building the ACARSSERV binary" log_message "Entering the acarsserv build directory" cd $RECEIVER_BUILD_DIRECTORY/acarsserv log_message "Executing make" echo "" make -f Makefile echo "" ## RUN ACARSDECO AND ACARSSERV log_message "Creating the ACARSDEC systemd service script" sudo tee /etc/systemd/system/acarsdec.service > /dev/null < /dev/null <