Преглед изворни кода

[Dovecot] Fix EAS login and improve logging

FreddleSpl0it пре 4 месеци
родитељ
комит
c4d0f35008
2 измењених фајлова са 10 додато и 3 уклоњено
  1. 1 1
      data/conf/dovecot/auth/mailcowauth.php
  2. 9 2
      data/conf/dovecot/auth/passwd-verify.lua

+ 1 - 1
data/conf/dovecot/auth/mailcowauth.php

@@ -80,7 +80,7 @@ if ($isSOGoRequest) {
 }
 if ($result === false){
   // If it's a SOGo Request, don't check for protocol access
-  $service = (isSOGoRequest) ? false : array($post['service'] => true);
+  $service = ($isSOGoRequest) ? false : array($post['service'] => true);
   $result = apppass_login($post['username'], $post['password'], $service, array(
     'is_internal' => true,
     'remote_addr' => $post['real_rip']

+ 9 - 2
data/conf/dovecot/auth/passwd-verify.lua

@@ -34,8 +34,15 @@ function auth_password_verify(request, password)
     return dovecot.auth.PASSDB_RESULT_INTERNAL_FAILURE, "Upstream error"
   end
 
-  local api_response = json.decode(table.concat(res))
-  if api_response.success == true then
+  local response_str = table.concat(res)
+  local is_response_valid, response_json = pcall(json.decode, response_str)
+
+  if not is_response_valid then
+    dovecot.i_info("Invalid JSON received: " .. response_str)
+    return dovecot.auth.PASSDB_RESULT_INTERNAL_FAILURE, "Invalid response format"
+  end
+
+  if response_json.success == true then
     return dovecot.auth.PASSDB_RESULT_OK, ""
   end