-# Email notifications
+@include "json.awk"
+
+# Save email addresses
BEGIN {
- mail_hist = 60 # Send 60 seconds of backlog
- mail_delay = 60 # Wait 60 seconds after last mention before mailing
+ json_load("var/mail.json", mail_enable)
+ for (_user in mail_enable)
+ debug("watching " mail_enable[_user] " for " _user)
+}
- mail_from = NICK "<andy753421@gmail.com>"
- mail_err = "If you recieved this message in error,\n" \
- "someone in #rhnoise is begin a jerk"
+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
}
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)
}
for (si = 1; si <= sn; si++) {
sec = ss[si]
mn = length(mail_log[chan][sec])
- for (mi = 0; mi < mn; mi++) {
+ for (mi = 0; mi < mn; mi++) {
msg = mail_log[chan][sec][mi]
if (sec > mail_ready[user][chan] - mail_hist) {
if (msg ~ user)
}
}
}
- say("notifying " user " at " addr)
+ say(chan, "notifying " user " at " addr)
mail_send(addr, "Message for " user " in " chan, body)
delete mail_ready[user][chan]
}
for (chan in mail_ready[user]) {
ready = mail_ready[user][chan]
delay = systime() - ready
- if (ready && delay > mail_delay)
+ if (ready && delay > mail_after)
mail_prep(user, chan)
}
}
-FROM ~ OWNER &&
-/^e?mail .* .*/ {
+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(".subscribe [addr] -- set your mailing address to [addr]")
+ say(".unsubscribe [addr] -- remove your subscription")
+ say(".addresses -- show your subscription address")
+ next
+}
+
+# Commands
+AUTH == OWNER &&
+TO == NICK &&
+/^subscribe .* .*/ {
reply("notifying " $2 " for " $3)
mail_enable[$3] = $2
+ mail_save("var/mail.json")
}
-/^e?mail *[^ ]*$/ {
- reply("notifying " $2)
- mail_enable[FROM] = $2
+TO == NICK &&
+/^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")
+}
+
+AUTH == OWNER &&
+TO == NICK &&
+/^unsubscribe .*/ {
+ reply("well fine then")
+ delete mail_enable[$2]
+ delete mail_ready[$2]
+ delete mail_seen[$2]
+ mail_save("var/mail.json")
}
-/^stfu$/ {
+TO == NICK &&
+/^unsubscribe$/ {
reply("well fine then")
delete mail_enable[FROM]
+ delete mail_ready[FROM]
+ delete mail_seen[FROM]
+ mail_save("var/mail.json")
+}
+
+TO == NICK &&
+/^addresses/ {
+ for (_user in mail_enable)
+ reply("\"" _user "\" <" mail_enable[_user] ">")
}
-TO in mail_enable {
- mail_ready[TO][DST] = systime()
- debug("queing messages to " DST " for " TO)
+# Message logging and monitoring
+DST ~ /^#.*/ {
+ for (_user in mail_enable) {
+ _idle = systime() - mail_seen[_user]
+ if ($0 ~ "\\<"_user"\\>" && _idle > mail_before) {
+ mail_ready[_user][DST] = systime()
+ debug("queueing messages to " DST " for " _user)
+ }
+ }
}
FROM in mail_enable {
delete mail_ready[FROM]
+ mail_seen[FROM] = systime()
debug("clearing message for " FROM)
}
_i = length(mail_log[DST][_t])
if (_i==0) delete mail_log[DST][_t]
mail_log[DST][_t][_i] = DST " " strftime("(%H:%M:%S) ") FROM ": " $0
- debug("log["DST"]["_t"]["_i"] = "mail_log[DST][_t][_i])
+ #debug("log["DST"]["_t"]["_i"] = "mail_log[DST][_t][_i])
}
// {