Software /
code /
prosody
Comparison
plugins/mod_admin_shell.lua @ 13072:7fcf41b541e0
mod_admin_shell: Use same wildcard matching in other s2s command
Consistency is nice.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 10 Apr 2023 14:24:39 +0200 |
parent | 13071:b5a419ac0f84 |
child | 13079:e7a5e5a0dc02 |
comparison
equal
deleted
inserted
replaced
13071:b5a419ac0f84 | 13072:7fcf41b541e0 |
---|---|
1189 | 1189 |
1190 function def_env.s2s:showcert(domain) | 1190 function def_env.s2s:showcert(domain) |
1191 local print = self.session.print; | 1191 local print = self.session.print; |
1192 local s2s_sessions = module:shared"/*/s2s/sessions"; | 1192 local s2s_sessions = module:shared"/*/s2s/sessions"; |
1193 local domain_sessions = set.new(array.collect(values(s2s_sessions))) | 1193 local domain_sessions = set.new(array.collect(values(s2s_sessions))) |
1194 /function(session) return (session.to_host == domain or session.from_host == domain) and session or nil; end; | 1194 /function(session) return match_s2s_jid(session, domain) and session or nil; end; |
1195 local cert_set = {}; | 1195 local cert_set = {}; |
1196 for session in domain_sessions do | 1196 for session in domain_sessions do |
1197 local conn = session.conn; | 1197 local conn = session.conn; |
1198 conn = conn and conn:socket(); | 1198 conn = conn and conn:socket(); |
1199 if not conn.getpeerchain then | 1199 if not conn.getpeerchain then |
1292 elseif from == to then | 1292 elseif from == to then |
1293 return false, "Both from and to are the same... you can't do that :)"; | 1293 return false, "Both from and to are the same... you can't do that :)"; |
1294 end | 1294 end |
1295 | 1295 |
1296 for _, session in pairs(s2s_sessions) do | 1296 for _, session in pairs(s2s_sessions) do |
1297 local id = session.id or (session.type..tostring(session):match("[a-f0-9]+$")); | 1297 local id = session.id or (session.type .. tostring(session):match("[a-f0-9]+$")); |
1298 if (match_id and match_id == id) | 1298 if (match_id and match_id == id) or ((from and match_wildcard(from, session.to_host)) or (to and match_wildcard(to, session.to_host))) then |
1299 or (session.from_host == from and session.to_host == to) then | |
1300 print(("Closing connection from %s to %s [%s]"):format(session.from_host, session.to_host, id)); | 1299 print(("Closing connection from %s to %s [%s]"):format(session.from_host, session.to_host, id)); |
1301 (session.close or s2smanager.destroy_session)(session, build_reason(text, condition)); | 1300 (session.close or s2smanager.destroy_session)(session, build_reason(text, condition)); |
1302 count = count + 1 ; | 1301 count = count + 1; |
1303 end | 1302 end |
1304 end | 1303 end |
1305 return true, "Closed "..count.." s2s session"..((count == 1 and "") or "s"); | 1304 return true, "Closed "..count.." s2s session"..((count == 1 and "") or "s"); |
1306 end | 1305 end |
1307 | 1306 |
1308 function def_env.s2s:closeall(host, text, condition) | 1307 function def_env.s2s:closeall(host, text, condition) |
1309 local count = 0; | 1308 local count = 0; |
1310 local s2s_sessions = module:shared"/*/s2s/sessions"; | 1309 local s2s_sessions = module:shared"/*/s2s/sessions"; |
1311 for _,session in pairs(s2s_sessions) do | 1310 for _,session in pairs(s2s_sessions) do |
1312 if not host or session.from_host == host or session.to_host == host then | 1311 if not host or host == "*" or match_s2s_jid(session, host) then |
1313 session:close(build_reason(text, condition)); | 1312 session:close(build_reason(text, condition)); |
1314 count = count + 1; | 1313 count = count + 1; |
1315 end | 1314 end |
1316 end | 1315 end |
1317 if count == 0 then return false, "No sessions to close."; | 1316 if count == 0 then return false, "No sessions to close."; |