From 75839b3a09888e158ed66ea272ffa53844f7416f Mon Sep 17 00:00:00 2001 From: jprochazka Date: Sat, 13 Jul 2024 15:32:48 -0400 Subject: [PATCH] Added support for airplanes.live. --- CHANGELOG.md | 6 +- CREDITS.md | 58 ++++++++--------- README.md | 37 +++++------ bash/feeders/airplaneslive.sh | 113 ++++++++++++++++++++++++++++++++++ bash/main.sh | 29 ++++++++- 5 files changed, 192 insertions(+), 51 deletions(-) create mode 100755 bash/feeders/airplaneslive.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index c0a5144..6fbff5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,13 @@ The following is a history of the changes made to this project. ## v2.8.4 *(in development)* :rooster: +## INSTALLERS + +* Added the option to install the airplanes.live feeder client and web interface. + ### Portal -* Can now toggle daily data purges as well specify the amount of days to keep within the portal. +* Can now toggle daily data purges as well specify the number of days to keep within the portal. * Rewrote the aircraft.py script and fixed issues found with newer versions of dump1090. * Rewrote the maintenance.py script and addressed issue mentioned in an incompatible pull request. * The flights page now only shows links when position information is present in the database. diff --git a/CREDITS.md b/CREDITS.md index a9b9dce..8a3eb2c 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,11 +1,9 @@ # Credits :airplane: -## People and Places +## Collaborators and Contributors -First off I would like to thank the collaborators and contributors who have contributed to the project -directly. Their time and effort is greatly appreciated by myself as well as many others I am sure. - -**Direct Contributors** +First and foremost I would like to thank the collaborators and contributors who have contributed to +the project directly. Their time and effort is greatly appreciated by myself as well as many others. * @mgunther68 * @jdwall @@ -29,37 +27,39 @@ directly. Their time and effort is greatly appreciated by myself as well as many * @Romeo-Golf * @g0wfv -I would like to thank the members and contributors to the following forums for all the time and effort -they have put in in order to create a useful and informative place to discuss aircraft tracking. +## The Flight Tracking Community -* The FlightAware Forums: http://discussions.flightaware.com -* The PlaneFinder Forums: http://forum.planefinder.net +I would like to thank the members and contributors to the following forums for all the time and effort +they have put in in order to create useful and informative places to discuss aircraft tracking. + +* The FlightAware Forums: https://discussions.flightaware.com +* The PlaneFinder Forums: https://forum.planefinder.net * The ADS-B Exchange Forums: https://adsbx.discourse.group The performance graphs were created thanks in part to the great contributions made by members of both the FlightAware and PlaneFinder communities. Through their examples and help posted to the following -threads myself and a couple contributors were able to add these very informative graphs. +threads myself along with other contributors to the cause were able to add these informative graphs. * http://discussions.flightaware.com/ads-b-flight-tracking-f21/system-monitoring-t26999.html -* http://forum.planefinder.net/threads/web-portal-and-collectd-rrd-graphs-automated-installation.256/ +* http://forum.planefinder.net/threads/web-portal-and-collectd-rrd-graphs-automated-installation.256 -## Third Party Software +## Third Party Software Developers -I would like to thank the developers and contributors to the following projects. Without their -hard work and dedication this project would not have been possible. +I would like to thank the maintainers and contributors of the following projects. Without their +hard work and dedication to their respective projects this project would not have been possible. -* Dump1090 (fa): https://github.com/flightaware/dump1090 -* Dump978 (fa): https://github.com/flightaware/dump978 -* FlightAware's PiAware: https://github.com/flightaware/piaware -* Plane Finder ADS-B Client: https://planefinder.net -* Flightradar24 Client: https://www.flightradar24.com -* Dump1090-Tools: https://github.com/mutability/dump1090-tools -* Beast-Splitter https://github.com/flightaware/beast-splitter -* bootpag http://botmonster.com/jquery-bootpag -* Bootstrap: http://getbootstrap.com/ -* jQuery: http://jquery.com/ -* jQuery Steps: http://www.jquery-steps.com -* js-cookie: https://github.com/js-cookie/js-cookie/releases -* jquery-validation: https://github.com/jzaefferer/jquery-validation -* Google Charts: https://developers.google.com/chart -* Duck DNS http://www.duckdns.com +* ADS-B Exchange Client: https://github.com/adsbexchange/feedclient +* Airplanes.live Client: https://github.com/airplanes-live/feed +* Beast-Splitter: https://github.com/flightaware/beast-splitter +* Dump1090 (FlightAware): https://github.com/flightaware/dump1090 +* Dump1090-Tools: https://github.com/mutability/dump1090-tools +* Dump978 (FlightAware): https://github.com/flightaware/dump978 +* Fly Italy ADS-B Client: https://github.com/flyitalyadsb/fly-italy-adsb +* PiAware (FlightAware): https://github.com/flightaware/piaware + +Thanks also goes out to the developers and the businesses that employ them who work to supply us +with quality closed source packages which they have made available to the community. + +* Flightradar24: https://flightradar24.com +* OpenSky Network: https://opensky-network.org +* Plane Finder: https://planefinder.net diff --git a/README.md b/README.md index 3fefcd0..d4eb85f 100644 --- a/README.md +++ b/README.md @@ -32,15 +32,15 @@ The following software can be installed using these scripts. Included is the option to install the ADS-B Portal which offers the following features. -* Saves all flights seen as well as displays a plot for the flight. (advanced) +* Saves all flights seen as well as displays a plot for the flight. * Control what is displayed online via a web based administration area. * A more uniform website site layout that can be easily navigated. * Web accessible dump1090 and system performance graphs. -* A web accessible live dump1090 map. -* A web accessible live dump978 map. +* Easy access to live dump1090 and dump978 maps. * A blog which can be used to share your plane tracking experiences with others. -* Informs visitors when specific flights are being tracked by dump1090. -* Easily customize the look of your portal using the template system. +* Visitors can be informed when specific flights are being tracked. +* Administrators can be informed via email when specific flights are being tracked. +* Easily customize the look of your portal using the custom template system. When setting up the portal you will have to choose between a lite or advanced installation. Advanced features adds flight logging and plotting and should only be chosen on devices running a more sturdy data storage solution. @@ -48,22 +48,23 @@ When setting up the portal you will have to choose between a lite or advanced in ### Decoders -* Dump1090 (FlightAware): https://github.com/flightaware/dump1090 -* Dump978 (FlightAware): https://github.com/mutability/dump978 +* Dump1090 (FlightAware): https://github.com/flightaware/dump1090 +* Dump978 (FlightAware): https://github.com/mutability/dump978 ### Feeders -* ADS-B Exchange Feeder Client: https://adsbexchange.com -* FlightAware's PiAware: https://flightaware.com -* Flightradar24 Feeder Client: https://flightradar24.com -* Fly Italy ADS-B Feeder Client: https://flyitalyadsb.com -* OpenSky Feeder Client: https://opensky-network.org -* Plane Finder ADS-B Client: https://planefinder.net +* ADS-B Exchange Feeder Client: https://adsbexchange.com +* Airplanes.live Feeder Client: https://airplanes.live +* FlightAware's PiAware: https://flightaware.com +* Flightradar24 Feeder Client: https://flightradar24.com +* Fly Italy ADS-B Feeder Client: https://flyitalyadsb.com +* OpenSky Feeder Client: https://opensky-network.org +* Plane Finder ADS-B Client: https://planefinder.net ### Extras -* Beast-Splitter: https://github.com/flightaware/beast-splitter -* DuckDNS.org Support: https://www.duckdns.org +* Beast-Splitter: https://github.com/flightaware/beast-splitter +* DuckDNS.org Support: https://www.duckdns.org ## Supported Operating Systems @@ -80,8 +81,4 @@ The project currently supports the following Linux distributions. * Ubuntu Jammy Jellyfish * Ubuntu Focal Fossa -## Useful Links - -- GitHub Repository - https://github.com/jprochazka/adsb-receiver -- GitHub Wiki - https://github.com/jprochazka/adsb-receiver/wiki -- Changelog - https://github.com/jprochazka/adsb-receiver/blob/master/CHANGELOG.md +_Support is available via this repository through the use of the issue tracker or discussions._ diff --git a/bash/feeders/airplaneslive.sh b/bash/feeders/airplaneslive.sh new file mode 100755 index 0000000..8d515a4 --- /dev/null +++ b/bash/feeders/airplaneslive.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +## INCLUDE EXTERNAL SCRIPTS + +source $RECEIVER_BASH_DIRECTORY/variables.sh +source $RECEIVER_BASH_DIRECTORY/functions.sh + + +## BEGIN SETUP + +clear +echo -e "\n\e[91m ${RECEIVER_PROJECT_TITLE}" +echo -e "" +echo -e "\e[92m Setting up the airplanes.live feeder client..." +echo -e "" +echo -e "\e[93m ------------------------------------------------------------------------------\e[96m" +echo -e "" + + +# Confirm component installation. +if ! whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "Airplanes.live Feeder Client Setup" --yesno "The airplanes.live feeder client takes data from a local dump1090 instance and shares this with airplanes.live. for more information please see their website:\n\n https://airplanes.live/how-to-feed/\n\nContinue setup by installing the airplanes.live feeder client?" 13 78 3>&1 1>&2 2>&3; then + echo -e "\e[91m \e[5mINSTALLATION HALTED!\e[25m" + echo -e " Setup has been halted at the request of the user." + echo -e "" + echo -e "\e[93m ------------------------------------------------------------------------------" + echo -e "\e[92m Airplanes.live feeder client setup halted.\e[39m" + echo -e "" + read -p "Press enter to continue..." discard + exit 1 +fi + + +## START FEEDER INSTALLATION + +echo -e "" +echo -e "\e[95m Begining the airplanes.live feeder client installation process...\e[97m" +echo -e "" + +# Create the component build directory if it does not exist +if [[ ! -d $RECEIVER_BUILD_DIRECTORY/airplaneslive ]]; then + echo -e "\e[94m Creating the airplanes.live feeder client build directory...\e[97m" + echo "" + mkdir -vp $RECEIVER_BUILD_DIRECTORY/airplaneslive + echo "" +fi + +# Change to the component build directory +echo -e "\e[94m Entering the airplanes.live feeder client build directory...\e[97m" +cd $RECEIVER_BUILD_DIRECTORY/airplaneslive 2>&1 +echo "" + +# Download the official airplanes.live feeder installation script +echo -e "\e[95m Beginning the airplanes.live feeder client installation...\e[97m" +echo -e "" + +echo -e "\e[94m Downloading the airplanes.live feeder client installation script...\e[97m" +echo "" +wget -v https://raw.githubusercontent.com/airplanes-live/feed/main/install.sh + +echo -e "\e[94m Executing the airplanes.live feeder client installation script...\e[97m" +echo "" +sudo bash $RECEIVER_BUILD_DIRECTORY/airplaneslive/install.sh +echo "" + + +## CHECK THE STATUS OF THE FEEDER + +echo -e "\e[95m Checking if the reciver is now feeding airplanes.live...\e[97m" +echo -e "" +"\e[95m Checking for connections on ports 30004 and 31090 to IP address 78.46.234.18...\e[97m" +netstat_output = `netstat -t -n | grep -E '30004|31090'` +if [[ $netstat_output == *"78.46.234.18:30004 ESTABLISHED"* && $netstat_output == *"78.46.234.18:31090 ESTABLISHED"* ]] + "\e[95m The receiver appears to be feeding airplanes.live...\e[97m" +else + "\e[91m The receiver does not appear to be feeding airplanes.live at this time...\e[97m" + "\e[95m Please reboot your device and run the command ''netstat -t -n | grep -E '30004|31090' to see if a connection has been astablished.\e[97m" + "\e[95m If the issue presists supply the last 20 lines given by the following command on the airplanes.live discord.\e[97m" + "\e[95m 'sudo journalctl -u airplanes-feed --no-pager'\e[97m" + "\e[95m 'sudo journalctl -u airplanes-mlat --no-pager'\e[97m" +fi +echo "" + + +## INSTALL THE AIRPLANES.LIVE WEB INTERFACE + +if whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "Airplanes.live Web Interface Setup" --yesno "Airplanes.live offers the option to install an additional web interface.\n\nWould you like to install the web interface now?" 12 78; then + echo -e "\e[95m Begining the airplanes.live web interface installation...\e[97m" + echo "" + echo -e "\e[94m Executing the airplanes.live web interface installation script...\e[97m" + echo "" + sudo bash sudo bash /usr/local/share/airplanes/git/install-or-update-interface.sh + echo "" +fi + + +## POST INSTALLATION INFORMATION + +whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "Airplanes.live Feeder Setup Complete" --msgbox "Setup of the airplanes.live feeder client is now complete. You can check your feeder status at https://airplanes.live/myfeed." 12 78 + + +## SETUP COMPLETE + +# Return to the project root directory +echo -e "\e[94m Returning to ${RECEIVER_PROJECT_TITLE} root directory...\e[97m" +cd $RECEIVER_ROOT_DIRECTORY 2>&1 + +echo -e "" +echo -e "\e[93m ------------------------------------------------------------------------------" +echo -e "\e[92m Airplanes.live feeder client setup is complete.\e[39m" +echo -e "" +read -p "Press enter to continue..." discard + +exit 0 diff --git a/bash/main.sh b/bash/main.sh index b8c4a2c..9974ae2 100755 --- a/bash/main.sh +++ b/bash/main.sh @@ -42,6 +42,15 @@ function InstallAdsbExchange() { fi } +# Execute the airplanes.live setup script. +function InstallAirplanesLive() { + chmod +x ${RECEIVER_BASH_DIRECTORY}/feeders/airplaneslive.sh + ${RECEIVER_BASH_DIRECTORY}/feeders/airplaneslive.sh + if [[ $? -ne 0 ]] ; then + exit 1 + fi +} + # Execute the Flightradar24 Feeder client setup script. function InstallFlightradar24() { chmod +x ${RECEIVER_BASH_DIRECTORY}/feeders/flightradar24.sh @@ -208,6 +217,17 @@ else FEEDER_LIST=("${FEEDER_LIST[@]}" 'ADS-B Exchange Feeder' '' OFF) fi +# Check if the airplanes.live feeder has been set up. +if [[ -f /lib/systemd/system/airplanes-feed.service && -f /lib/systemd/system/airplanes-mlat.service ]]; then + # The feeder appears to be set up. + echo "Airplanes.live Feeder (reinstall)" >> ${RECEIVER_ROOT_DIRECTORY}/FEEDER_CHOICES + FEEDER_LIST=("${FEEDER_LIST[@]}" 'Airplanes.live Feeder (reinstall)' '' OFF) +else + # The feeder does not appear to be set up. + echo "Airplanes.live Feeder" >> ${RECEIVER_ROOT_DIRECTORY}/FEEDER_CHOICES + FEEDER_LIST=("${FEEDER_LIST[@]}" 'Airplanes.live Feeder' '' OFF) +fi + # Check if the Fly Italy ADS-B feeder has been set up. if [[ -f /lib/systemd/system/flyitalyadsb-mlat.service && -f /lib/systemd/system/flyitalyadsb-feed.service ]]; then # The feeder appears to be set up. @@ -306,7 +326,7 @@ fi if [[ -n "${FEEDER_LIST}" ]] ; then # Display a checklist containing feeders that are not installed if any. - whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "Feeder Installation Options" --checklist --nocancel --separate-output "The following feeders are available for installation.\nChoose the feeders you wish to install." 13 65 6 "${FEEDER_LIST[@]}" 2>${RECEIVER_ROOT_DIRECTORY}/FEEDER_CHOICES + whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "Feeder Installation Options" --checklist --nocancel --separate-output "The following feeders are available for installation.\nChoose the feeders you wish to install." 15 65 7 "${FEEDER_LIST[@]}" 2>${RECEIVER_ROOT_DIRECTORY}/FEEDER_CHOICES else # Since all available feeders appear to be installed inform the user of the fact. whiptail --backtitle "${RECEIVER_PROJECT_TITLE}" --title "All Feeders Installed" --msgbox "It appears that all the optional feeders available for installation by this script have been installed already." 8 65 @@ -466,6 +486,9 @@ if [[ -s "${RECEIVER_ROOT_DIRECTORY}/FEEDER_CHOICES" ]]; then "ADS-B Exchange Feeder"|"ADS-B Exchange Feeder (reinstall)") RUN_ADSBEXCHANGE_SCRIPT="true" ;; + "Airplanes.live Feeder"|"Airplanes.live Feeder (reinstall)") + RUN_AIRPLANESLIVE_SCRIPT="true" + ;; "FlightAware PiAware"|"FlightAware PiAware (upgrade)"|"FlightAware PiAware (reinstall)") RUN_PIAWARE_SCRIPT="true" ;; @@ -489,6 +512,10 @@ if [[ "${RUN_ADSBEXCHANGE_SCRIPT}" = "true" ]]; then InstallAdsbExchange fi +if [[ "${RUN_AIRPLANESLIVE_SCRIPT}" = "true" ]]; then + InstallAirplanesLive +fi + if [[ "${RUN_PIAWARE_SCRIPT}" = "true" || "${FORCE_PIAWARE_INSTALL}" = "true" ]]; then InstallPiAware fi