Salto Events Sniffer Service
Simple service on python for resend events from SALTO server to email.
Salto server send messages like this and I need forward all important to tech teem.
[
{
"EventDateTime": "2020-09-22T15:01:40",
"OperationID": 115,
"OperationDescription": "Low battery level",
"UserExtID": "",
"DoorName": "116"
}
]
/srv/sess/server.py
import socket
import json
import smtplib
HOST = '0.0.0.0'
PORT = 9998
email_data = {
'smtp_server': "localhost",
'sender_email': "support@domain.com",
'receiver_email': "support@domain.com",
}
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
def is_json(myjson):
try:
json_object = json.loads(myjson)
except ValueError as e:
return False
return True
def mailer(message, subject, email_data=email_data):
message = 'Subject: {}\n\n{}'.format(subject, message)
server = smtplib.SMTP(email_data['smtp_server'])
server.sendmail(email_data['sender_email'],email_data['receiver_email'],msg)
while True:
conn, addr = s.accept()
print 'Client connection accepted ', addr
while True:
try:
data = conn.recv(1024)
if is_json(data):
for event in json.loads(data):
# print 'Server rcvd:', repr(data)
sbj = event['EventDateTime'] + " | " + event['OperationDescription'] + " | " + event['DoorName']
msg = """\
From: """ + email_data['sender_email'] + """
To: """ + email_data['receiver_email'] + """
Subject: """ + sbj + """
""" + repr(event) + """ """
if event['OperationID'] not in [17,40,41]:
print 'SEND: ', sbj
mailer(msg, sbj)
# else:
# print 'SKIP: ', msg
else:
print 'Wrong JSON format: ', repr(data)
break
except socket.error, msg:
print 'Client connection closed', addr
break
conn.close()
/lib/systemd/system/salto-events.service
[Unit] Description=Salto Events Sniffer Service After=multi-user.target [Service] WorkingDirectory=/srv/sess User=apache Type=idle ExecStart=/usr/bin/python /srv/sess/server.py | systemd-cat Restart=always [Install] WantedBy=multi-user.target
Comments
Post a Comment