#!/bin/bash # A tool to install xlxd, your own D-Star Reflector. # For more information, please visit: https://n5amd.com #Lets begin------------------------------------------------------------------------------------------------- WHO=$(whoami) if [ "$WHO" != "root" ] then echo "" echo "You Must be root to run this script!!" exit 0 fi if [ ! -e "/etc/debian_version" ] then echo "" echo "This script is only tested on Debian and x64 CPU Arch. but XLX will work on most ANY Linux distro. " exit 0 fi DIRDIR=$(pwd) LOCAL_IP=$(hostname -I | awk '{print $1}') INFREF=https://n5amd.com/digital-radio-how-tos/create-xlx-xrf-d-star-reflector/ XLXDREPO=https://github.com/LX3JL/xlxd.git DMRIDURL=http://xlxapi.rlx.lu/api/exportdmr.php WEBDIR=/var/www/xlxd XLXINSTDIR=/root/reflector-install-files/xlxd DEP="wget git build-essential g++ apache2 php libapache2-mod-php php7.0-mbstring" DEP2="wget git build-essential g++ apache2 php libapache2-mod-php php7.3-mbstring" DEP3="wget git build-essential g++ apache2 php libapache2-mod-php php-curl php-json php-cgi php7.4-mbstring snapd figlet" APPS="git git-core apache2 php libapache2-mod-php php-cli php-xml php-mbstring php-curl build-essential" VERSION=$(sed 's/\..*//' /etc/debian_version) clear echo "" echo "XLX uses 3 digit numbers for its reflectors. For example: 248, 999, 099." read -p "What 3 digit XRF number will you be using? " XRFDIGIT XRFNUM=XLX$XRFDIGIT echo "" echo "--------------------------------------" read -p "What is the FQDN of the XLX Reflector dashboard? Example: xlx999.domain.com. " XLXDOMAIN echo "" echo "--------------------------------------" read -p "What E-Mail address can your users send questions to? " EMAIL echo "" echo "--------------------------------------" read -p "What is the admins callsign? " CALLSIGN echo "" echo "" echo "------------------------------------------------------------------------------" echo "Making install directories and installing dependicies...." echo "------------------------------------------------------------------------------" mkdir -p $XLXINSTDIR mkdir -p $WEBDIR apt-get -y update apt-get -y install $APPS #if [ $VERSION = 9 ] #then # apt-get -y install $DEP # a2enmod php7.0 #elif [ $VERSION = 10 ] #then # apt-get -y install $DEP2 #elif [ $VERSION = 11 ] #then # apt-get -y install $DEP3 #fi echo "------------------------------------------------------------------------------" if [ -e $XLXINSTDIR/xlxd/src/xlxd ] then echo "" echo "It looks like you have already compiled XLXD. If you want to install/complile xlxd again, delete the directory '/root/reflector-install-files/xlxd' and run this script again. " exit 0 else echo "Downloading and compiling LX4JL XLXD... " echo "------------------------------------------------------------------------------" cd $XLXINSTDIR figlet "XLXD Like a PRO..." git clone $XLXDREPO cd $XLXINSTDIR/xlxd/src sleep 5 echo "------------------------------------------------------------------------------" echo "Edit your configuration" sleep 5 nano main.h make clean make make install fi if [ -e $XLXINSTDIR/xlxd/src/xlxd ] then echo "" echo "" echo "------------------------------------------------------------------------------" echo "It looks like everything compiled successfully. There is a 'xlxd' application file. " else echo "" echo "UH OH!! I dont see the xlxd application file after attempting to compile." echo "The output above is the only indication as to why it might have failed. " echo "Delete the directory '/root/reflector-install-files/xlxd' and run this script again. " echo "" exit 0 fi echo "------------------------------------------------------------------------------" echo "Getting the DMRID.dat file... " echo "------------------------------------------------------------------------------" wget -O /xlxd/dmrid.dat $DMRIDURL echo "------------------------------------------------------------------------------" echo "Copying web dashboard files and updating init script... " cp -R $XLXINSTDIR/xlxd/dashboard/* /var/www/xlxd/ cp $XLXINSTDIR/xlxd/scripts/xlxd /etc/init.d/xlxd sed -i "s/XLX248 192.168.1.240 127.0.0.1/$XRFNUM $LOCAL_IP 127.0.0.1/g" /etc/init.d/xlxd update-rc.d xlxd defaults # Delaying startup time # mv /etc/rc3.d/S01xlxd /etc/rc3.d/S10xlxd ##Disabling as its not really needed. echo "Updating XLXD Config file... " XLXCONFIG=/var/www/xlxd/pgs/config.inc.php sed -i "s/your_email/$EMAIL/g" $XLXCONFIG sed -i "s/LX1IQ/$CALLSIGN/g" $XLXCONFIG sed -i "s/http:\/\/your_dashboard/http:\/\/$XLXDOMAIN/g" $XLXCONFIG sed -i "s/\/tmp\/callinghome.php/\/xlxd\/callinghome.php/g" $XLXCONFIG echo "Copying directives and reloading apache... " cp $DIRDIR/templates/apache.tbd.conf /etc/apache2/sites-available/$XLXDOMAIN.conf sed -i "s/apache.tbd/$XLXDOMAIN/g" /etc/apache2/sites-available/$XLXDOMAIN.conf sed -i "s/ysf-xlxd/xlxd/g" /etc/apache2/sites-available/$XLXDOMAIN.conf chown -R www-data:www-data /var/www/xlxd/ chown -R www-data:www-data /xlxd/ a2ensite $XLXDOMAIN a2dissite 000-default # revert certbot make this an option! for another day #if [ $VERSION = 11 ] #then # snap install core # snap refresh core # snap install --classic certbot # ln -s /snap/bin/certbot /usr/bin/certbot # ufw allow http # ufw allow https # systemctl restart apache2 # certbot --apache #else # echo "" # echo "Ahh! Somthing went wrong with the snapd cerbot app, your SSL certificate" # echo "The output above is the only indication as to why it might have failed. " # echo "Run certbot --apache again to restart certbot installation" # echo "" # exit 0 #fi # end of certbot # clear echo "Starting XLXD....." sleep 2 figlet "XLXD Reflector" service xlxd start systemctl restart apache2 echo "------------------------------------------------------------------------------" echo "" echo "" echo "******************************************************************************" echo "" echo "" echo "XLXD is finished installing and ready to be used. Please read the following..." echo "" echo "" echo "******************************************************************************" echo "" echo " For Public Reflectors: " echo "If your XLX number is not already taken, enabling callinghome is all you need to do " echo "for your reflector to be added to all the host files automatically. It does take " echo "about an hour for the change to reflect, if your reflector is accessible and working." echo "Once activated, the callinghome hash to backup will be /xlxd/callinghome.php. " echo "More Information: $INFREF" echo "" echo "" echo " For test/private Reflectors: " echo "If you are using this reflector as a test or for offline access you will " echo "need to configure the host files of the devices connecting to this server." echo "There are many online tutorials on 'Editing pi-star host files'. " echo "" echo "" echo " Your $XRFNUM dashboad should now be accessible... " echo " http://$XLXDOMAIN " echo "" echo "" echo "You can make further customizations to the main config file $XLXCONFIG." echo "Be sure to thank the creators of xlxd for the ability to spin up " echo "your very own D-Star reflector. " echo "" echo "------------------------------------------------------------------------------"