pi-scripts/auto-whitelist
2021-01-20 21:06:51 -06:00

172 lines
4 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)
#add .b2f to end of random number for new file name
NEW_FILE=$HOME/.wl2k/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