1 |
|
-module(ejabberd_auth_anonymous_cets). |
2 |
|
|
3 |
|
-behaviour(ejabberd_auth_anonymous_backend). |
4 |
|
|
5 |
|
-export([init/1, stop/1, does_anonymous_user_exist/2, add_connection/3, remove_connection/3]). |
6 |
|
|
7 |
|
-spec init(mongooseim:host_type()) -> ok. |
8 |
|
init(HostType) -> |
9 |
30 |
Tab = table_name(HostType), |
10 |
30 |
cets:start(Tab, #{type => bag}), |
11 |
30 |
cets_discovery:add_table(mongoose_cets_discovery, Tab), |
12 |
30 |
ok. |
13 |
|
|
14 |
|
-spec does_anonymous_user_exist(mongooseim:host_type(), jid:simple_bare_jid()) -> boolean(). |
15 |
|
does_anonymous_user_exist(HostType, US) -> |
16 |
17 |
Tab = table_name(HostType), |
17 |
17 |
[] =/= ets:lookup(Tab, US). |
18 |
|
|
19 |
|
-spec add_connection(mongooseim:host_type(), ejabberd_sm:sid(), jid:simple_bare_jid()) -> ok. |
20 |
|
add_connection(HostType, SID, US) -> |
21 |
4 |
Tab = table_name(HostType), |
22 |
4 |
cets:insert(Tab, {US, SID}). |
23 |
|
|
24 |
|
-spec remove_connection(mongooseim:host_type(), ejabberd_sm:sid(), jid:simple_bare_jid()) -> ok. |
25 |
|
remove_connection(HostType, SID, US) -> |
26 |
4 |
Tab = table_name(HostType), |
27 |
4 |
cets:delete_object(Tab, {US, SID}). |
28 |
|
|
29 |
|
-spec stop(mongooseim:host_type()) -> ok. |
30 |
|
stop(HostType) -> |
31 |
:-( |
Tab = table_name(HostType), |
32 |
:-( |
cets_discovery:delete_table(mongoose_cets_discovery, Tab), |
33 |
:-( |
cets:stop(Tab), |
34 |
:-( |
ok. |
35 |
|
|
36 |
|
table_name(HostType) -> |
37 |
55 |
binary_to_atom(<<"cets_auth_anonymous_", HostType/binary>>). |