Software /
code /
prosody-modules
Changeset
3392:8d1141025b43
mod_s2s_auth_monkeysphere: Remove blocking mode (simplifes code) (not tested)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 01 Dec 2018 16:04:35 +0100 |
parents | 3391:c8c9c940ec2d |
children | 3394:4fe7eee926ce |
files | mod_s2s_auth_monkeysphere/README.markdown mod_s2s_auth_monkeysphere/mod_s2s_auth_monkeysphere.lua |
diffstat | 2 files changed, 19 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_s2s_auth_monkeysphere/README.markdown Sat Dec 01 16:04:24 2018 +0100 +++ b/mod_s2s_auth_monkeysphere/README.markdown Sat Dec 01 16:04:35 2018 +0100 @@ -18,8 +18,9 @@ ## Compatibility - ------- ------- - trunk Works - 0.10 Works - 0.9 Works - ------- ------- + ------- ----------------------------- + trunk Works (not tested recently) + 0.11 Works (not tested) + 0.10 Does not work + 0.9 Does not work + ------- -----------------------------
--- a/mod_s2s_auth_monkeysphere/mod_s2s_auth_monkeysphere.lua Sat Dec 01 16:04:24 2018 +0100 +++ b/mod_s2s_auth_monkeysphere/mod_s2s_auth_monkeysphere.lua Sat Dec 01 16:04:35 2018 +0100 @@ -1,33 +1,17 @@ module:set_global(); -local http_request = require"socket.http".request; -local ltn12 = require"ltn12"; local json = require"util.json"; local json_encode, json_decode = json.encode, json.decode; local gettime = require"socket".gettime; local serialize = require"util.serialization".serialize; -local have_async, async = pcall(require, "util.async"); +local async = require"util.async"; +local http_request = require "net.http".request; local msva_url = assert(os.getenv"MONKEYSPHERE_VALIDATION_AGENT_SOCKET", "MONKEYSPHERE_VALIDATION_AGENT_SOCKET is unset, please set it").."/reviewcert"; -if have_async then - local _http_request = require "net.http".request; - function http_request(url, ex) - local wait, done = async.waiter(); - local content, code, request, response; - _http_request(url, ex, function (_content, _code, _request, _response) - content, code, request, response = _content, _code, _request, _response; - done(); - end); - wait(); - return content, code, request, response; - end -end - local function check_with_monkeysphere(event) local session, host, cert = event.session, event.host, event.cert; - local result = {}; local post_body = json_encode { peer = { name = host; @@ -42,23 +26,26 @@ } local req = { method = "POST"; - url = msva_url; headers = { ["Content-Type"] = "application/json"; - ["Content-Length"] = tostring(#post_body); }; - sink = ltn12.sink.table(result); - source = ltn12.source.string(post_body); + body = post_body; }; session.log("debug", "Asking what Monkeysphere thinks about this certificate"); local starttime = gettime(); - local ok, code = http_request(req); + local wait, done = async.waiter(); + local body, code; + http_request(msva_url, req, function (_, _code) + body, code = body, _code; + done(); + end); + wait(); module:log("debug", "Request took %fs", gettime() - starttime); - local body = table.concat(result); - if ok and code == 200 and body then + if code == 200 and body then body = json_decode(body); if body then - session.log(body.valid and "info" or "warn", "Monkeysphere thinks the cert is %salid: %s", body.valid and "V" or "Inv", body.message); + session.log(body.valid and "info" or "warn", + "Monkeysphere thinks the cert is %salid: %s", body.valid and "V" or "Inv", body.message); if body.valid then session.cert_chain_status = "valid"; session.cert_identity_status = "valid";