#!/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