From 7ca5bebab3e13832ee579150887ff94e96d1b53d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Date: Wed, 9 Jul 2008 09:16:03 +0000 Subject: [PATCH] Convert to exmpp. SVN Revision: 1422 --- ChangeLog | 4 + src/ejabberd_auth.erl | 4 +- src/ejabberd_auth_anonymous.erl | 15 +- src/ejabberd_auth_internal.erl | 18 +-- src/ejabberd_auth_ldap.erl | 8 +- src/ejabberd_auth_odbc.erl | 263 +++++++++++++++++--------------- 6 files changed, 164 insertions(+), 148 deletions(-) diff --git a/ChangeLog b/ChangeLog index 726641487..15b69708f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,10 @@ * src/ejabberd_c2s.erl: Convert #xmlelement returned by the '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 * src/cyrsasl.erl, src/cyrsasl_anonymous.erl, src/cyrsasl_digest.erl, diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl index d6a7e5228..358d44ae0 100644 --- a/src/ejabberd_auth.erl +++ b/src/ejabberd_auth.erl @@ -146,7 +146,7 @@ try_register(User, Server, Password) -> true -> {atomic, exists}; false -> - case lists:member(jlib:nameprep(Server), ?MYHOSTS) of + case lists:member(exmpp_stringprep:nameprep(Server), ?MYHOSTS) of true -> lists:foldl( fun(_M, {atomic, ok} = Res) -> @@ -286,7 +286,7 @@ auth_modules() -> %% Return the list of authenticated modules for a given host auth_modules(Server) -> - LServer = jlib:nameprep(Server), + LServer = exmpp_stringprep:nameprep(Server), Method = ejabberd_config:get_local_option({auth_method, LServer}), Methods = if Method == undefined -> []; diff --git a/src/ejabberd_auth_anonymous.erl b/src/ejabberd_auth_anonymous.erl index 3c5c58fed..8ba4d7336 100644 --- a/src/ejabberd_auth_anonymous.erl +++ b/src/ejabberd_auth_anonymous.erl @@ -122,8 +122,8 @@ allow_multiple_connections(Host) -> %% Check if user exist in the anonymus database anonymous_user_exist(User, Server) -> - LUser = jlib:nodeprep(User), - LServer = jlib:nameprep(Server), + LUser = exmpp_stringprep:nodeprep(User), + LServer = exmpp_stringprep:nameprep(Server), US = {LUser, LServer}, case catch mnesia:dirty_read({anonymous, US}) of [] -> @@ -142,15 +142,16 @@ remove_connection(SID, LUser, LServer) -> %% Register connection register_connection(SID, #jid{luser = LUser, lserver = LServer}, Info) -> - AuthModule = xml:get_attr_s(auth_module, Info), - case AuthModule == ?MODULE of - true -> + case proplists:get_value(auth_module, Info) of + undefined -> + ok; + ?MODULE -> US = {LUser, LServer}, mnesia:sync_dirty( fun() -> mnesia:write(#anonymous{us = US, sid=SID}) end); - false -> - ok + _ -> + ok end. %% Remove an anonymous user from the anonymous users table diff --git a/src/ejabberd_auth_internal.erl b/src/ejabberd_auth_internal.erl index 315cc4620..71d9086d7 100644 --- a/src/ejabberd_auth_internal.erl +++ b/src/ejabberd_auth_internal.erl @@ -67,8 +67,8 @@ plain_password_required() -> false. check_password(User, Server, Password) -> - LUser = jlib:nodeprep(User), - LServer = jlib:nameprep(Server), + LUser = exmpp_stringprep:nodeprep(User), + LServer = exmpp_stringprep:nameprep(Server), US = {LUser, LServer}, case catch mnesia:dirty_read({passwd, US}) of [#passwd{password = Password}] -> @@ -78,8 +78,8 @@ check_password(User, Server, Password) -> end. check_password(User, Server, Password, StreamID, Digest) -> - LUser = jlib:nodeprep(User), - LServer = jlib:nameprep(Server), + LUser = exmpp_stringprep:nodeprep(User), + LServer = exmpp_stringprep:nameprep(Server), US = {LUser, LServer}, case catch mnesia:dirty_read({passwd, US}) of [#passwd{password = Passwd}] -> @@ -99,8 +99,8 @@ check_password(User, Server, Password, StreamID, Digest) -> end. set_password(User, Server, Password) -> - LUser = jlib:nodeprep(User), - LServer = jlib:nameprep(Server), + LUser = exmpp_stringprep:nodeprep(User), + LServer = exmpp_stringprep:nameprep(Server), US = {LUser, LServer}, if (LUser == error) or (LServer == error) -> @@ -114,8 +114,8 @@ set_password(User, Server, Password) -> end. try_register(User, Server, Password) -> - LUser = jlib:nodeprep(User), - LServer = jlib:nameprep(Server), + LUser = exmpp_stringprep:nodeprep(User), + LServer = exmpp_stringprep:nameprep(Server), US = {LUser, LServer}, if (LUser == error) or (LServer == error) -> @@ -139,7 +139,7 @@ dirty_get_registered_users() -> mnesia:dirty_all_keys(passwd). get_vh_registered_users(Server) -> - LServer = jlib:nameprep(Server), + LServer = exmpp_stringprep:nameprep(Server), mnesia:dirty_select( passwd, [{#passwd{us = '$1', _ = '_'}, diff --git a/src/ejabberd_auth_ldap.erl b/src/ejabberd_auth_ldap.erl index e22be1bc9..d576a82fd 100644 --- a/src/ejabberd_auth_ldap.erl +++ b/src/ejabberd_auth_ldap.erl @@ -238,9 +238,11 @@ get_vh_registered_users_ldap(Server) -> {User, UIDFormat} -> case eldap_utils:get_user_part(User, UIDFormat) of {ok, U} -> - case jlib:nodeprep(U) of - error -> []; - LU -> [{LU, jlib:nameprep(Server)}] + try + [{exmpp_stringprep:nodeprep(U), exmpp_stringprep:nameprep(Server)}] + catch + _ -> + [] end; _ -> [] end diff --git a/src/ejabberd_auth_odbc.erl b/src/ejabberd_auth_odbc.erl index 14bd61b94..06ae695ea 100644 --- a/src/ejabberd_auth_odbc.erl +++ b/src/ejabberd_auth_odbc.erl @@ -62,71 +62,75 @@ plain_password_required() -> false. check_password(User, Server, Password) -> - case jlib:nodeprep(User) of - error -> - false; - LUser -> - Username = ejabberd_odbc:escape(LUser), - LServer = jlib:nameprep(Server), - case catch odbc_queries:get_password(LServer, Username) of - {selected, ["password"], [{Password}]} -> - Password /= ""; - _ -> - false - end + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + LServer = exmpp_stringprep:nameprep(Server), + case catch odbc_queries:get_password(LServer, Username) of + {selected, ["password"], [{Password}]} -> + Password /= ""; + _ -> + false + end + catch + _ -> + false end. check_password(User, Server, Password, StreamID, Digest) -> - case jlib:nodeprep(User) of - error -> - false; - LUser -> - Username = ejabberd_odbc:escape(LUser), - LServer = jlib:nameprep(Server), - case catch odbc_queries:get_password(LServer, Username) of - {selected, ["password"], [{Passwd}]} -> - DigRes = if - Digest /= "" -> - Digest == sha:sha(StreamID ++ Passwd); - true -> - false - end, - if DigRes -> - true; - true -> - (Passwd == Password) and (Password /= "") - end; - _ -> - false - end + try + LUser = exmpp_stringpre:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + LServer = exmpp_stringprep:nameprep(Server), + case catch odbc_queries:get_password(LServer, Username) of + {selected, ["password"], [{Passwd}]} -> + DigRes = if + Digest /= "" -> + Digest == sha:sha(StreamID ++ Passwd); + true -> + false + end, + if DigRes -> + true; + true -> + (Passwd == Password) and (Password /= "") + end; + _ -> + false + end + catch + _ -> + false end. set_password(User, Server, Password) -> - case jlib:nodeprep(User) of - error -> - {error, invalid_jid}; - LUser -> - Username = ejabberd_odbc:escape(LUser), - Pass = ejabberd_odbc:escape(Password), - LServer = jlib:nameprep(Server), - catch odbc_queries:set_password_t(LServer, Username, Pass) + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + Pass = ejabberd_odbc:escape(Password), + LServer = exmpp_stringprep:nameprep(Server), + catch odbc_queries:set_password_t(LServer, Username, Pass) + catch + _ -> + {error, invalid_jid} end. try_register(User, Server, Password) -> - case jlib:nodeprep(User) of - error -> - {error, invalid_jid}; - LUser -> - Username = ejabberd_odbc:escape(LUser), - Pass = ejabberd_odbc:escape(Password), - LServer = jlib:nameprep(Server), - case catch odbc_queries:add_user(LServer, Username, Pass) of - {updated, 1} -> - {atomic, ok}; - _ -> - {atomic, exists} - end + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + Pass = ejabberd_odbc:escape(Password), + LServer = exmpp_stringprep:nameprep(Server), + case catch odbc_queries:add_user(LServer, Username, Pass) of + {updated, 1} -> + {atomic, ok}; + _ -> + {atomic, exists} + end + catch + _ -> + {error, invalid_jid} end. dirty_get_registered_users() -> @@ -137,7 +141,7 @@ dirty_get_registered_users() -> end, Servers). get_vh_registered_users(Server) -> - LServer = jlib:nameprep(Server), + LServer = exmpp_stringprep:nameprep(Server), case catch odbc_queries:list_users(LServer) of {selected, ["username"], Res} -> [{U, LServer} || {U} <- Res]; @@ -146,7 +150,7 @@ get_vh_registered_users(Server) -> end. get_vh_registered_users(Server, Opts) -> - LServer = jlib:nameprep(Server), + LServer = exmpp_stringprep:nameprep(Server), case catch odbc_queries:list_users(LServer, Opts) of {selected, ["username"], Res} -> [{U, LServer} || {U} <- Res]; @@ -155,7 +159,7 @@ get_vh_registered_users(Server, Opts) -> end. get_vh_registered_users_number(Server) -> - LServer = jlib:nameprep(Server), + LServer = exmpp_stringprep:nameprep(Server), case catch odbc_queries:users_number(LServer) of {selected, [_], [{Res}]} -> list_to_integer(Res); @@ -164,7 +168,7 @@ get_vh_registered_users_number(Server) -> end. 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 {selected, [_], [{Res}]} -> list_to_integer(Res); @@ -173,84 +177,89 @@ get_vh_registered_users_number(Server, Opts) -> end. get_password(User, Server) -> - case jlib:nodeprep(User) of - error -> - false; - LUser -> - Username = ejabberd_odbc:escape(LUser), - LServer = jlib:nameprep(Server), - case catch odbc_queries:get_password(LServer, Username) of - {selected, ["password"], [{Password}]} -> - Password; - _ -> - false - end + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + LServer = exmpp_stringprep:nameprep(Server), + case catch odbc_queries:get_password(LServer, Username) of + {selected, ["password"], [{Password}]} -> + Password; + _ -> + false + end + catch + _ -> + false end. get_password_s(User, Server) -> - case jlib:nodeprep(User) of - error -> - ""; - LUser -> - Username = ejabberd_odbc:escape(LUser), - LServer = jlib:nameprep(Server), - case catch odbc_queries:get_password(LServer, Username) of - {selected, ["password"], [{Password}]} -> - Password; - _ -> - "" - end + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + LServer = exmpp_stringprep:nameprep(Server), + case catch odbc_queries:get_password(LServer, Username) of + {selected, ["password"], [{Password}]} -> + Password; + _ -> + "" + end + catch + _ -> + "" end. is_user_exists(User, Server) -> - case jlib:nodeprep(User) of - error -> - false; - LUser -> - Username = ejabberd_odbc:escape(LUser), - LServer = jlib:nameprep(Server), - case catch odbc_queries:get_password(LServer, Username) of - {selected, ["password"], [{_Password}]} -> - true; - _ -> - false - end + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + LServer = exmpp_stringprep:nameprep(Server), + case catch odbc_queries:get_password(LServer, Username) of + {selected, ["password"], [{_Password}]} -> + true; + _ -> + false + end + catch + _ -> + false end. remove_user(User, Server) -> - case jlib:nodeprep(User) of - error -> - error; - LUser -> - Username = ejabberd_odbc:escape(LUser), - LServer = jlib:nameprep(Server), - catch odbc_queries:del_user(LServer, Username), - ejabberd_hooks:run(remove_user, jlib:nameprep(Server), - [User, Server]) + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + LServer = exmpp_stringprep:nameprep(Server), + catch odbc_queries:del_user(LServer, Username), + ejabberd_hooks:run(remove_user, exmpp_stringprep:nameprep(Server), + [User, Server]) + catch + _ -> + error end. remove_user(User, Server, Password) -> - case jlib:nodeprep(User) of - error -> - error; - LUser -> - Username = ejabberd_odbc:escape(LUser), - Pass = ejabberd_odbc:escape(Password), - LServer = jlib:nameprep(Server), - F = fun() -> - Result = odbc_queries:del_user_return_password( - LServer, Username, Pass), - case Result of - {selected, ["password"], [{Password}]} -> - ejabberd_hooks:run(remove_user, jlib:nameprep(Server), - [User, Server]), - ok; - {selected, ["password"], []} -> - not_exists; - _ -> - not_allowed - end - end, - {atomic, Result} = odbc_queries:sql_transaction(LServer, F), - Result + try + LUser = exmpp_stringprep:nodeprep(User), + Username = ejabberd_odbc:escape(LUser), + Pass = ejabberd_odbc:escape(Password), + LServer = exmpp_stringprep:nameprep(Server), + F = fun() -> + Result = odbc_queries:del_user_return_password( + LServer, Username, Pass), + case Result of + {selected, ["password"], [{Password}]} -> + ejabberd_hooks:run(remove_user, exmpp_stringprep:nameprep(Server), + [User, Server]), + ok; + {selected, ["password"], []} -> + not_exists; + _ -> + not_allowed + end + end, + {atomic, Result} = odbc_queries:sql_transaction(LServer, F), + Result + catch + _ -> + error end.