Software /
code /
prosody
Changeset
6285:ea60d0441df7
Merge 0.10->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 21 Jun 2014 15:05:52 +0200 |
parents | 6278:fcc3ef191293 (current diff) 6284:b49540983320 (diff) |
children | 6286:ec6e8d5a3fd3 |
files | |
diffstat | 6 files changed, 30 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_presence.lua Tue Jun 17 15:27:00 2014 -0400 +++ b/plugins/mod_presence.lua Sat Jun 21 15:05:52 2014 +0200 @@ -137,6 +137,9 @@ origin.directed = nil; end else + if not origin.presence then + module:fire_event("presence/initial", { origin = origin, stanza = stanza } ); + end origin.presence = stanza; stanza:tag("delay", { xmlns = "urn:xmpp:delay", from = host, stamp = datetime.datetime() }):up(); if origin.priority ~= priority then
--- a/plugins/mod_storage_internal.lua Tue Jun 17 15:27:00 2014 -0400 +++ b/plugins/mod_storage_internal.lua Sat Jun 21 15:05:52 2014 +0200 @@ -6,6 +6,9 @@ local driver_mt = { __index = driver }; function driver:open(store, typ) + if typ and typ ~= "keyval" then + return nil, "unsupported-store"; + end return setmetatable({ store = store, type = typ }, driver_mt); end function driver:get(user)
--- a/plugins/mod_storage_none.lua Tue Jun 17 15:27:00 2014 -0400 +++ b/plugins/mod_storage_none.lua Sat Jun 21 15:05:52 2014 +0200 @@ -1,8 +1,11 @@ local driver = {}; local driver_mt = { __index = driver }; -function driver:open(store) - return setmetatable({ store = store }, driver_mt); +function driver:open(store, typ) + if typ and typ ~= "keyval" then + return nil, "unsupported-store"; + end + return setmetatable({ store = store, type = typ }, driver_mt); end function driver:get(user) return {};
--- a/plugins/mod_storage_sql.lua Tue Jun 17 15:27:00 2014 -0400 +++ b/plugins/mod_storage_sql.lua Sat Jun 21 15:05:52 2014 +0200 @@ -380,10 +380,10 @@ local driver = {}; function driver:open(store, typ) - if not typ then -- default key-value store - return setmetatable({ store = store }, keyval_store); + if typ and typ ~= "keyval" then + return nil, "unsupported-store"; end - return nil, "unsupported-store"; + return setmetatable({ store = store }, keyval_store); end function driver:stores(username)
--- a/plugins/mod_storage_sql2.lua Tue Jun 17 15:27:00 2014 -0400 +++ b/plugins/mod_storage_sql2.lua Sat Jun 21 15:05:52 2014 +0200 @@ -198,7 +198,9 @@ keyval_store.__index = keyval_store; function keyval_store:get(username) user,store = username,self.store; - return select(2, engine:transaction(keyval_store_get)); + local ok, result = engine:transaction(keyval_store_get); + if not ok then return ok, result; end + return result; end function keyval_store:set(username, data) user,store = username,self.store;
--- a/tools/ejabberd2prosody.lua Tue Jun 17 15:27:00 2014 -0400 +++ b/tools/ejabberd2prosody.lua Sat Jun 21 15:05:52 2014 +0200 @@ -56,6 +56,16 @@ local Megaseconds,Seconds,Microseconds = unpack(tuple); return Megaseconds * 1000000 + Seconds; end +function build_jid(tuple, full) + local node, jid, resource = tuple[1], tuple[2], tuple[3] + if type(node) == "string" and node ~= "" then + jid = tuple[1] .. "@" .. jid; + end + if full and type(resource) == "string" and resource ~= "" then + jid = jid .. "/" .. resource; + end + return jid; +end function vcard(node, host, stanza) local ret, err = dm.store(node, host, "vcard", st.preserialize(stanza)); @@ -105,10 +115,7 @@ if _type == "jid" then if type(value) ~= "table" then print("[error] privacy: jid value is not valid: "..tostring(value)); break; end local _node, _host, _resource = value[1], value[2], value[3]; - if (type(_node) == "table") then _node = nil; end - if (type(_host) == "table") then _host = nil; end - if (type(_resource) == "table") then _resource = nil; end - value = (_node and _node.."@".._host or _host)..(_resource and "/".._resource or ""); + value = build_jid(value, true) elseif _type == "none" then _type = nil; value = nil; @@ -154,18 +161,10 @@ local ret, err = dm.store(node, host, "privacy", privacy); print("["..(err or "success").."] privacy: " ..node.."@"..host.." - "..count.." list(s)"); end -local function _table_to_jid(t) - if type(t[2]) == "string" then - local jid = t[2]; - if type(t[1]) == "string" then jid = t[1].."@"..jid; end - if type(t[3]) == "string" then jid = jid.."/"..t[3]; end - return jid; - end -end function muc_room(node, host, properties) local store = { jid = node.."@"..host, _data = {}, _affiliations = {} }; for _,aff in ipairs(properties.affiliations) do - store._affiliations[_table_to_jid(aff[1])] = aff[2][1] or aff[2]; + store._affiliations[build_jid(aff[1])] = aff[2][1] or aff[2]; end store._data.subject = properties.subject; if properties.subject_author then @@ -207,7 +206,7 @@ end; roster = function(tuple) local node = tuple[3][1]; local host = tuple[3][2]; - local contact = (type(tuple[4][1]) == "table") and tuple[4][2] or tuple[4][1].."@"..tuple[4][2]; + local contact = build_jid(tuple[4]); local name = tuple[5]; local subscription = tuple[6]; local ask = tuple[7]; local groups = tuple[8]; if type(name) ~= type("") then name = nil; end