diff options
Diffstat (limited to 'tools/ejabberd2prosody.lua')
-rwxr-xr-x | tools/ejabberd2prosody.lua | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/tools/ejabberd2prosody.lua b/tools/ejabberd2prosody.lua index 46a48f57..e3caefd5 100755 --- a/tools/ejabberd2prosody.lua +++ b/tools/ejabberd2prosody.lua @@ -85,7 +85,13 @@ function password(node, host, password) data.stored_key = hex(unb64(password[2])); data.server_key = hex(unb64(password[3])); data.salt = unb64(password[4]); - data.iteration_count = password[5]; + if type(password[6]) == "number" then + assert(password[5] == "sha", "unexpected passwd entry hash: "..tostring(password[5])); + data.iteration_count = password[6]; + else + assert(type(password[5]) == "number", "unexpected passwd entry in source data"); + data.iteration_count = password[5]; + end end local ret, err = dm.store(node, host, "accounts", data); print("["..(err or "success").."] accounts: "..node.."@"..host); @@ -181,13 +187,16 @@ function muc_room(node, host, properties) for _,aff in ipairs(properties.affiliations) do store._affiliations[build_jid(aff[1])] = aff[2][1] or aff[2]; end - store._data.subject = properties.subject; + -- destructre ejabberd's subject datum (e.g. [{text,<<>>,<<"my room subject">>}] ) + store._data.subject = properties.subject[1][3]; if properties.subject_author then store._data.subject_from = store.jid .. "/" .. properties.subject_author; end store._data.name = properties.title; store._data.description = properties.description; - store._data.password = properties.password; + if properties.password_protected ~= false and properties.password ~= "" then + store._data.password = properties.password; + end store._data.moderated = (properties.moderated == "true") or nil; store._data.members_only = (properties.members_only == "true") or nil; store._data.persistent = (properties.persistent == "true") or nil; |