From db88b998a2a1b00738d1de2c55e066ec70781c86 Mon Sep 17 00:00:00 2001 From: Waldek Date: Thu, 27 Feb 2020 10:17:50 +0100 Subject: [PATCH] Update monitor.py add simple web auth --- monitor.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/monitor.py b/monitor.py index 339e9a0..03eb672 100644 --- a/monitor.py +++ b/monitor.py @@ -36,6 +36,7 @@ from twisted.protocols.basic import NetstringReceiver from twisted.internet import reactor, task from twisted.web.server import Site from twisted.web.resource import Resource +import base64 # Autobahn provides websocket service under Twisted from autobahn.twisted.websocket import WebSocketServerProtocol, WebSocketServerFactory @@ -704,8 +705,26 @@ class web_server(Resource): isLeaf = True def render_GET(self, request): logging.info('static website requested: %s', request) - return (index_html).encode('utf-8') - + if WEB_AUTH: + user = WEB_USER.encode('utf-8') + password = WEB_PASS.encode('utf-8') + auth = request.getHeader('Authorization') + if auth and auth.split(' ')[0] == 'Basic': + decodeddata = base64.b64decode(auth.split(' ')[1]) + if decodeddata.split(b':') == [user, password]: + logging.info('Authorization OK') + return (index_html).encode('utf-8') + request.setResponseCode(401) + request.setHeader('WWW-Authenticate', 'Basic realm="realmname"') + logging.info('Someone wanted to get access without authorization') + return "


\ +
\ +

Authorization Required

".encode('utf-8') + else: + return (index_html).encode('utf-8') + if __name__ == '__main__': logging.basicConfig( level=logging.INFO,