diff --git a/changelog b/changelog index 24e5e48..d029489 100644 --- a/changelog +++ b/changelog @@ -1,7 +1,17 @@ -release=2.2.2 +release=2.3.0 Changelog +2.3.0 Add new mailbox management section + archive all email + delete archives + delete sent + Add listen modes to manage pat winlink section + add mailbox management to main menu + move email backup to inbox manage + move email restore to inbox manage + fix program exit after email restore + add quick stats 2.2.2 Update Find Gateway Code for Packet in FA-functions Add manual grid update update logo to white background diff --git a/manage-inbox b/manage-inbox new file mode 100755 index 0000000..4c21358 --- /dev/null +++ b/manage-inbox @@ -0,0 +1,27 @@ +#!/bin/bash + +export MYPATH=$HOME/patmenu2 +LOGO=$MYPATH/pmlogo.png +MAIN=$MYPATH/./patmenu +VERSION=$(cat $MYPATH/changelog | grep release | head -1 | sed 's/release=//') + +CALL=$(grep mycall ~/.wl2k/config.json | head -1 | sed 's/"//g;s/mycall: //;s/,//;s/ //g') + + +yad --form --width=420 --text-align=center --center --title="Pat Menu" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Pat Menu by KM4ACK\rv$VERSION" \ +--field="Archive All Email":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-inbox-functions; ARCHIVE-ALL"' \ +--field="Delete Archived Email":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-inbox-functions; DELETE-ARCHIVE"' \ +--field="Delete Sent Email":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-inbox-functions; DELETE-SENT"' \ +--field="Backup Email":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-inbox-functions; EMAILBKUP"' \ +--field="Restore Email":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-inbox-functions; EMAILRESTORE"' \ +--button="Main Menu":1 +BUT=$? + +if [ $BUT = 1 ]; then +$MAIN & +exit +elif [ $BUT = 252 ]; then +exit 0 +fi \ No newline at end of file diff --git a/manage-inbox-functions b/manage-inbox-functions new file mode 100644 index 0000000..035c0d3 --- /dev/null +++ b/manage-inbox-functions @@ -0,0 +1,146 @@ +MYPATH=$HOME/patmenu2 +MAIN=$MYPATH/./manage-inbox +LOGO=$MYPATH/pmlogo.png +VERSION=$(cat $MYPATH/changelog | grep release | head -1 | sed 's/release=//') + +source $MYPATH/config + +IN=$HOME/.wl2k/mailbox/$MYCALLSIGN/in +ARCHIVE=$HOME/.wl2k/mailbox/$MYCALLSIGN/archive +SENT=$HOME/.wl2k/mailbox/$MYCALLSIGN/sent + +ARCHIVE-ALL(){ +mv $IN/* $ARCHIVE/ +yad --form --width=420 --height=100 --text-align=center --center --title="Pat Menu" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Pat Menu by KM4ACK\rv$VERSION\rEmails Archived" \ +--button=gtk-ok +$MAIN & +} + +DELETE-ARCHIVE (){ +yad --form --width=420 --text-align=center --center --title="Pat Menu" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Pat Menu by KM4ACK\rv$VERSION\rARE YOU SURE YOU WANT TO DELETE\rALL ITEMS FROM YOUR ARCHIVE FOLDER?\rTHIS CAN'T BE UNDONE" \ +--button="Yes I'm Sure":2 \ +--button="No":1 +BUT=$? +if [ $BUT = 1 ]; then +$MAIN & +exit 0 +elif [ $BUT = 252 ]; then +exit +elif [ $BUT = 2 ]; then +rm $ARCHIVE/* +yad --form --width=420 --height=100 --text-align=center --center --title="Pat Menu" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Pat Menu by KM4ACK\rv$VERSION\rArchives Deleted" \ +--button=gtk-ok +$MAIN & +fi +} + +DELETE-SENT(){ +yad --form --width=420 --text-align=center --center --title="Pat Menu" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Pat Menu by KM4ACK\rv$VERSION\rARE YOU SURE YOU WANT TO DELETE\rALL ITEMS FROM YOUR SENT FOLDER?\rTHIS CAN'T BE UNDONE" \ +--button="Yes I'm Sure":2 \ +--button="No":1 +BUT=$? +if [ $BUT = 1 ]; then +$MAIN & +exit 0 +elif [ $BUT = 252 ]; then +exit +elif [ $BUT = 2 ]; then +rm $SENT/* +yad --form --width=420 --height=100 --text-align=center --center --title="Pat Menu" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Pat Menu by KM4ACK\rv$VERSION\rSent Emails Deleted" \ +--button=gtk-ok +$MAIN & +fi +} + +EMAILBKUP(){ +CONFIG=$HOME/.wl2k/config.json +WHO=$(whoami) +CALL=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]') +BKUPTIME=$(date +%Y%d%m-%H%M) + +BACKUP=$(yad --form --width=420 --text-align=center --center --title="Email Backup" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Email Backup by KM4ACK" \ +--field="Backup Directory":DIR \ +--button="Backup Emails":2 \ +--button="Cancel":1) +BUT=$? + +if [ $BUT = 252 ]; then +exit +elif [ $BUT = 1 ]; then +$MAIN +exit +fi + +DIR=$(echo $BACKUP | awk -F "|" '{print $1}') + +cp -r $HOME/.wl2k/mailbox/$CALL $DIR/email.bkup.$BKUPTIME + +if [ -d $DIR/email.bkup.$BKUPTIME ]; then +yad --center --text="Backup Complete" \ +--button=gtk-ok +$MAIN & +exit +fi +} + + +EMAILRESTORE(){ +MYPATH=$HOME/dev/patmenu2 +CONFIG=$HOME/.wl2k/config.json +WHO=$(whoami) +CALL=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]') + +RESTORE=$(yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Email Restore by KM4ACK" \ +--field="Restore Directory":DIR \ +--button="Restore Emails":2 \ +--button="Cancel":1) +BUT=$? + +if [ $BUT = 252 ]; then +exit +elif [ $BUT = 1 ]; then +$MAIN & +exit +fi + +DIR=$(echo $RESTORE | awk -F "|" '{print $1}') +DIRCHECK=$(ls $DIR) +COUNT=${#DIRCHECK} +if [ "$COUNT" = 19 ]; then +cp $DIR/archive/* $HOME/.wl2k/mailbox/$CALL/archive/ +cp $DIR/in/* $HOME/.wl2k/mailbox/$CALL/in/ +cp $DIR/out/* $HOME/.wl2k/mailbox/$CALL/out/ +cp $DIR/sent/* $HOME/.wl2k/mailbox/$CALL/sent/ +yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Email Restore by KM4ACK\r\rRESTORE COMPLETE" \ +--button=gtk-ok +else +yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Email Restore by KM4ACK\r\rNot a valid restore directory" \ +--button=gtk-ok +fi +$MAIN & +exit + +} + + + + + diff --git a/manage-pat b/manage-pat index fa44695..4eee393 100755 --- a/manage-pat +++ b/manage-pat @@ -14,9 +14,8 @@ yad --form --width=420 --text-align=center --center --title="Manage Pat" --text- --field="Manual Grid Update":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; MANUALGPS"' \ --field="Set ARDOP Speed":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; SPEED"' \ --field="Set ARDOP PTT":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; SETPTT"' \ +--field="Set Listen Mode":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; LISTEN"' \ --field="Delete Alias":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; DELETEALIAS"' \ ---field="Backup Emails":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; EMAILBKUP"' \ ---field="Restore Emails":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; EMAILRESTORE"' \ --field="Backup Pat Config":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; BKUPCONFIG"' \ --field="Restore Pat Config":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/manage-pat-functions; RESTORECONFIG"' \ --button="Main Menu":1 diff --git a/manage-pat-functions b/manage-pat-functions index d509d41..c84a891 100644 --- a/manage-pat-functions +++ b/manage-pat-functions @@ -180,89 +180,6 @@ exit fi } - - - -EMAILBKUP(){ -CONFIG=$HOME/.wl2k/config.json -WHO=$(whoami) -CALL=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]') -BKUPTIME=$(date +%Y%d%m-%H%M) - -BACKUP=$(yad --form --width=420 --text-align=center --center --title="Email Backup" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Email Backup by KM4ACK" \ ---field="Backup Directory":DIR \ ---button="Backup Emails":2 \ ---button="Cancel":1) -BUT=$? - -if [ $BUT = 252 ]; then -exit -elif [ $BUT = 1 ]; then -$MAIN -exit -fi - -DIR=$(echo $BACKUP | awk -F "|" '{print $1}') - -cp -r $HOME/.wl2k/mailbox/$CALL $DIR/email.bkup.$BKUPTIME - -if [ -d $DIR/email.bkup.$BKUPTIME ]; then -yad --center --text="Backup Complete" \ ---button=gtk-ok -$MAIN & -exit -fi -} - - -EMAILRESTORE(){ -MYPATH=$HOME/dev/patmenu2 -CONFIG=$HOME/.wl2k/config.json -WHO=$(whoami) -CALL=$(cat $HOME/.wl2k/config.json | grep -m 1 mycall | sed 's/\"mycall\": \"//' | sed 's/\",//' | sed -e 's/^\s*//' | tr '[:lower:]' '[:upper:]') - -RESTORE=$(yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Email Restore by KM4ACK" \ ---field="Restore Directory":DIR \ ---button="Restore Emails":2 \ ---button="Cancel":1) -BUT=$? - -if [ $BUT = 252 ]; then -exit -elif [ $BUT = 1 ]; then -$MAIN -exit -fi - -DIR=$(echo $RESTORE | awk -F "|" '{print $1}') -DIRCHECK=$(ls $DIR) -COUNT=${#DIRCHECK} -if [ "$COUNT" = 19 ]; then -cp $DIR/archive/* $HOME/.wl2k/mailbox/$CALL/archive/ -cp $DIR/in/* $HOME/.wl2k/mailbox/$CALL/in/ -cp $DIR/out/* $HOME/.wl2k/mailbox/$CALL/out/ -cp $DIR/sent/* $HOME/.wl2k/mailbox/$CALL/sent/ -yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Email Restore by KM4ACK\r\rRESTORE COMPLETE" \ ---button=gtk-ok -else -yad --form --width=420 --text-align=center --center --title="Email Restore" --text-align=center \ ---image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ ---text="Email Restore by KM4ACK\r\rNot a valid restore directory" \ ---button=gtk-ok -fi -exit - -} - - - - RESTORECONFIG(){ CONFIG=$HOME/.wl2k/config.json OUTFILE=/run/user/$UID/config.list @@ -441,7 +358,102 @@ yad --form --width=400 --text-align=center --center --title="Grid Update" --text $MAIN } - +LISTEN(){ +#This funtion sets the listen modes for Pat Winlink +WHO=$(whoami) +TEMP=/run/user/$UID/listen.txt +NOW=$(grep ExecStart /lib/systemd/system/pat@.service | sed 's|ExecStart=/usr/bin/pat -l||;s/http//') +if [ $NOW = 'ExecStart=/usr/bin/pat' ]; then +NOW="Not listening for incoming connections" +fi + +LISTEN=$(yad --center --list --checklist --width=600 --height=300 --separator="|" \ +--image $LOGO --column=Check --column=Mode --column=Description \ +--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ +--text="Pat Listen Modes\rCurrently Listening on:\r$NOW" --title="Pat Menu" \ +false "TELNET" "Connection over Internet or Mesh" \ +false "AX25" "Packet Connections 2M-440" \ +false "ARDOP" "HF Connections using ARDOP Modem" \ +--button="Main Menu":1 \ +--button="Set Listen Mode":2 \ +--button="Stop Listening":3) +BUT=$? +if [ $BUT = 252 ]; then +exit +elif [ $BUT = 1 ]; then +$MAIN & +exit +elif [ $BUT = 2 ]; then +#Send results to temp file. +echo $LISTEN > $TEMP +#check temp file for what's there +TELNET=$(grep TELNET $TEMP) +ARDOP=$(grep ARDOP $TEMP) +AX25=$(grep AX25 $TEMP) +#Set telnet variable + if [ -n "$TELNET" ]; then + TELNET="telnet," + fi +#set ardop variable + if [ -n "$ARDOP" ]; then + ARDOP="ardop," + fi +#set ax25 variable + if [ -n "$AX25" ]; then + AX25="ax25," + fi +cat < $TEMP +[Unit] +Description=pat - Winlink client for %I +Documentation=https://github.com/la5nta/pat/wiki +After=ax25.service network.target + +[Service] +User=%i +ExecStart=/usr/bin/pat http +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +#add listen modes set by user +sed -i "s|Exec.*|ExecStart=/usr/bin/pat -l $TELNET$ARDOP$AX25 http|" $TEMP +sudo cp $TEMP /lib/systemd/system/pat@.service +sudo systemctl daemon-reload +sudo systemctl restart pat@$WHO +yad --form --width=320 --text-align=center --center --title="Listening" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Listen mode set to $TELNET$ARDOP$AX25" \ +--button=gtk-ok +$MAIN & +exit + +elif [ $BUT = 3 ]; then +cat < $TEMP +[Unit] +Description=pat - Winlink client for %I +Documentation=https://github.com/la5nta/pat/wiki +After=ax25.service network.target + +[Service] +User=%i +ExecStart=/usr/bin/pat http +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +sudo cp $TEMP /lib/systemd/system/pat@.service +sudo systemctl daemon-reload +sudo systemctl restart pat@$WHO +fi +yad --form --width=320 --text-align=center --center --title="Listening" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="No longer listening for incoming connections" \ +--button=gtk-ok +$MAIN & +exit +} diff --git a/pat-functions b/pat-functions index f1f7ec7..0cbb3f7 100644 --- a/pat-functions +++ b/pat-functions @@ -133,7 +133,50 @@ exit fi } - +STATS(){ +CONFIG=$HOME/.wl2k/config.json +SMD=/lib/systemd/system/pat@.service +CALL=$(grep mycall $CONFIG | head -1 | sed s'/"mycall": //;s/"//g;s/,//;s/ //g') +GRID=$(grep locator $CONFIG | sed 's/"//g;s/locator://;s/,//;s/ //g') +ARDOPMAX=$(grep -i max $CONFIG | sed 's/"Max":\ //;s/ //g') +PTT=$(grep ptt_ctrl $CONFIG | tail -1 | sed 's/"ptt_ctrl":\ //;s/,//;s/ //g') +PORT=$(grep http_addr $CONFIG | sed 's/^.*0://;s/",//') +RIG=$(grep RIGCONTROL $HOME/patmenu2/config | sed 's/RIGCONTROL=//') +TELNET=$(grep telnet, $SMD) +ARDOP=$(grep ardop, $SMD) +AX25=$(grep ax25, $SMD) +#Set telnet variable + if [ -n "$TELNET" ]; then + TELNET="telnet," + fi +#set ardop variable + if [ -n "$ARDOP" ]; then + ARDOP="ardop," + fi +#set ax25 variable + if [ -n "$AX25" ]; then + AX25="ax25," + fi +if [ -z "$TELNET" ] && [ -z "$ARDOP" ] && [ -z "$AX25" ]; then +LISTEN="Not Listening" +else +LISTEN="$TELNET$ARDOP$AX25" +fi + +yad --form --width=320 --text-align=center --center --title="Quick Stats" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Quick Stats" \ +--field="Current User":RO "$CALL" \ +--field="Current Grid":RO "$GRID" \ +--field="ARDOP Speed":RO "$ARDOPMAX" \ +--field="ARDOP PTT is":RO "$PTT" \ +--field="Listen Modes":RO "$LISTEN" \ +--field="Rig Control":RO "$RIG" \ +--field="Pat Port":RO "$PORT" \ +--button=gtk-ok +$MAIN & +exit +} diff --git a/patmenu b/patmenu index f312a6e..b0d2eaa 100755 --- a/patmenu +++ b/patmenu @@ -29,8 +29,10 @@ yad --form --width=420 --text-align=center --center --title="Pat Menu" --text-al --field="Find Winlink Gateways":fbtn 'bash -c "kill -USR1 $YAD_PID; $MYPATH/find2"' \ --field="Pat Auto Connect":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/pat-functions; AUTOPAT"' \ --field="Pat Catalog":fbtn 'bash -c "kill -USR1 $YAD_PID; $MYPATH/catalog"' \ +--field="Manage Inbox":fbtn 'bash -c "kill -USR1 $YAD_PID; $MYPATH/manage-inbox"' \ --field="Manage Pat Winlink":fbtn 'bash -c "kill -USR1 $YAD_PID; $MYPATH/manage-pat"' \ --field="Settings/Config":fbtn 'bash -c "kill -USR1 $YAD_PID; $MYPATH/manage-menu"' \ +--field="Quick Stats":fbtn 'bash -c "kill -USR1 $YAD_PID; source $MYPATH/pat-functions; STATS"' \ --field="My Call - $MYCALLSIGN":LBL \ --button="QUIT":1