55 |
55 |
56 local notified; |
56 local notified; |
57 |
57 |
58 module:hook("resource-bind", function (event) |
58 module:hook("resource-bind", function (event) |
59 local session = event.session; |
59 local session = event.session; |
60 module:log("debug", "mod_%s sees that %s logged in", module.name, session.username); |
|
61 |
60 |
62 local now = time(); |
61 local now = time(); |
63 local last_notify = notified[session.username] or 0; |
62 local last_notify = notified[session.username] or 0; |
64 if last_notify > ( now - 86400 * 7 ) then |
63 if last_notify > ( now - 86400 * 7 ) then |
65 module:log("debug", "Already notified %s", session.username); |
|
66 return |
64 return |
67 end |
65 end |
68 |
66 |
69 module:log("debug", "Waiting 15 seconds"); |
|
70 timer.add_task(15, function () |
67 timer.add_task(15, function () |
71 module:log("debug", "15 seconds later... session.type is %q", session.type); |
|
72 if session.type ~= "c2s" then return end -- user quit already |
68 if session.type ~= "c2s" then return end -- user quit already |
73 local bad_contacts, bad_hosts = {}, {}; |
69 local bad_contacts, bad_hosts = {}, {}; |
74 for contact_jid, item in pairs(session.roster or {}) do |
70 for contact_jid, item in pairs(session.roster or {}) do |
75 local _, contact_host = jid_split(contact_jid); |
71 local _, contact_host = jid_split(contact_jid); |
76 local bad = false; |
72 local bad = false; |
98 bad_hosts[contact_host] = true; |
94 bad_hosts[contact_host] = true; |
99 table.insert(bad_hosts, contact_host); |
95 table.insert(bad_hosts, contact_host); |
100 end |
96 end |
101 end |
97 end |
102 end |
98 end |
103 module:log("debug", "%s has %d bad contacts", session.username, #bad_contacts); |
|
104 if #bad_contacts > 0 then |
99 if #bad_contacts > 0 then |
105 local vars = { |
100 local vars = { |
106 HOST = host; |
101 HOST = host; |
107 CONTACTS = " "..table.concat(bad_contacts, "\n "); |
102 CONTACTS = " "..table.concat(bad_contacts, "\n "); |
108 SERVICES = " "..table.concat(bad_hosts, "\n "); |
103 SERVICES = " "..table.concat(bad_hosts, "\n "); |
109 CONTACTVIA = contact_method, CONTACT = contact; |
104 CONTACTVIA = contact_method, CONTACT = contact; |
110 }; |
105 }; |
111 module:log("debug", "Sending notification to %s", session.username); |
|
112 session.send(st.message({ type = "headline", from = host }):tag("body"):text(message:gsub("$(%w+)", vars))); |
106 session.send(st.message({ type = "headline", from = host }):tag("body"):text(message:gsub("$(%w+)", vars))); |
113 notified[session.username] = now; |
107 notified[session.username] = now; |
114 end |
108 end |
115 end); |
109 end); |
116 end); |
110 end); |
163 if fields.state == "enabled" then |
157 if fields.state == "enabled" then |
164 config_set(host, "c2s_require_encryption", true); |
158 config_set(host, "c2s_require_encryption", true); |
165 config_set(host, "s2s_require_encryption", true); |
159 config_set(host, "s2s_require_encryption", true); |
166 |
160 |
167 for _, session in pairs(s2s_sessions) do |
161 for _, session in pairs(s2s_sessions) do |
168 if session.type == "s2sin" or session.type == "s2sout" and not session.secure then |
162 if not session.secure then |
169 (session.close or s2s_destroy_session)(session); |
163 (session.close or s2s_destroy_session)(session); |
170 end |
164 end |
171 end |
165 end |
172 |
166 |
173 info = "Manifesto mode enabled"; |
167 info = "Manifesto mode enabled"; |