mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-02 21:17:12 +02:00
* 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 SVN Revision: 500
This commit is contained in:
parent
cf10843071
commit
0cc168a9aa
24
ChangeLog
24
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>
|
2006-02-03 Alexey Shchepin <alexey@sevcom.net>
|
||||||
|
|
||||||
* src/ejabberd_auth_odbc.erl: Added ejabberd_odbc_sup to ejabberd
|
* src/ejabberd_auth_odbc.erl: Added ejabberd_odbc_sup to ejabberd
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
wait_for_features/2,
|
wait_for_features/2,
|
||||||
wait_for_auth_result/2,
|
wait_for_auth_result/2,
|
||||||
wait_for_starttls_proceed/2,
|
wait_for_starttls_proceed/2,
|
||||||
|
reopen_socket/2,
|
||||||
stream_established/2,
|
stream_established/2,
|
||||||
handle_event/3,
|
handle_event/3,
|
||||||
handle_sync_event/4,
|
handle_sync_event/4,
|
||||||
|
@ -209,9 +210,8 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) ->
|
||||||
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
% TODO: clear message queue
|
% TODO: clear message queue
|
||||||
(StateData#state.sockmod):close(StateData#state.socket),
|
ejabberd_receiver:close(StateData#state.receiver),
|
||||||
gen_fsm:send_event(self(), init),
|
{next_state, reopen_socket, StateData#state{socket = undefined,
|
||||||
{next_state, open_socket, StateData#state{socket = undefined,
|
|
||||||
use_v10 = false}};
|
use_v10 = false}};
|
||||||
_ ->
|
_ ->
|
||||||
send_text(StateData, ?INVALID_NAMESPACE_ERR),
|
send_text(StateData, ?INVALID_NAMESPACE_ERR),
|
||||||
|
@ -351,9 +351,8 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
|
||||||
StartTLSRequired and (not StateData#state.tls) ->
|
StartTLSRequired and (not StateData#state.tls) ->
|
||||||
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
(StateData#state.sockmod):close(StateData#state.socket),
|
ejabberd_receiver:close(StateData#state.receiver),
|
||||||
gen_fsm:send_event(self(), init),
|
{next_state, reopen_socket,
|
||||||
{next_state, open_socket,
|
|
||||||
StateData#state{socket = undefined,
|
StateData#state{socket = undefined,
|
||||||
use_v10 = false}};
|
use_v10 = false}};
|
||||||
true ->
|
true ->
|
||||||
|
@ -409,9 +408,8 @@ wait_for_auth_result({xmlstreamelement, El}, StateData) ->
|
||||||
?NS_SASL ->
|
?NS_SASL ->
|
||||||
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
(StateData#state.sockmod):close(StateData#state.socket),
|
ejabberd_receiver:close(StateData#state.receiver),
|
||||||
gen_fsm:send_event(self(), init),
|
{next_state, reopen_socket,
|
||||||
{next_state, open_socket,
|
|
||||||
StateData#state{socket = undefined}};
|
StateData#state{socket = undefined}};
|
||||||
_ ->
|
_ ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
|
@ -498,6 +496,19 @@ wait_for_starttls_proceed(closed, StateData) ->
|
||||||
{stop, normal, 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) ->
|
stream_established({xmlstreamelement, El}, StateData) ->
|
||||||
?INFO_MSG("stream established", []),
|
?INFO_MSG("stream established", []),
|
||||||
case is_verify_res(El) of
|
case is_verify_res(El) of
|
||||||
|
|
|
@ -645,7 +645,7 @@ adhoc_local_commands(Acc, From, #jid{lserver = LServer} = To,
|
||||||
Acc
|
Acc
|
||||||
end.
|
end.
|
||||||
|
|
||||||
adhoc_local_commands(_From, _To,
|
adhoc_local_commands(_From, #jid{lserver = LServer} = _To,
|
||||||
#adhoc_request{lang = Lang,
|
#adhoc_request{lang = Lang,
|
||||||
node = Node,
|
node = Node,
|
||||||
sessionid = SessionID,
|
sessionid = SessionID,
|
||||||
|
@ -665,7 +665,7 @@ adhoc_local_commands(_From, _To,
|
||||||
#adhoc_response{status = canceled});
|
#adhoc_response{status = canceled});
|
||||||
XData == false, ActionIsExecute ->
|
XData == false, ActionIsExecute ->
|
||||||
%% User requests form
|
%% User requests form
|
||||||
case get_form(LNode, Lang) of
|
case get_form(LServer, LNode, Lang) of
|
||||||
{result, Form} ->
|
{result, Form} ->
|
||||||
adhoc:produce_response(
|
adhoc:produce_response(
|
||||||
Request,
|
Request,
|
||||||
|
@ -680,7 +680,7 @@ adhoc_local_commands(_From, _To,
|
||||||
invalid ->
|
invalid ->
|
||||||
{error, ?ERR_BAD_REQUEST};
|
{error, ?ERR_BAD_REQUEST};
|
||||||
Fields ->
|
Fields ->
|
||||||
case set_form(LNode, Lang, Fields) of
|
case set_form(LServer, LNode, Lang, Fields) of
|
||||||
{result, _Res} ->
|
{result, _Res} ->
|
||||||
adhoc:produce_response(
|
adhoc:produce_response(
|
||||||
#adhoc_response{lang = Lang,
|
#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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -766,12 +766,12 @@ get_form(["running nodes", ENode, "DB"], Lang) ->
|
||||||
end
|
end
|
||||||
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
Node ->
|
Node ->
|
||||||
case rpc:call(Node, gen_mod, loaded_modules, []) of
|
case rpc:call(Node, gen_mod, loaded_modules, [Host]) of
|
||||||
{badrpc, _Reason} ->
|
{badrpc, _Reason} ->
|
||||||
{error, ?ERR_INTERNAL_SERVER_ERROR};
|
{error, ?ERR_INTERNAL_SERVER_ERROR};
|
||||||
Modules ->
|
Modules ->
|
||||||
|
@ -793,7 +793,7 @@ get_form(["running nodes", ENode, "modules", "stop"], Lang) ->
|
||||||
end
|
end
|
||||||
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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{xmlcdata,
|
||||||
|
@ -925,7 +925,7 @@ get_form(["config", "hostname"], Lang) ->
|
||||||
[{xmlelement, "value", [], [{xmlcdata, ?MYNAME}]}]}
|
[{xmlelement, "value", [], [{xmlcdata, ?MYNAME}]}]}
|
||||||
]}]};
|
]}]};
|
||||||
|
|
||||||
get_form(["config", "acls"], Lang) ->
|
get_form(_Host, ["config", "acls"], Lang) ->
|
||||||
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{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}],
|
{result, [{xmlelement, "x", [{"xmlns", ?NS_XDATA}],
|
||||||
[{xmlelement, "title", [],
|
[{xmlelement, "title", [],
|
||||||
[{xmlcdata,
|
[{xmlcdata,
|
||||||
|
@ -991,7 +991,7 @@ get_form(["config", "remusers"], Lang) ->
|
||||||
[{xmlcdata,
|
[{xmlcdata,
|
||||||
translate:translate(
|
translate:translate(
|
||||||
Lang, "Choose users to remove")}]}] ++
|
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} ->
|
{'EXIT', _Reason} ->
|
||||||
[];
|
[];
|
||||||
Users ->
|
Users ->
|
||||||
|
@ -1001,12 +1001,12 @@ get_form(["config", "remusers"], Lang) ->
|
||||||
end
|
end
|
||||||
}]};
|
}]};
|
||||||
|
|
||||||
get_form(_, _Lang) ->
|
get_form(_Host, _, _Lang) ->
|
||||||
{error, ?ERR_SERVICE_UNAVAILABLE}.
|
{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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1040,7 +1040,7 @@ set_form(["running nodes", ENode, "DB"], _Lang, XData) ->
|
||||||
{result, []}
|
{result, []}
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1050,7 +1050,7 @@ set_form(["running nodes", ENode, "modules", "stop"], _Lang, XData) ->
|
||||||
case Vals of
|
case Vals of
|
||||||
["1"] ->
|
["1"] ->
|
||||||
Module = list_to_atom(Var),
|
Module = list_to_atom(Var),
|
||||||
rpc:call(Node, gen_mod, stop_module, [Module]);
|
rpc:call(Node, gen_mod, stop_module, [Host, Module]);
|
||||||
_ ->
|
_ ->
|
||||||
ok
|
ok
|
||||||
end
|
end
|
||||||
|
@ -1058,7 +1058,7 @@ set_form(["running nodes", ENode, "modules", "stop"], _Lang, XData) ->
|
||||||
{result, []}
|
{result, []}
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1079,7 +1079,7 @@ set_form(["running nodes", ENode, "modules", "start"], _Lang, XData) ->
|
||||||
rpc:call(Node,
|
rpc:call(Node,
|
||||||
gen_mod,
|
gen_mod,
|
||||||
start_module,
|
start_module,
|
||||||
[Module, Args])
|
[Host, Module, Args])
|
||||||
end, Modules),
|
end, Modules),
|
||||||
{result, []};
|
{result, []};
|
||||||
_ ->
|
_ ->
|
||||||
|
@ -1094,7 +1094,7 @@ set_form(["running nodes", ENode, "modules", "start"], _Lang, XData) ->
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1117,7 +1117,7 @@ set_form(["running nodes", ENode, "backup", "backup"], _Lang, XData) ->
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1141,7 +1141,7 @@ set_form(["running nodes", ENode, "backup", "restore"], _Lang, XData) ->
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1164,7 +1164,7 @@ set_form(["running nodes", ENode, "backup", "textfile"], _Lang, XData) ->
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1181,7 +1181,7 @@ set_form(["running nodes", ENode, "import", "file"], _Lang, XData) ->
|
||||||
end;
|
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
|
case search_running_node(ENode) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_ITEM_NOT_FOUND};
|
{error, ?ERR_ITEM_NOT_FOUND};
|
||||||
|
@ -1198,7 +1198,7 @@ set_form(["running nodes", ENode, "import", "dir"], _Lang, XData) ->
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
set_form(["config", "hostname"], _Lang, XData) ->
|
set_form(_Host, ["config", "hostname"], _Lang, XData) ->
|
||||||
case lists:keysearch("hostname", 1, XData) of
|
case lists:keysearch("hostname", 1, XData) of
|
||||||
false ->
|
false ->
|
||||||
{error, ?ERR_BAD_REQUEST};
|
{error, ?ERR_BAD_REQUEST};
|
||||||
|
@ -1211,7 +1211,7 @@ set_form(["config", "hostname"], _Lang, XData) ->
|
||||||
{error, ?ERR_BAD_REQUEST}
|
{error, ?ERR_BAD_REQUEST}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
set_form(["config", "acls"], _Lang, XData) ->
|
set_form(_Host, ["config", "acls"], _Lang, XData) ->
|
||||||
case lists:keysearch("acls", 1, XData) of
|
case lists:keysearch("acls", 1, XData) of
|
||||||
{value, {_, Strings}} ->
|
{value, {_, Strings}} ->
|
||||||
String = lists:foldl(fun(S, Res) ->
|
String = lists:foldl(fun(S, Res) ->
|
||||||
|
@ -1237,7 +1237,7 @@ set_form(["config", "acls"], _Lang, XData) ->
|
||||||
{error, ?ERR_BAD_REQUEST}
|
{error, ?ERR_BAD_REQUEST}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
set_form(["config", "access"], _Lang, XData) ->
|
set_form(_Host, ["config", "access"], _Lang, XData) ->
|
||||||
SetAccess =
|
SetAccess =
|
||||||
fun(Rs) ->
|
fun(Rs) ->
|
||||||
mnesia:transaction(
|
mnesia:transaction(
|
||||||
|
@ -1283,19 +1283,19 @@ set_form(["config", "access"], _Lang, XData) ->
|
||||||
{error, ?ERR_BAD_REQUEST}
|
{error, ?ERR_BAD_REQUEST}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
set_form(["config", "remusers"], _Lang, XData) ->
|
set_form(Host, ["config", "remusers"], _Lang, XData) ->
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun({Var, Vals}) ->
|
fun({Var, Vals}) ->
|
||||||
case Vals of
|
case Vals of
|
||||||
["1"] ->
|
["1"] ->
|
||||||
catch ejabberd_auth:remove_user(Var);
|
catch ejabberd_auth:remove_user(Var, Host);
|
||||||
_ ->
|
_ ->
|
||||||
ok
|
ok
|
||||||
end
|
end
|
||||||
end, XData),
|
end, XData),
|
||||||
{result, []};
|
{result, []};
|
||||||
|
|
||||||
set_form(_, _Lang, _XData) ->
|
set_form(_Host, _, _Lang, _XData) ->
|
||||||
{error, ?ERR_SERVICE_UNAVAILABLE}.
|
{error, ?ERR_SERVICE_UNAVAILABLE}.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -307,7 +307,7 @@ iq_get_vcard(Lang) ->
|
||||||
"http://ejabberd.jabberstudio.org/"}]},
|
"http://ejabberd.jabberstudio.org/"}]},
|
||||||
{xmlelement, "DESC", [],
|
{xmlelement, "DESC", [],
|
||||||
[{xmlcdata, translate:translate(Lang, "ejabberd IRC module\n"
|
[{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) ->
|
process_register(Host, From, To, #iq{} = IQ) ->
|
||||||
case catch process_irc_register(Host, From, To, IQ) of
|
case catch process_irc_register(Host, From, To, IQ) of
|
||||||
|
|
|
@ -581,7 +581,7 @@ iq_get_vcard(Lang) ->
|
||||||
"http://ejabberd.jabberstudio.org/"}]},
|
"http://ejabberd.jabberstudio.org/"}]},
|
||||||
{xmlelement, "DESC", [],
|
{xmlelement, "DESC", [],
|
||||||
[{xmlcdata, translate:translate(Lang, "ejabberd MUC module\n"
|
[{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) ->
|
broadcast_service_message(Host, Msg) ->
|
||||||
|
|
|
@ -1564,6 +1564,18 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
|
||||||
catch send_kickban_presence(
|
catch send_kickban_presence(
|
||||||
JID, Reason, "307", SD),
|
JID, Reason, "307", SD),
|
||||||
set_role(JID, none, 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} ->
|
{JID, affiliation, outcast, Reason} ->
|
||||||
catch send_kickban_presence(
|
catch send_kickban_presence(
|
||||||
JID, Reason, "301", SD),
|
JID, Reason, "301", SD),
|
||||||
|
@ -2105,7 +2117,9 @@ set_config(XEl, StateData) ->
|
||||||
-define(SET_BOOL_XOPT(Opt, Val),
|
-define(SET_BOOL_XOPT(Opt, Val),
|
||||||
case Val of
|
case Val of
|
||||||
"0" -> set_xoption(Opts, Config#config{Opt = false});
|
"0" -> set_xoption(Opts, Config#config{Opt = false});
|
||||||
|
"false" -> set_xoption(Opts, Config#config{Opt = false});
|
||||||
"1" -> set_xoption(Opts, Config#config{Opt = true});
|
"1" -> set_xoption(Opts, Config#config{Opt = true});
|
||||||
|
"true" -> set_xoption(Opts, Config#config{Opt = true});
|
||||||
_ -> {error, ?ERR_BAD_REQUEST}
|
_ -> {error, ?ERR_BAD_REQUEST}
|
||||||
end).
|
end).
|
||||||
|
|
||||||
|
@ -2160,7 +2174,28 @@ change_config(Config, StateData) ->
|
||||||
{false, false} ->
|
{false, false} ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
{result, [], NSD}.
|
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),
|
-define(CASE_CONFIG_OPT(Opt),
|
||||||
|
|
|
@ -395,7 +395,7 @@ iq_get_vcard(Lang) ->
|
||||||
[{xmlcdata, translate:translate(
|
[{xmlcdata, translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"ejabberd pub/sub module\n"
|
"ejabberd pub/sub module\n"
|
||||||
"Copyright (c) 2003-2005 Alexey Shchepin")}]}].
|
"Copyright (c) 2003-2006 Alexey Shchepin")}]}].
|
||||||
|
|
||||||
|
|
||||||
iq_pubsub(Host, From, Type, SubEl) ->
|
iq_pubsub(Host, From, Type, SubEl) ->
|
||||||
|
|
|
@ -147,7 +147,7 @@ process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
|
||||||
translate:translate(
|
translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"Erlang Jabber Server\n"
|
"Erlang Jabber Server\n"
|
||||||
"Copyright (c) 2002-2005 Alexey Shchepin")}]},
|
"Copyright (c) 2002-2006 Alexey Shchepin")}]},
|
||||||
{xmlelement, "BDAY", [],
|
{xmlelement, "BDAY", [],
|
||||||
[{xmlcdata, "2002-11-16"}]}
|
[{xmlcdata, "2002-11-16"}]}
|
||||||
]}]}
|
]}]}
|
||||||
|
@ -416,7 +416,7 @@ iq_get_vcard(Lang) ->
|
||||||
[{xmlcdata, translate:translate(
|
[{xmlcdata, translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"ejabberd vCard module\n"
|
"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_el({xmlelement, _Name, _Attrs, SubEls}) ->
|
||||||
find_xdata_el1(SubEls).
|
find_xdata_el1(SubEls).
|
||||||
|
|
|
@ -108,7 +108,7 @@ process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
|
||||||
translate:translate(
|
translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"Erlang Jabber Server\n"
|
"Erlang Jabber Server\n"
|
||||||
"Copyright (c) 2002-2005 Alexey Shchepin")}]},
|
"Copyright (c) 2002-2006 Alexey Shchepin")}]},
|
||||||
{xmlelement, "BDAY", [],
|
{xmlelement, "BDAY", [],
|
||||||
[{xmlcdata, "2002-11-16"}]}
|
[{xmlcdata, "2002-11-16"}]}
|
||||||
]}]}
|
]}]}
|
||||||
|
@ -374,7 +374,7 @@ iq_get_vcard(Lang) ->
|
||||||
[{xmlcdata, translate:translate(
|
[{xmlcdata, translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"ejabberd vCard module\n"
|
"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_el({xmlelement, _Name, _Attrs, SubEls}) ->
|
||||||
find_xdata_el1(SubEls).
|
find_xdata_el1(SubEls).
|
||||||
|
|
|
@ -111,7 +111,7 @@ process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
|
||||||
translate:translate(
|
translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"Erlang Jabber Server\n"
|
"Erlang Jabber Server\n"
|
||||||
"Copyright (c) 2002-2005 Alexey Shchepin")}]},
|
"Copyright (c) 2002-2006 Alexey Shchepin")}]},
|
||||||
{xmlelement, "BDAY", [],
|
{xmlelement, "BDAY", [],
|
||||||
[{xmlcdata, "2002-11-16"}]}
|
[{xmlcdata, "2002-11-16"}]}
|
||||||
]}]}
|
]}]}
|
||||||
|
@ -413,7 +413,7 @@ iq_get_vcard(Lang) ->
|
||||||
[{xmlcdata, translate:translate(
|
[{xmlcdata, translate:translate(
|
||||||
Lang,
|
Lang,
|
||||||
"ejabberd vCard module\n"
|
"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_el({xmlelement, _Name, _Attrs, SubEls}) ->
|
||||||
find_xdata_el1(SubEls).
|
find_xdata_el1(SubEls).
|
||||||
|
|
|
@ -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"}.
|
{"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"}.
|
{"Conference room does not exist", "La sala de conferencias no existe"}.
|
||||||
{"Access denied by service policy", "Acceso denegado por la política del servicio"}.
|
{"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"}.
|
{"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"}.
|
{"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"}.
|
{"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"}.
|
{"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 "}.
|
{"Configuration for ", "Configuración para "}.
|
||||||
{"Room title", "Título de la sala"}.
|
{"Room title", "Título de la sala"}.
|
||||||
{"Allow users to change subject?", "Permitir a los usuarios cambiar el asunto"}.
|
{"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 query other users", "Permitir a los usuarios consultar a otros usuarios"}.
|
||||||
{"Allow users to send private messages?", "Permitir a los usuarios enviar mensajes privados"}.
|
{"Allow users to send private messages", "Permitir a los usuarios enviar mensajes privados"}.
|
||||||
{"Make room public searchable?", "Hacer la sala públicamente visible"}.
|
{"Make room public searchable", "Sala públicamente visible"}.
|
||||||
{"Make participants list public?", "Hacer pública la lista de participantes"}.
|
{"Make participants list public", "La lista de participantes es pública"}.
|
||||||
{"Make room persistent?", "Hacer la sala permanente"}.
|
{"Make room persistent", "Sala permanente"}.
|
||||||
{"Make room moderated?", "Hacer la sala moderada"}.
|
{"Make room moderated", "Sala moderada"}.
|
||||||
{"Default users as members?", "Los usuarios son miembros por defecto"}.
|
{"Default users as participants", "Los usuarios on participantes por defecto"}.
|
||||||
{"Make room members only?", "Hacer la sala sólo para miembros"}.
|
{"Make room members-only", "Sala sólo para miembros"}.
|
||||||
{"Allow users to send invites?", "Permitir a los usuarios enviar invitaciones"}.
|
{"Allow users to send invites", "Permitir a los usuarios enviar invitaciones"}.
|
||||||
{"Make room password protected?", "Proteger la sala con contraseña"}.
|
{"Make room password protected", "Proteger la sala con contraseña"}.
|
||||||
{"Password", "Contraseña"}.
|
{"Password", "Contraseña"}.
|
||||||
{"Make room anonymous?", "Hacer anónima la sala"}.
|
{"This room is not anonymous", "Sala no anónima"}.
|
||||||
{"Enable logging?", "Guardar históricos"}.
|
{"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 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"}.
|
{"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"}.
|
{"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"}.
|
{"Invalid role: ~s", "Rol no válido: ~s"}.
|
||||||
{"Owner privileges required", "Se requieren privilegios de propietario de la sala"}.
|
{"Owner privileges required", "Se requieren privilegios de propietario de la sala"}.
|
||||||
{"private, ", "privado"}.
|
{"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
|
% 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"}.
|
{"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"}.
|
{"JID", "JID"}.
|
||||||
{"Fill in fields to search for any matching Jabber User", "Rellena campos para buscar usuarios Jabber que concuerden"}.
|
{"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:
|
% Local Variables:
|
||||||
% mode: erlang
|
% mode: erlang
|
||||||
% End:
|
% End:
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ process_get({_, true},
|
||||||
Host, Request#request{path = RPath,
|
Host, Request#request{path = RPath,
|
||||||
us = US})
|
us = US})
|
||||||
end;
|
end;
|
||||||
undefined ->
|
unauthorized ->
|
||||||
{401,
|
{401,
|
||||||
[{"WWW-Authenticate", "basic realm=\"ejabberd\""}],
|
[{"WWW-Authenticate", "basic realm=\"ejabberd\""}],
|
||||||
ejabberd_web:make_xhtml([{xmlelement, "h1", [],
|
ejabberd_web:make_xhtml([{xmlelement, "h1", [],
|
||||||
|
@ -113,7 +113,7 @@ process_get({_, true},
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
undefined
|
unauthorized
|
||||||
end,
|
end,
|
||||||
case US of
|
case US of
|
||||||
{User, Server} ->
|
{User, Server} ->
|
||||||
|
@ -126,7 +126,7 @@ process_get({_, true},
|
||||||
global, Request#request{path = RPath,
|
global, Request#request{path = RPath,
|
||||||
us = US})
|
us = US})
|
||||||
end;
|
end;
|
||||||
undefined ->
|
unauthorized ->
|
||||||
{401,
|
{401,
|
||||||
[{"WWW-Authenticate", "basic realm=\"ejabberd\""}],
|
[{"WWW-Authenticate", "basic realm=\"ejabberd\""}],
|
||||||
ejabberd_web:make_xhtml([{xmlelement, "h1", [],
|
ejabberd_web:make_xhtml([{xmlelement, "h1", [],
|
||||||
|
|
|
@ -95,7 +95,7 @@ make_xhtml(Els, global, Lang) ->
|
||||||
[?XAE("div",
|
[?XAE("div",
|
||||||
[{"id", "copyright"}],
|
[{"id", "copyright"}],
|
||||||
[?XCT("p",
|
[?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",
|
[?XAE("div",
|
||||||
[{"id", "copyright"}],
|
[{"id", "copyright"}],
|
||||||
[?XCT("p",
|
[?XCT("p",
|
||||||
"ejabberd (c) 2002-2005 Alexey Shchepin, 2004-2005 Process One")
|
"ejabberd (c) 2002-2006 Alexey Shchepin, 2004-2006 Process One")
|
||||||
])])])
|
])])])
|
||||||
]}}.
|
]}}.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user