Software /
code /
prosody-modules
Comparison
mod_unified_push/mod_unified_push.lua @ 5139:449e4ca4de32
mod_unified_push: Remove dependency on trunk util.jwt (0.12 compat)
This should allow the module to work on 0.12, while preserving expiry checking
(which was not built in to 0.12's util.jwt).
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 10 Jan 2023 16:34:21 +0000 |
parent | 5136:67b2c982bea2 |
child | 5146:a86022d702b2 |
comparison
equal
deleted
inserted
replaced
5138:4511e90d1d08 | 5139:449e4ca4de32 |
---|---|
2 local push_registration_ttl = module:get_option_number("unified_push_registration_ttl", 86400); | 2 local push_registration_ttl = module:get_option_number("unified_push_registration_ttl", 86400); |
3 | 3 |
4 local base64 = require "util.encodings".base64; | 4 local base64 = require "util.encodings".base64; |
5 local datetime = require "util.datetime"; | 5 local datetime = require "util.datetime"; |
6 local id = require "util.id"; | 6 local id = require "util.id"; |
7 local jwt_sign, jwt_verify = require "util.jwt".init("HS256", unified_push_secret); | 7 local jwt = require "util.jwt"; |
8 local st = require "util.stanza"; | 8 local st = require "util.stanza"; |
9 local urlencode = require "util.http".urlencode; | 9 local urlencode = require "util.http".urlencode; |
10 | 10 |
11 local xmlns_up = "http://gultsch.de/xmpp/drafts/unified-push"; | 11 local xmlns_up = "http://gultsch.de/xmpp/drafts/unified-push"; |
12 | 12 |
19 if not s then return nil, "no value provided"; end | 19 if not s then return nil, "no value provided"; end |
20 local d = base64.decode(s); | 20 local d = base64.decode(s); |
21 if not d then return nil, "invalid base64"; end | 21 if not d then return nil, "invalid base64"; end |
22 if #d ~= 32 then return nil, "incorrect decoded length, expected 32"; end | 22 if #d ~= 32 then return nil, "incorrect decoded length, expected 32"; end |
23 return s; | 23 return s; |
24 end | |
25 | |
26 -- COMPAT w/0.12 | |
27 local function jwt_sign(data) | |
28 return jwt.sign(data, unified_push_secret); | |
29 end | |
30 | |
31 -- COMPAT w/0.12: add expiry check | |
32 local function jwt_verify(token) | |
33 local ok, result = jwt.verify(token, unified_push_secret); | |
34 if not ok then | |
35 return ok, result; | |
36 end | |
37 if result.exp and result.exp < os.time() then | |
38 return nil, "token-expired"; | |
39 end | |
40 return ok, result; | |
24 end | 41 end |
25 | 42 |
26 -- Handle incoming registration from XMPP client | 43 -- Handle incoming registration from XMPP client |
27 function handle_register(event) | 44 function handle_register(event) |
28 local origin, stanza = event.origin, event.stanza; | 45 local origin, stanza = event.origin, event.stanza; |