Get the password from the source.

Remove password from response (not needed)
This commit is contained in:
Dimitri Huisman
2023-05-30 15:06:32 +00:00
parent 008cbdb6b1
commit 10a3d1eabb
2 changed files with 10 additions and 3 deletions

View File

@@ -111,7 +111,6 @@ def handle_authentication(headers):
"Auth-Server": server,
"Auth-User": user_email,
"Auth-User-Exists": is_valid_user,
"Auth-Password": urllib.parse.quote(password),
"Auth-Port": port
}
status, code = get_status(protocol, "authentication")
@@ -120,7 +119,6 @@ def handle_authentication(headers):
"Auth-Error-Code": code,
"Auth-User": user_email,
"Auth-User-Exists": is_valid_user,
"Auth-Password": urllib.parse.quote(password),
"Auth-Wait": 0
}
# Unexpected

View File

@@ -6,6 +6,7 @@ import flask
import flask_login
import base64
import sqlalchemy.exc
import urllib
@internal.route("/auth/email")
def nginx_authentication():
@@ -52,7 +53,15 @@ def nginx_authentication():
if not is_port_25:
utils.limiter.exempt_ip_from_ratelimits(client_ip)
elif is_valid_user:
utils.limiter.rate_limit_user(username, client_ip, password=response.headers.get('Auth-Password', None))
raw_password = urllib.parse.unquote(headers["Auth-Pass"])
password = None
try:
password = raw_password.encode("iso8859-1").decode("utf8")
except:
app.logger.warn(f'Received undecodable password from nginx: {raw_password!r}')
utils.limiter.rate_limit_user(username, client_ip, password=None)
else:
utils.limiter.rate_limit_user(username, client_ip, password=password)
elif not is_from_webmail:
utils.limiter.rate_limit_ip(client_ip, username)
return response