From 661eb35717fb98714c015147b2c6ed88eae07abd Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:54:11 +0100 Subject: [PATCH] clean-up rss and mail. Add mail connection check at startup --- stacosys/run.py | 4 ++-- stacosys/service/mail.py | 23 +++++++++++++++++------ stacosys/service/rssfeed.py | 4 ++-- tests/test_rssfeed.py | 7 +++++++ 4 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 tests/test_rssfeed.py diff --git a/stacosys/run.py b/stacosys/run.py index 5109299..8bd26ad 100644 --- a/stacosys/run.py +++ b/stacosys/run.py @@ -29,7 +29,6 @@ def stacosys_server(config_pathname): logger = logging.getLogger(__name__) configure_logging(logging.INFO) logging.getLogger("werkzeug").level = logging.WARNING - logging.getLogger("apscheduler.executors").level = logging.WARNING # check config file exists if not os.path.isfile(config_pathname): @@ -58,8 +57,8 @@ def stacosys_server(config_pathname): # generate RSS rss.configure( config.get(ConfigParameter.RSS_FILE), - config.get(ConfigParameter.SITE_PROTO), config.get(ConfigParameter.SITE_NAME), + config.get(ConfigParameter.SITE_PROTO), config.get(ConfigParameter.SITE_URL), ) rss.generate() @@ -72,6 +71,7 @@ def stacosys_server(config_pathname): config.get(ConfigParameter.SMTP_PASSWORD), ) mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) + mailer.check() logger.info("start interfaces %s %s %s", api, form, admin) diff --git a/stacosys/service/mail.py b/stacosys/service/mail.py index 6d756bb..d7fe5ca 100644 --- a/stacosys/service/mail.py +++ b/stacosys/service/mail.py @@ -32,6 +32,13 @@ class Mailer: def configure_destination(self, site_admin_email) -> None: self._site_admin_email = site_admin_email + def check(self): + server = smtplib.SMTP_SSL( + self._smtp_host, self._smtp_port, context=ssl.create_default_context() + ) + server.login(self._smtp_login, self._smtp_password) + server.close() + def send(self, subject, message) -> bool: sender = self._smtp_login receivers = [self._site_admin_email] @@ -41,11 +48,15 @@ class Mailer: msg["To"] = self._site_admin_email msg["From"] = sender - context = ssl.create_default_context() - # TODO catch SMTP failure - with smtplib.SMTP_SSL( - self._smtp_host, self._smtp_port, context=context - ) as server: + # pylint: disable=bare-except + try: + server = smtplib.SMTP_SSL( + self._smtp_host, self._smtp_port, context=ssl.create_default_context() + ) server.login(self._smtp_login, self._smtp_password) server.send_message(msg, sender, receivers) - return True + server.close() + success = True + except: + success = False + return success diff --git a/stacosys/service/rssfeed.py b/stacosys/service/rssfeed.py index a5f5c12..3e81389 100644 --- a/stacosys/service/rssfeed.py +++ b/stacosys/service/rssfeed.py @@ -19,13 +19,13 @@ class Rss: def configure( self, rss_file, - site_proto, site_name, + site_proto, site_url, ) -> None: self._rss_file = rss_file - self._site_proto = site_proto self._site_name = site_name + self._site_proto = site_proto self._site_url = site_url def generate(self) -> None: diff --git a/tests/test_rssfeed.py b/tests/test_rssfeed.py new file mode 100644 index 0000000..713eead --- /dev/null +++ b/tests/test_rssfeed.py @@ -0,0 +1,7 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +from stacosys.service import rss + +def test_configure(): + rss.configure("comments.xml", "blog", "http", "blog.mydomain.com")