aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2007-09-06 07:45:01 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2007-09-06 07:45:01 +0000
commitd26b8a02519d73d8e81e0761a2a9cdadcf51db10 (patch)
treef07b70bdf73ce8db28f56bddc5c536e39d65dede /src
parent* src/mod_offline_odbc.erl: Bugfix (diff)
* src/mod_configure.erl: Virtual host support for mod_configure (Thanks to Badlop) (EJAB-285).
SVN Revision: 921
Diffstat (limited to 'src')
-rw-r--r--src/mod_configure.erl73
1 files changed, 22 insertions, 51 deletions
diff --git a/src/mod_configure.erl b/src/mod_configure.erl
index a09cea3c8..24f40b33c 100644
--- a/src/mod_configure.erl
+++ b/src/mod_configure.erl
@@ -141,8 +141,6 @@ get_local_identity(Acc, _From, _To, Node, Lang) ->
?INFO_COMMAND("Get Number of Registered Users", Lang);
?NS_ADMINL("get-online-users-num") ->
?INFO_COMMAND("Get Number of Online Users", Lang);
- ["config", "hostname"] ->
- ?INFO_COMMAND("Host Name", Lang);
["config", "acls"] ->
?INFO_COMMAND("Access Control Lists", Lang);
["config", "access"] ->
@@ -445,8 +443,7 @@ get_local_items(_Host, [], Server, Lang) ->
get_local_items(_Host, ["config"], Server, Lang) ->
{result,
- [?NODE("Host Name", "config/hostname"),
- ?NODE("Access Control Lists", "config/acls"),
+ [?NODE("Access Control Lists", "config/acls"),
?NODE("Access Rules", "config/access")
]};
@@ -505,8 +502,8 @@ get_local_items(Host, ["outgoing s2s"], _Server, Lang) ->
get_local_items(Host, ["outgoing s2s", To], _Server, Lang) ->
{result, get_outgoing_s2s(Host, Lang, To)};
-get_local_items(_Host, ["running nodes"], _Server, Lang) ->
- {result, get_running_nodes(Lang)};
+get_local_items(_Host, ["running nodes"], Server, Lang) ->
+ {result, get_running_nodes(Server, Lang)};
get_local_items(_Host, ["stopped nodes"], _Server, Lang) ->
{result, get_stopped_nodes(Lang)};
@@ -657,7 +654,7 @@ get_outgoing_s2s(Host, Lang, To) ->
end.
-get_running_nodes(_Lang) ->
+get_running_nodes(Server, _Lang) ->
case catch mnesia:system_info(running_db_nodes) of
{'EXIT', _Reason} ->
[];
@@ -666,7 +663,7 @@ get_running_nodes(_Lang) ->
fun(N) ->
S = atom_to_list(N),
{xmlelement, "item",
- [{"jid", ?MYNAME},
+ [{"jid", Server},
{"node", "running nodes/" ++ S},
{"name", S}],
[]}
@@ -1070,26 +1067,7 @@ get_form(_Host, ["running nodes", _ENode, "shutdown"], Lang) ->
[]}
]}]};
-get_form(_Host, ["config", "hostname"], Lang) ->
- {result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
- [?HFIELD(),
- {xmlelement, "title", [],
- [{xmlcdata,
- ?T(
- Lang, "Hostname Configuration")}]},
- {xmlelement, "instructions", [],
- [{xmlcdata,
- ?T(
- Lang, "Choose host name")}]},
- {xmlelement, "field", [{"type", "text-single"},
- {"label",
- ?T(Lang,
- "Host name")},
- {"var", "hostname"}],
- [{xmlelement, "value", [], [{xmlcdata, ?MYNAME}]}]}
- ]}]};
-
-get_form(_Host, ["config", "acls"], Lang) ->
+get_form(Host, ["config", "acls"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[?HFIELD(),
{xmlelement, "title", [],
@@ -1105,13 +1083,19 @@ get_form(_Host, ["config", "acls"], Lang) ->
{xmlelement, "value", [], [{xmlcdata, S}]}
end,
string:tokens(
- lists:flatten(io_lib:format("~p.",
- [ets:tab2list(acl)])),
+ lists:flatten(
+ io_lib:format(
+ "~p.",
+ [ets:select(acl,
+ [{{acl, {'$1', '$2'}, '$3'},
+ [{'==', '$2', Host}],
+ [{{acl, '$1', '$3'}}]}])
+ ])),
"\n"))
}
]}]};
-get_form(_Host, ["config", "access"], Lang) ->
+get_form(Host, ["config", "access"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[?HFIELD(),
{xmlelement, "title", [],
@@ -1131,9 +1115,9 @@ get_form(_Host, ["config", "access"], Lang) ->
io_lib:format(
"~p.",
[ets:select(config,
- [{{config, {access, '$1'}, '$2'},
- [],
- [{{access, '$1', '$2'}}]}])
+ [{{config, {access, '$1', '$2'}, '$3'},
+ [{'==', '$2', Host}],
+ [{{access, '$1', '$3'}}]}])
])),
"\n"))
}
@@ -1467,19 +1451,6 @@ set_form(From, Host, ["running nodes", ENode, "restart"], _Lang, XData) ->
set_form(From, Host, ["running nodes", ENode, "shutdown"], _Lang, XData) ->
stop_node(From, Host, ENode, stop, XData);
-set_form(_From, _Host, ["config", "hostname"], _Lang, XData) ->
- case lists:keysearch("hostname", 1, XData) of
- false ->
- {error, ?ERR_BAD_REQUEST};
- {value, {_, [""]}} ->
- {error, ?ERR_BAD_REQUEST};
- {value, {_, [NewName]}} ->
- ejabberd_config:add_global_option(hostname, NewName),
- {result, []};
- _ ->
- {error, ?ERR_BAD_REQUEST}
- end;
-
set_form(_From, Host, ["config", "acls"], _Lang, XData) ->
case lists:keysearch("acls", 1, XData) of
{value, {_, Strings}} ->
@@ -1506,14 +1477,14 @@ set_form(_From, Host, ["config", "acls"], _Lang, XData) ->
{error, ?ERR_BAD_REQUEST}
end;
-set_form(_From, _Host, ["config", "access"], _Lang, XData) ->
+set_form(_From, Host, ["config", "access"], _Lang, XData) ->
SetAccess =
fun(Rs) ->
mnesia:transaction(
fun() ->
Os = mnesia:select(config,
- [{{config, {access, '$1'}, '$2'},
- [],
+ [{{config, {access, '$1', '$2'}, '$3'},
+ [{'==', '$2', Host}],
['$_']}]),
lists:foreach(fun(O) ->
mnesia:delete_object(O)
@@ -1521,7 +1492,7 @@ set_form(_From, _Host, ["config", "access"], _Lang, XData) ->
lists:foreach(
fun({access, Name, Rules}) ->
mnesia:write({config,
- {access, Name},
+ {access, Name, Host},
Rules})
end, Rs)
end)