From 5c21b2bbaae9fe8372826fe5673e3c245e5d8a5a Mon Sep 17 00:00:00 2001 From: Hugh Date: Tue, 16 Mar 2021 12:39:25 -0400 Subject: [PATCH] General Formatting and Syntax. Fixed a few dangerous rm statments too. --- .complete | 35 +- .funfacts | 164 ++- build-a-pi | 689 +++++++------ diagnostic | 492 +++++---- functions/additional.function | 767 +++++++-------- functions/autohotspot | 59 +- functions/base.function | 223 ++--- functions/flsuite.function | 289 +++--- functions/utility.function | 436 ++++---- update | 1751 ++++++++++++++++----------------- 10 files changed, 2372 insertions(+), 2533 deletions(-) diff --git a/.complete b/.complete index 0190556..6072866 100755 --- a/.complete +++ b/.complete @@ -1,12 +1,12 @@ #!/bin/bash -MYPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -LOGO=$MYPATH/logo.png +MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +LOGO=${MYPATH}/logo.png -cat < $MYPATH/boot.txt +cat <${MYPATH}/boot.txt Build-a-Pi Build Complete. -If you found this script helpful +If you found this script helpful consider a donation to encourage future development. @@ -16,19 +16,20 @@ https://paypal.me/km4ack EOF -OUT=$(yad --width=550 --height=300 --text-align=center --center --title="Build-a-Pi" --show-uri \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text-info<$MYPATH/boot.txt \ ---button="CLOSE":2 > /dev/null 2>&1) +OUT=$(yad --width=550 --height=300 --text-align=center --center --title="Build-a-Pi" --show-uri \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text-info \ + --button="CLOSE":2 <${MYPATH}/boot.txt \ + >/dev/null 2>&1) BUT=$? if [ $BUT = 252 ]; then -rm $MYPATH/boot.txt -crontab -l > $HOME/Documents/cron.tmp -sed -i 's/@reboot\ sleep\ 10.*//' $HOME/Documents/cron.tmp -crontab $HOME/Documents/cron.tmp -exit + rm ${MYPATH}/boot.txt + crontab -l >${HOME}/Documents/cron.tmp + sed -i 's/@reboot\ sleep\ 10.*//' ${HOME}/Documents/cron.tmp + crontab ${HOME}/Documents/cron.tmp + exit fi -rm $MYPATH/boot.txt -crontab -l > $HOME/Documents/cron.tmp -sed -i 's/@reboot\ sleep\ 10.*//' $HOME/Documents/cron.tmp -crontab $HOME/Documents/cron.tmp +rm ${MYPATH}/boot.txt +crontab -l >${HOME}/Documents/cron.tmp +sed -i 's/@reboot\ sleep\ 10.*//' ${HOME}/Documents/cron.tmp +crontab ${HOME}/Documents/cron.tmp diff --git a/.funfacts b/.funfacts index 8118c30..9e9b6aa 100755 --- a/.funfacts +++ b/.funfacts @@ -1,151 +1,123 @@ #!/bin/bash -#20200515 km4ack +#20200515 km4ack -MYPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -LOGO=$MYPATH/logo.png +MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +LOGO=${MYPATH}/logo.png +yad --width=400 --height=200 --title="KM4ACK Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +There are over 1500 lines of code in Build-a-Pi" -yad --width=400 --height=200 --title="KM4ACK Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -There are over 1500 lines of code in Build-a-Pi" - -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ When he released his first video, he had never written a bash script" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ He studied for a week and then drove 1 1/2 hours to take the technician exam because it was the closest test location that weekend." -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ A year after passing the tech exam, he passed the extra exam" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ He doesn't know CW. dit dit" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -He released his first ham radio video on YouTube in 2018" +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +He released his first ham radio video on YouTube in 2018" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -The Emergency Email Server was the first and last thing he programmed in PHP" +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +The Emergency Email Server was the first and last thing he programmed in PHP" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -Patrons get to test his very latest software before they go public. Join in on the fun. https://patreon.com/km4ack" +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +Patrons get to test his very latest software before they go public. Join in on the fun. https://patreon.com/km4ack" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -His Jeep is a trail rated 2007 Wrangler X" +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +His Jeep is a trail rated 2007 Wrangler X" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ Yes. He has a Raspberry Pi in the Jeep" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ The Jeep also houses an 857D for HF and a FTM400 for 2M and 440" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ There is also a Yaesu FT65r on the sun visor ready to grab and go" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ The Yaesu 891 was the first HF rig he purchased new" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ He built a copper J-Pole as his first 2M 440 antenna" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ The J-Pole is still in use today" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ He has never had formal computer programming training" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ Yet continues his studies at The School of Hard Knocks" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -He grew up in North Alabama. ROLL TIDE!!" +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +He grew up in North Alabama. ROLL TIDE!!" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ -He moved to Tennessee after meeting his wife Pj" +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +He moved to Tennessee after meeting his wife Pj" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ His first radio was a Baofeng that he purchased before he had a license" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ As of June 2020 he owns 9 Raspberry Pi's. All but 1 is in use." -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ One pi runs a PBX server over AREDN serving roughly 40 hams VOIP phone service" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ Another pi runs an APRS digipeater" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ His favorite digital mode is JS8Call" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ He got interested in EMCOMM because he lost cell service after a tornado outbreak in his home town" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ He used Windows from 3.1 to WIN10. He now runs a Mac as his \ work machine and Raspberry Pi's for all things ham radio" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ Two of his favorite ham YouTubers are Ham Radio Crash Course and K8MRD Radio" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ His favorite non ham Youtuber is Wranglerstar" -yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \ ---wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ +yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \ + --wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="\r\rKM4ACK\rFun Facts\r\r \ Enough about KM4ACK! Go grab a coffee or do something fun while your pi is built" - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/build-a-pi b/build-a-pi index 875a67a..228a77d 100755 --- a/build-a-pi +++ b/build-a-pi @@ -11,93 +11,93 @@ ################################################################## #20200620 - DESK=$(printenv | grep DISPLAY) -MYPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -LOGO=$MYPATH/logo.png -RB=$HOME/.config/KM4ACK -BASE=$MYPATH/base.txt -ADDITIONAL=$MYPATH/additional.txt -UTILITY=$MYPATH/utility.txt -FLSUITE=$MYPATH/flsuite.txt -CONFIG=$MYPATH/config -FUNCTIONS=$MYPATH/functions -TEMPCRON=$MYPATH/cron.tmp -DIR=$MYPATH/temp +MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +LOGO=${MYPATH}/logo.png +RB=${HOME}/.config/KM4ACK +BASE=${MYPATH}/base.txt +ADDITIONAL=${MYPATH}/additional.txt +UTILITY=${MYPATH}/utility.txt +FLSUITE=${MYPATH}/flsuite.txt +CONFIG=${MYPATH}/config +FUNCTIONS=${MYPATH}/functions +TEMPCRON=${MYPATH}/cron.tmp +DIR=${MYPATH}/temp WHO=$(whoami) -VERSION=$(grep "version=" $MYPATH/changelog | sed 's/version=//') +VERSION=$(grep "version=" ${MYPATH}/changelog | sed 's/version=//') -FINISH(){ -if [ -f "$BASE" ]; then -rm $BASE -fi +FINISH() { + if [ -f "${BASE}" ]; then + rm ${BASE} + fi -if [ -f "$ADDITIONAL" ]; then -rm $ADDITIONAL -fi + if [ -f "${ADDITIONAL}" ]; then + rm ${ADDITIONAL} + fi -if [ -f "$FLSUITE" ]; then -rm $FLSUITE -fi + if [ -f "${FLSUITE}" ]; then + rm ${FLSUITE} + fi -if [ -f "$UTILITY" ]; then -rm $UTILITY -fi + if [ -f "${UTILITY}" ]; then + rm ${UTILITY} + fi } trap FINISH EXIT #check for display. can't run from SSH -if [ -z "$DESK" ] -then -cat </dev/null; then +if ! hash yad 2>/dev/null; then sudo apt install -y yad - fi - if ! hash jq 2>/dev/null; then +fi +if ! hash jq 2>/dev/null; then sudo apt install -y jq - fi - if ! hash bc>/dev/null; then +fi +if ! hash bc >/dev/null; then sudo apt install -y bc - fi +fi ##################################### # Check if run before ##################################### -if [ -f "$RB" ]; then -bash $MYPATH/update & -exit +if [ -f "${RB}" ]; then + bash ${MYPATH}/update & + exit fi ##################################### # Check user is pi ##################################### if [ "$WHO" != 'pi' ]; then -yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="USER NAME IS NOT PI\rThis script is designed to be run as the pi user. Please set the user name to pi \ + yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="USER NAME IS NOT PI\rThis script is designed to be run as the pi user. Please set the user name to pi \ and try again. You can change the user name after the build is complete but some configuration may not work \ as expected" \ ---button=gtk-close -exit 1 + --button=gtk-close + exit 1 fi ##################################### # notice to user ##################################### -cat < $MYPATH/intro.txt +cat <${MYPATH}/intro.txt This script takes approximately 4 hours to complete if you choose to install everything. If you find it helpful please consider a donation to encourage future @@ -106,343 +106,334 @@ development. https://paypal.me/km4ack EOF -INTRO=$(yad --width=550 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text-info<$MYPATH/intro.txt \ ---button="Continue":2 > /dev/null 2>&1) +INTRO=$(yad --width=550 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text-info \ + --button="Continue":2 <${MYPATH}/intro.txt \ + >/dev/null 2>&1) BUT=$? -if [ $BUT = 252 ]; then -rm $MYPATH/intro.txt -exit +if [ ${BUT} = 252 ]; then + rm ${MYPATH}/intro.txt + exit fi -rm $MYPATH/intro.txt +rm ${MYPATH}/intro.txt ##################################### # Create autostart dir #used to autostart conky at boot ##################################### -mkdir -p $HOME/.config/autostart - +mkdir -p ${HOME}/.config/autostart ##################################### # Get User Call ##################################### -CALL(){ -INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="version $VERSION" \ ---field="Call Sign*" \ ---field="* Required":LBL \ ---button="Continue":2) -BUT=$? -if [ $BUT = 252 ]; then -exit -fi +CALL() { + INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="version $VERSION" \ + --field="Call Sign*" \ + --field="* Required":LBL \ + --button="Continue":2) + BUT=$? + if [ ${BUT} = 252 ]; then + exit + fi } CALL -CALL=$(echo $INFO | awk -F "|" '{print $1}') +CALL=$(echo ${INFO} | awk -F "|" '{print $1}') CALL=${CALL^^} #Verify call not empty ATTEMPTS=0 -while [ -z "$CALL" ]; -do - if [ $ATTEMPTS -eq 3 ] - then +while [ -z "$CALL" ]; do + if [ $ATTEMPTS -eq 3 ]; then yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \ - --image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ - --text="Empty callsign after 3 attempts. Quiting!" \ - --button=gtk-ok + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="Empty callsign after 3 attempts. Quiting!" \ + --button=gtk-ok exit fi yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \ - --image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ - --text="Call Can't be Blank" \ - --button=gtk-ok + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="Call Can't be Blank" \ + --button=gtk-ok - ((ATTEMPTS=ATTEMPTS+1)) + ((ATTEMPTS = ATTEMPTS + 1)) CALL - CALL=$(echo $INFO | awk -F "|" '{print $1}') + CALL=$(echo ${INFO} | awk -F "|" '{print $1}') CALL=${CALL^^} done -echo "CALL=$CALL" > $CONFIG +echo "CALL=$CALL" >${CONFIG} ##################################### # Base Apps ##################################### yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=Description \ ---print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ ---text="Base Applications" --title="Build-a-Pi" \ -false "HOTSPOT" "Hot Spot Generator for Portable Ops" \ -false "HSTOOLS" "Tools to Manage Hot Spot" \ -false "GPS" "GPS Software" \ -false "ARDOP" "Modem for HF" \ -false "ARDOPGUI" "GUI for ARDOP" \ -false "HAMLIB" "Needed for Rig Control" \ -false "DIREWOLF" "Software TNC" \ -false "AX25" "Data Link Layer Protocol" \ -false "PULSE" "Pulse Audio Control Interface" \ ---button="Exit":1 \ ---button="Check All and Continue":3 \ ---button="Next":2 > $BASE + --image ${LOGO} --column=Check --column=App --column=Description \ + --print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="Base Applications" --title="Build-a-Pi" \ + false "HOTSPOT" "Hot Spot Generator for Portable Ops" \ + false "HSTOOLS" "Tools to Manage Hot Spot" \ + false "GPS" "GPS Software" \ + false "ARDOP" "Modem for HF" \ + false "ARDOPGUI" "GUI for ARDOP" \ + false "HAMLIB" "Needed for Rig Control" \ + false "DIREWOLF" "Software TNC" \ + false "AX25" "Data Link Layer Protocol" \ + false "PULSE" "Pulse Audio Control Interface" \ + --button="Exit":1 \ + --button="Check All and Continue":3 \ + --button="Next":2 >${BASE} BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -exit +if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit fi -if [ $BUT = 3 ]; then -BASEAPPS=(HOTSPOT HSTOOLS GPS ARDOP ARDOPGUI HAMLIB DIREWOLF AX25 PULSE) -for i in "${BASEAPPS[@]}" -do -echo "$i" >> $BASE -done +if [ ${BUT} = 3 ]; then + BASEAPPS=(HOTSPOT HSTOOLS GPS ARDOP ARDOPGUI HAMLIB DIREWOLF AX25 PULSE) + for i in "${BASEAPPS[@]}"; do + echo "$i" >>${BASE} + done fi #check if hotspot is chosen for install & get info if needed -HS=$(grep "HOTSPOT" $BASE) +HS=$(grep "HOTSPOT" ${BASE}) if [ -n "$HS" ]; then -HSINFO(){ -#unblock wifi -sudo rfkill unblock all > /dev/null 2>&1 -#bring wifi up -sudo ifconfig wlan0 up -#LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://' | awk '{ print $1 }') -#LIST=$(echo $LIST | sed 's/ /|/g') -LIST=$(sudo iw dev "wlan0" scan ap-force | sed -ne 's/^.*SSID: \(..*\)/\1/p' | sort | uniq | paste -sd '|') + HSINFO() { + #unblock wifi + sudo rfkill unblock all >/dev/null 2>&1 + #bring wifi up + sudo ifconfig wlan0 up + #LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://' | awk '{ print $1 }') + #LIST=$(echo $LIST | sed 's/ /|/g') + LIST=$(sudo iw dev "wlan0" scan ap-force | sed -ne 's/^.*SSID: \(..*\)/\1/p' | sort | uniq | paste -sd '|') - -HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \ ---image $LOGO --column=Check --column=App --column=Description \ ---window-icon=$LOGO --image-on-top --text-align=center \ ---text="HotSpot Information\r\rPlease enter the information\rbelow \ + HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \ + --image ${LOGO} --column=Check --column=App --column=Description \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="HotSpot Information\r\rPlease enter the information\rbelow \ for the Hot Spot\rNOTE: The last field is the password for the hotspot. You will use this password to \ connect to your Pi when it is in hotspot mode This password can only contain letters and numbers" \ ---title="Build-a-Pi" \ ---field="Home Wifi SSID":CB "$LIST" \ ---field="Home Wifi Password" \ ---field="Hot Spot Password" \ ---button="Exit":1 \ ---button="Continue":2 \ ---button="Refresh Wifi":3) -BUT=$? - if [ $BUT = 3 ];then - HSINFO #Call HSINFO function - fi + --title="Build-a-Pi" \ + --field="Home Wifi SSID":CB "$LIST" \ + --field="Home Wifi Password" \ + --field="Hot Spot Password" \ + --button="Exit":1 \ + --button="Continue":2 \ + --button="Refresh Wifi":3) + BUT=$? + if [ ${BUT} = 3 ]; then + HSINFO #Call HSINFO function + fi - if [ $BUT = 252 ] || [ $BUT = 1 ]; then - exit - fi -#} -#HSINFO -#fi -SHACKSSID=$(echo $HSINFO | awk -F "|" '{print $1}') -SHACKPASS=$(echo $HSINFO | awk -F "|" '{print $2}') -HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}') + if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit + fi + #} + #HSINFO + #fi + SHACKSSID=$(echo $HSINFO | awk -F "|" '{print $1}') + SHACKPASS=$(echo $HSINFO | awk -F "|" '{print $2}') + HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}') -#Check password length -if [ -n "$HS" ]; then -COUNT=${#HSPASS} - if [ $COUNT -lt 8 ] - then - yad --center --form --width=300 --height=200 --separator="|" \ - --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ - --text="Hotspot password has to be 8-63 characters" --title="Build-a-Pi" \ - --button=gtk-ok + #Check password length + if [ -n "$HS" ]; then + COUNT=${#HSPASS} + if [ ${COUNT} -lt 8 ]; then + yad --center --form --width=300 --height=200 --separator="|" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="Hotspot password has to be 8-63 characters" --title="Build-a-Pi" \ + --button=gtk-ok + HSINFO + fi + fi + + } HSINFO - fi fi -} -HSINFO -fi - -echo "SHACKSSID=$SHACKSSID" >> $CONFIG -echo "SHACKPASS=\"$SHACKPASS\"" >> $CONFIG -echo "HSPASS=\"$HSPASS\"" >> $CONFIG +echo "SHACKSSID=$SHACKSSID" >>${CONFIG} +echo "SHACKPASS=\"$SHACKPASS\"" >>${CONFIG} +echo "HSPASS=\"$HSPASS\"" >>${CONFIG} ################################### #CHECK IF GPS IS CHOSEN TO INSTALL# ################################### -GPSINSTALL=$(cat $BASE | grep GPS) -if [ -n "$GPSINSTALL" ]; then +GPSINSTALL=$(cat ${BASE} | grep GPS) +if [ -n "${GPS}INSTALL" ]; then + yad --center --height="300" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top \ + --text="\r\r\r\r\rConnect your GPS to the pi" \ + --button="Exit":1 \ + --button="Continue":2 -yad --center --height="300" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ ---image $LOGO --window-icon=$LOGO --image-on-top \ ---text="\r\r\r\r\rConnect your GPS to the pi" \ ---button="Exit":1 \ ---button="Continue":2 + BUT=$? + if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then + exit + fi + USB=$(ls /dev/serial/by-id) + USB=$(echo $USB | sed "s/\s/|/g") -BUT=$? -if [ $BUT = 1 ] || [ $BUT = 252 ]; then -exit -fi -USB=$(ls /dev/serial/by-id) -USB=$(echo $USB | sed "s/\s/|/g") + GPS=$(yad --center --height="600" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top \ + --text="Choose Your GPS" \ + --field="GPS":CB "$USB") + BUT=$? + if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + echo exiting + exit + fi -GPS=$(yad --center --height="600" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ ---image $LOGO --window-icon=$LOGO --image-on-top \ ---text="Choose Your GPS" \ ---field="GPS":CB "$USB") -BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -echo exiting -exit -fi - -GPS=$(echo $GPS | awk -F "|" '{print $1}') -GPS=/dev/serial/by-id/$GPS -echo "GPS=$GPS" >> $CONFIG + GPS=$(echo ${GPS} | awk -F "|" '{print $1}') + GPS=/dev/serial/by-id/${GPS} + echo "GPS=${GPS}" >>${CONFIG} fi ##################################### # FLSUITE ##################################### yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=Description \ ---print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ ---text="FLDIGI Suite" --title="Build-a-Pi" \ -false "FLRIG" "Rig Contol GUI" \ -false "FLDIGI" "Digital Software" \ -false "FLAMP" "File Transfer Program" \ -false "FLNET" "Net Control Software" \ -false "FLMSG" "Forms Manager" \ -false "FLWRAP" "File Encapsulation" \ ---button="Exit":1 \ ---button="Check All and Continue":3 \ ---button="Next":2 > $FLSUITE + --image ${LOGO} --column=Check --column=App --column=Description \ + --print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="FLDIGI Suite" --title="Build-a-Pi" \ + false "FLRIG" "Rig Contol GUI" \ + false "FLDIGI" "Digital Software" \ + false "FLAMP" "File Transfer Program" \ + false "FLNET" "Net Control Software" \ + false "FLMSG" "Forms Manager" \ + false "FLWRAP" "File Encapsulation" \ + --button="Exit":1 \ + --button="Check All and Continue":3 \ + --button="Next":2 >${FLSUITE} BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -exit +if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit fi -if [ $BUT = 3 ]; then -FLAPPS=(FLRIG FLDIGI FLAMP FLNET FLMSG FLWRAP) -for i in "${FLAPPS[@]}" -do -echo "$i" >> $FLSUITE -done +if [ ${BUT} = 3 ]; then + FLAPPS=(FLRIG FLDIGI FLAMP FLNET FLMSG FLWRAP) + for i in "${FLAPPS[@]}"; do + echo "$i" >>${FLSUITE} + done fi ##################################### # Ham Apps ##################################### yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=Description \ ---print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ ---text="Ham Applications" --title="Build-a-Pi" \ -false "CONKY" "System Information Display" \ -false "PI-APRS" "APRS Message Application" \ -false "CHIRP" "Program Radios" \ -false "GARIM" "File Transfer Program" \ -false "PAT" "Radio Email Application" \ -false "PAT-MENU" "Control for Pat Winlink" \ -false "JS8CALL" "Weak Signal Digital Mode Software" \ -false "M0IAX" "Tools for JS8Call Messages" \ -false "WSJTX" "Weak Signal Digital Mode Software" \ -false "PYQSO" "Logging Software" \ -false "CQRLOG" "Logging Software" \ -false "XLOG" "Logging Software" \ -false "EES" "KM4ACK Emergency Email Server" \ -false "QSSTV" "Slow Scan TV" \ -false "GRIDTRACKER" "Track Grids in WSJTX" \ -false "HAMCLOCK" "Clock for Ham Radio Ops" \ -false "PROPAGATION" "Propagation Prediction Software" \ -false "YAAC" "Yet Another APRS Client" \ -false "XASTIR" "APRS Client" \ -false "GPREDICT" "Satellite Tracking" \ -false "TQSL" "LOTW Software" \ ---button="Exit":1 \ ---button="Check All and Continue":3 \ ---button="Next":2 > $ADDITIONAL + --image ${LOGO} --column=Check --column=App --column=Description \ + --print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="Ham Applications" --title="Build-a-Pi" \ + false "CONKY" "System Information Display" \ + false "PI-APRS" "APRS Message Application" \ + false "CHIRP" "Program Radios" \ + false "GARIM" "File Transfer Program" \ + false "PAT" "Radio Email Application" \ + false "PAT-MENU" "Control for Pat Winlink" \ + false "JS8CALL" "Weak Signal Digital Mode Software" \ + false "M0IAX" "Tools for JS8Call Messages" \ + false "WSJTX" "Weak Signal Digital Mode Software" \ + false "PYQSO" "Logging Software" \ + false "CQRLOG" "Logging Software" \ + false "XLOG" "Logging Software" \ + false "EES" "KM4ACK Emergency Email Server" \ + false "QSSTV" "Slow Scan TV" \ + false "GRIDTRACKER" "Track Grids in WSJTX" \ + false "HAMCLOCK" "Clock for Ham Radio Ops" \ + false "PROPAGATION" "Propagation Prediction Software" \ + false "YAAC" "Yet Another APRS Client" \ + false "XASTIR" "APRS Client" \ + false "GPREDICT" "Satellite Tracking" \ + false "TQSL" "LOTW Software" \ + --button="Exit":1 \ + --button="Check All and Continue":3 \ + --button="Next":2 >${ADDITIONAL} BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -exit +if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit fi -if [ $BUT = 3 ]; then -ADDAPPS=(CONKY PI-APRS CHIRP GARIM PAT PAT-MENU JS8CALL M0IAX WSJTX PYQSO \ -CQRLOG EES QSSTV GRIDTRACKER HAMCLOCK PROPAGATION YAAC XASTIR GPREDICT TQSL \ -XLOG) +if [ ${BUT} = 3 ]; then + ADDAPPS=(CONKY PI-APRS CHIRP GARIM PAT PAT-MENU JS8CALL M0IAX WSJTX PYQSO + CQRLOG EES QSSTV GRIDTRACKER HAMCLOCK PROPAGATION YAAC XASTIR GPREDICT TQSL + XLOG) -for i in "${ADDAPPS[@]}" -do -echo "$i" >> $ADDITIONAL -done + for i in "${ADDAPPS[@]}"; do + echo "$i" >>${ADDITIONAL} + done fi #check if hamclock is being installed -HCCHECK=$(grep "HAMCLOCK" $ADDITIONAL) +HCCHECK=$(grep "HAMCLOCK" ${ADDITIONAL}) if [ -n "$HCCHECK" ]; then -HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="version $VERSION" \ ---field="Ham Clock Size":CB "SMALL|LARGE" \ ---button="Continue":2) -HC=$(echo $HC | awk -F "|" '{print $1}') -sed -i 's/HAMCLOCK//' $ADDITIONAL -echo $HC >> $ADDITIONAL + HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="version $VERSION" \ + --field="Ham Clock Size":CB "SMALL|LARGE" \ + --button="Continue":2) + HC=$(echo $HC | awk -F "|" '{print $1}') + sed -i 's/HAMCLOCK//' ${ADDITIONAL} + echo $HC >>${ADDITIONAL} fi -PATCHECK=$(grep "PAT" $ADDITIONAL) +PATCHECK=$(grep "PAT" ${ADDITIONAL}) if [ -n "$PATCHECK" ]; then -INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="version $VERSION" \ ---field="Six Character Grid Square" \ ---field="Winlink Password" \ ---field="Password is case sensitive":LBL \ ---button="Continue":2) -GRID=$(echo $INFO | awk -F "|" '{print $1}') -GRID=${GRID^^} -WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}') -echo "GRID=$GRID" >> $CONFIG -echo "WL2KPASS=\"$WL2KPASS\"" >> $CONFIG + INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="version $VERSION" \ + --field="Six Character Grid Square" \ + --field="Winlink Password" \ + --field="Password is case sensitive":LBL \ + --button="Continue":2) + GRID=$(echo ${INFO} | awk -F "|" '{print $1}') + GRID=${GRID^^} + WL2KPASS=$(echo ${INFO} | awk -F "|" '{print $2}') + echo "GRID=$GRID" >>${CONFIG} + echo "WL2KPASS=\"$WL2KPASS\"" >>${CONFIG} fi ##################################### # Utilities ##################################### yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=Description \ ---print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ ---text="Utilities" --title="Build-a-Pi" \ -false "DIPOLE" "Dipole Calculator" \ -false "CALLSIGN" "Call sign lookup" \ -false "TEMPCONVERT" "Temperature Converter" \ -false "GPARTED" "Disk Utility Tool" \ -false "SHOWLOG" "Log file viewer" \ -false "PISTATS" "Pi3/4 Stats Monitor" \ -false "TELNET" "Telnet Protocol" \ -false "PITERM" "piQtTermTCP Terminal Program" \ -false "SECURITY" "File Encryption Software" \ -false "YGATE" "Yaesu APRS Software" \ -false "BPQ" "LinBPQ Software" \ -false "BATT" "Battery Test Script" \ -false "VNC" "VNC Client Application" \ -false "ZYGRIB" "Grib File Viewer" \ -false "GPSUPDATE" "Tool to Manage GPS Devices" \ ---button="Exit":1 \ ---button="Check All and Continue":3 \ ---button="Install Selected":2 > $UTILITY + --image ${LOGO} --column=Check --column=App --column=Description \ + --print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="Utilities" --title="Build-a-Pi" \ + false "DIPOLE" "Dipole Calculator" \ + false "CALLSIGN" "Call sign lookup" \ + false "TEMPCONVERT" "Temperature Converter" \ + false "GPARTED" "Disk Utility Tool" \ + false "SHOWLOG" "Log file viewer" \ + false "PISTATS" "Pi3/4 Stats Monitor" \ + false "TELNET" "Telnet Protocol" \ + false "PITERM" "piQtTermTCP Terminal Program" \ + false "SECURITY" "File Encryption Software" \ + false "YGATE" "Yaesu APRS Software" \ + false "BPQ" "LinBPQ Software" \ + false "BATT" "Battery Test Script" \ + false "VNC" "VNC Client Application" \ + false "ZYGRIB" "Grib File Viewer" \ + false "GPSUPDATE" "Tool to Manage GPS Devices" \ + --button="Exit":1 \ + --button="Check All and Continue":3 \ + --button="Install Selected":2 >${UTILITY} BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -exit +if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit fi -if [ $BUT = 3 ]; then -UTILAPPS=(DIPOLE CALLSIGN TEMPCONVERT GPARTED SHOWLOG PISTATS TELNET PITERM SECURITY YGATE BPQ BATT VNC ZYGRIB GPSUPDATE) -for i in "${UTILAPPS[@]}" -do -echo "$i" >> $UTILITY -done +if [ ${BUT} = 3 ]; then + UTILAPPS=(DIPOLE CALLSIGN TEMPCONVERT GPARTED SHOWLOG PISTATS TELNET PITERM SECURITY YGATE BPQ BATT VNC ZYGRIB GPSUPDATE) + for i in "${UTILAPPS[@]}"; do + echo "$i" >>${UTILITY} + done fi -#backup crontab -crontab -l > $TEMPCRON -echo "@reboot sleep 10 && export DISPLAY=:0 && $MYPATH/.complete" >> $TEMPCRON -$MYPATH/.funfacts & +#backup crontab +crontab -l >$TEMPCRON +echo "@reboot sleep 10 && export DISPLAY=:0 && ${MYPATH}/.complete" >>$TEMPCRON +${MYPATH}/.funfacts & #upgrade the system sudo apt-get -y upgrade sudo apt -y full-upgrade @@ -452,11 +443,11 @@ sudo apt -y full-upgrade sudo cp bap-wallpaper.jpg /usr/share/rpd-wallpaper/ pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bap-wallpaper.jpg -mkdir -p $DIR 2> /dev/null +mkdir -p ${DIR} 2>/dev/null #add virtual sound card link for pulse audio -cd $DIR -cat > tempsound <tempsound < tempsound <tempsound <> $HOME/.bashrc +mkdir -p ${HOME}/bin +echo "export PATH=$PATH:${HOME}/bin" >>${HOME}/.bashrc #set update script to exec -chmod +x $MYPATH/update $MYPATH/build-a-pi +chmod +x ${MYPATH}/update ${MYPATH}/build-a-pi #create build-a-pi menu item -cd $MYPATH -cat > build-a-pi.desktop <build-a-pi.desktop < /dev/null 2>&1 -rm -rf $DIR > /dev/null 2>&1 +rm ${BASE} ${ADDITIONAL} ${UTILITY} ${FLSUITE} >/dev/null 2>&1 +rm -rf ${DIR} >/dev/null 2>&1 #sudo apt -y autoremove > /dev/null 2>&1 #restore crontab -crontab $TEMPCRON -rm $TEMPCRON +crontab ${TEMPCRON} +rm ${TEMPCRON} echo "WE ARE ALL DONE HERE. If you close this window, you will have to reboot manually." #reboot when done -yad --width=400 --height=200 --title="Reboot" --image $LOGO \ ---text-align=center --skip-taskbar --image-on-top \ ---wrap --window-icon=$LOGO \ ---undecorated --text="Build Finished \rReboot Required\r\r" \ ---button="Reboot Now":0 \ ---button="Exit":1 +yad --width=400 --height=200 --title="Reboot" --image ${LOGO} \ + --text-align=center --skip-taskbar --image-on-top \ + --wrap --window-icon=${LOGO} \ + --undecorated --text="Build Finished \rReboot Required\r\r" \ + --button="Reboot Now":0 \ + --button="Exit":1 BUT=$(echo $?) -if [ $BUT = 0 ]; then -echo rebooting -sudo reboot -elif [ $BUT = 1 ]; then -exit +if [ ${BUT} = 0 ]; then + echo rebooting + sudo reboot +elif [ ${BUT} = 1 ]; then + exit fi - - - - - diff --git a/diagnostic b/diagnostic index b548ef9..5984686 100644 --- a/diagnostic +++ b/diagnostic @@ -4,240 +4,236 @@ #to help diagnose issues #20200616 km4ack #11FEB2021 review km4ack -clear;echo;echo -read -p "What is your call sign? " CALL - -DIR=$HOME/Desktop/$CALL-diagnostic-report +clear +echo +echo +read -rp "What is your call sign? " CALL +DIR=${HOME}/Desktop/${CALL}-diagnostic-report #create temp dir -mkdir -p $DIR +mkdir -p ${DIR} #check to see which apps are installed -CHECK(){ -#----------------------------------------------------# -# Hotspot -#----------------------------------------------------# -HOTSPOT="/usr/bin/autohotspotN" -if [ ! -f "$HOTSPOT" ]; then -HOTSPOT="Not Installed" -else -HOTSPOT="Installed" -fi - -#----------------------------------------------------# -# AX25 -#----------------------------------------------------# -if [ ! -d /etc/ax25 ]; then -AX25="Not Installed" -else -AX25="Installed" -fi -#----------------------------------------------------# -# GPS -#----------------------------------------------------# -if ! hash gpsd 2>/dev/null; then -GPS="Not Installed" -else -GPS="Installed" -fi -#----------------------------------------------------# -# PULSE -#----------------------------------------------------# -if ! hash pulseaudio 2>/dev/null; then -PULSE="Not Installed" -else -PULSE="Installed" -fi -#----------------------------------------------------# -# ARDOP -#----------------------------------------------------# -if [ -f $HOME/ardop/piardopc ]; then -ARDOP="Installed" -else -ARDOP="Not Installed" -fi -#----------------------------------------------------# -# ARDOP GUI -#----------------------------------------------------# -if [ -f $HOME/ardop/piARDOP_GUI ]; then -ARDOPGUI="Installed" -else -ARDOPGUI="Not Installed" -fi - -#----------------------------------------------------# -# RIG CONTROL - HAMLIB -#----------------------------------------------------# -if ! hash rigctl 2>/dev/null; then -RIG="Not_Installed" -else -echo "Checking Rig Control" -RIG=$(rigctl --version | grep Hamlib | sed s/"rigctl(d),\ Hamlib\ "//) -NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \ -grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \ -head -n 1 | awk -F "/" '{print $7}') - - if (( $(echo "$NEWRIG $RIG" | awk '{print ($1 > $2)}') )) - then - RIG=NEEDS-UPDATE +CHECK() { + #----------------------------------------------------# + # Hotspot + #----------------------------------------------------# + HOTSPOT="/usr/bin/autohotspotN" + if [ ! -f "${HOTSPOT}" ]; then + HOTSPOT="Not Installed" else - RIG="is_latest_version" + HOTSPOT="Installed" fi -fi -#----------------------------------------------------# -# FLRIG -#----------------------------------------------------# -echo "Checking FLRIG" -if ! hash flrig 2>/dev/null; then -FLRIG="Not_Installed" -else -FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}') -NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | \ -grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') - - if (( $(echo "$NEWFLRIG $FLRIG" | awk '{print ($1 > $2)}') )) - then - FLRIG=NEEDS-UPDATE + #----------------------------------------------------# + # AX25 + #----------------------------------------------------# + if [ ! -d /etc/ax25 ]; then + AX25="Not Installed" else - FLRIG="is_latest_version" + AX25="Installed" fi -fi - -#----------------------------------------------------# -# Pat Winlink -#----------------------------------------------------# -echo "Checking Pat Winlink" -if ! hash pat 2>/dev/null; then -PAT="Not_Installed" -else -PAT=$(pat version | awk -F 'v' '{print $2}' | head -c 5) -NEWPAT=$(curl -s https://github.com/la5nta/pat/releases | grep -m 1 "amd64.deb"\ - | awk -F '_' '{print $2}') - - if (( $(echo "$NEWPAT $PAT" | awk '{print ($1 > $2)}') )) - then - PAT=NEEDS-UPDATE + #----------------------------------------------------# + # GPS + #----------------------------------------------------# + if ! hash gpsd 2>/dev/null; then + GPS="Not Installed" else - PAT="is_latest_version" -fi -fi - -#----------------------------------------------------# -# DIREWOLF -#----------------------------------------------------# -echo "Checking Direwolf" -if ! hash direwolf 2>/dev/null; then -DIRE="Not_Installed" -else -DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //') -wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md > /dev/null 2>&1 -NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }') - - if (( $(echo "$NEWDIRE $DIRE" | awk '{print ($1 > $2)}') )) - then - DIRE=NEEDS-UPDATE - else - DIRE="is_latest_version" + GPS="Installed" fi -fi -#----------------------------------------------------# -# Pat Menu -#----------------------------------------------------# -echo "Checking Pat Menu" -if [ ! -d $HOME/patmenu2 ]; then -PATMENU="Not_Installed" -else -cd $HOME/patmenu2/ -wget -O $HOME/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog > /dev/null 2>&1 -LATEST=$(cat $HOME/patmenu2/latest | grep '^release' | sed 's/release=//') -CURRENT=$(cat $HOME/patmenu2/changelog | grep '^release' | sed 's/release=//') -rm $HOME/patmenu2/latest > /dev/null 2>&1 - if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) - then - PATMENU="NEEDS-UPDATE" + #----------------------------------------------------# + # PULSE + #----------------------------------------------------# + if ! hash pulseaudio 2>/dev/null; then + PULSE="Not Installed" else - PATMENU="is_latest_version" + PULSE="Installed" fi -fi - -#----------------------------------------------------# -# Hot Spot Tools -#----------------------------------------------------# -if [ ! -d $HOME/hotspot-tools2 ]; then -HSTOOLS="Not_Installed" -else -CURRENT=$(cat $HOME/hotspot-tools2/changelog | grep version= | sed 's/version=//') -LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools2/master/changelog | grep version= | sed 's/version=//') - if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) - then - HSTOOLS="NEEDS-UPDATE" + #----------------------------------------------------# + # ARDOP + #----------------------------------------------------# + if [ -f ${HOME}/ardop/piardopc ]; then + ARDOP="Installed" else - HSTOOLS="is_latest_version" + ARDOP="Not Installed" + fi + #----------------------------------------------------# + # ARDOP GUI + #----------------------------------------------------# + if [ -f ${HOME}/ardop/piARDOP_GUI ]; then + ARDOPGUI="Installed" + else + ARDOPGUI="Not Installed" fi -fi -#----------------------------------------------------# -# EES -#----------------------------------------------------# -if [ -f /var/www/html/email.php ]; then -EES="Installed" -else -EES="Not Installed" -fi + #----------------------------------------------------# + # RIG CONTROL - HAMLIB + #----------------------------------------------------# + if ! hash rigctl 2>/dev/null; then + RIG="Not_Installed" + else + echo "Checking Rig Control" + RIG=$(rigctl --version | grep Hamlib | sed s/"rigctl(d),\ Hamlib\ "//) + NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | + grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | + head -n 1 | awk -F "/" '{print $7}') -#----------------------------------------------------# -# CONKY -#----------------------------------------------------# -if [ -f $HOME/.conkyrc ]; then -CONKY=Installed -else -CONKY="Not Installed" -fi + if (($(echo "${NEWRIG} ${RIG}" | awk '{print ($1 > $2)}'))); then + RIG=NEEDS-UPDATE + else + RIG="is_latest_version" + fi + fi + + #----------------------------------------------------# + # FLRIG + #----------------------------------------------------# + echo "Checking FLRIG" + if ! hash flrig 2>/dev/null; then + FLRIG="Not_Installed" + else + FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}') + NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | + grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (($(echo "${NEWFLRIG} ${FLRIG}" | awk '{print ($1 > $2)}'))); then + FLRIG=NEEDS-UPDATE + else + FLRIG="is_latest_version" + fi + fi + + #----------------------------------------------------# + # Pat Winlink + #----------------------------------------------------# + echo "Checking Pat Winlink" + if ! hash pat 2>/dev/null; then + PAT="Not_Installed" + else + PAT=$(pat version | awk -F 'v' '{print $2}' | head -c 5) + NEWPAT=$(curl -s https://github.com/la5nta/pat/releases | grep -m 1 "amd64.deb" | + awk -F '_' '{print $2}') + + if (($(echo "${NEWPAT} ${PAT}" | awk '{print ($1 > $2)}'))); then + PAT=NEEDS-UPDATE + else + PAT="is_latest_version" + fi + fi + + #----------------------------------------------------# + # DIREWOLF + #----------------------------------------------------# + echo "Checking Direwolf" + if ! hash direwolf 2>/dev/null; then + DIRE="Not_Installed" + else + DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //') + wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md >/dev/null 2>&1 + NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }') + + if (($(echo "${NEWDIRE} ${DIRE}" | awk '{print ($1 > $2)}'))); then + DIRE=NEEDS-UPDATE + else + DIRE="is_latest_version" + fi + fi + #----------------------------------------------------# + # Pat Menu + #----------------------------------------------------# + echo "Checking Pat Menu" + if [ ! -d ${HOME}/patmenu2 ]; then + PATMENU="Not_Installed" + else + cd ${HOME}/patmenu2/ || exit + wget -O ${HOME}/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog >/dev/null 2>&1 + LATEST=$(cat ${HOME}/patmenu2/latest | grep '^release' | sed 's/release=//') + CURRENT=$(cat ${HOME}/patmenu2/changelog | grep '^release' | sed 's/release=//') + rm ${HOME}/patmenu2/latest >/dev/null 2>&1 + if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then + PATMENU="NEEDS-UPDATE" + else + PATMENU="is_latest_version" + fi + fi + + #----------------------------------------------------# + # Hot Spot Tools + #----------------------------------------------------# + if [ ! -d ${HOME}/hotspot-tools2 ]; then + HSTOOLS="Not_Installed" + else + CURRENT=$(cat ${HOME}/hotspot-tools2/changelog | grep version= | sed 's/version=//') + LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools2/master/changelog | grep version= | sed 's/version=//') + if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then + HSTOOLS="NEEDS-UPDATE" + else + HSTOOLS="is_latest_version" + fi + fi + + #----------------------------------------------------# + # EES + #----------------------------------------------------# + if [ -f /var/www/html/email.php ]; then + EES="Installed" + else + EES="Not Installed" + fi + + #----------------------------------------------------# + # CONKY + #----------------------------------------------------# + if [ -f ${HOME}/.conkyrc ]; then + CONKY=Installed + else + CONKY="Not Installed" + fi } CHECK - #get system info WHO=$(whoami) KERNAL=$(uname -r) -echo "User Name is $WHO" > $DIR/systeminfo.txt -echo "" >> $DIR/systeminfo.txt -echo "Kernal version is $KERNAL" >> $DIR/systeminfo.txt -echo "" >> $DIR/systeminfo.txt -cat /etc/os-release >> $DIR/systeminfo.txt -echo;echo;echo "#####uname######" >> $DIR/systeminfo.txt -uname -a >> $DIR/systeminfo.txt +echo "User Name is ${WHO}" >${DIR}/systeminfo.txt +echo "" >>${DIR}/systeminfo.txt +echo "Kernal version is ${KERNAL}" >>${DIR}/systeminfo.txt +echo "" >>${DIR}/systeminfo.txt +cat /etc/os-release >>${DIR}/systeminfo.txt +echo +echo +echo "#####uname######" >>${DIR}/systeminfo.txt +uname -a >>${DIR}/systeminfo.txt #get direwolf.conf file -cat $HOME/direwolf.conf > $DIR/direwolf.conf +cat ${HOME}/direwolf.conf >${DIR}/direwolf.conf #get pat config file -cat $HOME/.wl2k/config.json > $DIR/patconfig.txt +cat ${HOME}/.wl2k/config.json >${DIR}/patconfig.txt #remove winlink password -sed -i 's/"secure_login_password":.*$/PASSWORD-REMOVED-FOR-YOUR-SECURITY/' $DIR/patconfig.txt +sed -i 's/"secure_login_password":.*$/PASSWORD-REMOVED-FOR-YOUR-SECURITY/' ${DIR}/patconfig.txt #get pat menu config file -cat $HOME/patmenu2/config > $DIR/patmenu.conf +cat ${HOME}/patmenu2/config >${DIR}/patmenu.conf #Get wpa_supplicant -sudo cat /etc/wpa_supplicant/wpa_supplicant.conf > $DIR/wpa.txt -sed -i 's/psk=.*$/PASSWORD-REMOVED/' $DIR/wpa.txt +sudo cat /etc/wpa_supplicant/wpa_supplicant.conf >${DIR}/wpa.txt +sed -i 's/psk=.*$/PASSWORD-REMOVED/' ${DIR}/wpa.txt #get sound info -echo "" >> $DIR/sound.info -echo "ARECORD INFO" > $DIR/sound.info -arecord -l >> $DIR/sound.info -echo "" >> $DIR/sound.info -echo "" >> $DIR/sound.info -echo "APLAY INFO" >> $DIR/sound.info -aplay -l >> $DIR/sound.info -echo "" >> $DIR/sound.info -echo "" >> $DIR/sound.info -echo "Using sound card" >> $DIR/sound.info -sudo lsof /dev/snd/* >> $DIR/sound.info +echo "" >>${DIR}/sound.info +echo "ARECORD INFO" >${DIR}/sound.info +arecord -l >>${DIR}/sound.info +echo "" >>${DIR}/sound.info +echo "" >>${DIR}/sound.info +echo "APLAY INFO" >>${DIR}/sound.info +aplay -l >>${DIR}/sound.info +echo "" >>${DIR}/sound.info +echo "" >>${DIR}/sound.info +echo "Using sound card" >>${DIR}/sound.info +sudo lsof /dev/snd/* >>${DIR}/sound.info #Get hotspot info HS=$(systemctl is-active autohotspot) @@ -250,64 +246,70 @@ CIP=$(ifconfig | grep -A 1 wlan0 | grep inet | awk '{ print $2 }') CHECK=$(ls /etc/wpa_supplicant/ | grep FORCE) AUTORUN=$(crontab -l | grep autohotspotN | awk '{print $1}' | sed 's/*\///') if [ -z "$CHECK" ]; then -FORCE="Hotspot Not in force mode" + FORCE="Hotspot Not in force mode" else -FORCE="Hotspot IS in force mode" + FORCE="Hotspot IS in force mode" fi -if [ $HSS = $CIP ] -then -HSS=ACTIVE +if [ ${HSS} = ${CIP} ]; then + HSS=ACTIVE else -HSS=INACTIVE + HSS=INACTIVE fi -FILE=$DIR/hotspot.info +FILE=${DIR}/hotspot.info -echo "Hotspot status $HS" > $FILE -echo "Hotspot state $HSS" >> $FILE -echo "Hotspot Name is $CURRENTNAME" >> $FILE -echo "Hotspot IP = $HSIP" >> $FILE -echo "Wireless IP = $CIP" >> $FILE -echo "CAT5 IP = $WIREIP" >> $FILE -echo "$FORCE" >> $FILE -echo "crontab set to auto run ever $AUTORUN minutes" >> $FILE +echo "Hotspot status ${HS}" >${FILE} +echo "Hotspot state ${HSS}" >>${FILE} +echo "Hotspot Name is ${CURRENTNAME}" >>${FILE} +echo "Hotspot IP = ${HSIP}" >>${FILE} +echo "Wireless IP = ${CIP}" >>${FILE} +echo "CAT5 IP = ${WIREIP}" >>${FILE} +echo "${FORCE}" >>${FILE} +echo "crontab set to auto run ever ${AUTORUN} minutes" >>${FILE} #get cron contents -crontab -l > $DIR/cron.txt +crontab -l >${DIR}/cron.txt #get gps info GPSD=$(systemctl is-active gpsd) CHRONY=$(systemctl is-active chronyd) -echo "/etc/default/gpsd file contents" > $DIR/gps.info -echo;echo >> $DIR/gps.info -cat /etc/default/gpsd >> $DIR/gps.info -echo;echo;echo >> $DIR/gps.info -echo "GPSD is $GPSD" >> $DIR/gps.info -echo "Chrony is $CHRONY" >> $DIR/gps.info -echo;echo;echo "#####TIME SOURCES#####" >> $DIR/gps.info -chronyc sources -v >> $DIR/gps.info +echo "/etc/default/gpsd file contents" >${DIR}/gps.info +echo +echo >>${DIR}/gps.info +cat /etc/default/gpsd >>${DIR}/gps.info +echo +echo +echo >>${DIR}/gps.info +echo "GPSD is $GPSD" >>${DIR}/gps.info +echo "Chrony is $CHRONY" >>${DIR}/gps.info +echo +echo +echo "#####TIME SOURCES#####" >>${DIR}/gps.info +chronyc sources -v >>${DIR}/gps.info #Check installed apps -echo "Hotspot $HOTSPOT" > $DIR/apps.info -echo "HS Tools $HSTOOLS" >> $DIR/apps.info -echo "AX25 $AX25" >> $DIR/apps.info -echo "GPS $GPS" >> $DIR/apps.info -echo "Pulse $PULSE" >> $DIR/apps.info -echo "ARDOP GUI $ARDOPGUI" >> $DIR/apps.info -echo "CONKY $CONKY" >> $DIR/apps.info -echo "HAMLIB $RIG" >> $DIR/apps.info -echo "FLRIG $FLRIG" >> $DIR/apps.info -echo "PAT $PAT" >> $DIR/apps.info -echo "DIREWOLF $DIRE" >> $DIR/apps.info -echo "Pat Menu $PATMENU" >> $DIR/apps.info -echo "EES $EES" >> $DIR/apps.info +echo "Hotspot $HOTSPOT" >${DIR}/apps.info +echo "HS Tools $HSTOOLS" >>${DIR}/apps.info +echo "AX25 $AX25" >>${DIR}/apps.info +echo "GPS $GPS" >>${DIR}/apps.info +echo "Pulse $PULSE" >>${DIR}/apps.info +echo "ARDOP GUI $ARDOPGUI" >>${DIR}/apps.info +echo "CONKY $CONKY" >>${DIR}/apps.info +echo "HAMLIB $RIG" >>${DIR}/apps.info +echo "FLRIG $FLRIG" >>${DIR}/apps.info +echo "PAT $PAT" >>${DIR}/apps.info +echo "DIREWOLF $DIRE" >>${DIR}/apps.info +echo "Pat Menu $PATMENU" >>${DIR}/apps.info +echo "EES $EES" >>${DIR}/apps.info -cd $HOME/Desktop -zip -r $CALL-diagnostic.zip $DIR > /dev/null 2>&1 +cd ${HOME}/Desktop || exit +zip -r ${CALL}-diagnostic.zip ${DIR} >/dev/null 2>&1 -rm -rf $DIR > /dev/null 2>&1 -clear;echo;echo +rm -rf ${DIR} >/dev/null 2>&1 +clear +echo +echo cat <.*$//') -NEWPAT=$(echo $NEWPATV | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//') -echo "new pat v $NEWPATV" -echo "new pat $NEWPAT" -wget --tries 2 --connect-timeout=60 https://github.com/la5nta/pat/releases/download/v0.$NEWPAT/$NEWPATV -sudo dpkg -i $DIR/$NEWPATV -pat http & -sudo killall pat -sudo systemctl start pat@$WHO -sudo systemctl enable pat@$WHO -cd $DIR -FIG=$HOME/.wl2k/config.json -#set callsign -sed -i "s/\"mycall\": \".*\",/\"mycall\": \"$CALL\",/" $FIG -#set password -WL2KPASS=$(grep "WL2KPASS" $MYPATH/config | sed 's/"//g' | sed 's/WL2KPASS=//') -sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \""$WL2KPASS"\",/" $FIG -#set locator -sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" $FIG -#Change localhost to 0.0.0.0 -sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:$PORT\",/" $FIG -jq '.ax25.rig = '\"my-rig\"'' $HOME/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' > ~/Desktop/config.json -mv $HOME/Desktop/config.json $FIG -sed -i 's/"enable_http": false,/"enable_http": true,/' $FIG +PAT() { + echo "##################" + echo "installing pat" + echo "##################" + PORT=8080 + cd ${DIR} + if [ -f ${HOME}/.wl2k/config.json ]; then + cp ${HOME}/.wl2k/config.json ${DIR}/config.json + fi + NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep armhf | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//') + NEWPAT=$(echo ${NEWPATV} | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//') + echo "new pat v ${NEWPATV}" + echo "new pat ${NEWPAT}" + wget --tries 2 --connect-timeout=60 https://github.com/la5nta/pat/releases/download/v0.${NEWPAT}/${NEWPATV} + sudo dpkg -i ${DIR}/${NEWPATV} + pat http & + sudo killall pat + sudo systemctl start pat@${WHO} + sudo systemctl enable pat@${WHO} + cd ${DIR} + FIG=${HOME}/.wl2k/config.json + #set callsign + sed -i "s/\"mycall\": \".*\",/\"mycall\": \"${CALL}\",/" ${FIG} + #set password + WL2KPASS=$(grep "WL2KPASS" ${MYPATH}/config | sed 's/"//g' | sed 's/WL2KPASS=//') + sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \""$WL2KPASS"\",/" ${FIG} + #set locator + sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" ${FIG} + #Change localhost to 0.0.0.0 + sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:$PORT\",/" ${FIG} + jq '.ax25.rig = '\"my-rig\"'' ${HOME}/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' >~/Desktop/config.json + mv ${HOME}/Desktop/config.json ${FIG} + sed -i 's/"enable_http": false,/"enable_http": true,/' ${FIG} -if [ -f $DIR/config.json ]; then -mv $DIR/config.json $HOME/.wl2k/ -fi + if [ -f ${DIR}/config.json ]; then + mv ${DIR}/config.json ${HOME}/.wl2k/ + fi } ################################## # PAT MENU ################################## -PAT-MENU(){ -#backup config files (Issue #119) -if [ -f $HOME/patmenu2/config ]; then -mkdir -p $DIR/patconfig -cp $HOME/patmenu2/*config* $DIR/patconfig/ -fi -#update pat menu -if [ -d $HOME/patmenu2 ]; then -rm -rf $HOME/patmenu2 -fi -cd $HOME -git clone https://github.com/km4ack/patmenu2.git $HOME/patmenu2 && bash $HOME/patmenu2/setup -sed -i "s/N0CALL/$CALL/" $HOME/patmenu2/config -sed -i 's/1,0/2,0/g' $HOME/patmenu2/config -#restore config files -if [ -d $DIR/patconfig/ ]; then -mv $DIR/patconfig/* $HOME/patmenu2/ -fi +PAT-MENU() { + #backup config files (Issue #119) + if [ -f ${HOME}/patmenu2/config ]; then + mkdir -p ${DIR}/patconfig + cp ${HOME}/patmenu2/*config* ${DIR}/patconfig/ + fi + #update pat menu + if [ -d ${HOME}/patmenu2 ]; then + rm -rf "${HOME}/patmenu2" + fi + cd ${HOME} + git clone https://github.com/km4ack/patmenu2.git ${HOME}/patmenu2 && bash ${HOME}/patmenu2/setup + sed -i "s/N0CALL/${CALL}/" ${HOME}/patmenu2/config + sed -i 's/1,0/2,0/g' ${HOME}/patmenu2/config + #restore config files + if [ -d ${DIR}/patconfig/ ]; then + mv ${DIR}/patconfig/* ${HOME}/patmenu2/ + fi } ################################## # JS8Call ################################## -JS8CALL(){ -cd $DIR -JS8LATE=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/href=//' | sed 's/"//g') -JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/\///g' | sed 's/href="http:files.js8call.com[0-9].[0-9].[0-9]//' | sed 's/"//') -wget --tries 2 --connect-timeout=60 $JS8LATE || echo "Can't Download JS8Call" >> $BUILDLOG -sudo dpkg -i $JS8PKG -sudo apt-get --fix-broken -y install -sudo dpkg -i $JS8PKG +JS8CALL() { + cd ${DIR} + JS8LATE=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/href=//' | sed 's/"//g') + JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/\///g' | sed 's/href="http:files.js8call.com[0-9].[0-9].[0-9]//' | sed 's/"//') + wget --tries 2 --connect-timeout=60 ${JS8LATE} || echo "Can't Download JS8Call" >>${BUILDLOG} + sudo dpkg -i ${JS8PKG} + sudo apt-get --fix-broken -y install + sudo dpkg -i ${JS8PKG} } ################################## # WSJTX ################################## -WSJTX(){ -cd $DIR -WSPKG=$(curl -s https://physics.princeton.edu/pulsar/k1jt/wsjtx.html | grep armhf.deb | sed 's/^.*wsjtx/wsjtx/' | sed 's/deb.*$/deb/' | head -1) -wget --tries 2 --connect-timeout=60 --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/$WSPKG -WSJTXSUCCESS=$? -sudo dpkg -i $WSPKG -sudo apt-get --fix-broken -y install -sudo dpkg -i $WSPKG -#added to fix WSJTX 2.3.0 -sudo sed -i "s/# en_US.UTF-8/en_US.UTF-8/g" /etc/locale.gen -sudo locale-gen -#end edit for WSJTX 2.3.0 - #try sourcegorge if princeton.edu fails - WSJTX2(){ - if [ "$WSJTXSUCCESS" ! = 0 ]; then - cd $DIR - wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/wsjt/files/wsjtx-2.2.2/wsjtx_2.2.2_armhf.deb - sudo dpkg -i wsjtx_2.2.2_armhf.deb +WSJTX() { + cd ${DIR} + WSPKG=$(curl -s https://physics.princeton.edu/pulsar/k1jt/wsjtx.html | grep armhf.deb | sed 's/^.*wsjtx/wsjtx/' | sed 's/deb.*$/deb/' | head -1) + wget --tries 2 --connect-timeout=60 --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/$WSPKG + WSJTXSUCCESS=$? + sudo dpkg -i $WSPKG sudo apt-get --fix-broken -y install - sudo dpkg -i wsjtx_2.2.2_armhf.deb - fi + sudo dpkg -i $WSPKG + #added to fix WSJTX 2.3.0 + sudo sed -i "s/# en_US.UTF-8/en_US.UTF-8/g" /etc/locale.gen + sudo locale-gen + #end edit for WSJTX 2.3.0 + #try sourcegorge if princeton.edu fails + WSJTX2() { + if [ "$WSJTXSUCCESS" ! = 0 ]; then + cd ${DIR} + wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/wsjt/files/wsjtx-2.2.2/wsjtx_2.2.2_armhf.deb + sudo dpkg -i wsjtx_2.2.2_armhf.deb + sudo apt-get --fix-broken -y install + sudo dpkg -i wsjtx_2.2.2_armhf.deb + fi } WSJTX2 } - - ################################## # CONKY ################################## -CONKY(){ +CONKY() { if ! hash conky 2>/dev/null; then - sudo apt install -y conky + sudo apt install -y conky fi -touch $HOME/Documents/mylog.txt #conky will fail to load if this file doesn't exist -touch /var/lib/misc/dnsmasq.leases #conky will fail to load if this file doesn't exist -sudo apt-get install -y ruby2.5 -sudo gem install gpsd_client -sudo gem install maidenhead -cp $MYPATH/conky/.conkyrc $HOME/.conkyrc -mkdir -p $HOME/bin/conky -cp $MYPATH/conky/* $HOME/bin/conky/ -chmod +x $HOME/bin/conky/get-grid $HOME/bin/conky/temp-conv $HOME/bin/conky/get-freq $HOME/bin/conky/grid -sed -i "s/N0CALL/$CALL/" $HOME/.conkyrc -#Line below is for https://github.com/km4ack/pi-build/issues/198 -echo "#Update GPS maidenhead for conky" >> $TEMPCRON -echo "*/1 * * * * /home/pi/bin/conky/grid" >> $TEMPCRON + touch ${HOME}/Documents/mylog.txt #conky will fail to load if this file doesn't exist + touch /var/lib/misc/dnsmasq.leases #conky will fail to load if this file doesn't exist + sudo apt-get install -y ruby2.5 + sudo gem install gpsd_client + sudo gem install maidenhead + cp ${MYPATH}/conky/.conkyrc ${HOME}/.conkyrc + mkdir -p ${HOME}/bin/conky + cp ${MYPATH}/conky/* ${HOME}/bin/conky/ + chmod +x ${HOME}/bin/conky/get-grid ${HOME}/bin/conky/temp-conv ${HOME}/bin/conky/get-freq ${HOME}/bin/conky/grid + sed -i "s/N0CALL/${CALL}/" ${HOME}/.conkyrc + #Line below is for https://github.com/km4ack/pi-build/issues/198 + echo "#Update GPS maidenhead for conky" >>${TEMPCRON} + echo "*/1 * * * * /home/pi/bin/conky/grid" >>${TEMPCRON} -#Create files needed for autostart at login -#Fix issue https://github.com/km4ack/pi-build/issues/83 + #Create files needed for autostart at login + #Fix issue https://github.com/km4ack/pi-build/issues/83 -cat < $HOME/.local/share/applications/conky.desktop + cat <${HOME}/.local/share/applications/conky.desktop [Desktop Entry] Name=Conky Comment=Conky @@ -155,12 +152,12 @@ Categories=HamRadio Keywords=Radio EOF -ln -sf $HOME/.local/share/applications/conky.desktop $HOME/.config/autostart/conky.desktop + ln -sf ${HOME}/.local/share/applications/conky.desktop ${HOME}/.config/autostart/conky.desktop -#####Add setconky to main menu -chmod +x $HOME/pi-build/conky/setconky + #####Add setconky to main menu + chmod +x ${HOME}/pi-build/conky/setconky -cat < $HOME/.local/share/applications/setconky.desktop + cat <${HOME}/.local/share/applications/setconky.desktop [Desktop Entry] Name=Conky-Prefs Comment=Conky-Prefs @@ -179,15 +176,15 @@ EOF ################################## # M0IAX Tools ################################## -M0IAX(){ -cd $DIR -wget http://m0iax.com/wp-content/uploads/2020/08/JS8CallUtils_RaspberryPi.zip -unzip JS8CallUtils_RaspberryPi.zip -rm JS8CallUtils_RaspberryPi.zip -chmod +x JS8CallUtils_v2 -sudo mv JS8CallUtils_v2 /usr/local/bin +M0IAX() { + cd ${DIR} || exit + wget http://m0iax.com/wp-content/uploads/2020/08/JS8CallUtils_RaspberryPi.zip + unzip JS8CallUtils_RaspberryPi.zip + rm JS8CallUtils_RaspberryPi.zip + chmod +x JS8CallUtils_v2 + sudo mv JS8CallUtils_v2 /usr/local/bin -cat > m0iax.desktop <m0iax.desktop < cqrlog.desktop <cqrlog.desktop <//' | sed 's/[<].*$//') -sudo apt-get -y install python-gtk2 python-serial python-libxml2 -mkdir $HOME/chirp -cd $HOME/chirp -wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/$CHIRPBUILD -tar -xzf $CHIRPBUILD -CHIRPDIR=$(echo $CHIRPBUILD | sed 's/[.].*$//') -cd $CHIRPDIR -sudo python setup.py install -pip install future +CHIRP() { + cd ${DIR} || exit + wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/ + CHIRPBUILD=$(cat index.html | grep .tar.gz | grep chirp-daily- | awk '{ print $6 }' | sed 's/.*"//' | sed 's/>//' | sed 's/[<].*$//') + sudo apt-get -y install python-gtk2 python-serial python-libxml2 + mkdir ${HOME}/chirp + cd ${HOME}/chirp || exit + wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/$CHIRPBUILD + tar -xzf $CHIRPBUILD + CHIRPDIR=$(echo $CHIRPBUILD | sed 's/[.].*$//') + cd $CHIRPDIR || exit + sudo python setup.py install + pip install future } ################################## # GARIM ################################## -GARIM(){ -GPKG=$(curl -s https://www.whitemesa.net/garim/src/ | grep tar.gz | tail -1 | sed 's/^.*garim/garim/' | sed 's/tar.gz.*$/tar.gz/') -cd $DIR -wget --tries 2 --connect-timeout=60 https://www.whitemesa.net/garim/src/$GPKG -tar -xzvf $GPKG -DIRR=$(echo $GPKG | sed 's/.tar.gz//') -cd $DIRR -./configure -make -sudo make install +GARIM() { + GPKG=$(curl -s https://www.whitemesa.net/garim/src/ | grep tar.gz | tail -1 | sed 's/^.*garim/garim/' | sed 's/tar.gz.*$/tar.gz/') + cd ${DIR} || exit + wget --tries 2 --connect-timeout=60 https://www.whitemesa.net/garim/src/$GPKG + tar -xzvf $GPKG + DIRR=$(echo $GPKG | sed 's/.tar.gz//') + cd ${DIRR} || exit + ./configure + make + sudo make install } ################################## # QSSTV ################################## -QSSTV(){ -sudo apt-get install -y g++ libfftw3-dev qt5-default libpulse-dev libhamlib-dev libasound2-dev libv4l-dev libopenjp2-7 libopenjp2-7-dev +QSSTV() { + sudo apt-get install -y g++ libfftw3-dev qt5-default libpulse-dev libhamlib-dev libasound2-dev libv4l-dev libopenjp2-7 libopenjp2-7-dev -cd $HOME/Downloads + cd ${HOME}/Downloads || exit -#not working with 9.5.1 -#TAR=$(curl -s http://users.telenet.be/on4qz/qsstv/downloads/ | grep tar.gz | sed 's/.*href="//' | sed 's/">.*$//' | tail -1) -#wget --tries 2 --connect-timeout=60 http://users.telenet.be/on4qz/qsstv/downloads/$TAR -#SSTVTAR=$(echo $TAR | sed 's/.tar.gz//;s/.0//') -#tar -xvzf $TAR -#cd $SSTVTAR -#qmake -#make -#sudo make install + #not working with 9.5.1 + #TAR=$(curl -s http://users.telenet.be/on4qz/qsstv/downloads/ | grep tar.gz | sed 's/.*href="//' | sed 's/">.*$//' | tail -1) + #wget --tries 2 --connect-timeout=60 http://users.telenet.be/on4qz/qsstv/downloads/$TAR + #SSTVTAR=$(echo $TAR | sed 's/.tar.gz//;s/.0//') + #tar -xvzf $TAR + #cd $SSTVTAR || exit + #qmake + #make + #sudo make install -#hard code for 9.4.4 as temp wrokaround 02MARCH2021 -wget --tries 2 --connect-timeout=60 http://users.telenet.be/on4qz/qsstv/downloads/qsstv_9.4.4.tar.gz -tar -xvzf qsstv_9.4.4.tar.gz -cd qsstv_9.4.4 -qmake -make -sudo make install + #hard code for 9.4.4 as temp wrokaround 02MARCH2021 + wget --tries 2 --connect-timeout=60 http://users.telenet.be/on4qz/qsstv/downloads/qsstv_9.4.4.tar.gz + tar -xvzf qsstv_9.4.4.tar.gz + cd qsstv_9.4.4 || exit + qmake + make + sudo make install - -sudo sed -i 's/Education;/Network;HamRadio;/' /usr/local/share/applications/qsstv.desktop + sudo sed -i 's/Education;/Network;HamRadio;/' /usr/local/share/applications/qsstv.desktop } ################################## # GRIDTRACKER ################################## -GRIDTRACKER(){ -cd $HOME -sudo apt-get install -y libgconf-2-4 -GRIDDLL=$(curl -s https://tagloomis.com/downloads/ | grep Arm | head -1 | sed 's/.*href="//' | sed 's/.gz.*$/.gz/') -wget --tries 2 --connect-timeout=60 $GRIDDLL -GRIDTAR=$(echo $GRIDDLL | sed 's/.*\///g') -tar -xzvf $GRIDTAR -rm *.gz -cat > gridtracker.desktop <> YAAC -echo "java -jar $HOME/YAAC/YAAC.jar" >> YAAC -chmod +x YAAC -cat > yaac.desktop <>YAAC + echo "java -jar ${HOME}/YAAC/YAAC.jar" >>YAAC + chmod +x YAAC + cat >yaac.desktop < xastir.desktop <xastir.desktop </dev/null; then -sudo apt install -y php7.3 -fi -#install ghostwriter if needed -#this is used to mod the new index.html -#page. 20200229 -if ! hash ghostwriter 2>/dev/null; then -sudo apt-get install -y ghostwriter -fi -#Install the KM4ACK EES -cd $DIR -git clone https://github.com/km4ack/EES-LITE.git -cd $DIR/EES-LITE -#git dev branch of code -git checkout dev -sudo cp -r $DIR/EES-LITE/* /var/www/html/ -rm -rf $DIR/EES-LITE -cd /var/www/html -sudo chmod +x /var/www/html/firstrun -sudo /var/www/html/./firstrun -sudo sed -i "s/N0CALL/$CALL/" /var/www/html/config.php -sudo sed -i 's/REMINDER\ FOR\ OPERATOR\ TO\ DO\ SOMETHING/ENABLE\ AUTO\ POST\ REPLY\ IN\ CRON/' /var/www/html/config.php -cd $DIR -#Change Pat Winlink port so it won't interfer with the EES -sed -i 's/0.0.0.0:8080/0.0.0.0:5000/' $HOME/.wl2k/config.json -sed -i 's/PORT=8080/PORT=5000/' $HOME/patmenu2/config + #install PHP7.3 if not installed + #this will also install apache2 + if ! hash php7.3 2>/dev/null; then + sudo apt install -y php7.3 + fi + #install ghostwriter if needed + #this is used to mod the new index.html + #page. 20200229 + if ! hash ghostwriter 2>/dev/null; then + sudo apt-get install -y ghostwriter + fi + #Install the KM4ACK EES + cd ${DIR} || exit + git clone https://github.com/km4ack/EES-LITE.git + cd ${DIR}/EES-LITE || exit + #git dev branch of code + git checkout dev + sudo cp -r ${DIR}/EES-LITE/* /var/www/html/ + rm -rf "${DIR}/EES-LITE" + cd /var/www/html || exit + sudo chmod +x /var/www/html/firstrun + sudo /var/www/html/./firstrun + sudo sed -i "s/N0CALL/${CALL}/" /var/www/html/config.php + sudo sed -i 's/REMINDER\ FOR\ OPERATOR\ TO\ DO\ SOMETHING/ENABLE\ AUTO\ POST\ REPLY\ IN\ CRON/' /var/www/html/config.php + cd ${DIR} || exit + #Change Pat Winlink port so it won't interfer with the EES + sed -i 's/0.0.0.0:8080/0.0.0.0:5000/' ${HOME}/.wl2k/config.json + sed -i 's/PORT=8080/PORT=5000/' ${HOME}/patmenu2/config -sudo killall pat -sudo systemctl start pat@$WHO - -#Move info.markdown from EES folder to Documents -sudo mv /var/www/html/info.markdown $HOME/Documents/ -sudo chown $WHO:$WHO $HOME/Documents/info.markdown -#move info.html to pi documents folder -sudo cp /var/www/html/index.html $HOME/Documents/info.html -sudo chown $WHO:$WHO $HOME/Documents/info.html -#move script to be run by cron to bin dir -sudo mv /var/www/html/webcopy $HOME/bin/ -sudo chown $WHO:$WHO $HOME/bin/webcopy -sudo chmod +x $HOME/bin/webcopy - -#set up cron job for EES -echo "#-----Start EES Server Options------" >> $TEMPCRON -echo "#Move EES email to Pat Winlink Outbox" >> $TEMPCRON -echo "*/1 * * * * /var/www/html/movetopat" >> $TEMPCRON -echo " " >> $TEMPCRON -echo "#Auto post replies for EES server" >> $TEMPCRON -echo "#Default is off. Activate by removing # on line below" >> $TEMPCRON -echo "#*/1 * * * * /var/www/html/autopostreply" >> $TEMPCRON -echo "#Line below moves info.html to index.html when modified" >> $TEMPCRON -echo "*/1 * * * * $HOME/bin/webcopy" >> $TEMPCRON -echo "#-----End EES Server Options------" >> $TEMPCRON + sudo killall pat + sudo systemctl start pat@${WHO} + #Move info.markdown from EES folder to Documents + sudo mv /var/www/html/info.markdown ${HOME}/Documents/ + sudo chown ${WHO}:${WHO} ${HOME}/Documents/info.markdown + #move info.html to pi documents folder + sudo cp /var/www/html/index.html ${HOME}/Documents/info.html + sudo chown ${WHO}:${WHO} ${HOME}/Documents/info.html + #move script to be run by cron to bin dir + sudo mv /var/www/html/webcopy ${HOME}/bin/ + sudo chown ${WHO}:${WHO} ${HOME}/bin/webcopy + sudo chmod +x ${HOME}/bin/webcopy + #set up cron job for EES + echo "#-----Start EES Server Options------" >>${TEMPCRON} + echo "#Move EES email to Pat Winlink Outbox" >>${TEMPCRON} + echo "*/1 * * * * /var/www/html/movetopat" >>${TEMPCRON} + echo " " >>${TEMPCRON} + echo "#Auto post replies for EES server" >>${TEMPCRON} + echo "#Default is off. Activate by removing # on line below" >>${TEMPCRON} + echo "#*/1 * * * * /var/www/html/autopostreply" >>${TEMPCRON} + echo "#Line below moves info.html to index.html when modified" >>${TEMPCRON} + echo "*/1 * * * * ${HOME}/bin/webcopy" >>${TEMPCRON} + echo "#-----End EES Server Options------" >>${TEMPCRON} } - ################################## # Pi-APRS ################################## -PI-APRS(){ -cd $HOME -git clone https://github.com/km4ack/Pi-APRS.git -sudo cp ~/Pi-APRS/piaprs.desktop /usr/share/applications +PI-APRS() { + cd ${HOME} || exit + git clone https://github.com/km4ack/Pi-APRS.git + sudo cp ~/Pi-APRS/piaprs.desktop /usr/share/applications } ################################## # HamClock Small ################################## -SMALL(){ -sudo apt-get -y install make g++ libx11-dev -cd $DIR -curl -o ESPHamClock.zip http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip -unzip ESPHamClock.zip -rm ESPHamClock.zip -cd ESPHamClock -sudo make -j 4 hamclock -sudo chmod +s hamclock -sudo mv hamclock /usr/local/bin/hamclock -rm -rf $DIR/ESPHamClock +SMALL() { + sudo apt-get -y install make g++ libx11-dev + cd ${DIR} || exit + curl -o ESPHamClock.zip http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip + unzip ESPHamClock.zip + rm ESPHamClock.zip + cd ESPHamClock || exit + sudo make -j 4 hamclock + sudo chmod +s hamclock + sudo mv hamclock /usr/local/bin/hamclock + rm -rf "${DIR}/ESPHamClock" -cat > $HOME/Downloads/hamclock.desktop <${HOME}/Downloads/hamclock.desktop < $HOME/Downloads/hamclock.desktop <${HOME}/Downloads/hamclock.desktop </dev/null; then -cat < $HOME/Desktop/XLOG.txt +XLOG() { + #verify hamlib installed + if ! hash rigctld 2>/dev/null; then + cat <${HOME}/Desktop/XLOG.txt Xlog could not be installed because hamlib wasn't found on the system. Use the build a pi script to install hamlib and then try installing xlog again. EOF -else + else -TARXLOG=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ | \ -grep 2.[0-9].[0-9][0-9].tar | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//') + TARXLOG=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ | + grep 2.[0-9].[0-9][0-9].tar | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//') -DIRXLOG=$(echo $TARXLOG | sed 's/.tar.gz//') + DIRXLOG=$(echo ${TARXLOG} | sed 's/.tar.gz//') -cd $HOME + cd ${HOME} || exit -sudo apt-get install -y libgtkgl2.0-dev libusb-1.0-0-dev -wget https://download.savannah.nongnu.org/releases/xlog/$TARXLOG -tar -xzvf $TARXLOG -rm $TARXLOG -cd $DIRXLOG -./configure -make -sudo make install -cd $HOME -rm -rf $DIRXLOG -fi + sudo apt-get install -y libgtkgl2.0-dev libusb-1.0-0-dev + wget https://download.savannah.nongnu.org/releases/xlog/${TARXLOG} + tar -xzvf ${TARXLOG} + rm ${TARXLOG} + cd ${DIR}XLOG || exit + ./configure + make + sudo make install + cd ${HOME} || exit + rm -rf "${DIR}XLOG" + fi } ################################## @@ -642,19 +633,17 @@ fi #see https://github.com/km4ack/pi-build/issues/153 #14OCT2020 KM4ACK -JTDX(){ -cd $HOME -#curl won't work here. Returns "forbidden" Use wget instead -wget -qO jtdx.txt https://www.jtdx.tech/en/ -VER=$(grep armhf.deb jtdx.txt | awk '{print $2}' | sed 's/"//g' | sed 's/href=\/downloads\/Linux\///') -rm jtdx.txt +JTDX() { + cd ${HOME} + #curl won't work here. Returns "forbidden" Use wget instead + wget -qO jtdx.txt https://www.jtdx.tech/en/ + VER=$(grep armhf.deb jtdx.txt | awk '{print $2}' | sed 's/"//g' | sed 's/href=\/downloads\/Linux\///') + rm jtdx.txt -wget https://www.jtdx.tech/downloads/Linux/$VER + wget https://www.jtdx.tech/downloads/Linux/${VER} -sudo dpkg -i $VER -sudo apt-get --fix-broken -y install -sudo dpkg -i $VER -rm $VER + sudo dpkg -i ${VER} + sudo apt-get --fix-broken -y install + sudo dpkg -i ${VER} + rm ${VER} } - - diff --git a/functions/autohotspot b/functions/autohotspot index 20ed1c5..8dc4a19 100644 --- a/functions/autohotspot +++ b/functions/autohotspot @@ -13,12 +13,11 @@ shackwifi=$1 shackpass=$2 wifipasswd=$3 #escape all "&" incase used in HS password -wifipasswd=$(sed 's|&|\\&|g' <<< $wifipasswd) - +wifipasswd=$(sed 's|&|\\&|g' <<<${wifipasswd}) #unblock wifi #needed after buster 20200205 -rfkill unblock all > /dev/null 2>&1 +rfkill unblock all >/dev/null 2>&1 #install hostapd, dnsmasq apt-get install -y hostapd @@ -31,45 +30,44 @@ systemctl unmask hostapd systemctl disable hostapd systemctl disable dnsmasq -mkdir -p $HOME/temp -cd $HOME/temp +mkdir -p ${HOME}/temp +cd ${HOME}/temp || exit wget http://www.raspberryconnect.com/images/Autohotspot/autohotspot-95-4/hostapd.txt #set new hotspot passwd -sed -i "s|wpa_passphrase=1234567890|wpa_passphrase=$wifipasswd|" $HOME/temp/hostapd.txt +sed -i "s|wpa_passphrase=1234567890|wpa_passphrase=${wifipasswd}|" ${HOME}/temp/hostapd.txt #set country to US -sed -i 's/country_code=GB/country_code=US/' $HOME/temp/hostapd.txt +sed -i 's/country_code=GB/country_code=US/' ${HOME}/temp/hostapd.txt #move hostapd to correct location -mv $HOME/temp/hostapd.txt /etc/hostapd/hostapd.conf +mv ${HOME}/temp/hostapd.txt /etc/hostapd/hostapd.conf sed -i s'/#DAEMON_CONF=""/DAEMON_CONF="\/etc\/hostapd\/hostapd.conf"/' /etc/default/hostapd sed -i s'/DAEMON_OPTS=""/#DAEMON_OPTS=""/' /etc/default/hostapd #add needed info to dnsmasq.conf -echo "#AutoHotspot config" >> /etc/dnsmasq.conf -echo "interface=wlan0" >> /etc/dnsmasq.conf -echo "bind-dynamic" >> /etc/dnsmasq.conf -echo "server=8.8.8.8" >> /etc/dnsmasq.conf -echo "domain-needed" >> /etc/dnsmasq.conf -echo "bogus-priv" >> /etc/dnsmasq.conf -echo "dhcp-range=10.10.10.150,10.10.10.200,255.255.255.0,12h" >> /etc/dnsmasq.conf -echo "#Set up redirect for email.com" >> /etc/dnsmasq.conf -echo "dhcp-option=3,10.10.10.10" >> /etc/dnsmasq.conf -echo "address=/email.com/10.10.10.10" >> /etc/dnsmasq.conf +echo "#AutoHotspot config" >>/etc/dnsmasq.conf +echo "interface=wlan0" >>/etc/dnsmasq.conf +echo "bind-dynamic" >>/etc/dnsmasq.conf +echo "server=8.8.8.8" >>/etc/dnsmasq.conf +echo "domain-needed" >>/etc/dnsmasq.conf +echo "bogus-priv" >>/etc/dnsmasq.conf +echo "dhcp-range=10.10.10.150,10.10.10.200,255.255.255.0,12h" >>/etc/dnsmasq.conf +echo "#Set up redirect for email.com" >>/etc/dnsmasq.conf +echo "dhcp-option=3,10.10.10.10" >>/etc/dnsmasq.conf +echo "address=/email.com/10.10.10.10" >>/etc/dnsmasq.conf mv /etc/network/interfaces /etc/network/interfaces.org -echo "source-directory /etc/network/interfaces.d" >> /etc/network/interfaces +echo "source-directory /etc/network/interfaces.d" >>/etc/network/interfaces - -echo "nohook wpa_supplicant" >> /etc/dhcpcd.conf +echo "nohook wpa_supplicant" >>/etc/dhcpcd.conf #setup ip forward sed 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf -cd $HOME/temp +cd ${HOME}/temp || exit wget http://www.raspberryconnect.com/images/autohotspotN/autohotspotn-95-4/autohotspot-service.txt @@ -82,13 +80,12 @@ systemctl enable autohotspot.service #check if iw installed. install if not iwcheck=$(dpkg --get-selections | grep -w "iw") -if [ -z "iw" ] -then -apt-get install iw +if [ -z "iw" ]; then #THIS MIGHT NEED TO SOME LOOKING AT -- SEE SC2157 + apt-get install iw fi #install autohotspot script -cd $HOME/temp +cd ${HOME}/temp || exit wget http://www.raspberryconnect.com/images/autohotspotN/autohotspotn-95-4/autohotspotN.txt #mod ip address for our custom setup sed -i 's/192.168.50.5/10.10.10.10/' autohotspotN.txt @@ -96,8 +93,8 @@ mv autohotspotN.txt /usr/bin/autohotspotN chmod +x /usr/bin/autohotspotN #add shack wifi to wpa_supplicant.conf -echo "network={" >> /etc/wpa_supplicant/wpa_supplicant.conf -echo "ssid=\"$shackwifi\"" >> /etc/wpa_supplicant/wpa_supplicant.conf -echo "psk=\"$shackpass\"" >> /etc/wpa_supplicant/wpa_supplicant.conf -echo "key_mgmt=WPA-PSK" >> /etc/wpa_supplicant/wpa_supplicant.conf -echo "}" >> /etc/wpa_supplicant/wpa_supplicant.conf +echo "network={" >>/etc/wpa_supplicant/wpa_supplicant.conf +echo "ssid=\"$shackwifi\"" >>/etc/wpa_supplicant/wpa_supplicant.conf +echo "psk=\"$shackpass\"" >>/etc/wpa_supplicant/wpa_supplicant.conf +echo "key_mgmt=WPA-PSK" >>/etc/wpa_supplicant/wpa_supplicant.conf +echo "}" >>/etc/wpa_supplicant/wpa_supplicant.conf diff --git a/functions/base.function b/functions/base.function index c011982..92027f5 100644 --- a/functions/base.function +++ b/functions/base.function @@ -1,61 +1,61 @@ #this installs the basic software for build-a-pi #km4ack 20200513 -TEMPCRON=$MYPATH/cron.tmp -DIR=$MYPATH/temp -mkdir -p $DIR +TEMPCRON=${MYPATH}/cron.tmp +DIR=${MYPATH}/temp +mkdir -p ${DIR} -source $MYPATH/config +source ${MYPATH}/config ################################ # HOTSPOT ################################ -HOTSPOT(){ -HS="/usr/bin/autohotspotN" -if [ ! -f "$HS" ]; then -#pass variables with script because run as root -sudo bash $MYPATH/functions/autohotspot "$SHACKSSID" "$SHACKPASS" "$HSPASS" -echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >> $TEMPCRON -else -echo ################################ -echo ################################ -echo " FATAL ERROR" -echo "HOTSPOT ALREADY INSTALLED ONCE" -echo " CANNOT INSTALL AGAIN" -echo " WILL CONTINUE IN 10 SECONDS" -echo ################################ -echo ################################ -sleep 10 -fi +HOTSPOT() { + HS="/usr/bin/autohotspotN" + if [ ! -f "${HS}" ]; then + #pass variables with script because run as root + sudo bash ${MYPATH}/functions/autohotspot "${SHACKSSID}" "${SHACKPASS}" "${HSPASS}" + echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >>${TEMPCRON} + else + echo ################################ + echo ################################ + echo " FATAL ERROR" + echo "HOTSPOT ALREADY INSTALLED ONCE" + echo " CANNOT INSTALL AGAIN" + echo " WILL CONTINUE IN 10 SECONDS" + echo ################################ + echo ################################ + sleep 10 + fi } ################################ # HOTSPOT TOOLS ################################ -HSTOOLS(){ -if [ -d $HOME/hotspot-tools2 ]; then -rm -rf $HOME/hotspot-tools2 -fi -git clone https://github.com/km4ack/hotspot-tools2.git $HOME/hotspot-tools2 -sudo cp $HOME/hotspot-tools2/hstools.desktop /usr/share/applications/hotspot-tools.desktop +HSTOOLS() { + if [ -d ${HOME}/hotspot-tools2 ]; then + rm -rf ${HOME}/hotspot-tools2 + fi + git clone https://github.com/km4ack/hotspot-tools2.git ${HOME}/hotspot-tools2 + sudo cp ${HOME}/hotspot-tools2/hstools.desktop /usr/share/applications/hotspot-tools.desktop } ################################ # GPS ################################ -GPS(){ -cd $DIR -wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall -chmod +x $DIR/gpsinstall -sudo $DIR/gpsinstall -rm $DIR/gpsinstall -#Set GPS by serial ID -#GPS Variable set by main script or update script -#and placed in config file -sudo sed -i "s|DEVICES.*$|DEVICES=\"$GPS\"|g" /etc/default/gpsd +GPS() { + cd ${DIR} || exit + wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall + chmod +x ${DIR}/gpsinstall + sudo ${DIR}/gpsinstall + rm ${DIR}/gpsinstall + #Set GPS by serial ID + #GPS Variable set by main script or update script + #and placed in config file + sudo sed -i "s|DEVICES.*$|DEVICES=\"$GPS\"|g" /etc/default/gpsd -#add xgps to menu -cat > xgps.desktop <xgps.desktop < ardopgui.desktop <ardopgui.desktop <> $FILE -echo "Host=local" >> $FILE -echo "Port=8515" >> $FILE + sudo mv ardopgui.desktop /usr/share/applications/ + FILE=${HOME}/.config/G8BPQ/ARDOP_GUI.conf + mkdir -p ${HOME}/.config/G8BPQ + touch ${FILE} + echo "[General]" >>${FILE} + echo "Host=local" >>${FILE} + echo "Port=8515" >>${FILE} } ################################ # HAMLIB ################################ -HAMLIB(){ -cd $DIR -NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \ -grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \ -head -n 1 | awk -F "/" '{print $7}') -HAMLIBLINK=https://sourceforge.net/projects/hamlib/files/hamlib/$NEWRIG/hamlib-$NEWRIG.tar.gz -cd $HOME/Downloads -echo "###################################" -echo "# Installing Hamlib " -echo "###################################" -wget --tries 2 --connect-timeout=60 $HAMLIBLINK +HAMLIB() { + cd ${DIR} || exit + NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | + grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | + head -n 1 | awk -F "/" '{print $7}') + HAMLIBLINK=https://sourceforge.net/projects/hamlib/files/hamlib/${NEWRIG}/hamlib-${NEWRIG}.tar.gz + cd ${HOME}/Downloads || exit + echo "###################################" + echo "# Installing Hamlib " + echo "###################################" + wget --tries 2 --connect-timeout=60 ${HAMLIBLINK} -tar -xzf hamlib-$NEWRIG.tar.gz -rm hamlib-$NEWRIG.tar.gz -cd hamlib-$NEWRIG -./configure -make -sudo make install -sudo ldconfig + tar -xzf hamlib-${NEWRIG}.tar.gz + rm hamlib-${NEWRIG}.tar.gz + cd hamlib-${NEWRIG} || exit + ./configure + make + sudo make install + sudo ldconfig } ################################ # DIREWOLF ################################ -DIREWOLF(){ -cd $HOME -git clone https://www.github.com/wb2osz/direwolf -cd $HOME/direwolf -mkdir build && cd build -sudo apt-get install -y libasound2-dev cmake -cmake .. -make -j 4 -sudo make install -make install-conf -sed -i "s/N0CALL/$CALL/" "$HOME/direwolf.conf" -sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:2,0/' $HOME/direwolf.conf -sed -i '/#PTT\ \/dev\/ttyUSB0\ RTS/a #Uncomment line below for PTT with sabrent sound card\n#PTT RIG 2 localhost:4532' $HOME/direwolf.conf -rm -rf $HOME/direwolf +DIREWOLF() { + cd ${HOME} || exit + git clone https://www.github.com/wb2osz/direwolf + cd ${HOME}/direwolf || exit + (mkdir build && cd build) || exit + sudo apt-get install -y libasound2-dev cmake + cmake .. + make -j 4 + sudo make install + make install-conf + sed -i "s/N0CALL/${CALL}/" "${HOME}/direwolf.conf" + sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:2,0/' ${HOME}/direwolf.conf + sed -i '/#PTT\ \/dev\/ttyUSB0\ RTS/a #Uncomment line below for PTT with sabrent sound card\n#PTT RIG 2 localhost:4532' ${HOME}/direwolf.conf + rm -rf ${HOME}/direwolf } ################################ # AX25 ################################ -AX25(){ -sudo apt-get install -y ax25-tools -echo "wl2k "$CALL" 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports -sudo apt-get install -y ax25-apps +AX25() { + sudo apt-get install -y ax25-tools + echo "wl2k ${CALL} 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports + sudo apt-get install -y ax25-apps } ################################ # PULSE AUDIO Control ################################ -PULSE(){ -sudo apt-get install -y pavucontrol +PULSE() { + sudo apt-get install -y pavucontrol } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/functions/flsuite.function b/functions/flsuite.function index e189fbf..a2fdacc 100644 --- a/functions/flsuite.function +++ b/functions/flsuite.function @@ -1,203 +1,192 @@ - - #script to install FLDIGI from source #20200121 km4ack -mkdir -p $HOME/Downloads -FLSTART(){ -#find how much memory we are working with -FREEMEM=$(free -m | grep Mem: | awk '{ print $2 }') -echo $FREEMEM +mkdir -p ${HOME}/Downloads +FLSTART() { + #find how much memory we are working with + FREEMEM=$(free -m | grep Mem: | awk '{ print $2 }') + echo ${FREEMEM} -################################## -# INCREASE SWAP -################################## -#increase swap file if less than 3G memory -if [ $FREEMEM -lt 3000 ] -then -echo "Increasing Swap size for build" -#increase swap size -sudo sed -i 's/#CONF_SWAPFILE=\/var\/swap/CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile -sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile -sudo /etc/init.d/dphys-swapfile restart -sleep 10 -fi + ################################## + # INCREASE SWAP + ################################## + #increase swap file if less than 3G memory + if [ ${FREEMEM} -lt 3000 ]; then + echo "Increasing Swap size for build" + #increase swap size + sudo sed -i 's/#CONF_SWAPFILE=\/var\/swap/CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile + sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile + sudo /etc/init.d/dphys-swapfile restart + sleep 10 + fi -################################## -# DEPENDS -################################## -#install needed depends -sudo apt-get install -y libfltk1.3-dev libjpeg9-dev libxft-dev libxinerama-dev libxcursor-dev libsndfile1-dev libsamplerate0-dev portaudio19-dev libpulse-dev libusb-1.0-0-dev texinfo + ################################## + # DEPENDS + ################################## + #install needed depends + sudo apt-get install -y libfltk1.3-dev libjpeg9-dev libxft-dev libxinerama-dev libxcursor-dev libsndfile1-dev libsamplerate0-dev portaudio19-dev libpulse-dev libusb-1.0-0-dev texinfo -################################## -# FLXMLRPC -################################## -FLX=$(ldconfig -p | grep flxmlrpc) + ################################## + # FLXMLRPC + ################################## + FLX=$(ldconfig -p | grep flxmlrpc) - if [ -z "$FLX" ] - then - #determine latest FLXMLRPC & download - FLXM=$(curl -s http://www.w1hkj.com/files/flxmlrpc/ | grep .tar.gz | sed 's/
  • \ flxmlrpc.*$//') - XMPKG=$( echo $FLXM | sed 's/.tar.gz//') - cd $HOME/Downloads - wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flxmlrpc/$FLXM - tar -zxvf $FLXM - rm *.gz + if [ -z "$FLX" ]; then + #determine latest FLXMLRPC & download + FLXM=$(curl -s http://www.w1hkj.com/files/flxmlrpc/ | grep .tar.gz | sed 's/
  • \ flxmlrpc.*$//') + XMPKG=$(echo ${FLXM} | sed 's/.tar.gz//') + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flxmlrpc/${FLXM} + tar -zxvf ${FLXM} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 - #build FLXMLRPC - cd $XMPKG - ./configure --prefix=/usr/local --enable-static - make - sudo make install - sudo ldconfig + #build FLXMLRPC + cd ${XMPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig fi } ################################## # FLRIG ################################## -FLRIG(){ -#Determine latest FLRIG -RIGTAR=$(curl -s http://www.w1hkj.com/files/flrig/ | grep .tar.gz | sed 's/
  • \ flrig.*$//' | tail -1) -RIGPKG=$(echo $RIGTAR | sed 's/.tar.gz//') +FLRIG() { + #Determine latest FLRIG + RIGTAR=$(curl -s http://www.w1hkj.com/files/flrig/ | grep .tar.gz | sed 's/
  • \ flrig.*$//' | tail -1) + RIGPKG=$(echo ${RIGTAR} | sed 's/.tar.gz//') -#Download latest FLRIG -cd $HOME/Downloads -wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flrig/$RIGTAR -tar -zxvf $RIGTAR -rm *.gz + #Download latest FLRIG + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flrig/${RIGTAR} + tar -zxvf ${RIGTAR} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 -#Build FLRIG -cd $RIGPKG -./configure --prefix=/usr/local --enable-static -make -sudo make install -sudo ldconfig + #Build FLRIG + cd ${RIGPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig } ################################## # FLWRAP ################################## -FLWRAP(){ -#Determine latest FLWRAP -WRAPTAR=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/
  • \ flwrap.*$//') -WRAPPKG=$(echo $WRAPTAR | sed 's/.tar.gz//') +FLWRAP() { + #Determine latest FLWRAP + WRAPTAR=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/
  • \ flwrap.*$//') + WRAPPKG=$(echo ${WRAPTAR} | sed 's/.tar.gz//') -#Download latest FLWRAP -cd $HOME/Downloads -wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flwrap/$WRAPTAR -tar -zxvf $WRAPTAR -rm *.gz + #Download latest FLWRAP + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flwrap/${WRAPTAR} + tar -zxvf ${WRAPTAR} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 -#Build FLRIG -cd $WRAPPKG -./configure --prefix=/usr/local --enable-static -make -sudo make install -sudo ldconfig + #Build FLRIG + cd ${WRAPPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig } ################################## # FLDIGI ################################## -FLDIGI(){ -#Determine latest FLDIGI -FLTAR=$(curl -s http://www.w1hkj.com/files/fldigi/ | grep .tar.gz | sed 's/
  • \ fldigi.*$//') -FLPKG=$(echo $FLTAR | sed 's/.tar.gz//') +FLDIGI() { + #Determine latest FLDIGI + FLTAR=$(curl -s http://www.w1hkj.com/files/fldigi/ | grep .tar.gz | sed 's/
  • \ fldigi.*$//') + FLPKG=$(echo ${FLTAR} | sed 's/.tar.gz//') -#Download latest FLDIGI tar file -cd $HOME/Downloads -wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/fldigi/$FLTAR -tar -zxvf $FLTAR -rm *.gz + #Download latest FLDIGI tar file + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/fldigi/${FLTAR} + tar -zxvf ${FLTAR} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 - -#build FLDIGI -cd $FLPKG -./configure --prefix=/usr/local --enable-static -make -sudo make install -sudo ldconfig + #build FLDIGI + cd ${FLPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig } ################################## # FLMSG ################################## -FLMSG(){ -#Determine latest FLMSG -MSGTAR=$(curl -s http://www.w1hkj.com/files/flmsg/ | grep .tar.gz | sed 's/
  • \ flmsg.*$//' | tail -1) -MSGPKG=$(echo $MSGTAR | sed 's/.tar.gz//') +FLMSG() { + #Determine latest FLMSG + MSGTAR=$(curl -s http://www.w1hkj.com/files/flmsg/ | grep .tar.gz | sed 's/
  • \ flmsg.*$//' | tail -1) + MSGPKG=$(echo ${MSGTAR} | sed 's/.tar.gz//') -#download FLMSG -cd $HOME/Downloads -wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flmsg/$MSGTAR -tar -zxvf $MSGTAR -rm *.gz + #download FLMSG + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flmsg/${MSGTAR} + tar -zxvf ${MSGTAR} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 -#Build FLMSG -cd $MSGPKG -./configure --prefix=/usr/local --enable-static -make -sudo make install -sudo ldconfig + #Build FLMSG + cd ${MSGPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig } ################################## # FLAMP ################################## -FLAMP(){ -#determine latest FLAMP -AMPTAR=$(curl -s http://www.w1hkj.com/files/flamp/ | grep .tar.gz | sed 's/
  • \ flamp.*$//') -AMPPKG=$(echo $AMPTAR | sed 's/.tar.gz//') +FLAMP() { + #determine latest FLAMP + AMPTAR=$(curl -s http://www.w1hkj.com/files/flamp/ | grep .tar.gz | sed 's/
  • \ flamp.*$//') + AMPPKG=$(echo ${AMPTAR} | sed 's/.tar.gz//') -#download FLAMP -cd $HOME/Downloads -wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flamp/$AMPTAR -tar -zxvf $AMPTAR -rm *.gz + #download FLAMP + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flamp/$AMPTAR + tar -zxvf ${AMPTAR} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 -#build FLAMP -cd $AMPPKG -./configure --prefix=/usr/local --enable-static -make -sudo make install -sudo ldconfig + #build FLAMP + cd ${AMPPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig } ################################## # FLNET ################################## -FLNET(){ -#determine lastest FLNET -NETTAR=$(curl -s http://www.w1hkj.com/files/flnet/ | grep .tar.gz | sed 's/
  • \ flnet.*$//') -NETPKG=$(echo $NETTAR | sed 's/.tar.gz//') +FLNET() { + #determine lastest FLNET + NETTAR=$(curl -s http://www.w1hkj.com/files/flnet/ | grep .tar.gz | sed 's/
  • \ flnet.*$//') + NETPKG=$(echo ${NETTAR} | sed 's/.tar.gz//') -#download FLNET -cd $HOME/Downloads -wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flnet/$NETTAR -tar -zxvf $NETTAR -rm *.gz + #download FLNET + cd ${HOME}/Downloads || exit + wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flnet/$NETTAR + tar -zxvf ${NETTAR} + rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035 -#build FLNET -cd $NETPKG -./configure --prefix=/usr/local --enable-static -make -sudo make install -sudo ldconfig + #build FLNET + cd ${NETPKG} || exit + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig } ################################## # RESET SWAP ################################## -FLSTOP(){ -#reset swap size to default -if [ $FREEMEM -lt 3000 ] -then -echo "Resetting swap size to default" -#increase swap size -sudo sed -i 's/CONF_SWAPFILE=\/var\/swap/#CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile -sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/' /etc/dphys-swapfile -sudo /etc/init.d/dphys-swapfile restart -fi +FLSTOP() { + #reset swap size to default + if [ ${FREEMEM} -lt 3000 ]; then + echo "Resetting swap size to default" + #increase swap size + sudo sed -i 's/CONF_SWAPFILE=\/var\/swap/#CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile + sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/' /etc/dphys-swapfile + sudo /etc/init.d/dphys-swapfile restart + fi } - - - - - diff --git a/functions/utility.function b/functions/utility.function index 3f59fed..c33a705 100644 --- a/functions/utility.function +++ b/functions/utility.function @@ -1,109 +1,105 @@ - - - - ################################## # DIPOLE CALC ################################## -DIPOLE(){ -cd $HOME/bin -wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/dipole -chmod +x dipole +DIPOLE() { + cd ${HOME}/bin || exit + wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/dipole + chmod +x dipole -cat > dipole.desktop <dipole.desktop < getcall.desktop <getcall.desktop </dev/null; then -sudo apt-get install -y bc -fi -cd $HOME/bin -wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/converttemp -chmod +x converttemp +TEMPCONVERT() { + if ! hash bc 2>/dev/null; then + sudo apt-get install -y bc + fi + cd ${HOME}/bin || exit + wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/converttemp + chmod +x converttemp -cat > converttemp.desktop <converttemp.desktop < showlog.desktop <showlog.desktop < /sys/class/i2c-adapter/i2c-1/new_device" | sudo tee -a /etc/rc.local >/dev/null 2>&1 + echo "sudo hwclock -s" | sudo tee -a /etc/rc.local >/dev/null 2>&1 + echo "date" | sudo tee -a /etc/rc.local >/dev/null 2>&1 + echo "exit 0" | sudo tee -a /etc/rc.local >/dev/null 2>&1 -sudo sed -i 's/exit\ 0//' /etc/rc.local -echo "echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device" | sudo tee -a /etc/rc.local > /dev/null 2>&1 -echo "sudo hwclock -s" | sudo tee -a /etc/rc.local > /dev/null 2>&1 -echo "date" | sudo tee -a /etc/rc.local > /dev/null 2>&1 -echo "exit 0" | sudo tee -a /etc/rc.local > /dev/null 2>&1 + yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="Real Time Clock has been installed and configured" \ + --button=gtk-close + fi -yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Real Time Clock has been installed and configured" \ ---button=gtk-close -fi - -fi #close first if/then statement + fi #close first if/then statement } - ################################## # PISTATS ################################## -PISTATS(){ -cd $HOME -CUR=$(curl -s http://www.w1hkj.com/pi3/ | grep .tgz | sed 's/.*pistats//' | sed 's/<\/a>
    //') -wget http://www.w1hkj.com/pi3/pistats$CUR -tar -xzvf pistats$CUR -rm pistats$CUR -PISTATDIR=$(ls $HOME | grep pistats) -cd $PISTATDIR -sudo apt-get install -y libfltk1.3-dev -make -sudo mv pistats /usr/local/bin -sudo mv $HOME/$PISTATDIR/data/pistats.desktop /usr/share/applications/ -cd $HOME -rm -rf $PISTATDIR +PISTATS() { + cd ${HOME} || exit + CUR=$(curl -s http://www.w1hkj.com/pi3/ | grep .tgz | sed 's/.*pistats//' | sed 's/<\/a>
    //') + wget http://www.w1hkj.com/pi3/pistats${CUR} + tar -xzvf pistats${CUR} + rm pistats${CUR} + PISTATDIR=$(ls ${HOME} | grep pistats) + cd ${PISTATDIR} || exit + sudo apt-get install -y libfltk1.3-dev + make + sudo mv pistats /usr/local/bin + sudo mv ${HOME}/${PISTATDIR}/data/pistats.desktop /usr/share/applications/ + cd ${HOME} || exit + rm -rf "${PISTATDIR}" } ################################## # TELNET ################################## -TELNET(){ -sudo apt install -y telnet +TELNET() { + sudo apt install -y telnet } ################################## # PiQtTermTCP ################################## -PITERM(){ -cd $DIR -wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piQtTermTCP -sudo chmod +x piQtTermTCP -sudo mv piQtTermTCP /usr/local/bin/ +PITERM() { + cd ${DIR} || exit + wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piQtTermTCP + sudo chmod +x piQtTermTCP + sudo mv piQtTermTCP /usr/local/bin/ -cat > piqttermtcp.desktop <piqttermtcp.desktop < secure-file.desktop <secure-file.desktop < ygate.desktop <ygate.desktop < bpq-config.desktop <bpq-config.desktop < $FILE + #add LinBPQ-README to desktop + FILE=${HOME}/Desktop/LinBPQ-README + touch ${FILE} + cat <${FILE} LinBPQ was installed during the build. You will find the config file generator under accessories in the main pi menu. @@ -372,7 +363,7 @@ After completing the config file, you can start LinBPQ from the command line by running: ~/linbpq/.linbpq -Depending on your station setup, you may +Depending on your station setup, you may need to start rig control, direwolf, or other applications before running LinBPQ. @@ -388,89 +379,89 @@ EOF ################################## # Battery Test Script ################################## -BATT(){ -cd $HOME/bin -wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/batt-test -chmod +x batt-test +BATT() { + cd ${HOME}/bin || exit + wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/batt-test + chmod +x batt-test -cat > battery-test.desktop <battery-test.desktop < gpsupdate.desktop <gpsupdate.desktop <$HOME/Desktop/Block-Microsoft.txt +REMOVEMS() { + #download the file + cd ${HOME}/bin || exit + wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/removeMS + chmod +x ${HOME}/bin/removeMS + #place user directions on desktop + cat <${HOME}/Desktop/Block-Microsoft.txt You have chosen to install the removeMS script which will block the Pi from accessing the Microsoft repository. The block has not -been applied yet. To apply the block, open a +been applied yet. To apply the block, open a terminal window and run the following command: removeMS @@ -485,4 +476,3 @@ More information is available in this video https://youtu.be/I7jLVgnnUW0 EOF } - diff --git a/update b/update index aa56384..ab5b05d 100755 --- a/update +++ b/update @@ -12,33 +12,33 @@ # # ################################################################## -MYPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -BASE=$MYPATH/base.txt -FUNCTIONS=$MYPATH/functions -ADDITIONAL=$MYPATH/additional.txt -UTILITY=$MYPATH/utility.txt -FLSUITE=$MYPATH/flsuite.txt -CONFIG=$MYPATH/config -LOGO=$MYPATH/logo.png -TEMPCRON=$MYPATH/cron.tmp -VERSION=$(grep "version=" $MYPATH/changelog | sed 's/version=//') +MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +BASE=${MYPATH}/base.txt +FUNCTIONS=${MYPATH}/functions +ADDITIONAL=${MYPATH}/additional.txt +UTILITY=${MYPATH}/utility.txt +FLSUITE=${MYPATH}/flsuite.txt +CONFIG=${MYPATH}/config +LOGO=${MYPATH}/logo.png +TEMPCRON=${MYPATH}/cron.tmp +VERSION=$(grep "version=" ${MYPATH}/changelog | sed 's/version=//') -FINISH(){ -if [ -f "$BASE" ]; then -rm $BASE -fi +FINISH() { + if [ -f "${BASE}" ]; then + rm ${BASE} + fi -if [ -f "$ADDITIONAL" ]; then -rm $ADDITIONAL -fi + if [ -f "${ADDITIONAL}" ]; then + rm ${ADDITIONAL} + fi -if [ -f "$FLSUITE" ]; then -rm $FLSUITE -fi + if [ -f "${FLSUITE}" ]; then + rm ${FLSUITE} + fi -if [ -f "$UTILITY" ]; then -rm $UTILITY -fi + if [ -f "${UTILITY}" ]; then + rm ${UTILITY} + fi } trap FINISH EXIT @@ -46,627 +46,613 @@ trap FINISH EXIT #remove temp dir if exist #fix issue 108 https://github.com/km4ack/pi-build/issues/108 #Thanks to N5RKS for finding the bug -if [ -d $HOME/pi-build/temp ]; then -rm -rf $HOME/pi-build/temp +if [ -d ${HOME}/pi-build/temp ]; then + rm -rf ${HOME}/pi-build/temp fi - ##################################### # Create autostart dir #used to autostart conky at boot ##################################### -mkdir -p $HOME/.config/autostart +mkdir -p ${HOME}/.config/autostart #Check for BAP updates #Check for build a pi updates echo "Checking for Build a Pi updates" -CURRENT=$(head -1 $MYPATH/changelog | sed s'/version=//') +CURRENT=$(head -1 ${MYPATH}/changelog | sed s'/version=//') LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/pi-build/master/changelog | tac | tac | head -1 | sed 's/version=//') -if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) -then -cat < $MYPATH/updatebap.txt +if (($(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}'))); then + cat <${MYPATH}/updatebap.txt Build a Pi update available. Current version is $CURRENT and the lateest version is $LATEST. Would you like to update? Change log - https://github.com/km4ack/pi-build/blob/master/changelog EOF -BAP=$(yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text-info<$MYPATH/updatebap.txt \ ---button="Yes":2 \ ---button="No":3) -BUT=$? -echo $BUT -########## - if [ $BUT = 252 ]; then - exit - elif [ $BUT = 2 ]; then - wget -q --tries=5 --timeout=10 --spider http://google.com #| yad --center --progress --pulsate --timeout-indicator=top --auto-close --no-buttons --text="Checking internet connection" - if [[ $? -eq 1 ]]; then -yad --center --timeout=3 --timeout-indicator=top --no-buttons --text="You are not connected to the internet" - exit - fi - echo "Updating Build a Pi to $LATEST" - mv $MYPATH/config $HOME/Documents/config.bap - rm -rf $MYPATH - cd ~ - git clone https://github.com/km4ack/pi-build.git - mv $HOME/Documents/config.bap $MYPATH/config + BAP=$( + yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text-info \ + --button="Yes":2 \ + --button="No":3 <${MYPATH}/updatebap.txt -cat < $MYPATH/updatebap.txt + ) + BUT=$? + echo ${BUT} + ########## + if [ ${BUT} = 252 ]; then + exit + elif [ ${BUT} = 2 ]; then + wget -q --tries=5 --timeout=10 --spider http://google.com #| yad --center --progress --pulsate --timeout-indicator=top --auto-close --no-buttons --text="Checking internet connection" + if [[ $? -eq 1 ]]; then + yad --center --timeout=3 --timeout-indicator=top --no-buttons --text="You are not connected to the internet" + exit + fi + echo "Updating Build a Pi to $LATEST" + mv ${MYPATH}/config ${HOME}/Documents/config.bap + rm -rf ${MYPATH} + cd ~ || exit + git clone https://github.com/km4ack/pi-build.git + mv ${HOME}/Documents/config.bap ${MYPATH}/config + + cat <${MYPATH}/updatebap.txt Build a Pi has been updated to $LATEST. Please restart Build a Pi. EOF - BAP=$(yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ - --image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ - --text-info<$MYPATH/updatebap.txt \ - --button="OK":2) - BUT=$? - exit 0 + BAP=$( + yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text-info \ + --button="OK":2 <${MYPATH}/updatebap.txt + ) + BUT=$? + exit 0 fi ########## fi -rm $MYPATH/updatebap.txt >> /dev/null 2>&1 -rm $MYPATH/complete.txt >> /dev/null 2>&1 +rm ${MYPATH}/updatebap.txt >>/dev/null 2>&1 +rm ${MYPATH}/complete.txt >>/dev/null 2>&1 clear - #Scan system for updated applications -yad --width=550 --height=250 --text-align=center --center --title="Update" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Version $VERSION\r\r\r\rFirst we need to scan the system to see what is installed, \ +yad --width=550 --height=250 --text-align=center --center --title="Update" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="Version $VERSION\r\r\r\rFirst we need to scan the system to see what is installed, \ then check for updates on the web. This should take less than a minute. Ready when you are." \ ---button="Exit":1 \ ---button="Start Scan":2 + --button="Exit":1 \ + --button="Start Scan":2 BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -exit +if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit fi #install bc if not installed -if ! hash bc>/dev/null; then -sudo apt install -y bc +if ! hash bc >/dev/null; then + sudo apt install -y bc fi -CHECK(){ -#----------------------------------------------------# -# Hotspot -#----------------------------------------------------# -HOTSPOT="/usr/bin/autohotspotN" -if [ ! -f "$HOTSPOT" ]; then -HOTSPOT="Not Installed" -else -HOTSPOT="Installed" -fi - -#remove duplicate HST check - -#----------------------------------------------------# -# AX25 -#----------------------------------------------------# -if [ ! -d /etc/ax25 ]; then -AX25="Not Installed" -else -AX25="Installed" -fi -#----------------------------------------------------# -# GPS -#----------------------------------------------------# -if ! hash gpsd 2>/dev/null; then -GPS="Not Installed" -else -GPS="Installed" -fi -#----------------------------------------------------# -# PULSE -#----------------------------------------------------# -if ! hash pavucontrol 2>/dev/null; then -PULSE="Not Installed" -else -PULSE="Installed" -fi -#----------------------------------------------------# -# ARDOP -#----------------------------------------------------# -if [ -f $HOME/ardop/piardopc ]; then -ARDOP="Installed" -else -ARDOP="Not Installed" -fi -#----------------------------------------------------# -# ARDOP GUI -#----------------------------------------------------# -if [ -f $HOME/ardop/piARDOP_GUI ]; then -ARDOPGUI="Installed" -else -ARDOPGUI="Not Installed" -fi -#----------------------------------------------------# -# JS8Call -#----------------------------------------------------# -if ! hash js8call 2>/dev/null; then -JS8="Not Installed" -else -JS8="Installed" -fi -#----------------------------------------------------# -# WSJTX -#----------------------------------------------------# -if ! hash wsjtx 2>/dev/null; then -FT8="Not Installed" -else -FT8="Installed" -fi -#----------------------------------------------------# -# CONKY -#----------------------------------------------------# -if [ -f $HOME/.conkyrc ]; then -CONKY=Installed -else -CONKY="Not Installed" -fi -#----------------------------------------------------# -# M0IAX -#----------------------------------------------------# -if [ -f /usr/local/bin/JS8CallUtils_v2 ]; then -M0IAX=Installed -else -M0IAX="Not Installed" -fi - -#----------------------------------------------------# -# RIG CONTROL - HAMLIB -#----------------------------------------------------# -if ! hash rigctl 2>/dev/null; then -RIG="Not_Installed" -else -echo "Checking Rig Control" -RIG=$(rigctl --version | grep Hamlib | sed s/"rigctl(d),\ Hamlib\ "//) -NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \ -grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \ -head -n 1 | awk -F "/" '{print $7}') - - if (( $(echo "$NEWRIG $RIG" | awk '{print ($1 > $2)}') )) - then - RIG=NEEDS-UPDATE +CHECK() { + #----------------------------------------------------# + # Hotspot + #----------------------------------------------------# + HOTSPOT="/usr/bin/autohotspotN" + if [ ! -f "$HOTSPOT" ]; then + HOTSPOT="Not Installed" else - RIG="is_latest_version" - fi -fi - -#----------------------------------------------------# -# FLDIGI -#----------------------------------------------------# -echo "Checking FLDIGI" -if ! hash fldigi 2>/dev/null; then -FLDIGI="Not_Installed" -else -FLDIGI=$(fldigi --version | awk 'FNR == 1 {print $2}') -NEWFLDIGI=$(curl -s https://sourceforge.net/projects/fldigi/files/fldigi/ | \ -grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}') - - if (( $(echo "$NEWFLDIGI $FLDIGI" | awk '{print ($1 > $2)}') )) - then - FLDIGI=NEEDS-UPDATE - else - FLDIGI="is_latest_version" - fi -fi - -#----------------------------------------------------# -# FLWRAP -#----------------------------------------------------# -echo "Checking FLWRAP" -if ! hash flwrap 2>/dev/null; then -FLWRAP="Not_Installed" -else -FLWRAP=$(flwrap --version | awk 'FNR == 1 {print $2}') -NEWFLWRAP=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/
  • \ flwrap.*$//' | sed 's/flwrap-//' | sed 's/.tar.gz//') - - if (( $(echo "$NEWFLWRAP $FLWRAP" | awk '{print ($1 > $2)}') )) - then - FLWRAP=NEEDS-UPDATE - else - FLWRAP="is_latest_version" - fi -fi - -#----------------------------------------------------# -# FLRIG -#----------------------------------------------------# -echo "Checking FLRIG" -if ! hash flrig 2>/dev/null; then -FLRIG="Not_Installed" -else -FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}') -NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | \ -grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') - - if (( $(echo "$NEWFLRIG $FLRIG" | awk '{print ($1 > $2)}') )) - then - FLRIG=NEEDS-UPDATE - else - FLRIG="is_latest_version" - fi -fi -#----------------------------------------------------# -# FLAMP -#----------------------------------------------------# -echo "Checking FLAMP" -if ! hash flamp 2>/dev/null; then -FLAMP="Not_Installed" -else -FLAMP=$(flamp --version | awk 'FNR == 1 {print $2}') -NEWFLAMP=$(curl -s https://sourceforge.net/projects/fldigi/files/flamp/ | \ -grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') - - if (( $(echo "$NEWFLAMP $FLAMP" | awk '{print ($1 > $2)}') )) - then - FLAMP=NEEDS-UPDATE - else - FLAMP="is_latest_version" - fi -fi -#----------------------------------------------------# -# FLMSG -#----------------------------------------------------# -echo "Checking FLMSG" -if ! hash flmsg 2>/dev/null; then -FLMSG="Not_Installed" -else -FLMSG=$(flmsg --version | awk 'FNR == 1 {print $2}') -NEWFLMSG=$(curl -s https://sourceforge.net/projects/fldigi/files/flmsg/ | \ -grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') - - if (( $(echo "$NEWFLMSG $FLMSG" | awk '{print ($1 > $2)}') )) - then - FLMSG=NEEDS-UPDATE - else - FLMSG="is_latest_version" - fi -fi -#----------------------------------------------------# -# FLNET -#----------------------------------------------------# -echo "Checking FLNET" -if ! hash flnet 2>/dev/null; then -FLNET="Not_Installed" -else -FLNET=$(flnet --version | awk 'FNR == 1 {print $2}') -NEWFLNET=$(curl -s https://sourceforge.net/projects/fldigi/files/flnet/ | \ -grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}') - - if (( $(echo "$NEWFLNET $FLNET" | awk '{print ($1 > $2)}') )) - then - FLNET=NEEDS-UPDATE - else - FLNET="is_latest_version" - fi -fi -#----------------------------------------------------# -# Pat Winlink -#----------------------------------------------------# -echo "Checking Pat Winlink" -if ! hash pat 2>/dev/null; then -PAT="Not_Installed" -else -PAT=$(pat version | awk '{print $2}' | sed 's/v//' | sed 's/0\.//') -NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep armhf | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//') -NEWPAT=$(echo $NEWPATV | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//') -VERTEST=$(echo "$NEWPAT>$PAT" | bc) - - if [ "$VERTEST" = 1 ] - then - PAT=NEEDS-UPDATE - else - PAT="is_latest_version" - fi -fi -#----------------------------------------------------# -# CHRIP -#----------------------------------------------------# -echo "Checking Chirp" -if ! hash chirpw 2>/dev/null; then -CHIRP="Not_Installed" -else -CP=$(chirpw --version) -CHIRP=$(echo $CP | awk '{ print $2 }' | sed 's/daily-//') -NEWCHIRP=$(curl -s https://trac.chirp.danplanet.com/chirp_daily/LATEST/ | \ -grep .tar.gz | awk -F 'chirp-daily-' '{print $2}' | head -c 8) - - if (( $(echo "$NEWCHIRP $CHIRP" | awk '{print ($1 > $2)}') )) - then - CHIRP=NEEDS-UPDATE - else - CHIRP="is_latest_version" - fi -fi -#----------------------------------------------------# -# DIREWOLF -#----------------------------------------------------# -echo "Checking Direwolf" -if ! hash direwolf 2>/dev/null; then -DIRE="Not_Installed" -else -DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //') -wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md > /dev/null 2>&1 -NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }') - - if (( $(echo "$NEWDIRE $DIRE" | awk '{print ($1 > $2)}') )) - then - DIRE=NEEDS-UPDATE - else - DIRE="is_latest_version" - fi -fi -#----------------------------------------------------# -# Pat Menu -#----------------------------------------------------# -echo "Checking Pat Menu" -if [ ! -d $HOME/patmenu2 ]; then -PATMENU="Not_Installed" -else -cd $HOME/patmenu2/ -wget -O $HOME/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog > /dev/null 2>&1 -LATEST=$(cat $HOME/patmenu2/latest | grep '^release' | sed 's/release=//') -CURRENT=$(cat $HOME/patmenu2/changelog | grep '^release' | sed 's/release=//') -rm $HOME/patmenu2/latest > /dev/null 2>&1 - if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) - then - PATMENU="NEEDS-UPDATE" - else - PATMENU="is_latest_version" - fi -fi - -#----------------------------------------------------# -# Hot Spot Tools -#----------------------------------------------------# -if [ ! -d $HOME/hotspot-tools2 ]; then -HSTOOLS="Not_Installed" -else -CURRENT=$(cat $HOME/hotspot-tools2/changelog | grep version= | sed 's/version=//') -LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools2/master/changelog | grep version= | sed 's/version=//') - if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) - then - HSTOOLS="NEEDS-UPDATE" - else - HSTOOLS="is_latest_version" - fi -fi - -#----------------------------------------------------# -# GARIM -#----------------------------------------------------# -echo "Checking GARIM" -if ! hash garim 2>/dev/null; then -GARIM="Not_Installed" -else -GARIM=$(garim --version | head -n1 | awk -F ' ' '{print $2}') -NEWGARIM=$(curl -s https://www.whitemesa.net/garim/garim.html | grep -m 1 \ -"armv7l.tar.gz" | awk -F '-' '{print $2}') - if (( $(echo "$NEWGARIM $GARIM" | awk '{print ($1 > $2)}') )) - then - GARIM=NEEDS-UPDATE - else - GARIM="is_latest_version" - fi -fi - -#----------------------------------------------------# -# XASTIR -#----------------------------------------------------# -LATESTXAS=$(curl -s https://github.com/Xastir/Xastir | grep Release- | head -1 | sed 's/.*Release-//;s/">//') -CURRENTXAS=$(xastir -V | sed 's/Xastir V//;s/(.*//;/^\s*$/d') - - if (( $(echo "$LATESTXAS $CURRENTXAS" | awk '{print ($1 > $2)}') )) - then - XASTIR=NEEDS-UPDATE - else - XASTIR="is_latest_version" + HOTSPOT="Installed" fi -#----------------------------------------------------# -# YAAC -#----------------------------------------------------# -YAAC="$HOME/YAAC" -if [ ! -d "$YAAC" ]; then -YAAC="Not Installed" -else -echo "Checking YAAC for updates" -CURYAAC=$(java -jar $HOME/YAAC/YAAC.jar -version | grep core | awk '{print $7}' | sed 's/(.*//;s/1.0-beta//') -wget -q https://sourceforge.net/projects/yetanotheraprsc/files/YAACBuildLabel.txt -O /run/user/$UID/latestyaac.txt -LATESTYAAC=$(cat /run/user/$UID/latestyaac.txt | sed 's/1.0-beta//;s/(.*//') - if (( $(echo "$LATESTYAAC $CURYAAC" | awk '{print ($1 > $2)}') )) - then - YAAC=NEEDS-UPDATE + #remove duplicate HST check + + #----------------------------------------------------# + # AX25 + #----------------------------------------------------# + if [ ! -d /etc/ax25 ]; then + AX25="Not Installed" else - YAAC="is_latest_version" + AX25="Installed" fi -fi - -#----------------------------------------------------# -# PYQSO -#----------------------------------------------------# -if ! hash pyqso 2>/dev/null; then -PYQSO="Not Installed" -else -PYQSO="Installed" -fi - -#----------------------------------------------------# -# QSSTV -#----------------------------------------------------# -if ! hash qsstv 2>/dev/null; then -QSSTV="Not Installed" -else -QSSTV="Installed" -fi - -#----------------------------------------------------# -# GRIDTRACKER -#----------------------------------------------------# -GT="$HOME/GridTracker" -if [ ! -d "$GT" ]; then -GRIDTRACK="Not Installed" -else -GRIDTRACK="Installed" -fi - -#----------------------------------------------------# -# PROPAGATION -#----------------------------------------------------# -if ! hash voacapl 2>/dev/null; then -PROP="Not Installed" -else -PROP="Installed" -fi - -#----------------------------------------------------# -# CQRLOG -#----------------------------------------------------# -if ! hash cqrlog 2>/dev/null; then -CQRLOG="Not Installed" -else -CQRLOG="Installed" -fi - -#----------------------------------------------------# -# EES -#----------------------------------------------------# -if [ -f /var/www/html/email.php ]; then -EES="Installed" -else -EES="Not Installed" -fi - -#----------------------------------------------------# -# Pi-APRS -#----------------------------------------------------# -if [ -d $HOME/Pi-APRS ]; then -PIAPRS=Installed -else -PIAPRS="Not Installed" -fi - -#----------------------------------------------------# -# Temp Convert -#----------------------------------------------------# -if [ -f $HOME/bin/converttemp ]; then -TEMPCONVERT="Installed" -else -TEMPCONVERT="Not Installed" -fi - -#----------------------------------------------------# -# GPARTED -#----------------------------------------------------# -if ! hash gparted 2>/dev/null; then -GPARTED="Not Installed" -else -GPARTED="Installed" -fi - -#----------------------------------------------------# -# DIPOLE CALCULATOR -#----------------------------------------------------# -if [ -f $HOME/bin/dipole ]; then -DIPOLE="Installed" -else -DIPOLE="Not Installed" -fi - -#----------------------------------------------------# -# SHOWLOG | Log file viewer -#----------------------------------------------------# -if [ -f $HOME/bin/showlog ]; then -SHOWLOG="Installed" -else -SHOWLOG="Not Installed" -fi - -#----------------------------------------------------# -# Call Sign Lookup GETCALL -#----------------------------------------------------# -if [ -f $HOME/bin/getcall ]; then -CALLSIGN="Installed" -else -CALLSIGN="Not Installed" -fi - -#----------------------------------------------------# -# HamClock -#----------------------------------------------------# -HAMCLOCK=$(ls /usr/local/bin | grep hamclock) -if [ -n "$HAMCLOCK" ]; then -HAMCLOCK="Installed" -else -HAMCLOCK="Not Installed" -fi - -#----------------------------------------------------# -# Real Time Clock -#----------------------------------------------------# -RTC="Unknown" - -#----------------------------------------------------# -# Gpredict -#----------------------------------------------------# -if ! hash gpredict 2>/dev/null; then -GPREDICT="Not Installed" -else -GPREDICT="Installed" -fi - -#----------------------------------------------------# -# TQSL -#----------------------------------------------------# -if ! hash tqsl 2>/dev/null; then -TQSL="Not Installed" -else -TQSL="Installed" -fi - -#----------------------------------------------------# -# PISTATS -#----------------------------------------------------# -if ! hash pistats 2>/dev/null; then -PISTATS="Not Installed" -else -PISTATS="Installed" -fi - -#----------------------------------------------------# -# XLOG CHECK -#----------------------------------------------------# -if ! hash xlog 2>/dev/null; then -XLOG="Not_Installed" -else - -XLOGCUR=$(xlog -version | sed 's/xlog\ version\ //') - -XLOGLATEST=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ | \ -grep 2.[0-9].[0-9][0-9].tar | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//' | \ -sed 's/xlog-//' | sed 's/.tar.gz//') - - if (( $(echo "$XLOGLATEST $XLOGCUR" | awk '{print ($1 > $2)}') )) - then - XLOG="NEEDS-UPDATE" + #----------------------------------------------------# + # GPS + #----------------------------------------------------# + if ! hash gpsd 2>/dev/null; then + GPS="Not Installed" else - XLOG=is_latest_version + GPS="Installed" + fi + #----------------------------------------------------# + # PULSE + #----------------------------------------------------# + if ! hash pavucontrol 2>/dev/null; then + PULSE="Not Installed" + else + PULSE="Installed" + fi + #----------------------------------------------------# + # ARDOP + #----------------------------------------------------# + if [ -f ${HOME}/ardop/piardopc ]; then + ARDOP="Installed" + else + ARDOP="Not Installed" + fi + #----------------------------------------------------# + # ARDOP GUI + #----------------------------------------------------# + if [ -f ${HOME}/ardop/piARDOP_GUI ]; then + ARDOPGUI="Installed" + else + ARDOPGUI="Not Installed" + fi + #----------------------------------------------------# + # JS8Call + #----------------------------------------------------# + if ! hash js8call 2>/dev/null; then + JS8="Not Installed" + else + JS8="Installed" + fi + #----------------------------------------------------# + # WSJTX + #----------------------------------------------------# + if ! hash wsjtx 2>/dev/null; then + FT8="Not Installed" + else + FT8="Installed" + fi + #----------------------------------------------------# + # CONKY + #----------------------------------------------------# + if [ -f ${HOME}/.conkyrc ]; then + CONKY=Installed + else + CONKY="Not Installed" + fi + #----------------------------------------------------# + # M0IAX + #----------------------------------------------------# + if [ -f /usr/local/bin/JS8CallUtils_v2 ]; then + M0IAX=Installed + else + M0IAX="Not Installed" fi -fi -#----------------------------------------------------# -# JTDX -#----------------------------------------------------# -if ! hash jtdx 2>/dev/null; then -JTDX="Not_Installed" -else -JTDX=Installed -fi + #----------------------------------------------------# + # RIG CONTROL - HAMLIB + #----------------------------------------------------# + if ! hash rigctl 2>/dev/null; then + RIG="Not_Installed" + else + echo "Checking Rig Control" + RIG=$(rigctl --version | grep Hamlib | sed s/"rigctl(d),\ Hamlib\ "//) + NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | + grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | + head -n 1 | awk -F "/" '{print $7}') + + if (($(echo "${NEWRIG} ${RIG}" | awk '{print ($1 > $2)}'))); then + RIG=NEEDS-UPDATE + else + RIG="is_latest_version" + fi + fi + + #----------------------------------------------------# + # FLDIGI + #----------------------------------------------------# + echo "Checking FLDIGI" + if ! hash fldigi 2>/dev/null; then + FLDIGI="Not_Installed" + else + FLDIGI=$(fldigi --version | awk 'FNR == 1 {print $2}') + NEWFLDIGI=$(curl -s https://sourceforge.net/projects/fldigi/files/fldigi/ | + grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}') + + if (($(echo "${NEWFLDIGI} ${FLDIGI}" | awk '{print ($1 > $2)}'))); then + FLDIGI=NEEDS-UPDATE + else + FLDIGI="is_latest_version" + fi + fi + + #----------------------------------------------------# + # FLWRAP + #----------------------------------------------------# + echo "Checking FLWRAP" + if ! hash flwrap 2>/dev/null; then + FLWRAP="Not_Installed" + else + FLWRAP=$(flwrap --version | awk 'FNR == 1 {print $2}') + NEWFLWRAP=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/
  • \ flwrap.*$//' | sed 's/flwrap-//' | sed 's/.tar.gz//') + + if (($(echo "${NEWFLWRAP} ${FLWRAP}" | awk '{print ($1 > $2)}'))); then + FLWRAP=NEEDS-UPDATE + else + FLWRAP="is_latest_version" + fi + fi + + #----------------------------------------------------# + # FLRIG + #----------------------------------------------------# + echo "Checking FLRIG" + if ! hash flrig 2>/dev/null; then + FLRIG="Not_Installed" + else + FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}') + NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | + grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (($(echo "${NEWFLRIG} ${FLRIG}" | awk '{print ($1 > $2)}'))); then + FLRIG=NEEDS-UPDATE + else + FLRIG="is_latest_version" + fi + fi + #----------------------------------------------------# + # FLAMP + #----------------------------------------------------# + echo "Checking FLAMP" + if ! hash flamp 2>/dev/null; then + FLAMP="Not_Installed" + else + FLAMP=$(flamp --version | awk 'FNR == 1 {print $2}') + NEWFLAMP=$(curl -s https://sourceforge.net/projects/fldigi/files/flamp/ | + grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (($(echo "${NEWFLAMP} ${FLAMP}" | awk '{print ($1 > $2)}'))); then + FLAMP=NEEDS-UPDATE + else + FLAMP="is_latest_version" + fi + fi + #----------------------------------------------------# + # FLMSG + #----------------------------------------------------# + echo "Checking FLMSG" + if ! hash flmsg 2>/dev/null; then + FLMSG="Not_Installed" + else + FLMSG=$(flmsg --version | awk 'FNR == 1 {print $2}') + NEWFLMSG=$(curl -s https://sourceforge.net/projects/fldigi/files/flmsg/ | + grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (($(echo "${NEWFLMSG} ${FLMSG}" | awk '{print ($1 > $2)}'))); then + FLMSG=NEEDS-UPDATE + else + FLMSG="is_latest_version" + fi + fi + #----------------------------------------------------# + # FLNET + #----------------------------------------------------# + echo "Checking FLNET" + if ! hash flnet 2>/dev/null; then + FLNET="Not_Installed" + else + FLNET=$(flnet --version | awk 'FNR == 1 {print $2}') + NEWFLNET=$(curl -s https://sourceforge.net/projects/fldigi/files/flnet/ | + grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}') + + if (($(echo "${NEWFLNET} ${FLNET}" | awk '{print ($1 > $2)}'))); then + FLNET=NEEDS-UPDATE + else + FLNET="is_latest_version" + fi + fi + #----------------------------------------------------# + # Pat Winlink + #----------------------------------------------------# + echo "Checking Pat Winlink" + if ! hash pat 2>/dev/null; then + PAT="Not_Installed" + else + PAT=$(pat version | awk '{print $2}' | sed 's/v//' | sed 's/0\.//') + NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep armhf | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//') + NEWPAT=$(echo ${NEWPATV} | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//') + VERTEST=$(echo "${NEWPAT}>${PAT}" | bc) + + if [ "$VERTEST" = 1 ]; then + PAT=NEEDS-UPDATE + else + PAT="is_latest_version" + fi + fi + #----------------------------------------------------# + # CHRIP + #----------------------------------------------------# + echo "Checking Chirp" + if ! hash chirpw 2>/dev/null; then + CHIRP="Not_Installed" + else + CP=$(chirpw --version) + CHIRP=$(echo ${CP} | awk '{ print $2 }' | sed 's/daily-//') + NEWCHIRP=$(curl -s https://trac.chirp.danplanet.com/chirp_daily/LATEST/ | + grep .tar.gz | awk -F 'chirp-daily-' '{print $2}' | head -c 8) + + if (($(echo "${NEWCHIRP} ${CHIRP}" | awk '{print ($1 > $2)}'))); then + CHIRP=NEEDS-UPDATE + else + CHIRP="is_latest_version" + fi + fi + #----------------------------------------------------# + # DIREWOLF + #----------------------------------------------------# + echo "Checking Direwolf" + if ! hash direwolf 2>/dev/null; then + DIRE="Not_Installed" + else + DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //') + wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md >/dev/null 2>&1 + NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }') + + if (($(echo "${NEWDIRE} ${DIRE}" | awk '{print ($1 > $2)}'))); then + DIRE=NEEDS-UPDATE + else + DIRE="is_latest_version" + fi + fi + #----------------------------------------------------# + # Pat Menu + #----------------------------------------------------# + echo "Checking Pat Menu" + if [ ! -d ${HOME}/patmenu2 ]; then + PATMENU="Not_Installed" + else + cd ${HOME}/patmenu2/ || exit + wget -O ${HOME}/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog >/dev/null 2>&1 + LATEST=$(cat ${HOME}/patmenu2/latest | grep '^release' | sed 's/release=//') + CURRENT=$(cat ${HOME}/patmenu2/changelog | grep '^release' | sed 's/release=//') + rm ${HOME}/patmenu2/latest >/dev/null 2>&1 + if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then + PATMENU="NEEDS-UPDATE" + else + PATMENU="is_latest_version" + fi + fi + + #----------------------------------------------------# + # Hot Spot Tools + #----------------------------------------------------# + if [ ! -d ${HOME}/hotspot-tools2 ]; then + HSTOOLS="Not_Installed" + else + CURRENT=$(cat ${HOME}/hotspot-tools2/changelog | grep version= | sed 's/version=//') + LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools2/master/changelog | grep version= | sed 's/version=//') + if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then + HSTOOLS="NEEDS-UPDATE" + else + HSTOOLS="is_latest_version" + fi + fi + + #----------------------------------------------------# + # GARIM + #----------------------------------------------------# + echo "Checking GARIM" + if ! hash garim 2>/dev/null; then + GARIM="Not_Installed" + else + GARIM=$(garim --version | head -n1 | awk -F ' ' '{print $2}') + NEWGARIM=$(curl -s https://www.whitemesa.net/garim/garim.html | grep -m 1 \ + "armv7l.tar.gz" | awk -F '-' '{print $2}') + if (($(echo "${NEWGARIM} ${GARIM}" | awk '{print ($1 > $2)}'))); then + GARIM=NEEDS-UPDATE + else + GARIM="is_latest_version" + fi + fi + + #----------------------------------------------------# + # XASTIR + #----------------------------------------------------# + LATESTXAS=$(curl -s https://github.com/Xastir/Xastir | grep Release- | head -1 | sed 's/.*Release-//;s/">//') + CURRENTXAS=$(xastir -V | sed 's/Xastir V//;s/(.*//;/^\s*$/d') + + if (($(echo "${LATESTXAS} ${CURRENTXAS}" | awk '{print ($1 > $2)}'))); then + XASTIR=NEEDS-UPDATE + else + XASTIR="is_latest_version" + fi + + #----------------------------------------------------# + # YAAC + #----------------------------------------------------# + YAAC="${HOME}/YAAC" + if [ ! -d "$YAAC" ]; then + YAAC="Not Installed" + else + echo "Checking YAAC for updates" + CURYAAC=$(java -jar ${HOME}/YAAC/YAAC.jar -version | grep core | awk '{print $7}' | sed 's/(.*//;s/1.0-beta//') + wget -q https://sourceforge.net/projects/yetanotheraprsc/files/YAACBuildLabel.txt -O /run/user/${UID}/latestyaac.txt + LATESTYAAC=$(cat /run/user/${UID}/latestyaac.txt | sed 's/1.0-beta//;s/(.*//') + if (($(echo "${LATESTYAAC} ${CURYAAC}" | awk '{print ($1 > $2)}'))); then + YAAC=NEEDS-UPDATE + else + YAAC="is_latest_version" + fi + fi + + #----------------------------------------------------# + # PYQSO + #----------------------------------------------------# + if ! hash pyqso 2>/dev/null; then + PYQSO="Not Installed" + else + PYQSO="Installed" + fi + + #----------------------------------------------------# + # QSSTV + #----------------------------------------------------# + if ! hash qsstv 2>/dev/null; then + QSSTV="Not Installed" + else + QSSTV="Installed" + fi + + #----------------------------------------------------# + # GRIDTRACKER + #----------------------------------------------------# + GT="${HOME}/GridTracker" + if [ ! -d "$GT" ]; then + GRIDTRACK="Not Installed" + else + GRIDTRACK="Installed" + fi + + #----------------------------------------------------# + # PROPAGATION + #----------------------------------------------------# + if ! hash voacapl 2>/dev/null; then + PROP="Not Installed" + else + PROP="Installed" + fi + + #----------------------------------------------------# + # CQRLOG + #----------------------------------------------------# + if ! hash cqrlog 2>/dev/null; then + CQRLOG="Not Installed" + else + CQRLOG="Installed" + fi + + #----------------------------------------------------# + # EES + #----------------------------------------------------# + if [ -f /var/www/html/email.php ]; then + EES="Installed" + else + EES="Not Installed" + fi + + #----------------------------------------------------# + # Pi-APRS + #----------------------------------------------------# + if [ -d ${HOME}/Pi-APRS ]; then + PIAPRS=Installed + else + PIAPRS="Not Installed" + fi + + #----------------------------------------------------# + # Temp Convert + #----------------------------------------------------# + if [ -f ${HOME}/bin/converttemp ]; then + TEMPCONVERT="Installed" + else + TEMPCONVERT="Not Installed" + fi + + #----------------------------------------------------# + # GPARTED + #----------------------------------------------------# + if ! hash gparted 2>/dev/null; then + GPARTED="Not Installed" + else + GPARTED="Installed" + fi + + #----------------------------------------------------# + # DIPOLE CALCULATOR + #----------------------------------------------------# + if [ -f ${HOME}/bin/dipole ]; then + DIPOLE="Installed" + else + DIPOLE="Not Installed" + fi + + #----------------------------------------------------# + # SHOWLOG | Log file viewer + #----------------------------------------------------# + if [ -f ${HOME}/bin/showlog ]; then + SHOWLOG="Installed" + else + SHOWLOG="Not Installed" + fi + + #----------------------------------------------------# + # Call Sign Lookup GETCALL + #----------------------------------------------------# + if [ -f ${HOME}/bin/getcall ]; then + CALLSIGN="Installed" + else + CALLSIGN="Not Installed" + fi + + #----------------------------------------------------# + # HamClock + #----------------------------------------------------# + HAMCLOCK=$(ls /usr/local/bin | grep hamclock) + if [ -n "$HAMCLOCK" ]; then + HAMCLOCK="Installed" + else + HAMCLOCK="Not Installed" + fi + + #----------------------------------------------------# + # Real Time Clock + #----------------------------------------------------# + RTC="Unknown" + + #----------------------------------------------------# + # Gpredict + #----------------------------------------------------# + if ! hash gpredict 2>/dev/null; then + GPREDICT="Not Installed" + else + GPREDICT="Installed" + fi + + #----------------------------------------------------# + # TQSL + #----------------------------------------------------# + if ! hash tqsl 2>/dev/null; then + TQSL="Not Installed" + else + TQSL="Installed" + fi + + #----------------------------------------------------# + # PISTATS + #----------------------------------------------------# + if ! hash pistats 2>/dev/null; then + PISTATS="Not Installed" + else + PISTATS="Installed" + fi + + #----------------------------------------------------# + # XLOG CHECK + #----------------------------------------------------# + if ! hash xlog 2>/dev/null; then + XLOG="Not_Installed" + else + + XLOGCUR=$(xlog -version | sed 's/xlog\ version\ //') + + XLOGLATEST=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ | + grep "2.[0-9].[0-9][0-9].tar" | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//' | + sed 's/xlog-//' | sed 's/.tar.gz//') + + if (($(echo "${XLOGLATEST} ${XLOGCUR}" | awk '{print ($1 > $2)}'))); then + XLOG="NEEDS-UPDATE" + else + XLOG=is_latest_version + fi + fi + + #----------------------------------------------------# + # JTDX + #----------------------------------------------------# + if ! hash jtdx 2>/dev/null; then + JTDX="Not_Installed" + else + JTDX=Installed + fi } @@ -674,91 +660,90 @@ fi # TELNET #----------------------------------------------------# if ! hash telnet 2>/dev/null; then -TEL="Not Installed" + TEL="Not Installed" else -TEL="Installed" + TEL="Installed" fi #----------------------------------------------------# # piQtTermTCP #----------------------------------------------------# if [ -f /usr/local/bin/piQtTermTCP ]; then -PITERM="Installed" + PITERM="Installed" else -PITERM="Not Installed" + PITERM="Not Installed" fi #----------------------------------------------------# # Security Tools #----------------------------------------------------# if [ -f /usr/local/bin/securefile ]; then -SECURITY="Installed" + SECURITY="Installed" else -SECURITY="Not Installed" + SECURITY="Not Installed" fi #----------------------------------------------------# # YGATE #----------------------------------------------------# -YGATE="$HOME/bin/ygate.py" +YGATE="${HOME}/bin/ygate.py" if [ ! -f "$YGATE" ]; then -YGATE="Not Installed" + YGATE="Not Installed" else -YGATE="Installed" + YGATE="Installed" fi #----------------------------------------------------# # BPQ #----------------------------------------------------# -BPQ="$HOME/linbpq/linbpq" +BPQ="${HOME}/linbpq/linbpq" if [ ! -f "$BPQ" ]; then -BPQ="Not Installed" + BPQ="Not Installed" else -BPQ="Installed" + BPQ="Installed" fi #----------------------------------------------------# # Battery Test Script :: BATT #----------------------------------------------------# -BATT="$HOME/bin/batt-test" +BATT="${HOME}/bin/batt-test" if [ ! -f "$BATT" ]; then -BATT="Not Installed" + BATT="Not Installed" else -BATT="Installed" + BATT="Installed" fi #----------------------------------------------------# # VNC Viewer #----------------------------------------------------# if ! hash vncviewer 2>/dev/null; then -VNC="Not Installed" + VNC="Not Installed" else -VNC="Installed" + VNC="Installed" fi #----------------------------------------------------# # ZYGRIB Viewer #----------------------------------------------------# if [ -f /usr/share/zygrib ]; then -ZYGRIB=Installed + ZYGRIB=Installed else -ZYGRIB="Not Installed" + ZYGRIB="Not Installed" fi #----------------------------------------------------# # GPS UPDATE TOOL #----------------------------------------------------# echo "Checking GPS Update Tool" -if [ ! -f $HOME/bin/gpsupdate ]; then -GPSUPDATE="Not_Installed" +if [ ! -f ${HOME}/bin/gpsupdate ]; then + GPSUPDATE="Not_Installed" else -GPSUPDATE=$(grep VERSION= $HOME/bin/gpsupdate | sed 's/VERSION=//') -NEWGPSUPDATE=$(curl -s https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsupdate | grep VERSION= | sed 's/VERSION=//') - if (( $(echo "$NEWGPSUPDATE $GPSUPDATE" | awk '{print ($1 > $2)}') )) - then - GPSUPDATE=NEEDS-UPDATE + GPSUPDATE=$(grep VERSION= ${HOME}/bin/gpsupdate | sed 's/VERSION=//') + NEWGPSUPDATE=$(curl -s https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsupdate | grep VERSION= | sed 's/VERSION=//') + if (($(echo "${NEWGPSUPDATE} ${GPSUPDATE}" | awk '{print ($1 > $2)}'))); then + GPSUPDATE=NEEDS-UPDATE else - GPSUPDATE="is_latest_version" + GPSUPDATE="is_latest_version" fi fi @@ -776,100 +761,98 @@ CHECK ##################################### # Get User Call ##################################### -CALL(){ -source $MYPATH/config -INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="version $VERSION" \ ---field="Call Sign*" "$CALL" \ ---field="* Required":LBL \ ---button="Continue":2) -BUT=$? -if [ $BUT = 252 ]; then -exit -fi +CALL() { + source ${MYPATH}/config + INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="version ${VERSION}" \ + --field="Call Sign*" "${CALL}" \ + --field="* Required":LBL \ + --button="Continue":2) + BUT=$? + if [ ${BUT} = 252 ]; then + exit + fi } CALL CALL=$(echo $INFO | awk -F "|" '{print $1}') CALL=${CALL^^} -echo "CALL=$CALL" > $CONFIG +echo "CALL=${CALL}" >${CONFIG} #Verify call not empty -if [ -z "$CALL" ]; then -yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Call Can't be Blank" \ ---button=gtk-ok -CALL +if [ -z "${CALL}" ]; then + yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="Call Can't be Blank" \ + --button=gtk-ok + CALL fi - #----------------------------------------------------# # BASE APP MENU #----------------------------------------------------# yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \ ---window-icon=$LOGO --image-on-top --text-align=center \ ---text="Base Apps" --title="Update" \ -false "HAMLIB" "$RIG" "Rig Control" \ -false "HOTSPOT" "$HOTSPOT" "Hot Spot Generator for Portable Ops" \ -false "HSTOOLS" "$HSTOOLS" "Tools to Manage HotSpot" \ -false "GPS" "$GPS" "GPS Software" \ -false "ARDOP" "$ARDOP" "Mode for HF" \ -false "ARDOPGUI" "$ARDOPGUI" "GUI for ARDOP" \ -false "DIREWOLF" "$DIRE" "Software TNC" \ -false "AX25" "$AX25" "Data Link Layer Protocol" \ -false "PULSE" "$PULSE" "Sound server" \ ---button="Exit":1 \ ---button="Next":2 > $BASE + --image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="Base Apps" --title="Update" \ + false "HAMLIB" "$RIG" "Rig Control" \ + false "HOTSPOT" "$HOTSPOT" "Hot Spot Generator for Portable Ops" \ + false "HSTOOLS" "$HSTOOLS" "Tools to Manage HotSpot" \ + false "GPS" "${GPS}" "GPS Software" \ + false "ARDOP" "$ARDOP" "Mode for HF" \ + false "ARDOPGUI" "$ARDOPGUI" "GUI for ARDOP" \ + false "DIREWOLF" "$DIRE" "Software TNC" \ + false "AX25" "$AX25" "Data Link Layer Protocol" \ + false "PULSE" "$PULSE" "Sound server" \ + --button="Exit":1 \ + --button="Next":2 >${BASE} BUT=$? -if [ $BUT = 1 ] || [ $BUT = 252 ];then -exit +if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then + exit fi ############################################################# #check if hotspot is chosen for install & get info if needed# ############################################################# -HS=$(cat $BASE | grep HOTSPOT) +HS=$(cat ${BASE} | grep HOTSPOT) if [ -n "$HS" ]; then -HSINFO(){ -#unblock wifi -sudo rfkill unblock all > /dev/null 2>&1 -#bring wifi up -sudo ifconfig wlan0 up -#LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://' | awk '{ print $1 }') -#LIST=$(echo $LIST | sed 's/ /|/g') -#Thanks to https://github.com/kuperman for fixing wifi space issue with line below. -LIST=$(sudo iw dev "wlan0" scan ap-force | sed -ne 's/^.*SSID: \(..*\)/\1/p' | sort | uniq | paste -sd '|') + HSINFO() { + #unblock wifi + sudo rfkill unblock all >/dev/null 2>&1 + #bring wifi up + sudo ifconfig wlan0 up + #LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://' | awk '{ print $1 }') + #LIST=$(echo $LIST | sed 's/ /|/g') + #Thanks to https://github.com/kuperman for fixing wifi space issue with line below. + LIST=$(sudo iw dev "wlan0" scan ap-force | sed -ne 's/^.*SSID: \(..*\)/\1/p' | sort | uniq | paste -sd '|') -HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \ ---image $LOGO --column=Check --column=App --column=Description \ ---window-icon=$LOGO --image-on-top --text-align=center \ ---text="HotSpot Information\r\rPlease enter the information\rbelow \ + HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \ + --image ${LOGO} --column=Check --column=App --column=Description \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="HotSpot Information\r\rPlease enter the information\rbelow \ for the Hot Spot\rNOTE: The last field is the password for the hotspot. You will use this password to \ connect to your Pi when it is in hotspot mode This password can only contain letters and numbers" \ ---title="Build-a-Pi" \ ---field="Home Wifi SSID":CB "$LIST" \ ---field="Home Wifi Password" \ ---field="Hot Spot Password" \ ---button="Exit":1 \ ---button="Continue":2 \ ---button="Refresh Wifi":3) -#} THIS IS WHERE ORIGINAL FUNCTION STOPPED################ -#HSINFO SEE COMMENT PREVIOUS LINE -BUT=$? - if [ $BUT = 3 ];then - HSINFO #Call HSINFO function - fi + --title="Build-a-Pi" \ + --field="Home Wifi SSID":CB "${LIST}" \ + --field="Home Wifi Password" \ + --field="Hot Spot Password" \ + --button="Exit":1 \ + --button="Continue":2 \ + --button="Refresh Wifi":3) + #} THIS IS WHERE ORIGINAL FUNCTION STOPPED################ + #HSINFO SEE COMMENT PREVIOUS LINE + BUT=$? + if [ ${BUT} = 3 ]; then + HSINFO #Call HSINFO function + fi - if [ $BUT = 252 ] || [ $BUT = 1 ]; then - exit - fi -} #THIS IS NEW FUNCTION END FOR TESTING#################### - - -HSINFO + if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + exit + fi + } #THIS IS NEW FUNCTION END FOR TESTING#################### + + HSINFO fi SHACKSSID=$(echo $HSINFO | awk -F "|" '{print $1}') SHACKPASS=$(echo $HSINFO | awk -F "|" '{print $2}') @@ -877,140 +860,138 @@ HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}') #Check password length if [ -n "$HS" ]; then -COUNT=${#HSPASS} - if [ $COUNT -lt 8 ] - then - yad --center --form --width=300 --height=200 --separator="|" \ - --image $LOGO --column=Check --column=App --column=Description \ - --window-icon=$LOGO --image-on-top --text-align=center \ - --text="Hotspot password has to be 8-63 characters" --title="Build-a-Pi" \ - --button=gtk-ok - HSINFO + COUNT=${#HSPASS} + if [ $COUNT -lt 8 ]; then + yad --center --form --width=300 --height=200 --separator="|" \ + --image ${LOGO} --column=Check --column=App --column=Description \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="Hotspot password has to be 8-63 characters" --title="Build-a-Pi" \ + --button=gtk-ok + HSINFO fi fi -echo "SHACKSSID=$SHACKSSID" >> $CONFIG -echo "SHACKPASS=$SHACKPASS" >> $CONFIG -echo "HSPASS=$HSPASS" >> $CONFIG +echo "SHACKSSID=${SHACKSSID}" >>${CONFIG} +echo "SHACKPASS=${SHACKPASS}" >>${CONFIG} +echo "HSPASS=${HSPASS}" >>${CONFIG} ################################### #CHECK IF GPS IS CHOSEN TO INSTALL# ################################### -GPSINSTALL=$(cat $BASE | grep GPS) -if [ -n "$GPSINSTALL" ]; then +GPSINSTALL=$(cat ${BASE} | grep GPS) +if [ -n "${GPS}INSTALL" ]; then + yad --center --height="300" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top \ + --text="\r\r\r\r\rConnect your GPS to the pi" \ + --button="Exit":1 \ + --button="Continue":2 -yad --center --height="300" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ ---image $LOGO --window-icon=$LOGO --image-on-top \ ---text="\r\r\r\r\rConnect your GPS to the pi" \ ---button="Exit":1 \ ---button="Continue":2 + BUT=$? + if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then + exit + fi -BUT=$? -if [ $BUT = 1 ] || [ $BUT = 252 ]; then -exit -fi + USB=$(ls /dev/serial/by-id) + USB=$(echo $USB | sed "s/\s/|/g") -USB=$(ls /dev/serial/by-id) -USB=$(echo $USB | sed "s/\s/|/g") + GPS=$(yad --center --height="600" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top \ + --text="Choose Your GPS" \ + --field="GPS":CB "$USB") + BUT=$? + if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then + echo exiting + exit + fi -GPS=$(yad --center --height="600" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \ ---image $LOGO --window-icon=$LOGO --image-on-top \ ---text="Choose Your GPS" \ ---field="GPS":CB "$USB") -BUT=$? -if [ $BUT = 252 ] || [ $BUT = 1 ]; then -echo exiting -exit -fi - -GPS=$(echo $GPS | awk -F "|" '{print $1}') -GPS=/dev/serial/by-id/$GPS -echo "GPS=$GPS" >> $CONFIG + GPS=$(echo ${GPS} | awk -F "|" '{print $1}') + GPS=/dev/serial/by-id/${GPS} + echo "GPS=${GPS}" >>${CONFIG} fi #----------------------------------------------------# # FLSUITE APP MENU #----------------------------------------------------# yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \ ---window-icon=$LOGO --image-on-top --text-align=center \ ---text="FLDIGI Suite" --title="Update" \ -false "FLRIG" "$FLRIG" "Rig Control GUI" \ -false "FLDIGI" "$FLDIGI" "Digital Software" \ -false "FLAMP" "$FLAMP" "File Transfer Program" \ -false "FLNET" "$FLNET" "Net Control Software" \ -false "FLMSG" "$FLMSG" "Form Manager" \ -false "FLWRAP" "$FLWRAP" "File Encapsulation" \ ---button="Exit":1 \ ---button="Next":2 > $FLSUITE + --image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="FLDIGI Suite" --title="Update" \ + false "FLRIG" "${FLRIG}" "Rig Control GUI" \ + false "FLDIGI" "${FLDIGI}" "Digital Software" \ + false "FLAMP" "${FLAMP}" "File Transfer Program" \ + false "FLNET" "${FLNET}" "Net Control Software" \ + false "FLMSG" "${FLMSG}" "Form Manager" \ + false "FLWRAP" "${FLWRAP}" "File Encapsulation" \ + --button="Exit":1 \ + --button="Next":2 >${FLSUITE} BUT=$? -if [ $BUT = 1 ] || [ $BUT = 252 ];then -exit +if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then + exit fi #----------------------------------------------------# # HAM APP MENU #----------------------------------------------------# yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \ ---window-icon=$LOGO --image-on-top --text-align=center \ ---text="HAM Apps" --title="Update" \ -false "PAT" "$PAT" "Radio Email Application" \ -false "PAT-MENU" "$PATMENU" "Control for Pat Winlink" \ -false "CHIRP" "$CHIRP" "Program Radios" \ -false "GARIM" "$GARIM" "File Transfer Program " \ -false "M0IAX" "$M0IAX" "Tools for JS8Call messages" \ -false "CONKY" "$CONKY" "System Information Display" \ -false "WSJTX" "$FT8" "Weak signal digital mode software" \ -false "JS8CALL" "$JS8" "Weak signal digital mode software" \ -false "XASTIR" "$XASTIR" "APRS Client" \ -false "YAAC" "$YAAC" "Yet Another APRS Client" \ -false "PI-APRS" "$PIAPRS" "APRS Messaging Client" \ -false "PYQSO" "$PYQSO" "Logging Software" \ -false "CQRLOG" "$CQRLOG" "Logging Software" \ -false "XLOG" "$XLOG" "Logging Software" \ -false "QSSTV" "$QSSTV" "Slow scan TV" \ -false "GRIDTRACKER" "$GRIDTRACK" "Track grids in WSJTX" \ -false "HAMCLOCK" "$HAMCLOCK" "Clock for Ham Radio Ops" \ -false "PROPAGATION" "$PROP" "Propagation prediction" \ -false "EES" "$EES" "KM4ACK Emergency Email Server" \ -false "GPREDICT" "$GPREDICT" "Satellite Tracking" \ -false "TQSL" "$TQSL" "LOTW Software" \ ---button="Exit":1 \ ---button="Next":2 > $ADDITIONAL + --image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="HAM Apps" --title="Update" \ + false "PAT" "$PAT" "Radio Email Application" \ + false "PAT-MENU" "$PATMENU" "Control for Pat Winlink" \ + false "CHIRP" "$CHIRP" "Program Radios" \ + false "GARIM" "$GARIM" "File Transfer Program " \ + false "M0IAX" "$M0IAX" "Tools for JS8Call messages" \ + false "CONKY" "$CONKY" "System Information Display" \ + false "WSJTX" "$FT8" "Weak signal digital mode software" \ + false "JS8CALL" "$JS8" "Weak signal digital mode software" \ + false "XASTIR" "$XASTIR" "APRS Client" \ + false "YAAC" "$YAAC" "Yet Another APRS Client" \ + false "PI-APRS" "$PIAPRS" "APRS Messaging Client" \ + false "PYQSO" "$PYQSO" "Logging Software" \ + false "CQRLOG" "$CQRLOG" "Logging Software" \ + false "XLOG" "$XLOG" "Logging Software" \ + false "QSSTV" "$QSSTV" "Slow scan TV" \ + false "GRIDTRACKER" "$GRIDTRACK" "Track grids in WSJTX" \ + false "HAMCLOCK" "$HAMCLOCK" "Clock for Ham Radio Ops" \ + false "PROPAGATION" "$PROP" "Propagation prediction" \ + false "EES" "$EES" "KM4ACK Emergency Email Server" \ + false "GPREDICT" "$GPREDICT" "Satellite Tracking" \ + false "TQSL" "$TQSL" "LOTW Software" \ + --button="Exit":1 \ + --button="Next":2 >${ADDITIONAL} BUT=$? -if [ $BUT = 1 ] || [ $BUT = 252 ];then -exit +if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then + exit fi #check if hamclock is being installed -HCCHECK=$(cat $ADDITIONAL | grep HAMCLOCK) +HCCHECK=$(cat ${ADDITIONAL} | grep HAMCLOCK) if [ -n "$HCCHECK" ]; then -HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="version $VERSION" \ ---field="Ham Clock Size":CB "SMALL|LARGE" \ ---button="Continue":2) -HC=$(echo $HC | awk -F "|" '{print $1}') -sed -i 's/HAMCLOCK//' $ADDITIONAL -echo $HC >> $ADDITIONAL + HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="version $VERSION" \ + --field="Ham Clock Size":CB "SMALL|LARGE" \ + --button="Continue":2) + HC=$(echo $HC | awk -F "|" '{print $1}') + sed -i 's/HAMCLOCK//' ${ADDITIONAL} + echo $HC >>${ADDITIONAL} fi -PATCHECK=$(cat $ADDITIONAL | grep PAT) +PATCHECK=$(cat ${ADDITIONAL} | grep PAT) if [ -n "$PATCHECK" ]; then -INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="version $VERSION" \ ---field="Six Character Grid Square" "$GRID" \ ---field="Winlink Password" \ ---field="Password is case sensitive":LBL \ ---button="Continue":2) -GRID=$(echo $INFO | awk -F "|" '{print $1}') -GRID=${GRID^^} -WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}') -echo "GRID=$GRID" >> $CONFIG -echo "WL2KPASS=\"$WL2KPASS\"" >> $CONFIG + INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="version $VERSION" \ + --field="Six Character Grid Square" "$GRID" \ + --field="Winlink Password" \ + --field="Password is case sensitive":LBL \ + --button="Continue":2) + GRID=$(echo $INFO | awk -F "|" '{print $1}') + GRID=${GRID^^} + WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}') + echo "GRID=$GRID" >>${CONFIG} + echo "WL2KPASS=\"$WL2KPASS\"" >>${CONFIG} fi @@ -1018,53 +999,49 @@ fi # UTILITIES MENU #----------------------------------------------------# yad --center --list --checklist --width=600 --height=600 --separator="" \ ---image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \ ---window-icon=$LOGO --image-on-top --text-align=center \ ---text="UTILITIES" --title="Update" \ -false "DIPOLE" "$DIPOLE" "Dipole Calculator" \ -false "CALLSIGN" "$CALLSIGN" "Call Sign Lookup Utility" \ -false "TEMPCONVERT" "$TEMPCONVERT" "Temperature Converter" \ -false "GPARTED" "$GPARTED" "Disk Utility Application" \ -false "RTC" "$RTC" "Real Time Clock" \ -false "SHOWLOG" "$SHOWLOG" "Log File Viewer" \ -false "PISTATS" "$PISTATS" "Pi3/4 Stats Monitor" \ -false "TELNET" "$TEL" "Telnet Protocol" \ -false "PITERM" "$PITERM" "PiQTermTCP Terminal Program" \ -false "SECURITY" "$SECURITY" "File Encryption Software" \ -false "YGATE" "$YGATE" "Yaesu APRS Software" \ -false "BPQ" "$BPQ" "LinBPQ Software" \ -false "BATT" "$BATT" "Battery Test Script" \ -false "VNC" "$VNC" "VNC Viewer Application" \ -false "ZYGRIB" "$ZYGRIB" "Grib File Viewer" \ -false "GPSUPDATE" "$GPSUPDATE" "Tool to Manage GPS Devices" \ ---button="Exit":1 \ ---button="Install/Update Selected":2 > $UTILITY + --image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \ + --window-icon=${LOGO} --image-on-top --text-align=center \ + --text="UTILITIES" --title="Update" \ + false "DIPOLE" "$DIPOLE" "Dipole Calculator" \ + false "CALLSIGN" "${CALL}SIGN" "Call Sign Lookup Utility" \ + false "TEMPCONVERT" "$TEMPCONVERT" "Temperature Converter" \ + false "GPARTED" "$GPARTED" "Disk Utility Application" \ + false "RTC" "$RTC" "Real Time Clock" \ + false "SHOWLOG" "$SHOWLOG" "Log File Viewer" \ + false "PISTATS" "$PISTATS" "Pi3/4 Stats Monitor" \ + false "TELNET" "$TEL" "Telnet Protocol" \ + false "PITERM" "$PITERM" "PiQTermTCP Terminal Program" \ + false "SECURITY" "$SECURITY" "File Encryption Software" \ + false "YGATE" "$YGATE" "Yaesu APRS Software" \ + false "BPQ" "$BPQ" "LinBPQ Software" \ + false "BATT" "$BATT" "Battery Test Script" \ + false "VNC" "$VNC" "VNC Viewer Application" \ + false "ZYGRIB" "$ZYGRIB" "Grib File Viewer" \ + false "GPSUPDATE" "${GPS}UPDATE" "Tool to Manage GPS Devices" \ + --button="Exit":1 \ + --button="Install/Update Selected":2 >${UTILITY} BUT=$? -if [ $BUT = 1 ] || [ $BUT = 252 ];then -exit +if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then + exit fi - - - #check and exit if nothing selected -CKBASE=$(cat $BASE) -CKFL=$(cat $FLSUITE) -CKADD=$(cat $ADDITIONAL) -CKUTIL=$(cat $UTILITY) +CKBASE=$(cat ${BASE}) +CKFL=$(cat ${FLSUITE}) +CKADD=$(cat ${ADDITIONAL}) +CKUTIL=$(cat ${UTILITY}) if [ -z "$CKBASE" ] && [ -z "$CKFL" ] && [ -z "$CKADD" ] && [ -z "$CKUTIL" ]; then -rm $BASE $FLSUITE $ADDITIONAL $UTILITY > /dev/null 2>&1 -yad --width=550 --height=250 --text-align=center --center --title="Update" \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="\r\r\r\rNothing selected for install/update" \ ---button="CLOSE":1 -exit + rm ${BASE} ${FLSUITE} ${ADDITIONAL} ${UTILITY} >/dev/null 2>&1 + yad --width=550 --height=250 --text-align=center --center --title="Update" \ + --image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \ + --text="\r\r\r\rNothing selected for install/update" \ + --button="CLOSE":1 + exit fi - -#backup crontab -crontab -l > $TEMPCRON -echo "@reboot sleep 10 && export DISPLAY=:0 && $MYPATH/.complete" >> $TEMPCRON +#backup crontab +crontab -l >${TEMPCRON} +echo "@reboot sleep 10 && export DISPLAY=:0 && ${MYPATH}/.complete" >>${TEMPCRON} #update/upgrade the system sudo apt-get -y update sudo apt-get -y upgrade @@ -1073,90 +1050,70 @@ sudo apt -y full-upgrade ##################################### # Install Base Apps ##################################### -touch $HOME/.config/KM4ACK -while read i ; do -source $FUNCTIONS/base.function -$i -done < $BASE +touch ${HOME}/.config/KM4ACK +while read i; do + source ${FUNCTIONS}/base.function + $i +done <${BASE} ##################################### # Install FLSUITE ##################################### -source $FUNCTIONS/flsuite.function +source ${FUNCTIONS}/flsuite.function #perform memory increase if needed -CHECKFL=$(cat $MYPATH/flsuite.txt) +CHECKFL=$(cat ${MYPATH}/flsuite.txt) if [ -n "$CHECKFL" ]; then -FLSTART + FLSTART fi -touch $HOME/.config/KM4ACK -while read i ; do -source $FUNCTIONS/flsuite.function -$i -done < $FLSUITE +touch ${HOME}/.config/KM4ACK +while read i; do + source ${FUNCTIONS}/flsuite.function + $i +done <${FLSUITE} -source $FUNCTIONS/flsuite.function +source ${FUNCTIONS}/flsuite.function if [ -n "$CHECKFL" ]; then -FLSTOP + FLSTOP fi ##################################### # Install ADDITIONAL Apps ##################################### -while read i ; do -source $FUNCTIONS/additional.function -$i -done < $ADDITIONAL +while read i; do + source ${FUNCTIONS}/additional.function + $i +done <${ADDITIONAL} ##################################### # Install KM4ACK Utilites ##################################### -while read i ; do -source $FUNCTIONS/utility.function -$i -done < $UTILITY +while read i; do + source ${FUNCTIONS}/utility.function + $i +done <${UTILITY} ##################################### # END CLEANUP ##################################### #Remove temp files -rm $BASE $ADDITIONAL $UTILITY $FLSUITE > /dev/null 2>&1 - +rm ${BASE} ${ADDITIONAL} ${UTILITY} ${FLSUITE} >/dev/null 2>&1 #restore crontab -crontab $TEMPCRON -rm $TEMPCRON +crontab ${TEMPCRON} +rm ${TEMPCRON} #reboot when done -yad --width=400 --height=200 --title="Reboot" --image $LOGO \ ---text-align=center --skip-taskbar --image-on-top \ ---wrap --center --window-icon=$LOGO \ ---undecorated --text="Update Finished \rReboot Required\r\r" \ ---button="Reboot Now":0 \ ---button="Exit":1 +yad --width=400 --height=200 --title="Reboot" --image ${LOGO} \ + --text-align=center --skip-taskbar --image-on-top \ + --wrap --center --window-icon=${LOGO} \ + --undecorated --text="Update Finished \rReboot Required\r\r" \ + --button="Reboot Now":0 \ + --button="Exit":1 BUT=$(echo $?) -if [ $BUT = 0 ]; then -echo rebooting -sudo reboot -elif [ $BUT = 1 ]; then -exit +if [ ${BUT} = 0 ]; then + echo rebooting + sudo reboot +elif [ ${BUT} = 1 ]; then + exit fi - - - - - - - - - - - - - - - - - - -