clean-up rss and mail. Add mail connection check at startup

pull/9/head
Yax 2 years ago
parent 601259cc55
commit 661eb35717

@ -29,7 +29,6 @@ def stacosys_server(config_pathname):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
configure_logging(logging.INFO) configure_logging(logging.INFO)
logging.getLogger("werkzeug").level = logging.WARNING logging.getLogger("werkzeug").level = logging.WARNING
logging.getLogger("apscheduler.executors").level = logging.WARNING
# check config file exists # check config file exists
if not os.path.isfile(config_pathname): if not os.path.isfile(config_pathname):
@ -58,8 +57,8 @@ def stacosys_server(config_pathname):
# generate RSS # generate RSS
rss.configure( rss.configure(
config.get(ConfigParameter.RSS_FILE), config.get(ConfigParameter.RSS_FILE),
config.get(ConfigParameter.SITE_PROTO),
config.get(ConfigParameter.SITE_NAME), config.get(ConfigParameter.SITE_NAME),
config.get(ConfigParameter.SITE_PROTO),
config.get(ConfigParameter.SITE_URL), config.get(ConfigParameter.SITE_URL),
) )
rss.generate() rss.generate()
@ -72,6 +71,7 @@ def stacosys_server(config_pathname):
config.get(ConfigParameter.SMTP_PASSWORD), config.get(ConfigParameter.SMTP_PASSWORD),
) )
mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL)) mailer.configure_destination(config.get(ConfigParameter.SITE_ADMIN_EMAIL))
mailer.check()
logger.info("start interfaces %s %s %s", api, form, admin) logger.info("start interfaces %s %s %s", api, form, admin)

@ -32,6 +32,13 @@ class Mailer:
def configure_destination(self, site_admin_email) -> None: def configure_destination(self, site_admin_email) -> None:
self._site_admin_email = site_admin_email 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: def send(self, subject, message) -> bool:
sender = self._smtp_login sender = self._smtp_login
receivers = [self._site_admin_email] receivers = [self._site_admin_email]
@ -41,11 +48,15 @@ class Mailer:
msg["To"] = self._site_admin_email msg["To"] = self._site_admin_email
msg["From"] = sender msg["From"] = sender
context = ssl.create_default_context() # pylint: disable=bare-except
# TODO catch SMTP failure try:
with smtplib.SMTP_SSL( server = smtplib.SMTP_SSL(
self._smtp_host, self._smtp_port, context=context self._smtp_host, self._smtp_port, context=ssl.create_default_context()
) as server: )
server.login(self._smtp_login, self._smtp_password) server.login(self._smtp_login, self._smtp_password)
server.send_message(msg, sender, receivers) server.send_message(msg, sender, receivers)
return True server.close()
success = True
except:
success = False
return success

@ -19,13 +19,13 @@ class Rss:
def configure( def configure(
self, self,
rss_file, rss_file,
site_proto,
site_name, site_name,
site_proto,
site_url, site_url,
) -> None: ) -> None:
self._rss_file = rss_file self._rss_file = rss_file
self._site_proto = site_proto
self._site_name = site_name self._site_name = site_name
self._site_proto = site_proto
self._site_url = site_url self._site_url = site_url
def generate(self) -> None: def generate(self) -> None:

@ -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")
Loading…
Cancel
Save