annotate misc/sasl/example.lua @ 4579:b305814bd930

mod_muc_dicebot: A thing to roll dice Do you see what happens, Jitsi? Do you see what happens when you make it hard for me to use a proper bot? This is what happens, Jitsi. This is what happens when you meet a stranger in the alps! Ahem. In all seriousness, this is more of a quick hack than anything else. It will look for `.r` in MUC messages and if it finds it, it'll interpret it as an instruction to roll a few dice. Injects the results in the body of the message. Eats the message alive if it is malformed.
author Jonas Schäfer <jonas@wielicki.name>
date Sat, 29 May 2021 15:17:05 +0200
parents 7d2fcc7a15f7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2354
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local method = {}
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local method_mt = { __index = method }
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 -- This should return a set of supported mechanisms
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 function method:mechanisms()
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 return {
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 ["OAUTH-SOMETHING"] = true;
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 }
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 -- Called when a mechanism is selecetd
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 function method:select(mechanism)
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 return mechanism == "OAUTH-SOMETHING";
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 -- Called for each message received
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 function method:process(message)
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 -- parse the message
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 if false then
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 -- To send a SASL challenge:
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 return "challenge", "respond-to-this";
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 if false then
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 -- To fail, send:
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 return "failure", "not-authorized", "Helpful error message here";
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 self.username = "someone";
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 return "success";
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 local function new_sasl()
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 return setmetatable({}, method_mt);
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 function method:clean_clone()
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 return setmetatable({}, method_mt);
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 local provider = {}
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 function provider.get_sasl_handler()
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 return new_sasl();
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 end
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46
7d2fcc7a15f7 Example SASL mechanism implementation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 module:provides("auth", provider);