aboutsummaryrefslogtreecommitdiffstats
path: root/tools/ejabberd2prosody.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tools/ejabberd2prosody.lua')
-rwxr-xr-xtools/ejabberd2prosody.lua15
1 files changed, 12 insertions, 3 deletions
diff --git a/tools/ejabberd2prosody.lua b/tools/ejabberd2prosody.lua
index 46a48f57..57bdc95b 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;
+ -- destructure 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;