Annotate

tools/ejabberd2prosody.lua @ 5524:e9090966c803

util.prosodyctl: Initialize storagemanager on the host before initializing usermanager. This fixes brokenness when the auth provider opens the store on load (as they all do since eeea0eb2602a) (thanks nulani)
author Matthew Wild <mwild1@gmail.com>
date Sat, 27 Apr 2013 13:11:03 +0100
parent 5310:bc60cad47397
child 5696:9fba74a28e0c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
485
f8456f0da769 Make ejabberd2prosody.lua a little more cross-platform :)
Matthew Wild <mwild1@gmail.com>
parents: 484
diff changeset
1 #!/usr/bin/env lua
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 1126
diff changeset
2 -- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2693
diff changeset
3 -- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2693
diff changeset
4 -- Copyright (C) 2008-2010 Waqas Hussain
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 489
diff changeset
5 --
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 753
diff changeset
6 -- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 753
diff changeset
7 -- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 489
diff changeset
8 --
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 489
diff changeset
9
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 489
diff changeset
10
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
11
1726
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1567
diff changeset
12 package.path = package.path ..";../?.lua";
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1567
diff changeset
13
5310
bc60cad47397 ejabberd2prosody.lua: Don't make assumptions about file name.
Kim Alvefur <zash@zash.se>
parents: 5309
diff changeset
14 if arg[0]:match("[/\\]") then
bc60cad47397 ejabberd2prosody.lua: Don't make assumptions about file name.
Kim Alvefur <zash@zash.se>
parents: 5309
diff changeset
15 package.path = package.path .. ";"..arg[0]:gsub("[^/\\]*$", "?.lua");
1726
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1567
diff changeset
16 end
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1567
diff changeset
17
5023
dcc8e789df36 mod_admin_telnet, prosody, prosodyctl, ejabberd2prosody: Don't depend on modules setting globals
Florian Zeitz <florob@babelmonkeys.de>
parents: 4380
diff changeset
18 local erlparse = require "erlparse";
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
19
2943
9236a7856688 tools/ejabberd2prosody: Create prosody singleton so datamanager can detect the platform (set no platform to use lfs, pposix isn't necessary here)
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
20 prosody = {};
9236a7856688 tools/ejabberd2prosody: Create prosody singleton so datamanager can detect the platform (set no platform to use lfs, pposix isn't necessary here)
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
21
5309
2da869d95271 ejabberd2prosody.lua: Replace util.logger with a dummy before requiring util.serialization
Kim Alvefur <zash@zash.se>
parents: 5023
diff changeset
22 package.loaded["util.logger"] = {init = function() return function() end; end}
547
265c4b8f0a8a Changed the ejabberd import script to use util.serialization
Waqas Hussain <waqas20@gmail.com>
parents: 519
diff changeset
23 local serialize = require "util.serialization".serialize;
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
24 local st = require "util.stanza";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
25 local dm = require "util.datamanager"
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
26 dm.set_data_path("data");
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
27
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
28 function build_stanza(tuple, stanza)
4380
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
29 assert(type(tuple) == "table", "XML node is of unexpected type: "..type(tuple));
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
30 if tuple[1] == "xmlelement" then
4380
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
31 assert(type(tuple[2]) == "string", "element name has type: "..type(tuple[2]));
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
32 assert(type(tuple[3]) == "table", "element attribute array has type: "..type(tuple[3]));
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
33 assert(type(tuple[4]) == "table", "element children array has type: "..type(tuple[4]));
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
34 local name = tuple[2];
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
35 local attr = {};
4380
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
36 for _, a in ipairs(tuple[3]) do
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
37 if type(a[1]) == "string" and type(a[2]) == "string" then attr[a[1]] = a[2]; end
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
38 end
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
39 local up;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
40 if stanza then stanza:tag(name, attr); up = true; else stanza = st.stanza(name, attr); end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
41 for _, a in ipairs(tuple[4]) do build_stanza(a, stanza); end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
42 if up then stanza:up(); else return stanza end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
43 elseif tuple[1] == "xmlcdata" then
4380
9f1c61805817 ejabberd2prosody: Added a lot more type checks to ensure XML data has proper data types. Ignore attributes of invalid types. Fixes the cause of issue#261.
Waqas Hussain <waqas20@gmail.com>
parents: 4360
diff changeset
44 assert(type(tuple[2]) == "string", "XML CDATA has unexpected type: "..type(tuple[2]));
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
45 stanza:text(tuple[2]);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
46 else
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
47 error("unknown element type: "..serialize(tuple));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
48 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
49 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
50 function build_time(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
51 local Megaseconds,Seconds,Microseconds = unpack(tuple);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
52 return Megaseconds * 1000000 + Seconds;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
53 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
54
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
55 function vcard(node, host, stanza)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
56 local ret, err = dm.store(node, host, "vcard", st.preserialize(stanza));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
57 print("["..(err or "success").."] vCard: "..node.."@"..host);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
58 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
59 function password(node, host, password)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
60 local ret, err = dm.store(node, host, "accounts", {password = password});
2693
e60494fbf23f ejabberd2prosody: Don't print passwords of imported accounts
Matthew Wild <mwild1@gmail.com>
parents: 1784
diff changeset
61 print("["..(err or "success").."] accounts: "..node.."@"..host);
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
62 end
753
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
63 function roster(node, host, jid, item)
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
64 local roster = dm.load(node, host, "roster") or {};
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
65 roster[jid] = item;
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
66 local ret, err = dm.store(node, host, "roster", roster);
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
67 print("["..(err or "success").."] roster: " ..node.."@"..host.." - "..jid);
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
68 end
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
69 function roster_pending(node, host, jid)
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
70 local roster = dm.load(node, host, "roster") or {};
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
71 roster.pending = roster.pending or {};
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
72 roster.pending[jid] = true;
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
73 local ret, err = dm.store(node, host, "roster", roster);
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
74 print("["..(err or "success").."] roster: " ..node.."@"..host.." - "..jid);
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
75 end
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
76 function private_storage(node, host, xmlns, stanza)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
77 local private = dm.load(node, host, "private") or {};
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
78 private[stanza.name..":"..xmlns] = st.preserialize(stanza);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
79 local ret, err = dm.store(node, host, "private", private);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
80 print("["..(err or "success").."] private: " ..node.."@"..host.." - "..xmlns);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
81 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
82 function offline_msg(node, host, t, stanza)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
83 stanza.attr.stamp = os.date("!%Y-%m-%dT%H:%M:%SZ", t);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
84 stanza.attr.stamp_legacy = os.date("!%Y%m%dT%H:%M:%S", t);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
85 local ret, err = dm.list_append(node, host, "offline", st.preserialize(stanza));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
86 print("["..(err or "success").."] offline: " ..node.."@"..host.." - "..os.date("!%Y-%m-%dT%H:%M:%SZ", t));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
87 end
4360
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
88 function privacy(node, host, default, lists)
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
89 local privacy = { lists = {} };
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
90 local count = 0;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
91 if default then privacy.default = default; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
92 for _, inlist in ipairs(lists) do
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
93 local name, items = inlist[1], inlist[2];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
94 local list = { name = name; items = {}; };
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
95 local orders = {};
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
96 for _, item in pairs(items) do
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
97 repeat
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
98 if item[1] ~= "listitem" then print("[error] privacy: unhandled item: "..tostring(item[1])); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
99 local _type, value = item[2], item[3];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
100 if _type == "jid" then
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
101 if type(value) ~= "table" then print("[error] privacy: jid value is not valid: "..tostring(value)); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
102 local _node, _host, _resource = value[1], value[2], value[3];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
103 if (type(_node) == "table") then _node = nil; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
104 if (type(_host) == "table") then _host = nil; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
105 if (type(_resource) == "table") then _resource = nil; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
106 value = (_node and _node.."@".._host or _host)..(_resource and "/".._resource or "");
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
107 elseif _type == "none" then
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
108 _type = nil;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
109 value = nil;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
110 elseif _type == "group" then
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
111 if type(value) ~= "string" then print("[error] privacy: group value is not string: "..tostring(value)); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
112 elseif _type == "subscription" then
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
113 if value~="both" and value~="from" and value~="to" and value~="none" then
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
114 print("[error] privacy: subscription value is invalid: "..tostring(value)); break;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
115 end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
116 else print("[error] privacy: invalid item type: "..tostring(_type)); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
117 local action = item[4];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
118 if action ~= "allow" and action ~= "deny" then print("[error] privacy: unhandled action: "..tostring(action)); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
119 local order = item[5];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
120 if type(order) ~= "number" or order<0 then print("[error] privacy: order is not numeric: "..tostring(order)); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
121 if orders[order] then print("[error] privacy: duplicate order value: "..tostring(order)); break; end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
122 orders[order] = true;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
123 local match_all = item[6];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
124 local match_iq = item[7];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
125 local match_message = item[8];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
126 local match_presence_in = item[9];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
127 local match_presence_out = item[10];
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
128 list.items[#list.items+1] = {
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
129 type = _type;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
130 value = value;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
131 action = action;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
132 order = order;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
133 message = match_message == "true";
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
134 iq = match_iq == "true";
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
135 ["presence-in"] = match_presence_in == "true";
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
136 ["presence-out"] = match_presence_out == "true";
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
137 };
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
138 until true;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
139 end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
140 table.sort(list.items, function(a, b) return a.order < b.order; end);
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
141 if privacy.lists[list.name] then print("[warn] duplicate privacy list: "..tostring(list.name)); end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
142 privacy.lists[list.name] = list;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
143 count = count + 1;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
144 end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
145 if default and not privacy.lists[default] then
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
146 if default == "none" then privacy.default = nil;
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
147 else print("[warn] default privacy list doesn't exist: "..tostring(default)); end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
148 end
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
149 local ret, err = dm.store(node, host, "privacy", privacy);
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
150 print("["..(err or "success").."] privacy: " ..node.."@"..host.." - "..count.." list(s)");
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
151 end
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
152
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
153
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
154 local filters = {
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
155 passwd = function(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
156 password(tuple[2][1], tuple[2][2], tuple[3]);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
157 end;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
158 vcard = function(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
159 vcard(tuple[2][1], tuple[2][2], build_stanza(tuple[3]));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
160 end;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
161 roster = function(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
162 local node = tuple[3][1]; local host = tuple[3][2];
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
163 local contact = (type(tuple[4][1]) == "table") and tuple[4][2] or tuple[4][1].."@"..tuple[4][2];
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
164 local name = tuple[5]; local subscription = tuple[6];
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
165 local ask = tuple[7]; local groups = tuple[8];
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
166 if type(name) ~= type("") then name = nil; end
1782
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
167 if ask == "none" then
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
168 ask = nil;
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
169 elseif ask == "out" then
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
170 ask = "subscribe"
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
171 elseif ask == "in" then
753
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
172 roster_pending(node, host, contact);
1782
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
173 ask = nil;
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
174 elseif ask == "both" then
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
175 roster_pending(node, host, contact);
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
176 ask = "subscribe";
dd819e5bb0b8 ejabberd2prosody: Added support for ask='both' in subscriptions.
Waqas Hussain <waqas20@gmail.com>
parents: 1726
diff changeset
177 else error("Unknown ask type: "..ask); end
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
178 if subscription ~= "both" and subscription ~= "from" and subscription ~= "to" and subscription ~= "none" then error(subscription) end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
179 local item = {name = name, ask = ask, subscription = subscription, groups = {}};
1784
b2bfd3b93da6 ejabberd2prosody: Fixed a problem with null roster groups.
Waqas Hussain <waqas20@gmail.com>
parents: 1782
diff changeset
180 for _, g in ipairs(groups) do
b2bfd3b93da6 ejabberd2prosody: Fixed a problem with null roster groups.
Waqas Hussain <waqas20@gmail.com>
parents: 1782
diff changeset
181 if type(g) == "string" then
b2bfd3b93da6 ejabberd2prosody: Fixed a problem with null roster groups.
Waqas Hussain <waqas20@gmail.com>
parents: 1782
diff changeset
182 item.groups[g] = true;
b2bfd3b93da6 ejabberd2prosody: Fixed a problem with null roster groups.
Waqas Hussain <waqas20@gmail.com>
parents: 1782
diff changeset
183 end
b2bfd3b93da6 ejabberd2prosody: Fixed a problem with null roster groups.
Waqas Hussain <waqas20@gmail.com>
parents: 1782
diff changeset
184 end
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
185 roster(node, host, contact, item);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
186 end;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
187 private_storage = function(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
188 private_storage(tuple[2][1], tuple[2][2], tuple[2][3], build_stanza(tuple[3]));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
189 end;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
190 offline_msg = function(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
191 offline_msg(tuple[2][1], tuple[2][2], build_time(tuple[3]), build_stanza(tuple[7]));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
192 end;
4360
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
193 privacy = function(tuple)
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
194 privacy(tuple[2][1], tuple[2][2], tuple[3], tuple[4]);
a993a4a2ea0a ejabberd2prosody: Add support for privacy lists.
Waqas Hussain <waqas20@gmail.com>
parents: 2943
diff changeset
195 end;
1567
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
196 config = function(tuple)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
197 if tuple[2] == "hosts" then
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
198 local output = io.output(); io.output("prosody.cfg.lua");
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
199 io.write("-- Configuration imported from ejabberd --\n");
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
200 io.write([[Host "*"
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
201 modules_enabled = {
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
202 "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
203 "legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
204 "roster"; -- Allow users to have a roster. Recommended ;)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
205 "register"; -- Allow users to register on this server using a client
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
206 "tls"; -- Add support for secure TLS on c2s/s2s connections
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
207 "vcard"; -- Allow users to set vCards
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
208 "private"; -- Private XML storage (for room bookmarks, etc.)
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
209 "version"; -- Replies to server version requests
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
210 "dialback"; -- s2s dialback support
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
211 "uptime";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
212 "disco";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
213 "time";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
214 "ping";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
215 --"selftests";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
216 };
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
217 ]]);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
218 for _, h in ipairs(tuple[3]) do
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
219 io.write("Host \"" .. h .. "\"\n");
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
220 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
221 io.output(output);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
222 print("prosody.cfg.lua created");
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
223 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
224 end;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
225 };
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
226
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
227 local arg = ...;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
228 local help = "/? -? ? /h -h /help -help --help";
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
229 if not arg or help:find(arg, 1, true) then
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
230 print([[ejabberd db dump importer for Prosody
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
231
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
232 Usage: ejabberd2prosody.lua filename.txt
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
233
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
234 The file can be generated from ejabberd using:
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
235 sudo ./bin/ejabberdctl dump filename.txt
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
236
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
237 Note: The path of ejabberdctl depends on your ejabberd installation, and ejabberd needs to be running for ejabberdctl to work.]]);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
238 os.exit(1);
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
239 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
240 local count = 0;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
241 local t = {};
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
242 for item in erlparse.parseFile(arg) do
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
243 count = count + 1;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
244 local name = item[1];
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
245 t[name] = (t[name] or 0) + 1;
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
246 --print(count, serialize(item));
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
247 if filters[name] then filters[name](item); end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
248 end
e052a3bdb8b5 ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
249 --print(serialize(t));