24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-24 22:25:47 +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,15 +142,16 @@ 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.
%% Remove an anonymous user from the anonymous users table %% Remove an anonymous user from the anonymous users table

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,71 +62,75 @@ 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; Username = ejabberd_odbc:escape(LUser),
LUser -> LServer = exmpp_stringprep:nameprep(Server),
Username = ejabberd_odbc:escape(LUser), case catch odbc_queries:get_password(LServer, Username) of
LServer = jlib:nameprep(Server), {selected, ["password"], [{Password}]} ->
case catch odbc_queries:get_password(LServer, Username) of Password /= "";
{selected, ["password"], [{Password}]} -> _ ->
Password /= ""; false
_ -> end
false catch
end _ ->
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; Username = ejabberd_odbc:escape(LUser),
LUser -> LServer = exmpp_stringprep:nameprep(Server),
Username = ejabberd_odbc:escape(LUser), case catch odbc_queries:get_password(LServer, Username) of
LServer = jlib:nameprep(Server), {selected, ["password"], [{Passwd}]} ->
case catch odbc_queries:get_password(LServer, Username) of DigRes = if
{selected, ["password"], [{Passwd}]} -> Digest /= "" ->
DigRes = if Digest == sha:sha(StreamID ++ Passwd);
Digest /= "" -> true ->
Digest == sha:sha(StreamID ++ Passwd); false
true -> end,
false if DigRes ->
end, true;
if DigRes -> true ->
true; (Passwd == Password) and (Password /= "")
true -> end;
(Passwd == Password) and (Password /= "") _ ->
end; false
_ -> end
false catch
end _ ->
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}; Username = ejabberd_odbc:escape(LUser),
LUser -> Pass = ejabberd_odbc:escape(Password),
Username = ejabberd_odbc:escape(LUser), LServer = exmpp_stringprep:nameprep(Server),
Pass = ejabberd_odbc:escape(Password), catch odbc_queries:set_password_t(LServer, Username, Pass)
LServer = jlib:nameprep(Server), catch
catch odbc_queries:set_password_t(LServer, Username, Pass) _ ->
{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}; Username = ejabberd_odbc:escape(LUser),
LUser -> Pass = ejabberd_odbc:escape(Password),
Username = ejabberd_odbc:escape(LUser), LServer = exmpp_stringprep:nameprep(Server),
Pass = ejabberd_odbc:escape(Password), case catch odbc_queries:add_user(LServer, Username, Pass) of
LServer = jlib:nameprep(Server), {updated, 1} ->
case catch odbc_queries:add_user(LServer, Username, Pass) of {atomic, ok};
{updated, 1} -> _ ->
{atomic, ok}; {atomic, exists}
_ -> end
{atomic, exists} catch
end _ ->
{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,84 +177,89 @@ 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; Username = ejabberd_odbc:escape(LUser),
LUser -> LServer = exmpp_stringprep:nameprep(Server),
Username = ejabberd_odbc:escape(LUser), case catch odbc_queries:get_password(LServer, Username) of
LServer = jlib:nameprep(Server), {selected, ["password"], [{Password}]} ->
case catch odbc_queries:get_password(LServer, Username) of Password;
{selected, ["password"], [{Password}]} -> _ ->
Password; false
_ -> end
false catch
end _ ->
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),
""; Username = ejabberd_odbc:escape(LUser),
LUser -> LServer = exmpp_stringprep:nameprep(Server),
Username = ejabberd_odbc:escape(LUser), case catch odbc_queries:get_password(LServer, Username) of
LServer = jlib:nameprep(Server), {selected, ["password"], [{Password}]} ->
case catch odbc_queries:get_password(LServer, Username) of Password;
{selected, ["password"], [{Password}]} -> _ ->
Password; ""
_ -> end
"" catch
end _ ->
""
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; Username = ejabberd_odbc:escape(LUser),
LUser -> LServer = exmpp_stringprep:nameprep(Server),
Username = ejabberd_odbc:escape(LUser), case catch odbc_queries:get_password(LServer, Username) of
LServer = jlib:nameprep(Server), {selected, ["password"], [{_Password}]} ->
case catch odbc_queries:get_password(LServer, Username) of true;
{selected, ["password"], [{_Password}]} -> _ ->
true; false
_ -> end
false catch
end _ ->
false
end. end.
remove_user(User, Server) -> remove_user(User, Server) ->
case jlib:nodeprep(User) of try
error -> LUser = exmpp_stringprep:nodeprep(User),
error; Username = ejabberd_odbc:escape(LUser),
LUser -> LServer = exmpp_stringprep:nameprep(Server),
Username = ejabberd_odbc:escape(LUser), catch odbc_queries:del_user(LServer, Username),
LServer = jlib:nameprep(Server), ejabberd_hooks:run(remove_user, exmpp_stringprep:nameprep(Server),
catch odbc_queries:del_user(LServer, Username), [User, Server])
ejabberd_hooks:run(remove_user, jlib:nameprep(Server), catch
[User, Server]) _ ->
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; Username = ejabberd_odbc:escape(LUser),
LUser -> Pass = ejabberd_odbc:escape(Password),
Username = ejabberd_odbc:escape(LUser), LServer = exmpp_stringprep:nameprep(Server),
Pass = ejabberd_odbc:escape(Password), F = fun() ->
LServer = jlib:nameprep(Server), Result = odbc_queries:del_user_return_password(
F = fun() -> LServer, Username, Pass),
Result = odbc_queries:del_user_return_password( case Result of
LServer, Username, Pass), {selected, ["password"], [{Password}]} ->
case Result of ejabberd_hooks:run(remove_user, exmpp_stringprep:nameprep(Server),
{selected, ["password"], [{Password}]} -> [User, Server]),
ejabberd_hooks:run(remove_user, jlib:nameprep(Server), ok;
[User, Server]), {selected, ["password"], []} ->
ok; not_exists;
{selected, ["password"], []} -> _ ->
not_exists; not_allowed
_ -> end
not_allowed end,
end {atomic, Result} = odbc_queries:sql_transaction(LServer, F),
end, Result
{atomic, Result} = odbc_queries:sql_transaction(LServer, F), catch
Result _ ->
error
end. end.