24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-28 22:52:27 +02:00

Convert to exmpp.

SVN Revision: 1422
This commit is contained in:
Jean-Sébastien Pédron 2008-07-09 09:16:03 +00:00
parent d5aa4be7e5
commit 7ca5bebab3
6 changed files with 164 additions and 148 deletions

View File

@ -3,6 +3,10 @@
* src/ejabberd_c2s.erl: Convert #xmlelement returned by the * src/ejabberd_c2s.erl: Convert #xmlelement returned by the
'c2s_stream_features' hook to #xmlel. 'c2s_stream_features' hook to #xmlel.
* src/ejabberd_auth.erl, src/ejabberd_auth_internal.erl,
src/ejabberd_auth_odbc.erl, src/ejabberd_auth_ldap.erl,
src/ejabberd_auth_anonymous.erl: Convert to exmpp.
2008-07-08 Jean-Sébastien Pédron <js.pedron@meetic-corp.com> 2008-07-08 Jean-Sébastien Pédron <js.pedron@meetic-corp.com>
* src/cyrsasl.erl, src/cyrsasl_anonymous.erl, src/cyrsasl_digest.erl, * src/cyrsasl.erl, src/cyrsasl_anonymous.erl, src/cyrsasl_digest.erl,

View File

@ -146,7 +146,7 @@ try_register(User, Server, Password) ->
true -> true ->
{atomic, exists}; {atomic, exists};
false -> false ->
case lists:member(jlib:nameprep(Server), ?MYHOSTS) of case lists:member(exmpp_stringprep:nameprep(Server), ?MYHOSTS) of
true -> true ->
lists:foldl( lists:foldl(
fun(_M, {atomic, ok} = Res) -> fun(_M, {atomic, ok} = Res) ->
@ -286,7 +286,7 @@ auth_modules() ->
%% Return the list of authenticated modules for a given host %% Return the list of authenticated modules for a given host
auth_modules(Server) -> auth_modules(Server) ->
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
Method = ejabberd_config:get_local_option({auth_method, LServer}), Method = ejabberd_config:get_local_option({auth_method, LServer}),
Methods = if Methods = if
Method == undefined -> []; Method == undefined -> [];

View File

@ -122,8 +122,8 @@ allow_multiple_connections(Host) ->
%% Check if user exist in the anonymus database %% Check if user exist in the anonymus database
anonymous_user_exist(User, Server) -> anonymous_user_exist(User, Server) ->
LUser = jlib:nodeprep(User), LUser = exmpp_stringprep:nodeprep(User),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
US = {LUser, LServer}, US = {LUser, LServer},
case catch mnesia:dirty_read({anonymous, US}) of case catch mnesia:dirty_read({anonymous, US}) of
[] -> [] ->
@ -142,14 +142,15 @@ remove_connection(SID, LUser, LServer) ->
%% Register connection %% Register connection
register_connection(SID, #jid{luser = LUser, lserver = LServer}, Info) -> register_connection(SID, #jid{luser = LUser, lserver = LServer}, Info) ->
AuthModule = xml:get_attr_s(auth_module, Info), case proplists:get_value(auth_module, Info) of
case AuthModule == ?MODULE of undefined ->
true -> ok;
?MODULE ->
US = {LUser, LServer}, US = {LUser, LServer},
mnesia:sync_dirty( mnesia:sync_dirty(
fun() -> mnesia:write(#anonymous{us = US, sid=SID}) fun() -> mnesia:write(#anonymous{us = US, sid=SID})
end); end);
false -> _ ->
ok ok
end. end.

View File

@ -67,8 +67,8 @@ plain_password_required() ->
false. false.
check_password(User, Server, Password) -> check_password(User, Server, Password) ->
LUser = jlib:nodeprep(User), LUser = exmpp_stringprep:nodeprep(User),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
US = {LUser, LServer}, US = {LUser, LServer},
case catch mnesia:dirty_read({passwd, US}) of case catch mnesia:dirty_read({passwd, US}) of
[#passwd{password = Password}] -> [#passwd{password = Password}] ->
@ -78,8 +78,8 @@ check_password(User, Server, Password) ->
end. end.
check_password(User, Server, Password, StreamID, Digest) -> check_password(User, Server, Password, StreamID, Digest) ->
LUser = jlib:nodeprep(User), LUser = exmpp_stringprep:nodeprep(User),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
US = {LUser, LServer}, US = {LUser, LServer},
case catch mnesia:dirty_read({passwd, US}) of case catch mnesia:dirty_read({passwd, US}) of
[#passwd{password = Passwd}] -> [#passwd{password = Passwd}] ->
@ -99,8 +99,8 @@ check_password(User, Server, Password, StreamID, Digest) ->
end. end.
set_password(User, Server, Password) -> set_password(User, Server, Password) ->
LUser = jlib:nodeprep(User), LUser = exmpp_stringprep:nodeprep(User),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
US = {LUser, LServer}, US = {LUser, LServer},
if if
(LUser == error) or (LServer == error) -> (LUser == error) or (LServer == error) ->
@ -114,8 +114,8 @@ set_password(User, Server, Password) ->
end. end.
try_register(User, Server, Password) -> try_register(User, Server, Password) ->
LUser = jlib:nodeprep(User), LUser = exmpp_stringprep:nodeprep(User),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
US = {LUser, LServer}, US = {LUser, LServer},
if if
(LUser == error) or (LServer == error) -> (LUser == error) or (LServer == error) ->
@ -139,7 +139,7 @@ dirty_get_registered_users() ->
mnesia:dirty_all_keys(passwd). mnesia:dirty_all_keys(passwd).
get_vh_registered_users(Server) -> get_vh_registered_users(Server) ->
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
mnesia:dirty_select( mnesia:dirty_select(
passwd, passwd,
[{#passwd{us = '$1', _ = '_'}, [{#passwd{us = '$1', _ = '_'},

View File

@ -238,9 +238,11 @@ get_vh_registered_users_ldap(Server) ->
{User, UIDFormat} -> {User, UIDFormat} ->
case eldap_utils:get_user_part(User, UIDFormat) of case eldap_utils:get_user_part(User, UIDFormat) of
{ok, U} -> {ok, U} ->
case jlib:nodeprep(U) of try
error -> []; [{exmpp_stringprep:nodeprep(U), exmpp_stringprep:nameprep(Server)}]
LU -> [{LU, jlib:nameprep(Server)}] catch
_ ->
[]
end; end;
_ -> [] _ -> []
end end

View File

@ -62,27 +62,26 @@ plain_password_required() ->
false. false.
check_password(User, Server, Password) -> check_password(User, Server, Password) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
false;
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:get_password(LServer, Username) of case catch odbc_queries:get_password(LServer, Username) of
{selected, ["password"], [{Password}]} -> {selected, ["password"], [{Password}]} ->
Password /= ""; Password /= "";
_ -> _ ->
false false
end end
catch
_ ->
false
end. end.
check_password(User, Server, Password, StreamID, Digest) -> check_password(User, Server, Password, StreamID, Digest) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringpre:nodeprep(User),
false;
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:get_password(LServer, Username) of case catch odbc_queries:get_password(LServer, Username) of
{selected, ["password"], [{Passwd}]} -> {selected, ["password"], [{Passwd}]} ->
DigRes = if DigRes = if
@ -99,34 +98,39 @@ check_password(User, Server, Password, StreamID, Digest) ->
_ -> _ ->
false false
end end
catch
_ ->
false
end. end.
set_password(User, Server, Password) -> set_password(User, Server, Password) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
{error, invalid_jid};
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
Pass = ejabberd_odbc:escape(Password), Pass = ejabberd_odbc:escape(Password),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
catch odbc_queries:set_password_t(LServer, Username, Pass) catch odbc_queries:set_password_t(LServer, Username, Pass)
catch
_ ->
{error, invalid_jid}
end. end.
try_register(User, Server, Password) -> try_register(User, Server, Password) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
{error, invalid_jid};
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
Pass = ejabberd_odbc:escape(Password), Pass = ejabberd_odbc:escape(Password),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:add_user(LServer, Username, Pass) of case catch odbc_queries:add_user(LServer, Username, Pass) of
{updated, 1} -> {updated, 1} ->
{atomic, ok}; {atomic, ok};
_ -> _ ->
{atomic, exists} {atomic, exists}
end end
catch
_ ->
{error, invalid_jid}
end. end.
dirty_get_registered_users() -> dirty_get_registered_users() ->
@ -137,7 +141,7 @@ dirty_get_registered_users() ->
end, Servers). end, Servers).
get_vh_registered_users(Server) -> get_vh_registered_users(Server) ->
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:list_users(LServer) of case catch odbc_queries:list_users(LServer) of
{selected, ["username"], Res} -> {selected, ["username"], Res} ->
[{U, LServer} || {U} <- Res]; [{U, LServer} || {U} <- Res];
@ -146,7 +150,7 @@ get_vh_registered_users(Server) ->
end. end.
get_vh_registered_users(Server, Opts) -> get_vh_registered_users(Server, Opts) ->
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:list_users(LServer, Opts) of case catch odbc_queries:list_users(LServer, Opts) of
{selected, ["username"], Res} -> {selected, ["username"], Res} ->
[{U, LServer} || {U} <- Res]; [{U, LServer} || {U} <- Res];
@ -155,7 +159,7 @@ get_vh_registered_users(Server, Opts) ->
end. end.
get_vh_registered_users_number(Server) -> get_vh_registered_users_number(Server) ->
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:users_number(LServer) of case catch odbc_queries:users_number(LServer) of
{selected, [_], [{Res}]} -> {selected, [_], [{Res}]} ->
list_to_integer(Res); list_to_integer(Res);
@ -164,7 +168,7 @@ get_vh_registered_users_number(Server) ->
end. end.
get_vh_registered_users_number(Server, Opts) -> get_vh_registered_users_number(Server, Opts) ->
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:users_number(LServer, Opts) of case catch odbc_queries:users_number(LServer, Opts) of
{selected, [_], [{Res}]} -> {selected, [_], [{Res}]} ->
list_to_integer(Res); list_to_integer(Res);
@ -173,76 +177,78 @@ get_vh_registered_users_number(Server, Opts) ->
end. end.
get_password(User, Server) -> get_password(User, Server) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
false;
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:get_password(LServer, Username) of case catch odbc_queries:get_password(LServer, Username) of
{selected, ["password"], [{Password}]} -> {selected, ["password"], [{Password}]} ->
Password; Password;
_ -> _ ->
false false
end end
catch
_ ->
false
end. end.
get_password_s(User, Server) -> get_password_s(User, Server) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
"";
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:get_password(LServer, Username) of case catch odbc_queries:get_password(LServer, Username) of
{selected, ["password"], [{Password}]} -> {selected, ["password"], [{Password}]} ->
Password; Password;
_ -> _ ->
"" ""
end end
catch
_ ->
""
end. end.
is_user_exists(User, Server) -> is_user_exists(User, Server) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
false;
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
case catch odbc_queries:get_password(LServer, Username) of case catch odbc_queries:get_password(LServer, Username) of
{selected, ["password"], [{_Password}]} -> {selected, ["password"], [{_Password}]} ->
true; true;
_ -> _ ->
false false
end end
catch
_ ->
false
end. end.
remove_user(User, Server) -> remove_user(User, Server) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
error;
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
catch odbc_queries:del_user(LServer, Username), catch odbc_queries:del_user(LServer, Username),
ejabberd_hooks:run(remove_user, jlib:nameprep(Server), ejabberd_hooks:run(remove_user, exmpp_stringprep:nameprep(Server),
[User, Server]) [User, Server])
catch
_ ->
error
end. end.
remove_user(User, Server, Password) -> remove_user(User, Server, Password) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
error;
LUser ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
Pass = ejabberd_odbc:escape(Password), Pass = ejabberd_odbc:escape(Password),
LServer = jlib:nameprep(Server), LServer = exmpp_stringprep:nameprep(Server),
F = fun() -> F = fun() ->
Result = odbc_queries:del_user_return_password( Result = odbc_queries:del_user_return_password(
LServer, Username, Pass), LServer, Username, Pass),
case Result of case Result of
{selected, ["password"], [{Password}]} -> {selected, ["password"], [{Password}]} ->
ejabberd_hooks:run(remove_user, jlib:nameprep(Server), ejabberd_hooks:run(remove_user, exmpp_stringprep:nameprep(Server),
[User, Server]), [User, Server]),
ok; ok;
{selected, ["password"], []} -> {selected, ["password"], []} ->
@ -253,4 +259,7 @@ remove_user(User, Server, Password) ->
end, end,
{atomic, Result} = odbc_queries:sql_transaction(LServer, F), {atomic, Result} = odbc_queries:sql_transaction(LServer, F),
Result Result
catch
_ ->
error
end. end.