mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-14 22:00:16 +02:00
Implement the mod_irc option default_encoding, it was already documented
Related: http://www.ejabberd.im/node/4270#comment-56609 http://www.ejabberd.im/node/4270#comment-56780
This commit is contained in:
parent
2d59efb515
commit
184ec38510
|
@ -330,7 +330,7 @@ do_route1(Host, ServerHost, From, To, Packet) ->
|
||||||
[] ->
|
[] ->
|
||||||
?DEBUG("open new connection~n", []),
|
?DEBUG("open new connection~n", []),
|
||||||
{Username, Encoding, Port, Password} = get_connection_params(
|
{Username, Encoding, Port, Password} = get_connection_params(
|
||||||
Host, From, Server),
|
Host, ServerHost, From, Server),
|
||||||
ConnectionUsername =
|
ConnectionUsername =
|
||||||
case Packet of
|
case Packet of
|
||||||
%% If the user tries to join a
|
%% If the user tries to join a
|
||||||
|
@ -535,6 +535,7 @@ get_form(Host, From, [], Lang) ->
|
||||||
#jid{user = User, server = Server,
|
#jid{user = User, server = Server,
|
||||||
luser = LUser, lserver = LServer} = From,
|
luser = LUser, lserver = LServer} = From,
|
||||||
US = {LUser, LServer},
|
US = {LUser, LServer},
|
||||||
|
DefaultEncoding = get_default_encoding(Host),
|
||||||
Customs =
|
Customs =
|
||||||
case catch mnesia:dirty_read({irc_custom, {US, Host}}) of
|
case catch mnesia:dirty_read({irc_custom, {US, Host}}) of
|
||||||
{'EXIT', _Reason} ->
|
{'EXIT', _Reason} ->
|
||||||
|
@ -587,7 +588,7 @@ get_form(Host, From, [], Lang) ->
|
||||||
"'{\"irc server\", \"encoding\", port, \"password\"}'. "
|
"'{\"irc server\", \"encoding\", port, \"password\"}'. "
|
||||||
"By default this service use \"~s\" encoding, port ~p, "
|
"By default this service use \"~s\" encoding, port ~p, "
|
||||||
"empty password."),
|
"empty password."),
|
||||||
[?DEFAULT_IRC_ENCODING, ?DEFAULT_IRC_PORT]))}]}]},
|
[DefaultEncoding, ?DEFAULT_IRC_PORT]))}]}]},
|
||||||
{xmlelement, "field", [{"type", "fixed"}],
|
{xmlelement, "field", [{"type", "fixed"}],
|
||||||
[{xmlelement, "value", [],
|
[{xmlelement, "value", [],
|
||||||
[{xmlcdata,
|
[{xmlcdata,
|
||||||
|
@ -662,15 +663,30 @@ set_form(_Host, _, _, _Lang, _XData) ->
|
||||||
{error, ?ERR_SERVICE_UNAVAILABLE}.
|
{error, ?ERR_SERVICE_UNAVAILABLE}.
|
||||||
|
|
||||||
|
|
||||||
|
%% Host = "irc.example.com"
|
||||||
|
%% ServerHost = "example.com"
|
||||||
get_connection_params(Host, From, IRCServer) ->
|
get_connection_params(Host, From, IRCServer) ->
|
||||||
|
[_ | HostTail] = string:tokens(Host, "."),
|
||||||
|
ServerHost = string:join(HostTail, "."),
|
||||||
|
get_connection_params(Host, ServerHost, From, IRCServer).
|
||||||
|
|
||||||
|
get_default_encoding(ServerHost) ->
|
||||||
|
Result = gen_mod:get_module_opt(
|
||||||
|
ServerHost, ?MODULE, default_encoding,
|
||||||
|
?DEFAULT_IRC_ENCODING),
|
||||||
|
?INFO_MSG("The default_encoding configured for host ~p is: ~p~n", [ServerHost, Result]),
|
||||||
|
Result.
|
||||||
|
|
||||||
|
get_connection_params(Host, ServerHost, From, IRCServer) ->
|
||||||
#jid{user = User, server = _Server,
|
#jid{user = User, server = _Server,
|
||||||
luser = LUser, lserver = LServer} = From,
|
luser = LUser, lserver = LServer} = From,
|
||||||
US = {LUser, LServer},
|
US = {LUser, LServer},
|
||||||
|
DefaultEncoding = get_default_encoding(ServerHost),
|
||||||
case catch mnesia:dirty_read({irc_custom, {US, Host}}) of
|
case catch mnesia:dirty_read({irc_custom, {US, Host}}) of
|
||||||
{'EXIT', _Reason} ->
|
{'EXIT', _Reason} ->
|
||||||
{User, ?DEFAULT_IRC_ENCODING, ?DEFAULT_IRC_PORT, ""};
|
{User, DefaultEncoding, ?DEFAULT_IRC_PORT, ""};
|
||||||
[] ->
|
[] ->
|
||||||
{User, ?DEFAULT_IRC_ENCODING, ?DEFAULT_IRC_PORT, ""};
|
{User, DefaultEncoding, ?DEFAULT_IRC_PORT, ""};
|
||||||
[#irc_custom{data = Data}] ->
|
[#irc_custom{data = Data}] ->
|
||||||
Username = xml:get_attr_s(username, Data),
|
Username = xml:get_attr_s(username, Data),
|
||||||
{NewUsername, NewEncoding, NewPort, NewPassword} =
|
{NewUsername, NewEncoding, NewPort, NewPassword} =
|
||||||
|
@ -682,7 +698,7 @@ get_connection_params(Host, From, IRCServer) ->
|
||||||
{value, {_, Encoding}} ->
|
{value, {_, Encoding}} ->
|
||||||
{Username, Encoding, ?DEFAULT_IRC_PORT, ""};
|
{Username, Encoding, ?DEFAULT_IRC_PORT, ""};
|
||||||
_ ->
|
_ ->
|
||||||
{Username, ?DEFAULT_IRC_ENCODING, ?DEFAULT_IRC_PORT, ""}
|
{Username, DefaultEncoding, ?DEFAULT_IRC_PORT, ""}
|
||||||
end,
|
end,
|
||||||
{NewUsername,
|
{NewUsername,
|
||||||
NewEncoding,
|
NewEncoding,
|
||||||
|
@ -881,7 +897,7 @@ generate_connection_params_fields(Lang, [ConnectionParams | ConnectionsParams],
|
||||||
generate_connection_params_field(Lang, Server, Encoding, Port, Password, Number) ->
|
generate_connection_params_field(Lang, Server, Encoding, Port, Password, Number) ->
|
||||||
EncodingUsed = case Encoding of
|
EncodingUsed = case Encoding of
|
||||||
[] ->
|
[] ->
|
||||||
?DEFAULT_IRC_ENCODING;
|
get_default_encoding(Server);
|
||||||
_ ->
|
_ ->
|
||||||
Encoding
|
Encoding
|
||||||
end,
|
end,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user