| 123456789101112131415161718192021222324252627282930313233343536373839404142 | function auth_password_verify(request, password)  if request.domain == nil then    return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, "No such user"  end  json = require "cjson"  ltn12 = require "ltn12"  https = require "ssl.https"  https.TIMEOUT = 5  local req = {    username = request.user,    password = password,    real_rip = request.real_rip,    protocol = {}  }  req.protocol[request.service] = true  local req_json = json.encode(req)  local res = {}     local b, c = https.request {    method = "POST",    url = "https://nginx:9082",    source = ltn12.source.string(req_json),    headers = {      ["content-type"] = "application/json",      ["content-length"] = tostring(#req_json)    },    sink = ltn12.sink.table(res),    insecure = true  }  local api_response = json.decode(table.concat(res))  if api_response.success == true then    return dovecot.auth.PASSDB_RESULT_OK, ""  end    return dovecot.auth.PASSDB_RESULT_PASSWORD_MISMATCH, "Failed to authenticate"endfunction auth_passdb_lookup(req)   return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, ""end
 |