Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2012-11-26 16:22:29 +0400
committerBadlop <badlop@process-one.net>2012-11-26 16:22:29 +0400
commit2c2692668923137caaa61a9a095152e8cc54f6f1 (patch)
tree40d97d21c77c2b42f6b8014c07cfcdc759b55076 /src
parent9208f4dd50f31e8e17c439b89f180a03794ab7f5 (diff)
Copy, fix and document export2odbc command from mod_admin_extra.erl
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_admin.erl23
-rw-r--r--src/ejd2odbc.erl8
2 files changed, 30 insertions, 1 deletions
diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl
index 40c8b8dca..e729e4ce0 100644
--- a/src/ejabberd_admin.erl
+++ b/src/ejabberd_admin.erl
@@ -41,6 +41,7 @@
%% Purge DB
delete_expired_messages/0, delete_old_messages/1,
%% Mnesia
+ export2odbc/2,
set_master/1,
backup_mnesia/1, restore_mnesia/1,
dump_mnesia/1, dump_table/2, load_mnesia/1,
@@ -165,6 +166,11 @@ commands() ->
module = mod_pubsub, function = rename_default_nodeplugin,
args = [], result = {res, rescode}},
+ #ejabberd_commands{name = export2odbc, tags = [mnesia],
+ desc = "Export virtual host information from Mnesia tables to SQL files",
+ module = ?MODULE, function = export2odbc,
+ args = [{host, string}, {directory, string}],
+ result = {res, rescode}},
#ejabberd_commands{name = set_master, tags = [mnesia],
desc = "Set master node of the clustered Mnesia tables",
longdesc = "If you provide as nodename \"self\", this "
@@ -388,6 +394,23 @@ delete_old_messages(Days) ->
%%% Mnesia management
%%%
+export2odbc(Host, Directory) ->
+ Tables = [{export_last, last},
+ {export_offline, offline},
+ {export_private_storage, private_storage},
+ {export_roster, roster},
+ {export_vcard, vcard},
+ {export_vcard_search, vcard_search},
+ {export_passwd, passwd}],
+ Export = fun({TableFun, Table}) ->
+ Filename = filename:join([Directory, atom_to_list(Table)++".txt"]),
+ io:format("Trying to export Mnesia table '~p' on Host '~s' to file '~s'~n", [Table, Host, Filename]),
+ Res = (catch ejd2odbc:TableFun(Host, Filename)),
+ io:format(" Result: ~p~n", [Res])
+ end,
+ lists:foreach(Export, Tables),
+ ok.
+
set_master("self") ->
set_master(node());
set_master(NodeString) when is_list(NodeString) ->
diff --git a/src/ejd2odbc.erl b/src/ejd2odbc.erl
index 7d96aac34..06b53be40 100644
--- a/src/ejd2odbc.erl
+++ b/src/ejd2odbc.erl
@@ -92,7 +92,13 @@
export_passwd(Server, Output) ->
export_common(
Server, passwd, Output,
- fun(Host, {passwd, {LUser, LServer}, Password} = _R)
+ fun(Host, {passwd, {LUser, LServer}, {scram, _, _, _, _}} = _R) ->
+ ?INFO_MSG("You are trying to export the authentication "
+ "information of the account ~s@~s, but his password "
+ "is stored as SCRAM, and ejabberd ODBC authentication "
+ "doesn't support SCRAM.", [LUser, LServer]),
+ [];
+ (Host, {passwd, {LUser, LServer}, Password} = _R)
when LServer == Host ->
Username = ejabberd_odbc:escape(LUser),
Pass = ejabberd_odbc:escape(Password),