mirror of
https://github.com/km4ack/pi-scripts
synced 2026-08-13 17:52:05 -04:00
181 lines
4.3 KiB
Bash
181 lines
4.3 KiB
Bash
#!/bin/bash
|
|
|
|
source $HOME/.whitelist-config > /dev/null 2>&1
|
|
|
|
MYEMAIL=test@winlink.org
|
|
|
|
SUBJECT=WHITELIST
|
|
TO=system@winlink.org
|
|
WHITEFILE=$HOME/.whitelist.txt
|
|
TEMP=/run/user/$UID/whitelist
|
|
LOGFILE=$HOME/Documents/mylog.txt
|
|
|
|
touch $WHITEFILE
|
|
|
|
|
|
#Check to see if we have a whitelist
|
|
MYLIST=$(cat $WHITEFILE)
|
|
clear;echo;echo
|
|
if [ -z "$MYLIST" ] && [ -z $1 ]; then
|
|
echo "Please setup a whitelist. To get started run"
|
|
echo "auto-whitelist setup"
|
|
exit
|
|
fi
|
|
|
|
#verify we have a callsign to work with
|
|
if [ -z $CALLSIGN ]; then
|
|
clear;echo;echo
|
|
echo "Call sign not set";echo
|
|
read -p "What is your call sign? " CALL
|
|
CALL=${CALL^^}
|
|
echo "CALLSIGN=$CALL" > $HOME/.whitelist-config
|
|
CALLSIGN=$CALL
|
|
fi
|
|
|
|
|
|
######################################
|
|
# WHITELIST SETUP
|
|
######################################
|
|
|
|
if [ "$1" = 'setup' ]; then
|
|
EDITFILE(){
|
|
#check to see if crontab entry exist
|
|
WHITECRON=$(crontab -l | grep whitelist)
|
|
if [ -z "$WHITECRON" ]; then
|
|
clear;echo;echo
|
|
echo "Cronjob not set. It needs to be set"
|
|
echo "to update the whitelist automatically";echo
|
|
read -p "Would you like to set it now? y/n " ANS
|
|
if [ $ANS = Y ] || [ $ANS = y ]; then
|
|
crontab -l > /run/user/$UID/crontemp
|
|
echo "30 09 01 Jan,Apr,Jul,Oct * /home/pi/bin/auto-whitelist" >> /run/user/$UID/crontemp
|
|
crontab /run/user/$UID/crontemp
|
|
echo "Cronjob set to run every 3 months"
|
|
sleep 2
|
|
fi
|
|
fi
|
|
|
|
#check to see if whitelist exist already
|
|
if [ -f $WHITEFILE ]; then
|
|
clear;echo;echo
|
|
echo "==============================="
|
|
echo " $CALLSIGN whitelist includes"
|
|
echo "==============================="
|
|
cat $WHITEFILE
|
|
else
|
|
clear;echo;echo
|
|
echo "No whitelist file found"
|
|
fi
|
|
|
|
#menu to mod whitelist
|
|
echo; echo "(A)dd to list | (R)emove from list"
|
|
read -p "(D)elete list | E(x)it " ANS
|
|
if [ $ANS != D ] && [ $ANS != d ] && [ $ANS != X ] && [ $ANS != x ] && \
|
|
[ $ANS != a ] && [ $ANS != A ] && [ $ANS != r ] && [ $ANS != R ]; then
|
|
echo "INVALID CHOICE"
|
|
sleep 2
|
|
EDITFILE
|
|
elif [ $ANS = D ] || [ $ANS = d ]; then
|
|
rm $WHITEFILE $HOME/.whitelist-config
|
|
clear;echo;echo
|
|
echo "Whitelist file deleted"
|
|
echo "Please restart auto-whitelist"
|
|
exit
|
|
elif [ $ANS = X ] || [ $ANS = x ]; then
|
|
echo;echo "Would you like to manually"
|
|
read -p "update your whitelist now? y/n " ANS
|
|
if [ $ANS = Y ] || [ $ANS = y ];then
|
|
echo;echo "Sending whitelist update to Winlink system"
|
|
sleep 1
|
|
else
|
|
exit
|
|
fi
|
|
elif [ $ANS = A ] || [ $ANS = a ]; then
|
|
read -p "What would you like to add? " ADD
|
|
echo $ADD >> $WHITEFILE
|
|
echo "$ADD was added"
|
|
sleep 2
|
|
EDITFILE
|
|
elif [ $ANS = R ] || [ $ANS = r ]; then
|
|
read -p "Which entry would you like to remove? " REMV
|
|
sed -i "s/$REMV//" $WHITEFILE
|
|
sed -i '/^$/d' $WHITEFILE
|
|
echo "$REMV was removed"
|
|
sleep 1
|
|
EDITFILE
|
|
fi
|
|
}
|
|
EDITFILE
|
|
fi
|
|
|
|
######################################
|
|
# MAIN SCRIPT
|
|
######################################
|
|
|
|
#COMPOSE EMAIL Function
|
|
COMPOSE () {
|
|
|
|
#Count body characters
|
|
BODYCOUNT=${#BODY}
|
|
NEWCOUNT=$(expr $BODYCOUNT + 1)
|
|
|
|
#set date
|
|
TODAY=$(date '+%Y/%m/%d %H:%M')
|
|
TODAY1=$(date)
|
|
|
|
#generate 12 random number
|
|
NEW_UUID=$(cat /dev/urandom | tr -dc 'A-Z0-9' | fold -w 12 | head -n 1)
|
|
|
|
#verify which version of Pat and set path as needed
|
|
PAT_VER=$(pat version | awk '{print $2}' | awk -F "." '{print $2}')
|
|
|
|
if [ "$PAT_VER" -le 11 ]; then
|
|
PAT_PATH="$HOME/.wl2k"
|
|
elif [ "$PAT_VER" -ge 12 ]; then
|
|
PAT_PATH="$HOME/.local/share/pat"
|
|
fi
|
|
|
|
#add .b2f to end of random number for new file name
|
|
NEW_FILE=$PAT_PATH/mailbox/$CALLSIGN/out/$NEW_UUID".b2f"
|
|
|
|
#create new file
|
|
touch $NEW_FILE
|
|
|
|
#add file contents
|
|
echo "Mid: "$NEW_UUID >> $NEW_FILE
|
|
echo "Body: "$NEWCOUNT >> $NEW_FILE
|
|
echo "Content-Transfer-Encoding: 8bit" >> $NEW_FILE
|
|
echo "Content-Type: text/plain; charset=ISO-8859-1" >> $NEW_FILE
|
|
echo "Date: "$TODAY >> $NEW_FILE
|
|
echo "From: "$CALLSIGN >> $NEW_FILE
|
|
echo "Mbo: "$CALLSIGN >> $NEW_FILE
|
|
echo "Subject: "$SUBJECT >> $NEW_FILE
|
|
echo "To: "$TO >> $NEW_FILE
|
|
echo "Type: Private" >> $NEW_FILE
|
|
echo "" >> $NEW_FILE
|
|
echo $BODY >> $NEW_FILE
|
|
rm $TEMP > /dev/null 2>&1
|
|
}
|
|
|
|
touch $TEMP
|
|
|
|
while read LINE
|
|
do
|
|
LINE="Accept: $LINE"
|
|
BODY=$LINE
|
|
COMPOSE
|
|
done < $WHITEFILE
|
|
|
|
TO=$MYEMAIL
|
|
SUBJECT="Whitelist updated"
|
|
BODY="The winlink whitelist has been update by your raspberry pi"
|
|
COMPOSE
|
|
|
|
pat connect telnet
|
|
|
|
SUC=$(echo $?)
|
|
if [ $SUC = 0 ]; then
|
|
echo "$TODAY1 Winlink Whitelist updated" >> $LOGFILE
|
|
elif [ $SUC = 1 ]; then
|
|
echo "$TODAY1 Winlink Whitelist update FAILED!" >> $LOGFILE
|
|
fi
|