From b8e124cf9f04774250a68ec4585c72b1ebd22ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Thu, 18 Aug 2016 00:02:08 +0200 Subject: Add suncemail and annoyme --- config/systemd/user/syncemail.service | 10 +++++++ local/bin/annoyme | 17 ++++++++++++ local/sbin/annoyme-request | 50 +++++++++++++++++++++++++++++++++++ local/sbin/syncemail | 36 +++++++++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 config/systemd/user/syncemail.service create mode 100755 local/bin/annoyme create mode 100755 local/sbin/annoyme-request create mode 100755 local/sbin/syncemail diff --git a/config/systemd/user/syncemail.service b/config/systemd/user/syncemail.service new file mode 100644 index 0000000..a44f383 --- /dev/null +++ b/config/systemd/user/syncemail.service @@ -0,0 +1,10 @@ +[Unit] +Description=Email synchronization + +[Service] +ExecStart=/home/cynerd/.local/sbin/syncemail +KillSignal=SIGUSR2 +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/local/bin/annoyme b/local/bin/annoyme new file mode 100755 index 0000000..99c6392 --- /dev/null +++ b/local/bin/annoyme @@ -0,0 +1,17 @@ +#!/bin/bash + +DOT_ANNOYME=~/.annoyme + +for NAME in `ls | grep -E '.pid$' | sed 's/\.pid$//'`; do + echo -e "\033[0;31m$NAME:\033[0m" `cat "$DOT_ANNOYME/$NAME.desc"` + echo -ne "\033[0;1m Y/n: \033[0;0m" + read + if [[ $REPLY =~ ^[Yy]?$ ]]; then + if $DOT_ANNOYME/$NAME.script > "$DOT_ANNOYME/$NAME.out"; then + kill -SIGUSR1 `cat $NAME.pid` + else + kill -SIGUSR2 `cat $NAME.pid` + fi + fi + echo +done diff --git a/local/sbin/annoyme-request b/local/sbin/annoyme-request new file mode 100755 index 0000000..28a9864 --- /dev/null +++ b/local/sbin/annoyme-request @@ -0,0 +1,50 @@ +#!/bin/bash + +DOT_ANNOYME=~/.annoyme + +NAME=$1 +EC=2 + +onexit() { + rm -f "$DOT_ANNOYME/$NAME.script" + rm -f "$DOT_ANNOYME/$NAME.pid" + rm -f "$DOT_ANNOYME/$NAME.desc" + rm -f "$DOT_ANNOYME/$NAME.out" + kill $SLEEPID 2>/dev/null + exit $EC +} +trap onexit EXIT INT QUIT TERM ABRT + +mkdir -p $DOT_ANNOYME + +echo "#!/bin/bash" > "$DOT_ANNOYME/$NAME.script" +while read -r LINE; do + echo "$LINE" >> "$DOT_ANNOYME/$NAME.script" +done +chmod +x "$DOT_ANNOYME/$NAME.script" +echo "$$" > "$DOT_ANNOYME/$NAME.pid" +echo "$2" > "$DOT_ANNOYME/$NAME.desc" + +onsuccess() { + echo "User intervention successful." 1>&2 + cat "$DOT_ANNOYME/$NAME.out" + EC=0 + exit +} + +onfailure() { + echo "User intervention failed." 1>&2 + EC=1 + exit +} + +trap onsuccess SIGUSR1 +trap onfailure SIGUSR2 + +echo "Waiting for user intervention using annoyme" 1>&2 +notify-send -a "$NAME" "$NAME: User intervention required" "$2" +sleep 3h & +SLEEPID=$! +wait $SLEEPID +echo "User intervention timed out." 1>&2 +notify-send -a "$NAME" "$NAME: User intervention request timed out." diff --git a/local/sbin/syncemail b/local/sbin/syncemail new file mode 100755 index 0000000..95deb7e --- /dev/null +++ b/local/sbin/syncemail @@ -0,0 +1,36 @@ +#!/usr/bin/python2 +# This starts offlineimap, but first it requests passwords from pass by user +# notification launching script at front. +import os +import sys +import subprocess +from offlineimap import OfflineImap + +frontscript = """ +echo "Asking for gpg password to access pass" 1>&2 +pass mail/cynerd@email.cz +echo "All done" 1>&2 +""" +annoyme = [ + os.path.expanduser("~/.local/sbin/annoyme-request"), + "syncemail", + "Imap email synchronization service password request." + ] + +anproc = subprocess.Popen(annoyme, stdin=subprocess.PIPE, + stdout=subprocess.PIPE) +anproc.stdin.write(frontscript) +anproc.stdin.close() +output = anproc.stdout.read().splitlines() +excode = anproc.wait() + +if excode != 0: + print("Authentication failed. Please start emailsync again") + sys.exit(1) +print(output) + +sys.argv.append('-k') +sys.argv.append('Repository_email-remote:remotepass=' + output[0]) + + +OfflineImap().run() -- cgit v1.2.3