Add multi-user support and improve configuration
authorKristian Fiskerstrand <kf@sumptuouscapital.com>
Wed, 31 Dec 2014 14:28:29 +0000 (15:28 +0100)
committerKristian Fiskerstrand <kf@sumptuouscapital.com>
Wed, 31 Dec 2014 14:32:52 +0000 (15:32 +0100)
We now properly detect the To: field from the original Asterisk
message in order to use for multiple-user setups. This means
that the email address specified for notice will need to have an
OpenPGP key, and failure to decrypt results in stopping to send the
message at all with a log file entry.

Additionally options for configuration have been made clearer

asterisk-mailsend

index 125ee45..85ec7e2 100644 (file)
@@ -1,19 +1,25 @@
 #!/bin/bash
 
+# Configuration
+SENDER_DOMAIN="sumptuouscapital.com"
+GNUPG_HOMEDIR="/var/lib/asterisk/.gnupg"
+GNUPG_BIN="/usr/bin/gpg2"
+SUBJECT="$(date '+%Y-%m-%d %H:%M:%S'): You have a new VoiceMail message"
+LOGFILE="/tmp/asterisk-voicemail-error.txt"
+
+# Edit should not be necessary below this line
 LOCALTEMP=$(/bin/mktemp)
 cat > ${LOCALTEMP}
 
-#TODO: Here we need to actually grab the To: field to see whom it should be sent to
-
-#TODO And here we need to check the return status to ensure it was properly encrypted
+TO=$(grep -E "^To:" ${LOCALTEMP} | sed -e 's/[^<]*<\([^>]*\)>/\1/')
 
-TO="kf@sumptuouscapital.com"
-SUBJECT="$(date '+%Y-%m-%d %H:%M:%S'): You have a new VoiceMail message"
 BOUNDARY="-----=${RANDOM}"
 TMP=$(mktemp)
 
 echo "To: ${TO}" >> ${TMP}
 echo "Subject: ${SUBJECT}" >> ${TMP}
+echo "Precedence: bulk" >> ${TMP}
+echo "Message-ID: ${RANDOM}@${SENDER_DOMAIN}"
 echo "MIME-Version: 1.0" >> ${TMP}
 echo "Content-Type: multipart/encrypted; protocol=\"application/pgp-encrypted\"; boundary=\"${BOUNDARY}\"" >> ${TMP}
 
@@ -32,10 +38,14 @@ echo 'Content-Description: OpenPGP encrypted message' >> ${TMP}
 echo 'Content-Disposition: inline; filename="encrypted.asc"' >> ${TMP}
 echo "" >> ${TMP}
 
-/usr/bin/gpg2 --batch --homedir /var/lib/asterisk/.gnupg -aer ${TO} --encrypt ${LOCALTEMP}
+${GNUPG_BIN} --batch --homedir ${GNUPG_HOMEDIR} -aer ${TO} --encrypt ${LOCALTEMP}
+if [[ $? != "0" ]]; then
+echo "Error encrypting ${LOCALTEMP} to ${TO}" >> ${LOGFILE}
+exit 1;
+fi
+
 cat ${LOCALTEMP}.asc >> ${TMP}
 
 echo "--${BOUNDARY}--" >> ${TMP}
 
 cat ${TMP} | /usr/bin/sendmail -t
-