Mercurial > prosody-modules
comparison mod_sasl2_bind2/mod_sasl2_bind2.lua @ 5180:6361afcda1a3
mod_sasl2_bind2: Support for SASL handlers forcing a specific resource
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 01 Mar 2023 13:21:29 +0000 |
parents | f2dfbcc676a6 |
children |
comparison
equal
deleted
inserted
replaced
5179:5be04d1b16fb | 5180:6361afcda1a3 |
---|---|
22 end, 1); | 22 end, 1); |
23 | 23 |
24 -- Helper to actually bind a resource to a session | 24 -- Helper to actually bind a resource to a session |
25 | 25 |
26 local function do_bind(session, bind_request) | 26 local function do_bind(session, bind_request) |
27 local resource; | 27 local resource = session.sasl_handler.resource; |
28 | 28 |
29 local client_name_tag = bind_request:get_child_text("tag"); | 29 if not resource then |
30 if client_name_tag then | 30 local client_name_tag = bind_request:get_child_text("tag"); |
31 local client_id = session.client_id; | 31 if client_name_tag then |
32 local tag_suffix = client_id and base64.encode(sha1(client_id):sub(1, 9)) or id.medium(); | 32 local client_id = session.client_id; |
33 resource = ("%s~%s"):format(client_name_tag, tag_suffix); | 33 local tag_suffix = client_id and base64.encode(sha1(client_id):sub(1, 9)) or id.medium(); |
34 resource = ("%s~%s"):format(client_name_tag, tag_suffix); | |
35 end | |
34 end | 36 end |
35 | 37 |
36 local success, err_type, err, err_msg = sm_bind_resource(session, resource); | 38 local success, err_type, err, err_msg = sm_bind_resource(session, resource); |
37 if not success then | 39 if not success then |
38 session.log("debug", "Resource bind failed: %s", err_msg or err); | 40 session.log("debug", "Resource bind failed: %s", err_msg or err); |