"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);