"Fossies" - the Fresh Open Source Software Archive 
Member "jitsi-meet-7315/resources/prosody-plugins/mod_auth_jitsi-anonymous.lua" (2 Jun 2023, 2061 Bytes) of package /linux/misc/jitsi-meet-7315.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Lua source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 -- Anonymous authentication with extras:
2 -- * session resumption
3 -- Copyright (C) 2021-present 8x8, Inc.
4
5 local generate_random_id = require "util.id".medium;
6 local new_sasl = require "util.sasl".new;
7 local sasl = require "util.sasl";
8 local sessions = prosody.full_sessions;
9
10 -- define auth provider
11 local provider = {};
12
13 function provider.test_password(username, password)
14 return nil, "Password based auth not supported";
15 end
16
17 function provider.get_password(username)
18 return nil;
19 end
20
21 function provider.set_password(username, password)
22 return nil, "Set password not supported";
23 end
24
25 function provider.user_exists(username)
26 return nil;
27 end
28
29 function provider.create_user(username, password)
30 return nil;
31 end
32
33 function provider.delete_user(username)
34 return nil;
35 end
36
37 function provider.get_sasl_handler(session)
38 -- Custom session matching so we can resume session even with randomly
39 -- generated user IDs.
40 local function get_username(self, message)
41 if (session.previd ~= nil) then
42 for _, session1 in pairs(sessions) do
43 if (session1.resumption_token == session.previd) then
44 self.username = session1.username;
45 break;
46 end
47 end
48 else
49 self.username = message;
50 end
51
52 return true;
53 end
54
55 return new_sasl(module.host, { anonymous = get_username });
56 end
57
58 module:provides("auth", provider);
59
60 local function anonymous(self, message)
61 -- Same as the vanilla anonymous auth plugin
62 local username = generate_random_id():lower();
63
64 -- This calls the handler created in 'provider.get_sasl_handler(session)'
65 local result, err, msg = self.profile.anonymous(self, username, self.realm);
66
67 if result == true then
68 if (self.username == nil) then
69 -- Session was not resumed
70 self.username = username;
71 end
72 return "success";
73 else
74 return "failure", err, msg;
75 end
76 end
77
78 sasl.registerMechanism("ANONYMOUS", {"anonymous"}, anonymous);