aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_auth_pam.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_auth_pam.erl')
-rw-r--r--src/ejabberd_auth_pam.erl110
1 files changed, 55 insertions, 55 deletions
diff --git a/src/ejabberd_auth_pam.erl b/src/ejabberd_auth_pam.erl
index 29752ba8d..a1400fe8e 100644
--- a/src/ejabberd_auth_pam.erl
+++ b/src/ejabberd_auth_pam.erl
@@ -24,102 +24,102 @@
%%%
%%%-------------------------------------------------------------------
-module(ejabberd_auth_pam).
+
-author('xram@jabber.ru').
-%% External exports
--export([start/1,
- set_password/3,
- check_password/3,
- check_password/5,
- try_register/3,
- dirty_get_registered_users/0,
- get_vh_registered_users/1,
- get_password/2,
- get_password_s/2,
- is_user_exists/2,
- remove_user/2,
- remove_user/3,
- store_type/0,
- plain_password_required/0
- ]).
+-behaviour(ejabberd_auth).
+%% External exports
%%====================================================================
%% API
%%====================================================================
+-export([start/1, set_password/3, check_password/3,
+ check_password/5, try_register/3,
+ dirty_get_registered_users/0, get_vh_registered_users/1,
+ get_vh_registered_users/2, get_vh_registered_users_number/1,
+ get_vh_registered_users_number/2,
+ get_password/2, get_password_s/2, is_user_exists/2,
+ remove_user/2, remove_user/3, store_type/0,
+ plain_password_required/0]).
+
start(_Host) ->
case epam:start() of
- {ok, _} -> ok;
- {error,{already_started, _}} -> ok;
- Err -> Err
+ {ok, _} -> ok;
+ {error, {already_started, _}} -> ok;
+ Err -> Err
end.
set_password(_User, _Server, _Password) ->
{error, not_allowed}.
-check_password(User, Server, Password, _Digest, _DigestGen) ->
+check_password(User, Server, Password, _Digest,
+ _DigestGen) ->
check_password(User, Server, Password).
check_password(User, Host, Password) ->
Service = get_pam_service(Host),
UserInfo = case get_pam_userinfotype(Host) of
- username -> User;
- jid -> User++"@"++Host
- end,
- case catch epam:authenticate(Service, UserInfo, Password) of
- true -> true;
- _ -> false
+ username -> User;
+ jid -> <<User/binary, "@", Host/binary>>
+ end,
+ case catch epam:authenticate(Service, UserInfo,
+ Password)
+ of
+ true -> true;
+ _ -> false
end.
try_register(_User, _Server, _Password) ->
{error, not_allowed}.
-dirty_get_registered_users() ->
- [].
+dirty_get_registered_users() -> [].
+
+get_vh_registered_users(_Host) -> [].
+
+get_vh_registered_users(_Host, _) -> [].
-get_vh_registered_users(_Host) ->
- [].
+get_vh_registered_users_number(_Host) -> 0.
-get_password(_User, _Server) ->
- false.
+get_vh_registered_users_number(_Host, _) -> 0.
-get_password_s(_User, _Server) ->
- "".
+get_password(_User, _Server) -> false.
+
+get_password_s(_User, _Server) -> <<"">>.
%% @spec (User, Server) -> true | false | {error, Error}
%% TODO: Improve this function to return an error instead of 'false' when connection to PAM failed
is_user_exists(User, Host) ->
Service = get_pam_service(Host),
UserInfo = case get_pam_userinfotype(Host) of
- username -> User;
- jid -> User++"@"++Host
- end,
+ username -> User;
+ jid -> <<User/binary, "@", Host/binary>>
+ end,
case catch epam:acct_mgmt(Service, UserInfo) of
- true -> true;
- _ -> false
+ true -> true;
+ _ -> false
end.
-remove_user(_User, _Server) ->
- {error, not_allowed}.
+remove_user(_User, _Server) -> {error, not_allowed}.
-remove_user(_User, _Server, _Password) ->
- not_allowed.
+remove_user(_User, _Server, _Password) -> not_allowed.
-plain_password_required() ->
- true.
+plain_password_required() -> true.
-store_type() ->
- external.
+store_type() -> external.
%%====================================================================
%% Internal functions
%%====================================================================
get_pam_service(Host) ->
- case ejabberd_config:get_local_option({pam_service, Host}) of
- undefined -> "ejabberd";
- Service -> Service
- end.
+ ejabberd_config:get_local_option(
+ {pam_service, Host},
+ fun iolist_to_binary/1,
+ <<"ejabberd">>).
+
get_pam_userinfotype(Host) ->
- case ejabberd_config:get_local_option({pam_userinfotype, Host}) of
- undefined -> username;
- Type -> Type
- end.
+ ejabberd_config:get_local_option(
+ {pam_userinfotype, Host},
+ fun(username) -> username;
+ (jid) -> jid
+ end,
+ username).