diff --git a/ChangeLog b/ChangeLog index cf9381a78..09fb82324 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-05-05 Alexey Shchepin + + * src/ejabberd_ctl.erl: Added command for listing all registered + users + + * src/ejabberd_ctl.erl: Bugfix, support for text-load and restore + (thanks to Leif Johansson) + 2004-05-04 Alexey Shchepin * src/web/ejabberd_web_admin.erl: Updated diff --git a/src/ejabberd_ctl.erl b/src/ejabberd_ctl.erl index d111dd758..36be47a04 100644 --- a/src/ejabberd_ctl.erl +++ b/src/ejabberd_ctl.erl @@ -72,7 +72,7 @@ process(Node, ["unregister", User]) -> process(Node, ["backup", Path]) -> case rpc:call(Node, mnesia, backup, [Path]) of - {atomic, ok} -> + ok -> ok; {error, Reason} -> io:format("Can't store backup in ~p on node ~p: ~p~n", @@ -82,6 +82,30 @@ process(Node, ["backup", Path]) -> [Path, Node, Reason]) end; +process(Node, ["dump", Path]) -> + case rpc:call(Node, mnesia, dump_to_textfile, [Path]) of + ok -> + ok; + {error, Reason} -> + io:format("Can't store dump in ~p on node ~p: ~p~n", + [Path, Node, Reason]); + {badrpc, Reason} -> + io:format("Can't store dump in ~p on node ~p: ~p~n", + [Path, Node, Reason]) + end; + +process(Node, ["load", Path]) -> + case rpc:call(Node, mnesia, load_textfile, [Path]) of + ok -> + ok; + {error, Reason} -> + io:format("Can't load dump in ~p on node ~p: ~p~n", + [Path, Node, Reason]); + {badrpc, Reason} -> + io:format("Can't load dump in ~p on node ~p: ~p~n", + [Path, Node, Reason]) + end; + process(Node, ["restore", Path]) -> case rpc:call(Node, mnesia, restore, [Path, [{default_op, keep_tables}]]) of @@ -107,24 +131,41 @@ process(Node, ["install-fallback", Path]) -> [Path, Node, Reason]) end; +process(Node, ["registered-users"]) -> + case rpc:call(Node, ejabberd_auth, dirty_get_registered_users, []) of + Users when is_list(Users) -> + NewLine = io_lib:format("~n", []), + SUsers = lists:sort(Users), + FUsers = lists:map(fun(U) -> [U, NewLine] end, SUsers), + io:format("~s", [FUsers]), + ok; + {ErrorTag, Reason} when (ErrorTag == error) or (ErrorTag == badrpc) -> + io:format("Can't get list of registered users on node ~p: ~p~n", + [Node, Reason]) + end; + process(_Node, _Args) -> print_usage(). print_usage() -> - io:format("Usage: ejabberdctl node command~n" - "~n" - "Available commands:~n" - " stop\t\t\t\tstop ejabberd~n" - " restart\t\t\trestart ejabberd~n" - " reopen-log\t\t\treopen log file~n" - " register user password\tregister a user~n" - " unregister user\t\tunregister a user~n" - " backup file\t\t\tstore a backup in file~n" - " restore file\t\t\trestore a backup from file~n" - " install-fallback file\t\tinstall a fallback from file~n" - "~n" - "Example:~n" - " ejabberdctl ejabberd@host restart~n" - ). + io:format( + "Usage: ejabberdctl node command~n" + "~n" + "Available commands:~n" + " stop\t\t\t\tstop ejabberd~n" + " restart\t\t\trestart ejabberd~n" + " reopen-log\t\t\treopen log file~n" + " register user password\tregister a user~n" + " unregister user\t\tunregister a user~n" + " backup file\t\t\tstore a database backup in file~n" + " restore file\t\t\trestore a database backup from file~n" + " install-fallback file\t\tinstall a database fallback from file~n" + " dump file\t\t\tdump a database in a text file~n" + " load file\t\t\trestore a database from a text file~n" + " registered-users\t\tlist all registered users~n" + "~n" + "Example:~n" + " ejabberdctl ejabberd@host restart~n" + ).