mirror of https://github.com/n7tae/new-xlxd.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
5.7 KiB
225 lines
5.7 KiB
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2020 by Thomas A. Early N7TAE
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
trap ControlC INT
|
|
|
|
ControlC () {
|
|
echo "caught SIGINT"
|
|
}
|
|
|
|
UninstallReflector () {
|
|
if [ -e $xlxserv ] || [ -e $xrfserv ]; then
|
|
cd src
|
|
sudo make uninstall
|
|
cd ..
|
|
fi
|
|
if [ -e $ambserv ]; then
|
|
cd ambed
|
|
sudo make uninstall
|
|
cd ..
|
|
fi
|
|
}
|
|
|
|
InstallReflector () {
|
|
if [ "$tcaddress" != none ]; then
|
|
cd ambed
|
|
sudo make install || read -p "<Enter> to continue: " ans
|
|
cd ..
|
|
fi
|
|
cd src
|
|
if [[ "$callsign" == XLX* ]]; then
|
|
if [ ! -e xlxd.whitelist ]; then
|
|
cp ../config/xlxd.whitelist .
|
|
fi
|
|
if [ ! -e xlxd.blacklist ]; then
|
|
cp ../config/xlxd.blacklist .
|
|
fi
|
|
if [ ! -e xlxd.interlink ]; then
|
|
cp ../config/xlxd.interlink .
|
|
fi
|
|
if [[ "$g3support" == true ]] && [ ! -e xlxd.terminal ]; then
|
|
cp ../config/xlxd.terminal .
|
|
fi
|
|
else
|
|
if [ ! -e xrfd.whitelist ]; then
|
|
cp ../config/xlxd.whitelist xrfd.whitelist
|
|
fi
|
|
if [ ! -e xrfd.blacklist ]; then
|
|
cp ../config/xlxd.blacklist xrfd.blacklist
|
|
fi
|
|
if [ ! -e xrfd.interlink ]; then
|
|
cp ../config/xlxd.interlink xrfd.interlink
|
|
fi
|
|
if [[ "$g3support" == true ]] && [ ! -e xrfd.terminal ]; then
|
|
cp ../config/xlxd.terminal xrfd.terminal
|
|
fi
|
|
fi
|
|
sudo make install || read -p "<Enter> to continue: " ans
|
|
cd ..
|
|
}
|
|
|
|
Clean () {
|
|
cd src
|
|
make clean
|
|
cd ../ambed
|
|
make clean
|
|
cd ..
|
|
}
|
|
|
|
Compile () {
|
|
local np
|
|
np=`getconf _NPROCESSORS_ONLN`
|
|
cd src
|
|
make -j$np || read -p "<Enter to continue: " ans
|
|
cd ..
|
|
if [[ "$callsign" == XLX* ]] && [[ "$tcaddress" != none ]]; then
|
|
cd ambed
|
|
make -j$np || read -p "<Enter to continue: " ans
|
|
cd ..
|
|
fi
|
|
}
|
|
|
|
# Execution starts here!
|
|
|
|
# service file locations
|
|
xlxserv='/etc/systemd/system/xlxd.service'
|
|
xrfserv='/etc/systemd/system/xrfd.service'
|
|
ambserv='/etc/systemd/system/ambed.service'
|
|
|
|
# default values, we only need a few
|
|
#callsign='CHNGME'
|
|
#nummod=26
|
|
#ip4addr='none'
|
|
#ip6addr='none'
|
|
tcaddress='none'
|
|
#tcmodules='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
|
#ysfenable=false
|
|
#ysfmodule='D'
|
|
g3support=false
|
|
#dbsupport=false
|
|
|
|
if [ -e reflector.cfg ]; then
|
|
source reflector.cfg
|
|
else
|
|
echo 'No configuration file found...'
|
|
exit 1
|
|
fi
|
|
key='x'
|
|
# main loop
|
|
while [[ "$key" != q* ]]
|
|
do
|
|
clear
|
|
pcount=$(ps -aux | grep -e xlxd -e xrfd -e ambed | wc -l)
|
|
if [ "$pcount" -gt 1 ]; then
|
|
echo
|
|
ps -aux | head -1
|
|
ps -aux | grep -e xlxd -e xrfd -e ambed | grep -v grep
|
|
fi
|
|
echo
|
|
echo " Reflector Administration, Version #200723"
|
|
echo
|
|
git status | head -1
|
|
echo
|
|
echo "ls : List the configuration file"
|
|
echo "cl : Clean (remove) compiled objects and executables"
|
|
echo "gp : Pull the latest software from the repo"
|
|
echo "br : Change git branch to <value>"
|
|
echo "co : Compile the system executable(s)"
|
|
if [ -e $xlxserv ] || [ -e $xrfserv ]; then
|
|
if [ -e $xlxserv ] && [ -e $xrfserv ]; then
|
|
echo "ERROR: both xlxd and xrfd seem to be installed!"
|
|
exit 1
|
|
elif [ -e $xlxserv ]; then
|
|
echo "us : Uninstall the XLX reflector"
|
|
echo "rl : View reflector log"
|
|
if [ -e $ambserv ]; then
|
|
echo "tl : View transcoder log"
|
|
fi
|
|
elif [ -e $xrfserv ]; then
|
|
echo "us : Uninstall the XRF reflector"
|
|
echo "rl : View Reflector log"
|
|
fi
|
|
echo "rr : Restart the reflector"
|
|
if [ -e $ambserv ]; then
|
|
echo "rt : Restart the transcoder"
|
|
fi
|
|
else
|
|
if [[ "$callsign" == XRF* ]] || [[ "$callsign" == XLX* ]]; then
|
|
if [[ "$callsign" == XRF* ]] && [ -e src/xrfd ]; then
|
|
echo "is : Install XRF reflector"
|
|
elif [[ "$callsign" == XLX* ]] && [ -e src/xlxd ]; then
|
|
if [[ "$tcaddress" == none ]]; then
|
|
echo "is : Install XLX reflector without transcoder"
|
|
else
|
|
if [ -e ambed/ambed ]; then
|
|
echo "is : Install XLX reflector and transcoder"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
echo
|
|
echo "q : Quit"
|
|
echo
|
|
read -p "Please input <key> <value> - omit value to toggle a true/false : " key value garbage
|
|
|
|
if [[ "$key" == ls* ]]; then
|
|
cat reflector.cfg;
|
|
echo
|
|
read -p "<Enter> to return to main menu: " ans
|
|
elif [[ "$key" == us* ]]; then
|
|
if [[ "$callsign" == XLX* ]] && [ -e $xlxserv ]; then
|
|
UninstallReflector
|
|
elif [[ "$callsign" == XRF* ]] && [ -e $xrfserv ]; then
|
|
UninstallReflector
|
|
fi
|
|
elif [[ "$key" == is* ]]; then
|
|
if [[ "$callsign" == XLX* ]] && [ -e src/xlxd ] && [ ! -e $xlxserv ] && [ ! -e $xrfserv ]; then
|
|
InstallReflector
|
|
elif [[ "$callsign" == XRF* ]] && [ -e src/xrfd ] && [ ! -e $xlxserv ] && [ ! -e $xrfserv ]; then
|
|
InstallReflector
|
|
fi
|
|
elif [[ "$key" == gp* ]]; then
|
|
echo
|
|
git pull
|
|
echo
|
|
read -p "<Enter> to continue: " ans
|
|
elif [[ "$key" == br* ]]; then
|
|
echo
|
|
git checkout "$value"
|
|
echo
|
|
read -p "<Enter> to continue: " ans
|
|
elif [[ "$key" == rr* ]]; then
|
|
if [[ "$callsign" == XLX* ]] && [ -e $xlxserv ]; then
|
|
sudo systemctl restart xlxd
|
|
elif [[ "$callsign" == XRF* ]] && [ -e $xrfserv ]; then
|
|
sudo systemctl restart xrfd
|
|
fi
|
|
elif [[ "$key" == rt* ]] && [ -e $ambserv ]; then sudo systemctl restart ambed
|
|
elif [[ "$key" == cl* ]]; then Clean
|
|
elif [[ "$key" == co* ]]; then Compile
|
|
elif [[ "$key" == tl* ]] && [ -e $ambserv ]; then sudo journalctl -u ambed -f
|
|
elif [[ "$key" == rl* ]]; then
|
|
if [ -e $xlxserv ]; then
|
|
sudo journalctl -u xlxd -f
|
|
elif [ -e $xrfserv ]; then
|
|
sudo journalctl -u xrfd -f
|
|
fi
|
|
fi
|
|
done
|
|
exit 0
|