mod_firewall/conditions.lib.lua
changeset 2346 6848297cf40a
parent 2132 21bc4d7cddae
child 2366 c065ab67d807
equal deleted inserted replaced
2345:52dd2a51dac8 2346:6848297cf40a
     1 --luacheck: globals meta idsafe
     1 --luacheck: globals meta idsafe
     2 local condition_handlers = {};
     2 local condition_handlers = {};
     3 
     3 
     4 local jid = require "util.jid";
     4 local jid = require "util.jid";
       
     5 
       
     6 -- Helper to convert user-input strings (yes/true//no/false) to a bool
       
     7 local function string_to_boolean(s)
       
     8 	s = s:lower();
       
     9 	return s == "yes" or s == "true";
       
    10 end
     5 
    11 
     6 -- Return a code string for a condition that checks whether the contents
    12 -- Return a code string for a condition that checks whether the contents
     7 -- of variable with the name 'name' matches any of the values in the
    13 -- of variable with the name 'name' matches any of the values in the
     8 -- comma/space/pipe delimited list 'values'.
    14 -- comma/space/pipe delimited list 'values'.
     9 local function compile_comparison_list(name, values)
    15 local function compile_comparison_list(name, values)
    86 	return zone_check(zone, "to");
    92 	return zone_check(zone, "to");
    87 end
    93 end
    88 
    94 
    89 function condition_handlers.LEAVING(zone)
    95 function condition_handlers.LEAVING(zone)
    90 	return zone_check(zone, "from");
    96 	return zone_check(zone, "from");
       
    97 end
       
    98 
       
    99 function condition_handlers.IN_ROSTER(yes_no)
       
   100 	local in_roster_requirement = string_to_boolean(yes_no);
       
   101 	return "not "..(in_roster_requirement and "not" or "").." roster_entry", { "roster_entry" };
       
   102 end
       
   103 
       
   104 function condition_handlers.IN_ROSTER_GROUP(group)
       
   105 	return ("not not (roster_entry and roster_entry.groups[%q])"):format(group), { "roster_entry" };
    91 end
   106 end
    92 
   107 
    93 function condition_handlers.PAYLOAD(payload_ns)
   108 function condition_handlers.PAYLOAD(payload_ns)
    94 	return ("stanza:get_child(nil, %q)"):format(payload_ns);
   109 	return ("stanza:get_child(nil, %q)"):format(payload_ns);
    95 end
   110 end