Skip to content
Snippets Groups Projects
Commit 3f79d671 authored by jabertwo's avatar jabertwo
Browse files

Healtchecks für sendmail_plenum

parent 89549be6
No related branches found
No related tags found
No related merge requests found
...@@ -52,4 +52,4 @@ ...@@ -52,4 +52,4 @@
docker_compose: docker_compose:
project_src: "{{ basedir }}" project_src: "{{ basedir }}"
state: present state: present
\ No newline at end of file
...@@ -173,7 +173,9 @@ ...@@ -173,7 +173,9 @@
- { - {
role: webserver/docker_dokuwiki, tags: dokuwiki, role: webserver/docker_dokuwiki, tags: dokuwiki,
servicename: "dokuwiki", servicename: "dokuwiki",
domain: "wiki.warpzone.ms" domain: "wiki.warpzone.ms",
basedir: /srv/dokuwiki,
healthchecks_url: "https://hc-ping.com/038adcfe-05bf-45b4-919b-88b69aab8844"
} }
- { - {
role: webserver/docker_gitlab, tags: gitlab, role: webserver/docker_gitlab, tags: gitlab,
......
...@@ -9,22 +9,23 @@ ...@@ -9,22 +9,23 @@
path: "{{item}}" path: "{{item}}"
state: "directory" state: "directory"
with_items: with_items:
- /srv/dokuwiki/ - {{ basedir }}/
- /srv/dokuwiki/data - {{ basedir }}/data
- /srv/dokuwiki/pdftemplate - {{ basedir }}/pdftemplate
- name: Docker Compose Konfig-Datei erstellen - name: Docker Compose Konfig-Datei erstellen
template: template:
src: "{{item}}" src: "{{item}}"
dest: "/srv/dokuwiki/{{item}}" dest: "{{ basedir }}/{{item}}"
with_items: with_items:
- docker-compose.yml - docker-compose.yml
- Dockerfile - Dockerfile
- sendmail_plenum.py - sendmail_plenum.py
register: config
- name: start dokuwiki docker - name: start dokuwiki docker
docker_compose: docker_compose:
project_src: /srv/dokuwiki/ project_src: {{ basedir }}
state: present state: present
- name: Cronjob für Mailversand Plenumsmail - name: Cronjob für Mailversand Plenumsmail
...@@ -33,5 +34,16 @@ ...@@ -33,5 +34,16 @@
weekday: "0" weekday: "0"
hour: "20" hour: "20"
minute: "0" minute: "0"
job: "/usr/bin/python3 /srv/dokuwiki/sendmail_plenum.py" job: "/usr/bin/python3 {{ basedir }}/sendmail_plenum.py"
disabled: false disabled: false
- name: "stop {{ servicename}} docker"
docker_compose:
project_src: "{{ basedir }}"
state: absent
when: config.changed
- name: "start {{ servicename}} docker"
docker_compose:
project_src: "{{ basedir }}"
state: present
...@@ -2,73 +2,76 @@ import smtplib ...@@ -2,73 +2,76 @@ import smtplib
import datetime import datetime
from email.message import EmailMessage from email.message import EmailMessage
from email.utils import formatdate from email.utils import formatdate
import requests
with open("/srv/dokuwiki/data/data/pages/intern/diskussionsthemen.txt") as fp:
raw = fp.read().split('\n') def do_work():
with open("/srv/dokuwiki/data/data/pages/intern/diskussionsthemen.txt") as fp:
# Extract Themen raw = fp.read().split('\n')
firstline = 0
lastline = 0 # Extract Themen
for index, line in enumerate(raw): firstline = 0
# Start marker lastline = 0
if "====== 1." in line: for index, line in enumerate(raw):
firstline = index + 1 # Start marker
continue if "====== 1." in line:
firstline = index + 1
continue
# End marker
if "====== 2." in line:
lastline = index
break
# End marker # Remove empty lines from topics
if "====== 2." in line: topics = []
lastline = index for extracted in raw[firstline:lastline-1]:
break if extracted != '':
topics.append(extracted)
# Remove empty lines from topics
topics = [] # There are no topics - just exit
for extracted in raw[firstline:lastline-1]: if (len(topics) == 0):
if extracted != '': exit()
topics.append(extracted)
# calculate date of next tuesday
# There are no topics - just exit d = datetime.date.today()
if (len(topics) == 0): while d.strftime('%a') != 'Tue':
exit() d += datetime.timedelta(1)
# calculate date of next tuesday # mail template
d = datetime.date.today() mail = f"""
while d.strftime('%a') != 'Tue': Liebe Zonies,
d += datetime.timedelta(1)
es gibt wieder Themen die im Plenum besprochen werden sollen. Der nächste
# mail template Reguläre Termin ist am nächsten Dienstag ({str(d)}) um 20:00.
mail = f""" Im Wiki (https://wiki.warpzone.ms/intern:diskussionsthemen#diskussionsthemen_naechstes_plenum_automatische_einladung)
Liebe Zonies, stehen folgende Themen:
es gibt wieder Themen die im Plenum besprochen werden sollen. Der nächste
Reguläre Termin ist am nächsten Dienstag ({str(d)}) um 20:00.
Im Wiki (https://wiki.warpzone.ms/intern:diskussionsthemen#diskussionsthemen_naechstes_plenum_automatische_einladung)
stehen folgende Themen:
{chr(10).join(topics)}
Die Teilnahme ist natürlich auch remote möglich unter
https://jitsi.dorf-post.de/warpzone-plenum möglich.
Viele Grüße und bis Dienstag,
sendmail_plenum.py
"""
msg = EmailMessage()
msg['Subject'] = f'Aktuelle Plenumsthemen für Dienstag ({str(d)} 20:00)'
msg['From'] = '{{noreply_email_user}}'
msg['To'] = 'intern@warpzone.ms'
msg['Date'] = formatdate(localtime=True)
msg.set_content(mail)
server = smtplib.SMTP('{{smtp_host}}', {{smtp_port}})
server.starttls()
server.login("{{noreply_email_user}}", "{{noreply_email_pass}}")
server.send_message(msg)
server.quit()
{chr(10).join(topics)}
Die Teilnahme ist natürlich auch remote möglich unter
https://jitsi.dorf-post.de/warpzone-plenum möglich.
Viele Grüße und bis Dienstag,
sendmail_plenum.py
"""
msg = EmailMessage()
msg['Subject'] = f'Aktuelle Plenumsthemen für Dienstag ({str(d)} 20:00)'
msg['From'] = '{{noreply_email_user}}'
msg['To'] = 'intern@warpzone.ms'
msg['Date'] = formatdate(localtime=True)
msg.set_content(mail)
server = smtplib.SMTP('{{smtp_host}}', {{smtp_port}})
server.starttls()
server.login("{{noreply_email_user}}", "{{noreply_email_pass}}")
server.send_message(msg)
server.quit()
return True
success = False
try:
success = do_work()
finally:
requests.get"{{ healthchecks_url }}" if success else "{{ healthchecks_url }}" + "/fail")
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment