3 # Pour récupérer toutes les signatures des mails dans le dossier
4 # idoine stocké sur zamok
6 # NB : si tu n'as pas "cadre", bah t'es puni, remplace par echo
10 # On lance l'agent gpg avec un pinentry commandline
11 cadre
"Starting gpg-agent"
12 eval $
(gpg-agent
--daemon --pinentry-program /usr
/bin
/pinentry-curses
)
14 agentpid
=$
(echo $GPG_AGENT_INFO | cut
-d: -f 2)
16 # On récupère les mails de signatures
18 cadre
"Storing mails copied in ${where}"
20 # On récupère la liste des fichiers qui n'ont pas de S (\Seen) dans leurs flags
21 # (on vire le \x0 qui est à la fin, et on prie pour qu'il n'y ait jamais d'espaces dans les noms de mails)
22 MAILS
=$
(ssh zamok
find "~/Mail/.Signatures/cur/" -type f
-regex "'[^:]+:2,[^S]*'" -print0 |
sed "s/\x0/ /g;s/ $//")
23 # On parsème de virgules et de backslash là où il faut et on les rappatrie
24 echo $MAILS |
sed 's/,/\\\\,/g;s/ /,/g' |
xargs -I % scp zamok
:{%} ${where}
26 # On traite les mails un par un
27 cadre
"Decrypting and importing signatures"
28 for mail in ${where}/*;
30 gpg2
--no-auto-check-trustdb --decrypt ${mail} | gpg2
--no-auto-check-trustdb --import;
33 # On marque (peut-être) les mails distants comme lus
35 echo -n "Mark distant e-mails as read ? [Y/n]"
37 # On ajoute le flag S (\Seen) aux mails concernés là où il faut dans l'ordre alphabétique
38 # en ne touchant pas au reste de leur nom
39 # Attention au "''" et aux \$ parce que ssh needs moar escapingz
40 [[ "${ans}" = "n" ]] ||
[[ "${ans}" = "N" ]] ||
ssh zamok rename
-v "'s/^([^:]+):2,([A-R]*)([^S]*)$/\$1:2,\$2S\$3/'" $MAILS
43 echo -n "Remove local tempfolder ? [Y/n]"
45 [[ "${ans}" = "n" ]] || [[ "${ans}" = "N" ]] || rm -rfv ${where}
47 cadre "Sending freshly-signed key to servers
"
48 echo -n "Sure ?
[Y
/n
]"
50 [[ "${ans}" = "n
" ]] || [[ "${ans}" = "N
" ]] || gpg --send-keys D5759143B14B45B6