您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

mod_auth_jitsi-anonymous.lua 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. -- Anonymous authentication with extras:
  2. -- * session resumption
  3. -- Copyright (C) 2021-present 8x8, Inc.
  4. local generate_random_id = require "util.id".medium;
  5. local new_sasl = require "util.sasl".new;
  6. local sasl = require "util.sasl";
  7. local sessions = prosody.full_sessions;
  8. -- define auth provider
  9. local provider = {};
  10. function provider.test_password(username, password)
  11. return nil, "Password based auth not supported";
  12. end
  13. function provider.get_password(username)
  14. return nil;
  15. end
  16. function provider.set_password(username, password)
  17. return nil, "Set password not supported";
  18. end
  19. function provider.user_exists(username)
  20. return nil;
  21. end
  22. function provider.create_user(username, password)
  23. return nil;
  24. end
  25. function provider.delete_user(username)
  26. return nil;
  27. end
  28. function provider.get_sasl_handler(session)
  29. -- Custom session matching so we can resume sesssion even with randomly
  30. -- generrated user IDs.
  31. local function get_username(self, message)
  32. if (session.previd ~= nil) then
  33. for _, session1 in pairs(sessions) do
  34. if (session1.resumption_token == session.previd) then
  35. self.username = session1.username;
  36. break;
  37. end
  38. end
  39. else
  40. self.username = message;
  41. end
  42. return true;
  43. end
  44. return new_sasl(module.host, { anonymous = get_username });
  45. end
  46. module:provides("auth", provider);
  47. local function anonymous(self, message)
  48. -- Same as the vanilla anonymous auth plugin
  49. local username = generate_random_id():lower();
  50. -- This calls the handler created in 'provider.get_sasl_handler(session)'
  51. local result, err, msg = self.profile.anonymous(self, username, self.realm);
  52. if result == true then
  53. if (self.username == nil) then
  54. -- Session was not resumed
  55. self.username = username;
  56. end
  57. return "success";
  58. else
  59. return "failure", err, msg;
  60. end
  61. end
  62. sasl.registerMechanism("ANONYMOUS", {"anonymous"}, anonymous);