65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from flask import Flask, request
|
|
import os
|
|
import glob
|
|
import securecad_parser
|
|
import datetime
|
|
from hooks import webhook, alarminator_api, cups_print
|
|
|
|
app = Flask(__name__)
|
|
|
|
def wrapHtml(innerHtml):
|
|
return '''<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Bootstrap demo</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
</head>
|
|
<body><div class="container text-center">
|
|
''' + innerHtml + '''
|
|
</div>
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
|
|
</body>
|
|
</html>'''
|
|
|
|
def getAlarmFiles():
|
|
dir_path = os.path.dirname(os.path.realpath(__file__))
|
|
dir_path = dir_path + "/alarms" + os.sep
|
|
a_list = glob.glob(dir_path+"*.html")
|
|
a_list.sort()
|
|
return a_list
|
|
|
|
def parseAlarm(f):
|
|
dir_path = os.path.dirname(os.path.realpath(__file__))
|
|
f = dir_path + "/alarms" + os.sep + f
|
|
with open(f, "r") as o:
|
|
_r: str = o.read()
|
|
now = datetime.datetime.now()
|
|
_r = _r.replace('%DATUM%',now.strftime("%d.%m.%Y"))
|
|
_r = _r.replace('%UHRZEIT%',now.strftime("%H:%M"))
|
|
if _r != '':
|
|
return [securecad_parser.parse_securecad_message(_r),_r]
|
|
|
|
|
|
|
|
@app.route("/")
|
|
def root():
|
|
|
|
file = request.args.get('sendalarm')
|
|
if file is not None:
|
|
parsed_body, raw = parseAlarm(file)
|
|
if parsed_body != None:
|
|
if 'ALARMDEPESCHE' in parsed_body:
|
|
webhook(parsed_body)
|
|
alarminator_api(parsed_body)
|
|
cups_print(parsed_body,raw)
|
|
|
|
html = '<div class="row align-items-start p-3 ">'
|
|
i: str
|
|
files = getAlarmFiles()
|
|
for f in files:
|
|
html = html + "<div class=\"col-6\" style='padding: 5px;'><a style='display:block; padding:20px' class=\"btn btn-block btn-danger\" href=\"/?sendalarm="+os.path.basename(f)+"\">" + os.path.basename(f) + "</a></div>"
|
|
html = html + "</div>"
|
|
return wrapHtml(html)
|
|
|
|
app.run(port=5000) |