Added Send mail functionality & Dockerized application #1
|
@ -3,8 +3,7 @@
|
||||||
SMTP gateway accessible from InfluxDB for sending alerts.
|
SMTP gateway accessible from InfluxDB for sending alerts.
|
||||||
|
|
||||||
# create .env file with following parameters
|
# create .env file with following parameters
|
||||||
server_host = 0.0.0.0
|
server_name = smtp.gmail.com
|
||||||
server_port = 8081
|
|
||||||
to_mail = test111@mailinator.com
|
to_mail = test111@mailinator.com
|
||||||
from_mail = test@gmail.com
|
from_mail = test@gmail.com
|
||||||
from_mail_password = test@123
|
from_mail_password = test@123
|
|
@ -3,7 +3,7 @@ version: '3.8'
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
build: .
|
build: .
|
||||||
ports:
|
expose:
|
||||||
- 8081:8081
|
- "8081"
|
||||||
env_file:
|
env_file:
|
||||||
- ./.env
|
- ./.env
|
||||||
|
|
25
main.py
25
main.py
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""
|
||||||
Serve cloud init files
|
SMTP webhook server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -13,20 +13,19 @@ from email.mime.text import MIMEText
|
||||||
import cherrypy
|
import cherrypy
|
||||||
|
|
||||||
|
|
||||||
class CloudInitApp:
|
class SMTPWebhookApp:
|
||||||
"""
|
"""
|
||||||
Serve cloud init files
|
SMTP webhook server
|
||||||
"""
|
"""
|
||||||
|
|
||||||
PeterSurda marked this conversation as resolved
|
|||||||
def _send_mail(self):
|
def _send_mail(self):
|
||||||
try:
|
try:
|
||||||
# pylint: disable=deprecated-lambda
|
|
||||||
cl = cherrypy.request.headers['Content-Length']
|
cl = cherrypy.request.headers['Content-Length']
|
||||||
rawbody = cherrypy.request.body.read(int(cl))
|
rawbody = cherrypy.request.body.read(int(cl))
|
||||||
req_body = json.loads(rawbody)
|
req_body = json.loads(rawbody)
|
||||||
subject = req_body['subject']
|
subject = req_body['subject']
|
||||||
body = req_body['body']
|
body = req_body['body']
|
||||||
client = smtplib.SMTP('smtp.gmail.com')
|
client = smtplib.SMTP(SERVER_NAME)
|
||||||
msg = MIMEText(body, 'plain', 'utf-8')
|
msg = MIMEText(body, 'plain', 'utf-8')
|
||||||
msg['Subject'] = Header(subject, 'utf-8')
|
msg['Subject'] = Header(subject, 'utf-8')
|
||||||
msg['From'] = FROM_MAIL
|
msg['From'] = FROM_MAIL
|
||||||
|
@ -45,26 +44,28 @@ class CloudInitApp:
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def send_mail(self):
|
def send_mail(self):
|
||||||
"""
|
"""
|
||||||
v1 api endpoint user-data
|
api endpoint for send mail
|
||||||
"""
|
"""
|
||||||
return self._send_mail()
|
return self._send_mail()
|
||||||
|
|
||||||
|
|
||||||
ROOT = CloudInitApp()
|
ROOT = SMTPWebhookApp()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
SERVER_HOST = os.environ["server_host"]
|
SERVER_NAME = os.environ["server_name"]
|
||||||
SERVER_PORT = int(os.environ["server_port"])
|
|
||||||
TO_MAIL = os.environ["to_mail"]
|
TO_MAIL = os.environ["to_mail"]
|
||||||
FROM_MAIL = os.environ["from_mail"]
|
FROM_MAIL = os.environ["from_mail"]
|
||||||
FROM_MAIL_PASSWORD = os.environ["from_mail_password"]
|
FROM_MAIL_PASSWORD = os.environ["from_mail_password"]
|
||||||
except: # noqa:E722
|
# to_mail = "test111@mailinator.com"
|
||||||
|
# from_mail = "test@gmail.com"
|
||||||
|
# from_mail_password = "test@123"
|
||||||
|
except KeyError:
|
||||||
raise "Please check missing environment variables: to_mail, from_mail, \
|
raise "Please check missing environment variables: to_mail, from_mail, \
|
||||||
from_mail_password"
|
from_mail_password"
|
||||||
|
|
||||||
cherrypy.server.socket_host = SERVER_HOST
|
cherrypy.server.socket_host = "0.0.0.0"
|
||||||
cherrypy.server.socket_port = SERVER_PORT
|
cherrypy.server.socket_port = 8081
|
||||||
ENGINE = cherrypy.engine
|
ENGINE = cherrypy.engine
|
||||||
|
|
||||||
cherrypy.tree.mount(ROOT, config={})
|
cherrypy.tree.mount(ROOT, config={})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user
this should go under
__main__