summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ChangeLog24
-rw-r--r--src/ejabberd_s2s_out.erl31
-rw-r--r--src/mod_configure.erl68
-rw-r--r--src/mod_irc/mod_irc.erl2
-rw-r--r--src/mod_muc/mod_muc.erl2
-rw-r--r--src/mod_muc/mod_muc_room.erl39
-rw-r--r--src/mod_pubsub/mod_pubsub.erl2
-rw-r--r--src/mod_vcard.erl4
-rw-r--r--src/mod_vcard_ldap.erl4
-rw-r--r--src/mod_vcard_odbc.erl4
-rw-r--r--src/msgs/es.msg50
-rw-r--r--src/web/ejabberd_web.erl6
-rw-r--r--src/web/ejabberd_web_admin.erl4
13 files changed, 166 insertions, 74 deletions
diff --git a/ChangeLog b/ChangeLog
index eca11431..845bae5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2006-02-05 Alexey Shchepin <alexey@sevcom.net>
+
+ * src/mod_muc/mod_muc_room.erl: Kick non-members when room
+ reconfigured to be member-only or when membership is revoked in
+ member-only room, allowed "true" and "false" in x:data forms
+ (thanks to Sergei Golovan)
+
+ * src/mod_configure.erl: Added "Host" parameter to get_form and
+ set_form functions (thanks to Sergei Golovan)
+
+ * src/ejabberd_s2s_out.erl: Bugfix
+
+ * src/msgs/es.msg: Updated (thanks to Badlop)
+
+ * src/web/ejabberd_web.erl: Bugfix (thanks to Badlop)
+
+ * src/mod_irc/mod_irc.erl: Updated copyright dates
+ * src/mod_muc/mod_muc.erl: Likewise
+ * src/mod_pubsub/mod_pubsub.erl: Likewise
+ * src/mod_vcard.erl: Likewise
+ * src/mod_vcard_ldap.erl: Likewise
+ * src/mod_vcard_odbc.erl: Likewise
+ * src/web/ejabberd_web_admin.erl: Likewise
+
2006-02-03 Alexey Shchepin <alexey@sevcom.net>
* src/ejabberd_auth_odbc.erl: Added ejabberd_odbc_sup to ejabberd
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 13ffb81a..185e517c 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -25,6 +25,7 @@
wait_for_features/2,
wait_for_auth_result/2,
wait_for_starttls_proceed/2,
+ reopen_socket/2,
stream_established/2,
handle_event/3,
handle_sync_event/4,
@@ -209,10 +210,9 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) ->
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
StateData#state.server}]),
% TODO: clear message queue
- (StateData#state.sockmod):close(StateData#state.socket),
- gen_fsm:send_event(self(), init),
- {next_state, open_socket, StateData#state{socket = undefined,
- use_v10 = false}};
+ ejabberd_receiver:close(StateData#state.receiver),
+ {next_state, reopen_socket, StateData#state{socket = undefined,
+ use_v10 = false}};
_ ->
send_text(StateData, ?INVALID_NAMESPACE_ERR),
{stop, normal, StateData}
@@ -351,9 +351,8 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
StartTLSRequired and (not StateData#state.tls) ->
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
StateData#state.server}]),
- (StateData#state.sockmod):close(StateData#state.socket),
- gen_fsm:send_event(self(), init),
- {next_state, open_socket,
+ ejabberd_receiver:close(StateData#state.receiver),
+ {next_state, reopen_socket,
StateData#state{socket = undefined,
use_v10 = false}};
true ->
@@ -409,9 +408,8 @@ wait_for_auth_result({xmlstreamelement, El}, StateData) ->
?NS_SASL ->
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
StateData#state.server}]),
- (StateData#state.sockmod):close(StateData#state.socket),
- gen_fsm:send_event(self(), init),
- {next_state, open_socket,
+ ejabberd_receiver:close(StateData#state.receiver),
+ {next_state, reopen_socket,
StateData#state{socket = undefined}};
_ ->
send_text(StateData,
@@ -498,6 +496,19 @@ wait_for_starttls_proceed(closed, StateData) ->
{stop, normal, StateData}.
+reopen_socket({xmlstreamelement, El}, StateData) ->
+ {next_state, reopen_socket, StateData};
+reopen_socket({xmlstreamend, Name}, StateData) ->
+ {next_state, reopen_socket, StateData};
+reopen_socket({xmlstreamerror, _}, StateData) ->
+ {next_state, reopen_socket, StateData};
+reopen_socket(timeout, StateData) ->
+ {stop, normal, StateData};
+reopen_socket(closed, StateData) ->
+ gen_fsm:send_event(self(), init),
+ {next_state, open_socket, StateData}.
+
+
stream_established({xmlstreamelement, El}, StateData) ->
?INFO_MSG("stream established", []),
case is_verify_res(El) of
diff --git a/src/mod_configure.erl b/src/mod_configure.erl
index 0a21e02b..fe8bfd65 100644
--- a/src/mod_configure.erl
+++ b/src/mod_configure.erl
@@ -645,7 +645,7 @@ adhoc_local_commands(Acc, From, #jid{lserver = LServer} = To,
Acc
end.
-adhoc_local_commands(_From, _To,
+adhoc_local_commands(_From, #jid{lserver = LServer} = _To,
#adhoc_request{lang = Lang,
node = Node,
sessionid = SessionID,
@@ -665,7 +665,7 @@ adhoc_local_commands(_From, _To,
#adhoc_response{status = canceled});
XData == false, ActionIsExecute ->
%% User requests form
- case get_form(LNode, Lang) of
+ case get_form(LServer, LNode, Lang) of
{result, Form} ->
adhoc:produce_response(
Request,
@@ -680,7 +680,7 @@ adhoc_local_commands(_From, _To,
invalid ->
{error, ?ERR_BAD_REQUEST};
Fields ->
- case set_form(LNode, Lang, Fields) of
+ case set_form(LServer, LNode, Lang, Fields) of
{result, _Res} ->
adhoc:produce_response(
#adhoc_response{lang = Lang,
@@ -730,7 +730,7 @@ adhoc_local_commands(_From, _To,
-get_form(["running nodes", ENode, "DB"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "DB"], Lang) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -766,12 +766,12 @@ get_form(["running nodes", ENode, "DB"], Lang) ->
end
end;
-get_form(["running nodes", ENode, "modules", "stop"], Lang) ->
+get_form(Host, ["running nodes", ENode, "modules", "stop"], Lang) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
Node ->
- case rpc:call(Node, gen_mod, loaded_modules, []) of
+ case rpc:call(Node, gen_mod, loaded_modules, [Host]) of
{badrpc, _Reason} ->
{error, ?ERR_INTERNAL_SERVER_ERROR};
Modules ->
@@ -793,7 +793,7 @@ get_form(["running nodes", ENode, "modules", "stop"], Lang) ->
end
end;
-get_form(["running nodes", ENode, "modules", "start"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "modules", "start"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -812,7 +812,7 @@ get_form(["running nodes", ENode, "modules", "start"], Lang) ->
}
]}]};
-get_form(["running nodes", ENode, "backup", "backup"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "backup", "backup"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -831,7 +831,7 @@ get_form(["running nodes", ENode, "backup", "backup"], Lang) ->
}
]}]};
-get_form(["running nodes", ENode, "backup", "restore"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "backup", "restore"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -850,7 +850,7 @@ get_form(["running nodes", ENode, "backup", "restore"], Lang) ->
}
]}]};
-get_form(["running nodes", ENode, "backup", "textfile"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "backup", "textfile"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -869,7 +869,7 @@ get_form(["running nodes", ENode, "backup", "textfile"], Lang) ->
}
]}]};
-get_form(["running nodes", ENode, "import", "file"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "import", "file"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -888,7 +888,7 @@ get_form(["running nodes", ENode, "import", "file"], Lang) ->
}
]}]};
-get_form(["running nodes", ENode, "import", "dir"], Lang) ->
+get_form(_Host, ["running nodes", ENode, "import", "dir"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -907,7 +907,7 @@ get_form(["running nodes", ENode, "import", "dir"], Lang) ->
}
]}]};
-get_form(["config", "hostname"], Lang) ->
+get_form(_Host, ["config", "hostname"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -925,7 +925,7 @@ get_form(["config", "hostname"], Lang) ->
[{xmlelement, "value", [], [{xmlcdata, ?MYNAME}]}]}
]}]};
-get_form(["config", "acls"], Lang) ->
+get_form(_Host, ["config", "acls"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -950,7 +950,7 @@ get_form(["config", "acls"], Lang) ->
}
]}]};
-get_form(["config", "access"], Lang) ->
+get_form(_Host, ["config", "access"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -981,7 +981,7 @@ get_form(["config", "access"], Lang) ->
}
]}]};
-get_form(["config", "remusers"], Lang) ->
+get_form(Host, ["config", "remusers"], Lang) ->
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
[{xmlelement, "title", [],
[{xmlcdata,
@@ -991,7 +991,7 @@ get_form(["config", "remusers"], Lang) ->
[{xmlcdata,
translate:translate(
Lang, "Choose users to remove")}]}] ++
- case catch ejabberd_auth:dirty_get_registered_users() of
+ case catch ejabberd_auth:get_vh_registered_users(Host) of
{'EXIT', _Reason} ->
[];
Users ->
@@ -1001,12 +1001,12 @@ get_form(["config", "remusers"], Lang) ->
end
}]};
-get_form(_, _Lang) ->
+get_form(_Host, _, _Lang) ->
{error, ?ERR_SERVICE_UNAVAILABLE}.
-set_form(["running nodes", ENode, "DB"], _Lang, XData) ->
+set_form(_Host, ["running nodes", ENode, "DB"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1040,7 +1040,7 @@ set_form(["running nodes", ENode, "DB"], _Lang, XData) ->
{result, []}
end;
-set_form(["running nodes", ENode, "modules", "stop"], _Lang, XData) ->
+set_form(Host, ["running nodes", ENode, "modules", "stop"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1050,7 +1050,7 @@ set_form(["running nodes", ENode, "modules", "stop"], _Lang, XData) ->
case Vals of
["1"] ->
Module = list_to_atom(Var),
- rpc:call(Node, gen_mod, stop_module, [Module]);
+ rpc:call(Node, gen_mod, stop_module, [Host, Module]);
_ ->
ok
end
@@ -1058,7 +1058,7 @@ set_form(["running nodes", ENode, "modules", "stop"], _Lang, XData) ->
{result, []}
end;
-set_form(["running nodes", ENode, "modules", "start"], _Lang, XData) ->
+set_form(Host, ["running nodes", ENode, "modules", "start"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1079,7 +1079,7 @@ set_form(["running nodes", ENode, "modules", "start"], _Lang, XData) ->
rpc:call(Node,
gen_mod,
start_module,
- [Module, Args])
+ [Host, Module, Args])
end, Modules),
{result, []};
_ ->
@@ -1094,7 +1094,7 @@ set_form(["running nodes", ENode, "modules", "start"], _Lang, XData) ->
end;
-set_form(["running nodes", ENode, "backup", "backup"], _Lang, XData) ->
+set_form(_Host, ["running nodes", ENode, "backup", "backup"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1117,7 +1117,7 @@ set_form(["running nodes", ENode, "backup", "backup"], _Lang, XData) ->
end;
-set_form(["running nodes", ENode, "backup", "restore"], _Lang, XData) ->
+set_form(_Host, ["running nodes", ENode, "backup", "restore"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1141,7 +1141,7 @@ set_form(["running nodes", ENode, "backup", "restore"], _Lang, XData) ->
end;
-set_form(["running nodes", ENode, "backup", "textfile"], _Lang, XData) ->
+set_form(_Host, ["running nodes", ENode, "backup", "textfile"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1164,7 +1164,7 @@ set_form(["running nodes", ENode, "backup", "textfile"], _Lang, XData) ->
end;
-set_form(["running nodes", ENode, "import", "file"], _Lang, XData) ->
+set_form(_Host, ["running nodes", ENode, "import", "file"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1181,7 +1181,7 @@ set_form(["running nodes", ENode, "import", "file"], _Lang, XData) ->
end;
-set_form(["running nodes", ENode, "import", "dir"], _Lang, XData) ->
+set_form(_Host, ["running nodes", ENode, "import", "dir"], _Lang, XData) ->
case search_running_node(ENode) of
false ->
{error, ?ERR_ITEM_NOT_FOUND};
@@ -1198,7 +1198,7 @@ set_form(["running nodes", ENode, "import", "dir"], _Lang, XData) ->
end;
-set_form(["config", "hostname"], _Lang, XData) ->
+set_form(_Host, ["config", "hostname"], _Lang, XData) ->
case lists:keysearch("hostname", 1, XData) of
false ->
{error, ?ERR_BAD_REQUEST};
@@ -1211,7 +1211,7 @@ set_form(["config", "hostname"], _Lang, XData) ->
{error, ?ERR_BAD_REQUEST}
end;
-set_form(["config", "acls"], _Lang, XData) ->
+set_form(_Host, ["config", "acls"], _Lang, XData) ->
case lists:keysearch("acls", 1, XData) of
{value, {_, Strings}} ->
String = lists:foldl(fun(S, Res) ->
@@ -1237,7 +1237,7 @@ set_form(["config", "acls"], _Lang, XData) ->
{error, ?ERR_BAD_REQUEST}
end;
-set_form(["config", "access"], _Lang, XData) ->
+set_form(_Host, ["config", "access"], _Lang, XData) ->
SetAccess =
fun(Rs) ->
mnesia:transaction(
@@ -1283,19 +1283,19 @@ set_form(["config", "access"], _Lang, XData) ->
{error, ?ERR_BAD_REQUEST}
end;
-set_form(["config", "remusers"], _Lang, XData) ->
+set_form(Host, ["config", "remusers"], _Lang, XData) ->
lists:foreach(
fun({Var, Vals}) ->
case Vals of
["1"] ->
- catch ejabberd_auth:remove_user(Var);
+ catch ejabberd_auth:remove_user(Var, Host);
_ ->
ok
end
end, XData),
{result, []};
-set_form(_, _Lang, _XData) ->
+set_form(_Host, _, _Lang, _XData) ->
{error, ?ERR_SERVICE_UNAVAILABLE}.
diff --git a/src/mod_irc/mod_irc.erl b/src/mod_irc/mod_irc.erl
index 6c36a71b..e3ce2726 100644
--- a/src/mod_irc/mod_irc.erl
+++ b/src/mod_irc/mod_irc.erl
@@ -307,7 +307,7 @@ iq_get_vcard(Lang) ->
"http://ejabberd.jabberstudio.org/"}]},
{xmlelement, "DESC", [],
[{xmlcdata, translate:translate(Lang, "ejabberd IRC module\n"
- "Copyright (c) 2003-2005 Alexey Shchepin")}]}].
+ "Copyright (c) 2003-2006 Alexey Shchepin")}]}].
process_register(Host, From, To, #iq{} = IQ) ->
case catch process_irc_register(Host, From, To, IQ) of
diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl
index 742565a6..6e40d0bd 100644
--- a/src/mod_muc/mod_muc.erl
+++ b/src/mod_muc/mod_muc.erl
@@ -581,7 +581,7 @@ iq_get_vcard(Lang) ->
"http://ejabberd.jabberstudio.org/"}]},
{xmlelement, "DESC", [],
[{xmlcdata, translate:translate(Lang, "ejabberd MUC module\n"
- "Copyright (c) 2003-2005 Alexey Shchepin")}]}].
+ "Copyright (c) 2003-2006 Alexey Shchepin")}]}].
broadcast_service_message(Host, Msg) ->
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index 7c66c2c1..51c2d2d1 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -1564,6 +1564,18 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
catch send_kickban_presence(
JID, Reason, "307", SD),
set_role(JID, none, SD);
+ {JID, affiliation, none, Reason} ->
+ case (SD#state.config)#config.members_only of
+ true ->
+ catch send_kickban_presence(
+ JID, Reason, "321", SD),
+ SD1 = set_affiliation(JID, none, SD),
+ set_role(JID, none, SD1);
+ _ ->
+ SD1 = set_affiliation(JID, none, SD),
+ send_update_presence(JID, SD1),
+ SD1
+ end;
{JID, affiliation, outcast, Reason} ->
catch send_kickban_presence(
JID, Reason, "301", SD),
@@ -2105,7 +2117,9 @@ set_config(XEl, StateData) ->
-define(SET_BOOL_XOPT(Opt, Val),
case Val of
"0" -> set_xoption(Opts, Config#config{Opt = false});
+ "false" -> set_xoption(Opts, Config#config{Opt = false});
"1" -> set_xoption(Opts, Config#config{Opt = true});
+ "true" -> set_xoption(Opts, Config#config{Opt = true});
_ -> {error, ?ERR_BAD_REQUEST}
end).
@@ -2159,8 +2173,29 @@ change_config(Config, StateData) ->
mod_muc:forget_room(NSD#state.host, NSD#state.room);
{false, false} ->
ok
- end,
- {result, [], NSD}.
+ end,
+ case {(StateData#state.config)#config.members_only,
+ Config#config.members_only} of
+ {false, true} ->
+ NSD1 = remove_nonmembers(NSD),
+ {result, [], NSD1};
+ _ ->
+ {result, [], NSD}
+ end.
+
+remove_nonmembers(StateData) ->
+ lists:foldl(
+ fun({_LJID, #user{jid = JID}}, SD) ->
+ Affiliation = get_affiliation(JID, SD),
+ case Affiliation of
+ none ->
+ catch send_kickban_presence(
+ JID, "", "322", SD),
+ set_role(JID, none, SD);
+ _ ->
+ SD
+ end
+ end, StateData, ?DICT:to_list(StateData#state.users)).
-define(CASE_CONFIG_OPT(Opt),
diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl
index 7c3353a5..7439fa04 100644
--- a/src/mod_pubsub/mod_pubsub.erl
+++ b/src/mod_pubsub/mod_pubsub.erl
@@ -395,7 +395,7 @@ iq_get_vcard(Lang) ->
[{xmlcdata, translate:translate(
Lang,
"ejabberd pub/sub module\n"
- "Copyright (c) 2003-2005 Alexey Shchepin")}]}].
+ "Copyright (c) 2003-2006 Alexey Shchepin")}]}].
iq_pubsub(Host, From, Type, SubEl) ->
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl
index b768bb88..b1b46e3c 100644
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -147,7 +147,7 @@ process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
translate:translate(
Lang,
"Erlang Jabber Server\n"
- "Copyright (c) 2002-2005 Alexey Shchepin")}]},
+ "Copyright (c) 2002-2006 Alexey Shchepin")}]},
{xmlelement, "BDAY", [],
[{xmlcdata, "2002-11-16"}]}
]}]}
@@ -416,7 +416,7 @@ iq_get_vcard(Lang) ->
[{xmlcdata, translate:translate(
Lang,
"ejabberd vCard module\n"
- "Copyright (c) 2003-2005 Alexey Shchepin")}]}].
+ "Copyright (c) 2003-2006 Alexey Shchepin")}]}].
find_xdata_el({xmlelement, _Name, _Attrs, SubEls}) ->
find_xdata_el1(SubEls).
diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl
index d598c282..332c36cf 100644
--- a/src/mod_vcard_ldap.erl
+++ b/src/mod_vcard_ldap.erl
@@ -108,7 +108,7 @@ process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
translate:translate(
Lang,
"Erlang Jabber Server\n"
- "Copyright (c) 2002-2005 Alexey Shchepin")}]},
+ "Copyright (c) 2002-2006 Alexey Shchepin")}]},
{xmlelement, "BDAY", [],
[{xmlcdata, "2002-11-16"}]}
]}]}
@@ -374,7 +374,7 @@ iq_get_vcard(Lang) ->
[{xmlcdata, translate:translate(
Lang,
"ejabberd vCard module\n"
- "Copyright (c) 2003-2005 Alexey Shchepin")}]}].
+ "Copyright (c) 2003-2006 Alexey Shchepin")}]}].
find_xdata_el({xmlelement, _Name, _Attrs, SubEls}) ->
find_xdata_el1(SubEls).
diff --git a/src/mod_vcard_odbc.erl b/src/mod_vcard_odbc.erl
index 4a143201..521adf18 100644
--- a/src/mod_vcard_odbc.erl
+++ b/src/mod_vcard_odbc.erl
@@ -111,7 +111,7 @@ process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
translate:translate(
Lang,
"Erlang Jabber Server\n"
- "Copyright (c) 2002-2005 Alexey Shchepin")}]},
+ "Copyright (c) 2002-2006 Alexey Shchepin")}]},
{xmlelement, "BDAY", [],
[{xmlcdata, "2002-11-16"}]}
]}]}
@@ -413,7 +413,7 @@ iq_get_vcard(Lang) ->
[{xmlcdata, translate:translate(
Lang,
"ejabberd vCard module\n"
- "Copyright (c) 2003-2005 Alexey Shchepin")}]}].
+ "Copyright (c) 2003-2006 Alexey Shchepin")}]}].
find_xdata_el({xmlelement, _Name, _Attrs, SubEls}) ->
find_xdata_el1(SubEls).
diff --git a/src/msgs/es.msg b/src/msgs/es.msg
index 742a02b0..b7026b80 100644
--- a/src/msgs/es.msg
+++ b/src/msgs/es.msg
@@ -116,7 +116,7 @@
{"Only service administrators are allowed to send service messages", "Solo los administradores del servicio tienen permiso para enviar mensajes de servicio"}.
{"Conference room does not exist", "La sala de conferencias no existe"}.
{"Access denied by service policy", "Acceso denegado por la política del servicio"}.
-{"You must fill in field \"nick\" in the form", "Debes rellenar el campo \"apodo\" en el formulario"}.
+{"You must fill in field \"Nickname\" in the form", "Debes rellenar el campo \"Apodo\" en el formulario"}.
{"Specified nickname is already registered", "El apodo especificado ya está registrado, tendrás que buscar otro"}.
{"Room creation is denied by service policy", "Se te ha denegado crear la sala por política del servicio"}.
{"ejabberd MUC module\nCopyright (c) 2003-2005 Alexey Shchepin", "Módulo de MUC para ejabbed\nCopyright (c) 2002-2005 Alexey Shchepin"}.
@@ -126,20 +126,20 @@
{"You need an x:data capable client to configure room", "Necesitas un cliente con soporte de x:data para configurar la sala"}.
{"Configuration for ", "Configuración para "}.
{"Room title", "Título de la sala"}.
-{"Allow users to change subject?", "Permitir a los usuarios cambiar el asunto"}.
-{"Allow users to query other users?", "Permitir a los usuarios consultar a otros usuarios"}.
-{"Allow users to send private messages?", "Permitir a los usuarios enviar mensajes privados"}.
-{"Make room public searchable?", "Hacer la sala públicamente visible"}.
-{"Make participants list public?", "Hacer pública la lista de participantes"}.
-{"Make room persistent?", "Hacer la sala permanente"}.
-{"Make room moderated?", "Hacer la sala moderada"}.
-{"Default users as members?", "Los usuarios son miembros por defecto"}.
-{"Make room members only?", "Hacer la sala sólo para miembros"}.
-{"Allow users to send invites?", "Permitir a los usuarios enviar invitaciones"}.
-{"Make room password protected?", "Proteger la sala con contraseña"}.
+{"Allow users to change subject", "Permitir a los usuarios cambiar el asunto"}.
+{"Allow users to query other users", "Permitir a los usuarios consultar a otros usuarios"}.
+{"Allow users to send private messages", "Permitir a los usuarios enviar mensajes privados"}.
+{"Make room public searchable", "Sala públicamente visible"}.
+{"Make participants list public", "La lista de participantes es pública"}.
+{"Make room persistent", "Sala permanente"}.
+{"Make room moderated", "Sala moderada"}.
+{"Default users as participants", "Los usuarios on participantes por defecto"}.
+{"Make room members-only", "Sala sólo para miembros"}.
+{"Allow users to send invites", "Permitir a los usuarios enviar invitaciones"}.
+{"Make room password protected", "Proteger la sala con contraseña"}.
{"Password", "Contraseña"}.
-{"Make room anonymous?", "Hacer anónima la sala"}.
-{"Enable logging?", "Guardar históricos"}.
+{"This room is not anonymous", "Sala no anónima"}.
+{"Enable logging", "Guardar históricos"}.
{"Only moderators and participants are allowed to change subject in this room", "Solo los moderadores y participantes pueden cambiar el asunto de esta sala"}.
{"Only moderators are allowed to change subject in this room", "Solo los moderadores pueden cambiar el asunto de esta sala"}.
{"Visitors are not allowed to send messages to all occupants", "Los visitantes no pueden enviar mensajes a todos los ocupantes"}.
@@ -165,6 +165,9 @@
{"Invalid role: ~s", "Rol no válido: ~s"}.
{"Owner privileges required", "Se requieren privilegios de propietario de la sala"}.
{"private, ", "privado"}.
+{"Make room semianonymous", "Hacer la sala semianónima"}.
+{"Description", "Descripción"}.
+{"Number of occupants", "Número de ocupantes"}.
% mod_irc/mod_irc.erl
{"You need an x:data capable client to configure mod_irc settings", "Necesitas un cliente con soporte de x:data para configurar las opciones de mod_irc"}.
@@ -289,6 +292,25 @@
{"JID", "JID"}.
{"Fill in fields to search for any matching Jabber User", "Rellena campos para buscar usuarios Jabber que concuerden"}.
+% mod_adhoc.erl
+{"Commands", "Comandos"}.
+{"Ping", "Ping"}.
+{"Pong", "Pong"}.
+
+% mod_announce.erl
+{"Really delete message of the day?", "¿Está seguro de quere borrar el mensaje del dia?"}.
+{"Subject", "Asunto"}.
+{"Message body", "Cuerpo del mensaje"}.
+{"No body provided for announce message", "No se ha proporcionado cuerpo de mensaje para el anuncio"}.
+{"Announcements", "Anuncios"}.
+{"Send announcement to all users", "Enviar anuncio a todos los usuarios"}.
+{"Send announcement to all online users", "Enviar anuncio a todos los usuarios conectados"}.
+{"Send announcement to all online users on all hosts", "Enviar anuncio a todos los usuarios conectados en todos los dominios"}.
+{"Set message of the day and send to online users", "Poner mensaje del dia y enviar a todos los usuarios conectados"}.
+{"Update message of the day (don't send)", "Actualizar mensaje del dia, pero no enviarlo"}.
+{"Delete message of the day", "Borrar mensaje del dia"}.
+
% Local Variables:
% mode: erlang
% End:
+
diff --git a/src/web/ejabberd_web.erl b/src/web/ejabberd_web.erl
index 89c73830..143fbf40 100644
--- a/src/web/ejabberd_web.erl
+++ b/src/web/ejabberd_web.erl
@@ -84,7 +84,7 @@ process_get({_, true},
Host, Request#request{path = RPath,
us = US})
end;
- undefined ->
+ unauthorized ->
{401,
[{"WWW-Authenticate", "basic realm=\"ejabberd\""}],
ejabberd_web:make_xhtml([{xmlelement, "h1", [],
@@ -113,7 +113,7 @@ process_get({_, true},
end
end;
_ ->
- undefined
+ unauthorized
end,
case US of
{User, Server} ->
@@ -126,7 +126,7 @@ process_get({_, true},
global, Request#request{path = RPath,
us = US})
end;
- undefined ->
+ unauthorized ->
{401,
[{"WWW-Authenticate", "basic realm=\"ejabberd\""}],
ejabberd_web:make_xhtml([{xmlelement, "h1", [],
diff --git a/src/web/ejabberd_web_admin.erl b/src/web/ejabberd_web_admin.erl
index 46374873..c625e4a3 100644
--- a/src/web/ejabberd_web_admin.erl
+++ b/src/web/ejabberd_web_admin.erl
@@ -95,7 +95,7 @@ make_xhtml(Els, global, Lang) ->
[?XAE("div",
[{"id", "copyright"}],
[?XCT("p",
- "ejabberd (c) 2002-2005 Alexey Shchepin, 2004-2005 Process One")
+ "ejabberd (c) 2002-2006 Alexey Shchepin, 2004-2006 Process One")
])])])
]}};
@@ -150,7 +150,7 @@ make_xhtml(Els, Host, Lang) ->
[?XAE("div",
[{"id", "copyright"}],
[?XCT("p",
- "ejabberd (c) 2002-2005 Alexey Shchepin, 2004-2005 Process One")
+ "ejabberd (c) 2002-2006 Alexey Shchepin, 2004-2006 Process One")
])])])
]}}.