integration into single script
This commit is contained in:
parent
e79d940a32
commit
5c4b388d53
@ -1,16 +1,46 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
muttdir="$HOME/.config/mutt/"
|
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
|
# Check to see if domain is in domain list
|
||||||
serverinfo=$(cat "$muttdir"autoconf/domains.csv | grep -w ^${fulladdr##*@})
|
serverinfo=$(cat "$muttdir"autoconf/domains.csv | grep -w ^${fulladdr##*@})
|
||||||
if [ -z "$serverinfo" ];
|
if [ -z "$serverinfo" ];
|
||||||
then
|
then
|
||||||
echo No suitable match. && exit
|
echo No suitable match in domains.csv. && clear && exit
|
||||||
else
|
else
|
||||||
# Read in server data as variables
|
# Read in server data as variables
|
||||||
IFS=, read service imap iport smtp sport spoolfile postponed record <<EOF
|
IFS=, read service imap iport smtp sport spoolfile postponed record <<EOF
|
||||||
@ -54,7 +84,7 @@ addAccount() {
|
|||||||
# First, adding the encrypted password.
|
# 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
|
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
|
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/
|
mv /tmp/$title.gpg ~/.config/mutt/credentials/
|
||||||
|
|
||||||
# Creating the offlineimaprc if it doesn't exist already.
|
# 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 || \
|
grep "$muttdir"personal.muttrc -e "^source .*accounts.*" >/dev/null && echo there || \
|
||||||
echo "source ${muttdir}accounts/$title.muttrc" >> "$muttdir"personal.muttrc ;}
|
echo "source ${muttdir}accounts/$title.muttrc" >> "$muttdir"personal.muttrc ;}
|
||||||
|
|
||||||
mainloop
|
# 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 : ;
|
while : ;
|
||||||
do
|
do
|
||||||
dialog --title "Luke's mutt/offlineIMAP password wizard" --yesno "Would you like to add another email account?" 10 60 || break
|
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
|
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