]> granicus.if.org Git - ejabberd/commit
Use cache for authentication backends
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Thu, 11 May 2017 11:37:21 +0000 (14:37 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Thu, 11 May 2017 11:37:21 +0000 (14:37 +0300)
commit633b68db1130c81551b063f3aa15d599b0d355e5
treedf2f0be4b75b001e8e47d1778e8e01637a9dfbcd
parente8905257886423d8332db50b1ea902b0500a33a2
Use cache for authentication backends

The commit introduces the following API incompatibilities:

In ejabberd_auth.erl:
* dirty_get_registered_users/0 is renamed to get_users/0
* get_vh_registered_users/1 is renamed to get_users/1
* get_vh_registered_users/2 is renamed to get_users/2
* get_vh_registered_users_number/1 is renamed to count_users/1
* get_vh_registered_users_number/2 is renamed to count_users/2

In ejabberd_auth callbacks
* plain_password_required/0 is replaced by plain_password_required/1
  where the argument is a virtual host
* store_type/0 is replaced by store_type/1 where the argument is
  a virtual host
* set_password/3 is now an optional callback
* remove_user/3 callback is no longer needed
* remove_user/2 now should return `ok | {error, atom()}`
* is_user_exists/2 now must only be implemented for backends
  with `external` store type
* check_password/6 is no longer needed
* check_password/4 now must only be implemented for backends
  with `external` store type
* try_register/3 is now an optional callback and should return
  `ok | {error, atom()}`
* dirty_get_registered_users/0 is no longer needed
* get_vh_registered_users/1 is no longer needed
* get_vh_registered_users/2 is renamed to get_users/2
* get_vh_registered_users_number/1 is no longer needed
* get_vh_registered_users_number/2 is renamed to count_users/2
* get_password_s/2 is no longer needed
* get_password/2 now must only be implemented for backends with
  `plain` or `scram` store type

Additionally, the commit introduces two new callbacks:
* use_cache/1 where the argument is a virtual host
* cache_nodes/1 where the argument is a virtual host

New options are also introduced: `auth_use_cache`, `auth_cache_missed`,
`auth_cache_life_time` and `auth_cache_size`.
23 files changed:
rebar.config
src/cyrsasl_scram.erl
src/ejabberd_admin.erl
src/ejabberd_auth.erl
src/ejabberd_auth_anonymous.erl
src/ejabberd_auth_external.erl
src/ejabberd_auth_ldap.erl
src/ejabberd_auth_mnesia.erl
src/ejabberd_auth_pam.erl
src/ejabberd_auth_riak.erl
src/ejabberd_auth_sql.erl
src/ejabberd_piefxis.erl
src/ejabberd_web_admin.erl
src/extauth.erl
src/mod_admin_extra.erl
src/mod_announce.erl
src/mod_configure.erl
src/mod_register.erl
src/mod_register_web.erl
src/mod_shared_roster.erl
src/mod_stats.erl
src/prosody2ejabberd.erl
test/suite.erl