From cf05b9675c91b96ced4780c70b8489eb5e12f507 Mon Sep 17 00:00:00 2001 From: Evilham Date: Wed, 3 Aug 2022 08:16:19 +0200 Subject: [PATCH] [dd-sso] Fix minio issue and MailViews API Email service sends a JSON with: {"config": {...}, "users": [...]} --- dd-sso/admin/docker/requirements.pip3 | 3 ++- dd-sso/admin/src/admin/flaskapp.py | 3 ++- dd-sso/admin/src/admin/lib/admin.py | 2 +- dd-sso/admin/src/admin/lib/avatars.py | 2 +- dd-sso/admin/src/admin/views/MailViews.py | 20 +++++++++++--------- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/dd-sso/admin/docker/requirements.pip3 b/dd-sso/admin/docker/requirements.pip3 index 91b9549..2fd988d 100644 --- a/dd-sso/admin/docker/requirements.pip3 +++ b/dd-sso/admin/docker/requirements.pip3 @@ -30,7 +30,8 @@ mysql-connector-python==8.0.30 psycopg2==2.9.3 # python-keycloak can't be upgraded without issues python-keycloak==0.26.1 -minio==7.1.11 +# minio can't be upgraded without issues +minio==7.0.3 urllib3==1.26.11 schema==0.7.5 Werkzeug==2.2.1 diff --git a/dd-sso/admin/src/admin/flaskapp.py b/dd-sso/admin/src/admin/flaskapp.py index 903872a..80bc065 100644 --- a/dd-sso/admin/src/admin/flaskapp.py +++ b/dd-sso/admin/src/admin/flaskapp.py @@ -75,6 +75,7 @@ class AdminFlaskApp(Flask): domain : str node_modules_dir : str ready: bool = False + validators: Dict def __init__(self, *args: Any, **kwargs: Any): super().__init__(*args, **kwargs) @@ -83,7 +84,7 @@ class AdminFlaskApp(Flask): self.url_map.strict_slashes = False self._load_config() # Minor setup tasks - self._load_validators() + self.validators = self._load_validators() self._setup_routes() self._setup_api_3p() setup_api_views(self) diff --git a/dd-sso/admin/src/admin/lib/admin.py b/dd-sso/admin/src/admin/lib/admin.py index 5c1c24d..aab2fa3 100644 --- a/dd-sso/admin/src/admin/lib/admin.py +++ b/dd-sso/admin/src/admin/lib/admin.py @@ -137,7 +137,7 @@ class Admin: update_cmd = f"""mail:account:update \ --imap-host '{ kw['inbound_host'] }' --imap-port '{ kw['inbound_port'] }' --imap-ssl-mode '{ kw['inbound_ssl_mode'] }' \\ --imap-user '{ user['email'] }' --imap-password '{ user['password'] }' \\ - --smtp-host '{ kw['outbound_host'] }' --smtp-port'{ kw['outbound_port'] }' --smtp-ssl-mode '{ kw['outbound_ssl_mode'] }' \\ + --smtp-host '{ kw['outbound_host'] }' --smtp-port '{ kw['outbound_port'] }' --smtp-ssl-mode '{ kw['outbound_ssl_mode'] }' \\ --smtp-user '{ user['email'] }' --smtp-password '{ user['password'] }' \\ -- '{ user['user_id'] }' '{ user['email']}'""" create_cmd = f"""mail:account:create '{ user['user_id'] }' '{ account_name }' '{ user['email'] }' \\ diff --git a/dd-sso/admin/src/admin/lib/avatars.py b/dd-sso/admin/src/admin/lib/avatars.py index a5f08d5..d0f2880 100644 --- a/dd-sso/admin/src/admin/lib/avatars.py +++ b/dd-sso/admin/src/admin/lib/avatars.py @@ -45,7 +45,7 @@ class Avatars: # self.update_missing_avatars() def add_user_default_avatar(self, userid : str, role : str="unknown") -> None: - path = os.path.join(self.avatars_path, role) + ".jpg", + path = os.path.join(self.avatars_path, role) + ".jpg" self.mclient.fput_object( self.bucket, userid, diff --git a/dd-sso/admin/src/admin/views/MailViews.py b/dd-sso/admin/src/admin/views/MailViews.py index a152dfe..dac99bd 100644 --- a/dd-sso/admin/src/admin/views/MailViews.py +++ b/dd-sso/admin/src/admin/views/MailViews.py @@ -77,17 +77,19 @@ def setup_mail_views(app: "AdminFlaskApp") -> None: Dict, mail_3p.verify_and_decrypt_incoming_json(request.get_data()) ) users = dec_data.pop("users") - for user in users: - if not app.validators["mail"].validate(user): - raise Error( - "bad_request", - "Data validation for mail failed: " - + str(app.validators["mail"].errors), - traceback.format_exc(), - ) + config = dec_data.pop("config", {}) + # TODO: fix these validators + #for user in users: + # if not app.validators["mail"].validate(user): + # raise Error( + # "bad_request", + # "Data validation for mail failed: " + # + str(app.validators["mail"].errors), + # traceback.format_exc(), + # ) res: Dict if request.method in ["POST", "PUT"]: - res = app.admin.nextcloud_mail_set(users, dec_data) + res = app.admin.nextcloud_mail_set(users, config) return ( json.dumps(res), 200,