Software /
code /
prosody
Comparison
plugins/mod_tokenauth.lua @ 13074:794a5ad5495e
mod_tokenauth: Fix parsing binary part of tokens
Fixes parsing of tokens that happen to have a `;` in their secret part,
otherwise it splits there and the later bit goes into the username and
hitting the "Invalid token in storage" condition.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 12 Apr 2023 11:43:32 +0200 |
parent | 13073:9e5802b45b9e |
child | 13098:65d2ff6e674e |
comparison
equal
deleted
inserted
replaced
13073:9e5802b45b9e | 13074:794a5ad5495e |
---|---|
118 if not encoded_token then return nil; end | 118 if not encoded_token then return nil; end |
119 local encoded_data = encoded_token:match("^secret%-token:(.+)$"); | 119 local encoded_data = encoded_token:match("^secret%-token:(.+)$"); |
120 if not encoded_data then return nil; end | 120 if not encoded_data then return nil; end |
121 local token = base64.decode(encoded_data); | 121 local token = base64.decode(encoded_data); |
122 if not token then return nil; end | 122 if not token then return nil; end |
123 local token_id, token_secret, token_jid = token:match("^2;([^;]+);([^;]+);(.+)$"); | 123 local token_id, token_secret, token_jid = token:match("^2;([^;]+);(..................);(.+)$"); |
124 if not token_id then return nil; end | 124 if not token_id then return nil; end |
125 local token_user, token_host = jid.split(token_jid); | 125 local token_user, token_host = jid.split(token_jid); |
126 return token_id, token_user, token_host, token_secret; | 126 return token_id, token_user, token_host, token_secret; |
127 end | 127 end |
128 | 128 |