mirror of
https://github.com/processone/ejabberd.git
synced 2024-09-27 14:30:55 +02:00
Convert to exmpp.
SVN Revision: 1422
This commit is contained in:
parent
d5aa4be7e5
commit
7ca5bebab3
@ -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,
|
||||||
|
@ -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 -> [];
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -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', _ = '_'},
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
Loading…
Reference in New Issue
Block a user