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