5 json_load("var/mail.json", mail_enable)
6 for (_user in mail_enable)
7 debug("watching " mail_enable[_user] " for " _user)
10 TO == NICK && /^sync/ {
11 json_load("var/mail.json", mail_enable)
12 for (_user in mail_enable)
13 debug("watching " mail_enable[_user] " for " _user)
18 mail_hist = 5*60 # If the users has not spoken withn mail_before before
19 mail_before = 5*60 # someone mentions their name and does not reply within
20 mail_after = 5*60 # mail_after seconds, email them hist seconds of the backlog
23 function mail_send(addr, subj, body,
24 from, error, sendmail, errmsg)
26 from = NICK "<" NICK "@pileus.org>"
27 error = "If you received this message in error,\n" \
28 "someone in #rhnoise is being a jerk"
30 gsub(/[^a-zA-Z0-9_+@.-]/, "", addr)
31 sendmail = "/usr/sbin/sendmail " addr
32 print "To: " addr | sendmail
33 print "From: " from | sendmail
34 print "Subject: " subj | sendmail
38 print error | sendmail
42 function mail_prep(user, chan,
47 addr = mail_enable[user]
48 sn = asorti(mail_log[chan], ss)
50 for (si = 1; si <= sn; si++) {
52 mn = length(mail_log[chan][sec])
53 for (mi = 0; mi < mn; mi++) {
54 msg = mail_log[chan][sec][mi]
55 if (sec > mail_ready[user][chan] - mail_hist) {
64 say(chan, "notifying " user " at " addr)
65 mail_send(addr, "Message for " user " in " chan, body)
66 delete mail_ready[user][chan]
69 function mail_run( user, chan, ready, time)
71 for (user in mail_ready)
72 for (chan in mail_ready[user]) {
73 ready = mail_ready[user][chan]
74 delay = systime() - ready
75 if (ready && delay > mail_after)
80 function mail_save(file)
82 json_save(file, mail_enable)
87 say(".help mail -- manage email subscriptions")
91 say("Mail -- email users when they are mentioned")
92 say(".subscribe [addr] -- set your mailing address to [addr]")
93 say(".unsubscribe [addr] -- remove your subscription")
94 say(".addresses -- show your subscription address")
102 reply("notifying " $2 " for " $3)
104 mail_save("var/mail.json")
108 /^subscribe *[^ ]*$/ {
111 gsub(/[^a-zA-Z0-9_+@.-]/, "", _user)
112 gsub(/[^a-zA-Z0-9_+@.-]/, "", _addr)
113 reply("notifying " _addr " for " _user)
114 mail_enable[_user] = _addr
115 mail_save("var/mail.json")
121 reply("well fine then")
122 delete mail_enable[$2]
123 delete mail_ready[$2]
125 mail_save("var/mail.json")
130 reply("well fine then")
131 delete mail_enable[FROM]
132 delete mail_ready[FROM]
133 delete mail_seen[FROM]
134 mail_save("var/mail.json")
139 for (_user in mail_enable)
140 reply("\"" _user "\" <" mail_enable[_user] ">")
143 # Message logging and monitoring
145 for (_user in mail_enable) {
146 _idle = systime() - mail_seen[_user]
147 if ($0 ~ "\\<"_user"\\>" && _idle > mail_before) {
148 mail_ready[_user][DST] = systime()
149 debug("queueing messages to " DST " for " _user)
154 FROM in mail_enable {
155 delete mail_ready[FROM]
156 mail_seen[FROM] = systime()
157 debug("clearing message for " FROM)
162 _i = length(mail_log[DST][_t])
163 if (_i==0) delete mail_log[DST][_t]
164 mail_log[DST][_t][_i] = DST " " strftime("(%H:%M:%S) ") FROM ": " $0
165 #debug("log["DST"]["_t"]["_i"] = "mail_log[DST][_t][_i])