X-Git-Url: http://pileus.org/git/?p=~andy%2Frhawk;a=blobdiff_plain;f=email.awk;h=57b56d40c0c5fd1ecbf00959766ad3a10be2eb98;hp=e3080aaa3c92e4bc34396b134c42623b7d287dd6;hb=HEAD;hpb=34b5581817cf329c62936dc5e3ea4080cc125d6e diff --git a/email.awk b/email.awk index e3080aa..57b56d4 100644 --- a/email.awk +++ b/email.awk @@ -1,34 +1,41 @@ @include "json.awk" # Save email addresses -BEGIN { json_load("var/mail.txt", mail_enable) } -END { json_save("var/mail.txt", mail_enable) } +BEGIN { + json_load("var/mail.json", mail_enable) + for (_user in mail_enable) + debug("watching " mail_enable[_user] " for " _user) +} + +TO == NICK && /^sync/ { + json_load("var/mail.json", mail_enable) + for (_user in mail_enable) + debug("watching " mail_enable[_user] " for " _user) +} # Email notifications BEGIN { mail_hist = 5*60 # If the users has not spoken withn mail_before before mail_before = 5*60 # someone mentions their name and does not reply within mail_after = 5*60 # mail_after seconds, email them hist seconds of the backlog - - mail_from = NICK "" - mail_err = "If you received this message in error,\n" \ - "someone in #rhnoise is being a jerk" - - for (_user in mail_enable) - debug("watching " mail_enable[_user] " for " _user) } function mail_send(addr, subj, body, - sendmail, errmsg) + from, error, sendmail, errmsg) { + from = NICK "<" NICK "@pileus.org>" + error = "If you received this message in error,\n" \ + "someone in #rhnoise is being a jerk" + gsub(/[^a-zA-Z0-9_+@.-]/, "", addr) sendmail = "/usr/sbin/sendmail " addr - print "To: " addr | sendmail - print "From: " mail_from | sendmail - print "Subject: " subj | sendmail - print "" | sendmail - print body | sendmail - print mail_err | sendmail + print "To: " addr | sendmail + print "From: " from | sendmail + print "Subject: " subj | sendmail + print "" | sendmail + print body | sendmail + print "" | sendmail + print error | sendmail close(sendmail) } @@ -70,46 +77,70 @@ function mail_run( user, chan, ready, time) } } -FROM ~ OWNER && +function mail_save(file) +{ + json_save(file, mail_enable) +} + +# Help +/^\.help$/ { + say(".help mail -- manage email subscriptions") +} + +/^\.help e?mail$/ { + say("Mail -- email users when they are mentioned") + say(NICK ": subscribe [addr] -- set your mailing address to [addr]") + say(NICK ": unsubscribe [addr] -- remove your subscription") + say(NICK ": addresses -- show your subscription address") + next +} + +# Commands +AUTH == OWNER && TO == NICK && -/^e?mail .* .*/ { +/^subscribe .* .*/ { reply("notifying " $2 " for " $3) mail_enable[$3] = $2 + mail_save("var/mail.json") } TO == NICK && -/^e?mail *[^ ]*$/ { +/^subscribe *[^ ]*$/ { _user = FROM _addr = $2 gsub(/[^a-zA-Z0-9_+@.-]/, "", _user) gsub(/[^a-zA-Z0-9_+@.-]/, "", _addr) reply("notifying " _addr " for " _user) mail_enable[_user] = _addr + mail_save("var/mail.json") } -FROM ~ OWNER && +AUTH == OWNER && TO == NICK && -/^stfu .*/ { +/^unsubscribe .*/ { reply("well fine then") delete mail_enable[$2] delete mail_ready[$2] delete mail_seen[$2] + mail_save("var/mail.json") } TO == NICK && -/^stfu$/ { +/^unsubscribe$/ { reply("well fine then") delete mail_enable[FROM] delete mail_ready[FROM] delete mail_seen[FROM] + mail_save("var/mail.json") } TO == NICK && -/^who/ { +/^addresses/ { for (_user in mail_enable) reply("\"" _user "\" <" mail_enable[_user] ">") } +# Message logging and monitoring DST ~ /^#.*/ { for (_user in mail_enable) { _idle = systime() - mail_seen[_user]