clean-up rss and mail. Add mail connection check at startup
This commit is contained in:
parent
601259cc55
commit
661eb35717
4 changed files with 28 additions and 10 deletions
|
@ -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:
|
||||||
|
|
7
tests/test_rssfeed.py
Normal file
7
tests/test_rssfeed.py
Normal file
|
@ -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…
Add table
Reference in a new issue