integration into single script
This commit is contained in:
parent
e79d940a32
commit
5c4b388d53
@ -1,16 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
muttdir="$HOME/.config/mutt/"
|
||||
mkdir -p "$muttdir"credentials/ "$muttdir"accounts/
|
||||
|
||||
gpgemail=$( dialog --title "Luke's mutt/offlineIMAP password wizard" --inputbox "Insert the email address with which you originally created your GPG key pair. This is NOT necessarily the email you want to configure." 10 60 3>&1 1>&2 2>&3 3>&- )
|
||||
# Sees what accounts have been generated bny the wizard
|
||||
# by checking ~/.offlineimap and yields a menu of them.
|
||||
inventory() { \
|
||||
cat ~/.offlineimaprc | grep "^accounts =" | sed -e 's/accounts =\( \)//g;s/\(,\) /\n/g;' | nl --number-format=ln > /tmp/numbered
|
||||
accounts=()
|
||||
while read n s ; do
|
||||
accounts+=($n "$s" off)
|
||||
done < /tmp/numbered
|
||||
|
||||
mainloop() { fulladdr=$( dialog --title "Luke's mutt/offlineIMAP autoconfig" --inputbox "Insert the full email address for the account you want to configure." 10 60 3>&1 1>&2 2>&3 3>&- )
|
||||
choices=$(dialog --separate-output --checklist "Choose an email account." 22 76 16 "${accounts[@]}" 2>&1 >/dev/tty)
|
||||
|
||||
if [ -z "$choices" ];
|
||||
then
|
||||
clear
|
||||
else
|
||||
userchoices=$(IFS="|"; keys="${choices[*]}"; keys="${keys//|/\\|}"; grep -w "${keys}" /tmp/numbered | awk '{print $2}')
|
||||
fi ;}
|
||||
|
||||
|
||||
removeAccount() { sed -ie "
|
||||
/Account $1]/,/Account/{//!d}
|
||||
/Account $1]/d
|
||||
s/ $1\(,\|$\)//g
|
||||
s/=$1\(,\|$\)/=/g
|
||||
s/,$//g
|
||||
" ~/.offlineimaprc
|
||||
rm "$muttdir"accounts/$1.muttrc
|
||||
rm "$muttdir"credentials/$1.gpg
|
||||
rm -rf "$muttdir"accounts/$1
|
||||
echo $1 deleted. ;}
|
||||
|
||||
|
||||
|
||||
addloop() { fulladdr=$( dialog --title "Luke's mutt/offlineIMAP autoconfig" --inputbox "Insert the full email address for the account you want to configure." 10 60 3>&1 1>&2 2>&3 3>&- )
|
||||
# Check to see if domain is in domain list
|
||||
serverinfo=$(cat "$muttdir"autoconf/domains.csv | grep -w ^${fulladdr##*@})
|
||||
if [ -z "$serverinfo" ];
|
||||
then
|
||||
echo No suitable match. && exit
|
||||
echo No suitable match in domains.csv. && clear && exit
|
||||
else
|
||||
# Read in server data as variables
|
||||
IFS=, read service imap iport smtp sport spoolfile postponed record <<EOF
|
||||
@ -54,7 +84,7 @@ addAccount() {
|
||||
# First, adding the encrypted password.
|
||||
dialog --title "Luke's mutt/offlineIMAP password wizard" --passwordbox "Enter the password for the \"$title\" account." 10 60 2> /tmp/$title
|
||||
gpg -r $gpgemail --encrypt /tmp/$title
|
||||
shred -u /tmp/$title && echo "Password encrypted and memory shredded."
|
||||
shred -u /tmp/$title
|
||||
mv /tmp/$title.gpg ~/.config/mutt/credentials/
|
||||
|
||||
# Creating the offlineimaprc if it doesn't exist already.
|
||||
@ -76,10 +106,43 @@ addAccount() {
|
||||
grep "$muttdir"personal.muttrc -e "^source .*accounts.*" >/dev/null && echo there || \
|
||||
echo "source ${muttdir}accounts/$title.muttrc" >> "$muttdir"personal.muttrc ;}
|
||||
|
||||
mainloop
|
||||
while : ;
|
||||
do
|
||||
# This is run when a user chooses to add an account.
|
||||
addChosen() { \
|
||||
mkdir -p "$muttdir"credentials/ "$muttdir"accounts/
|
||||
gpgemail=$( dialog --title "Luke's mutt/offlineIMAP password wizard" --inputbox "Insert the email address with which you originally created your GPG key pair. This is NOT necessarily the email you want to configure." 10 60 3>&1 1>&2 2>&3 3>&- )
|
||||
addloop
|
||||
while : ;
|
||||
do
|
||||
dialog --title "Luke's mutt/offlineIMAP password wizard" --yesno "Would you like to add another email account?" 10 60 || break
|
||||
mainloop
|
||||
addloop
|
||||
done ;}
|
||||
|
||||
wipe () { rm $HOME/.offlineimaprc
|
||||
rm -rf "$muttdir"/accounts
|
||||
rm -f "$muttdir"credentials/*gpg
|
||||
rm "$muttdir"personal.muttrc ;}
|
||||
|
||||
|
||||
|
||||
while : ;
|
||||
do
|
||||
choice=$(dialog --title "Luke's mutt/offlineIMAP wizard" \
|
||||
--menu "What would you like to do?" 14 45 5 \
|
||||
0 "List all email accounts configured." \
|
||||
1 "Add an email account." \
|
||||
2 "Remove an email account." \
|
||||
3 "Remove all email accounts." \
|
||||
4 "Exit this wizard." \
|
||||
3>&1 1>&2 2>&3 3>&1 )
|
||||
|
||||
|
||||
case $choice in
|
||||
0) dialog --title "Accounts detected" --msgbox "The following accounts have been detected:
|
||||
$(grep ~/.offlineimaprc -e "^accounts =" | sed 's/accounts =//g')
|
||||
" 6 60;;
|
||||
1) addChosen;;
|
||||
2) inventory && for i in $userchoices; do removeAccount $i ; done;;
|
||||
3) (dialog --defaultno --title "Wipe all custom neomutt/offlineIMAP settings?" --yesno "Would you like to wipe all of the mutt/offlineIMAP settings generated by the system?" 6 60 && wipe) ;;
|
||||
4) clear && break
|
||||
esac
|
||||
done
|
||||
clear
|
||||
|
@ -1,39 +0,0 @@
|
||||
#!/bin/sh
|
||||
muttdir="$HOME/.config/mutt/"
|
||||
|
||||
# This script will remove an account from ~/.offlineimaprc and the
|
||||
# designated location in ~/.config/mutt/accounts.
|
||||
|
||||
# Feed the script the title of the account.
|
||||
|
||||
cat ~/.offlineimaprc | grep "^accounts =" | sed -e 's/accounts =\( \)//g;s/\(,\) /\n/g;' | nl --number-format=ln > /tmp/numbered
|
||||
|
||||
removeAccount() { sed -ie "
|
||||
/Account $1]/,/Account/{//!d}
|
||||
/Account $1]/d
|
||||
s/ $1\(,\|$\)//g
|
||||
s/=$1\(,\|$\)/=/g
|
||||
s/,$//g
|
||||
" ~/.offlineimaprc
|
||||
rm "$muttdir"accounts/$1.muttrc
|
||||
rm "$muttdir"credentials/$1.gpg
|
||||
rm -rf "$muttdir"accounts/$1
|
||||
echo $1 deleted. ;}
|
||||
|
||||
#/tmp/numbered
|
||||
|
||||
accounts=()
|
||||
while read n s ; do
|
||||
accounts+=($n "$s" off)
|
||||
done < /tmp/numbered
|
||||
|
||||
choices=$(dialog --separate-output --checklist "Choose an email account to remove." 22 76 16 "${accounts[@]}" 2>&1 >/dev/tty)
|
||||
clear
|
||||
|
||||
if [ -z "$choices" ];
|
||||
then
|
||||
clear
|
||||
else
|
||||
todelet=$(IFS="|"; keys="${choices[*]}"; keys="${keys//|/\\|}"; grep -w "${keys}" /tmp/numbered | awk '{print $2}')
|
||||
for i in $todelet; do removeAccount $i; done
|
||||
fi
|
@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
muttdir="$HOME/.config/mutt/"
|
||||
|
||||
wipe () { rm $HOME/.offlineimaprc
|
||||
rm -rf "$muttdir"/accounts
|
||||
rm -f "$muttdir"credentials/*gpg
|
||||
rm "$muttdir"personal.muttrc ;}
|
||||
|
||||
(dialog --defaultno --title "Wipe all custom neomutt/offlineIMAP settings?" --yesno "Would you like to wipe all of the mutt/offlineIMAP settings generated by the system?" 6 60 && wipe) || clear && exit
|
||||
|
||||
clear
|
Loading…
Reference in New Issue
Block a user