mutt-wizard

fork of Luke Smiths mutt-wizard
git clone git://git.jakekoroman.com/mutt-wizard
Log | Files | Refs | README | LICENSE

commit 5c4b388d537f41851f4d06b545dcb4362427aaaa
parent e79d940a32a1884a1b14c8dab4ec07476f9bf5d6
Author: Luke <luke@lukesmith.xyz>
Date:   Sun, 11 Feb 2018 17:58:16 -0700

integration into single script

Diffstat:
Mmutt_install.sh | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Dremoveaccount.sh | 39---------------------------------------
Dwipe_settings.sh | 12------------
3 files changed, 73 insertions(+), 61 deletions(-)

diff --git a/mutt_install.sh b/mutt_install.sh @@ -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 +# 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 + addloop + done ;} + +wipe () { rm $HOME/.offlineimaprc + rm -rf "$muttdir"/accounts + rm -f "$muttdir"credentials/*gpg + rm "$muttdir"personal.muttrc ;} + + + while : ; -do - dialog --title "Luke's mutt/offlineIMAP password wizard" --yesno "Would you like to add another email account?" 10 60 || break - mainloop + 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 diff --git a/removeaccount.sh b/removeaccount.sh @@ -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 diff --git a/wipe_settings.sh b/wipe_settings.sh @@ -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