25 |
25 |
26 local muc_domain = nil; --module:get_host(); |
26 local muc_domain = nil; --module:get_host(); |
27 local default_history_length, max_history_length = 20, math.huge; |
27 local default_history_length, max_history_length = 20, math.huge; |
28 |
28 |
29 ------------ |
29 ------------ |
30 local function filter_xmlns_from_array(array, filters) |
|
31 local count = 0; |
|
32 for i=#array,1,-1 do |
|
33 local attr = array[i].attr; |
|
34 if filters[attr and attr.xmlns] then |
|
35 t_remove(array, i); |
|
36 count = count + 1; |
|
37 end |
|
38 end |
|
39 return count; |
|
40 end |
|
41 local function filter_xmlns_from_stanza(stanza, filters) |
|
42 if filters then |
|
43 if filter_xmlns_from_array(stanza.tags, filters) ~= 0 then |
|
44 return stanza, filter_xmlns_from_array(stanza, filters); |
|
45 end |
|
46 end |
|
47 return stanza, 0; |
|
48 end |
|
49 local presence_filters = {["http://jabber.org/protocol/muc"]=true;["http://jabber.org/protocol/muc#user"]=true}; |
30 local presence_filters = {["http://jabber.org/protocol/muc"]=true;["http://jabber.org/protocol/muc#user"]=true}; |
|
31 local function presence_filter(tag) |
|
32 if presence_filters[tag.attr.xmlns] then |
|
33 return nil; |
|
34 end |
|
35 return tag; |
|
36 end |
|
37 |
50 local function get_filtered_presence(stanza) |
38 local function get_filtered_presence(stanza) |
51 return filter_xmlns_from_stanza(st.clone(stanza):reset(), presence_filters); |
39 return st.clone(stanza):maptags(presence_filter); |
52 end |
40 end |
53 local kickable_error_conditions = { |
41 local kickable_error_conditions = { |
54 ["gone"] = true; |
42 ["gone"] = true; |
55 ["internal-server-error"] = true; |
43 ["internal-server-error"] = true; |
56 ["item-not-found"] = true; |
44 ["item-not-found"] = true; |