tools/ejabberd2prosody.lua
author Matthew Wild <mwild1@gmail.com>
Thu, 20 Aug 2009 16:30:03 +0100
changeset 1726 85518cb866dd
parent 1571 063d7be32fdd
child 1782 dd819e5bb0b8
permissions -rwxr-xr-x
ejabberd2prosody: More intelligent searching for erlparse library
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
760
90ce865eebd8 Update copyright notices for 2009
Matthew Wild <mwild1@gmail.com>
parents: 759
diff changeset
     3
-- Copyright (C) 2008-2009 Matthew Wild
90ce865eebd8 Update copyright notices for 2009
Matthew Wild <mwild1@gmail.com>
parents: 759
diff changeset
     4
-- Copyright (C) 2008-2009 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
1571
063d7be32fdd 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: 1571
diff changeset
    12
package.path = package.path ..";../?.lua";
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1571
diff changeset
    13
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1571
diff changeset
    14
if arg[0]:match("^./") then
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1571
diff changeset
    15
	package.path = package.path .. ";"..arg[0]:gsub("/ejabberd2prosody.lua$", "/?.lua");
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1571
diff changeset
    16
end
85518cb866dd ejabberd2prosody: More intelligent searching for erlparse library
Matthew Wild <mwild1@gmail.com>
parents: 1571
diff changeset
    17
1571
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    18
require "erlparse";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    19
547
265c4b8f0a8a Changed the ejabberd import script to use util.serialization
Waqas Hussain <waqas20@gmail.com>
parents: 519
diff changeset
    20
local serialize = require "util.serialization".serialize;
1571
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    21
local st = require "util.stanza";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    22
package.loaded["util.logger"] = {init = function() return function() end; end}
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    23
local dm = require "util.datamanager"
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    24
dm.set_data_path("data");
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    25
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    26
function build_stanza(tuple, stanza)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    27
	if tuple[1] == "xmlelement" then
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    28
		local name = tuple[2];
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    29
		local attr = {};
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    30
		for _, a in ipairs(tuple[3]) do attr[a[1]] = a[2]; end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    31
		local up;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    32
		if stanza then stanza:tag(name, attr); up = true; else stanza = st.stanza(name, attr); end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    33
		for _, a in ipairs(tuple[4]) do build_stanza(a, stanza); end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    34
		if up then stanza:up(); else return stanza end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    35
	elseif tuple[1] == "xmlcdata" then
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    36
		stanza:text(tuple[2]);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    37
	else
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    38
		error("unknown element type: "..serialize(tuple));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    39
	end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    40
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    41
function build_time(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    42
	local Megaseconds,Seconds,Microseconds = unpack(tuple);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    43
	return Megaseconds * 1000000 + Seconds;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    44
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    45
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    46
function vcard(node, host, stanza)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    47
	local ret, err = dm.store(node, host, "vcard", st.preserialize(stanza));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    48
	print("["..(err or "success").."] vCard: "..node.."@"..host);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    49
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    50
function password(node, host, password)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    51
	local ret, err = dm.store(node, host, "accounts", {password = password});
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    52
	print("["..(err or "success").."] accounts: "..node.."@"..host.." = "..password);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    53
end
753
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    54
function roster(node, host, jid, item)
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    55
	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
    56
	roster[jid] = item;
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    57
	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
    58
	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
    59
end
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    60
function roster_pending(node, host, jid)
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    61
	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
    62
	roster.pending = roster.pending or {};
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    63
	roster.pending[jid] = true;
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    64
	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
    65
	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
    66
end
1571
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    67
function private_storage(node, host, xmlns, stanza)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    68
	local private = dm.load(node, host, "private") or {};
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    69
	private[stanza.name..":"..xmlns] = st.preserialize(stanza);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    70
	local ret, err = dm.store(node, host, "private", private);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    71
	print("["..(err or "success").."] private: " ..node.."@"..host.." - "..xmlns);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    72
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    73
function offline_msg(node, host, t, stanza)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    74
	stanza.attr.stamp = os.date("!%Y-%m-%dT%H:%M:%SZ", t);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    75
	stanza.attr.stamp_legacy = os.date("!%Y%m%dT%H:%M:%S", t);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    76
	local ret, err = dm.list_append(node, host, "offline", st.preserialize(stanza));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    77
	print("["..(err or "success").."] offline: " ..node.."@"..host.." - "..os.date("!%Y-%m-%dT%H:%M:%SZ", t));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    78
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    79
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    80
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    81
local filters = {
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    82
	passwd = function(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    83
		password(tuple[2][1], tuple[2][2], tuple[3]);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    84
	end;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    85
	vcard = function(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    86
		vcard(tuple[2][1], tuple[2][2], build_stanza(tuple[3]));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    87
	end;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    88
	roster = function(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    89
		local node = tuple[3][1]; local host = tuple[3][2];
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    90
		local contact = (type(tuple[4][1]) == "table") and tuple[4][2] or tuple[4][1].."@"..tuple[4][2];
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    91
		local name = tuple[5]; local subscription = tuple[6];
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    92
		local ask = tuple[7]; local groups = tuple[8];
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    93
		if type(name) ~= type("") then name = nil; end
753
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    94
		if ask == "none" then ask = nil; elseif ask == "out" then ask = "subscribe" elseif ask == "in" then
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    95
			roster_pending(node, host, contact);
3a0f9cf38f99 tools/ejabberd2prosody: Support for pending-in roster items
Waqas Hussain <waqas20@gmail.com>
parents: 643
diff changeset
    96
			return;
1571
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    97
		else error(ask) end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    98
		if subscription ~= "both" and subscription ~= "from" and subscription ~= "to" and subscription ~= "none" then error(subscription) end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
    99
		local item = {name = name, ask = ask, subscription = subscription, groups = {}};
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   100
		for _, g in ipairs(groups) do item.groups[g] = true; end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   101
		roster(node, host, contact, item);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   102
	end;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   103
	private_storage = function(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   104
		private_storage(tuple[2][1], tuple[2][2], tuple[2][3], build_stanza(tuple[3]));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   105
	end;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   106
	offline_msg = function(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   107
		offline_msg(tuple[2][1], tuple[2][2], build_time(tuple[3]), build_stanza(tuple[7]));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   108
	end;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   109
	config = function(tuple)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   110
		if tuple[2] == "hosts" then
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   111
			local output = io.output(); io.output("prosody.cfg.lua");
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   112
			io.write("-- Configuration imported from ejabberd --\n");
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   113
			io.write([[Host "*"
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   114
	modules_enabled = {
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   115
		"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   116
		"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   117
		"roster"; -- Allow users to have a roster. Recommended ;)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   118
		"register"; -- Allow users to register on this server using a client
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   119
		"tls"; -- Add support for secure TLS on c2s/s2s connections
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   120
		"vcard"; -- Allow users to set vCards
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   121
		"private"; -- Private XML storage (for room bookmarks, etc.)
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   122
		"version"; -- Replies to server version requests
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   123
		"dialback"; -- s2s dialback support
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   124
		"uptime";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   125
		"disco";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   126
		"time";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   127
		"ping";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   128
		--"selftests";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   129
	};
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   130
]]);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   131
			for _, h in ipairs(tuple[3]) do
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   132
				io.write("Host \"" .. h .. "\"\n");
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   133
			end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   134
			io.output(output);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   135
			print("prosody.cfg.lua created");
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   136
		end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   137
	end;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   138
};
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   139
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   140
local arg = ...;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   141
local help = "/? -? ? /h -h /help -help --help";
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   142
if not arg or help:find(arg, 1, true) then
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   143
	print([[ejabberd db dump importer for Prosody
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   144
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   145
  Usage: ejabberd2prosody.lua filename.txt
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   146
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   147
The file can be generated from ejabberd using:
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   148
  sudo ./bin/ejabberdctl dump filename.txt
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   149
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   150
Note: The path of ejabberdctl depends on your ejabberd installation, and ejabberd needs to be running for ejabberdctl to work.]]);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   151
	os.exit(1);
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   152
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   153
local count = 0;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   154
local t = {};
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   155
for item in erlparse.parseFile(arg) do
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   156
	count = count + 1;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   157
	local name = item[1];
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   158
	t[name] = (t[name] or 0) + 1;
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   159
	--print(count, serialize(item));
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   160
	if filters[name] then filters[name](item); end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   161
end
063d7be32fdd ejabberd2prosody, erlparse.lua: Convert from Windows line endings (thanks teo)
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
   162
--print(serialize(t));