IpAclManager erweitert

picontrolserver auf IpAclManager umgeschrieben
This commit is contained in:
2018-03-11 15:28:44 +01:00
parent 1210f84664
commit f34227fa6e
9 changed files with 99 additions and 124 deletions

View File

@@ -6,6 +6,7 @@
# (c) Sven Sager, License: LGPLv3
#
"""XML-RPC Server anpassungen fuer Absicherung."""
import proginit
from helper import IpAclManager
from concurrent import futures
from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
@@ -15,14 +16,11 @@ class SaveXMLRPCServer(SimpleXMLRPCServer):
"""Erstellt einen erweiterten XMLRPCServer."""
aclmgr = IpAclManager()
def __init__(
self, addr, logRequests=True, allow_none=False,
use_builtin_types=False, acl=""):
use_builtin_types=False, ipacl=IpAclManager()):
"""Init SaveXMLRPCServer class."""
SaveXMLRPCServer.aclmgr.acl = acl
proginit.logger.debug("enter SaveXMLRPCServer.__init__()")
# Vererbte Klasse instantiieren
super().__init__(
@@ -36,9 +34,12 @@ class SaveXMLRPCServer(SimpleXMLRPCServer):
)
# Klassenvariablen
self.aclmgr = ipacl
self.tpe = futures.ThreadPoolExecutor(max_workers=1)
self.fut = None
proginit.logger.debug("leave SaveXMLRPCServer.__init__()")
def isAlive(self):
"""Prueft ob der XML RPC Server laeuft.
@return True, wenn Server noch laeuft"""
@@ -46,6 +47,8 @@ class SaveXMLRPCServer(SimpleXMLRPCServer):
def start(self):
"""Startet den XML-RPC Server."""
proginit.logger.debug("enter SaveXMLRPCServer.start()")
if self.fut is None:
self.server_bind()
self.server_activate()
@@ -53,8 +56,12 @@ class SaveXMLRPCServer(SimpleXMLRPCServer):
else:
raise RuntimeError("savexmlrpcservers can only be started once")
proginit.logger.debug("leave SaveXMLRPCServer.start()")
def stop(self):
"""Stoppt den XML-RPC Server."""
proginit.logger.debug("enter SaveXMLRPCServer.stop()")
if self.fut is not None:
self.shutdown()
self.tpe.shutdown()
@@ -62,6 +69,8 @@ class SaveXMLRPCServer(SimpleXMLRPCServer):
else:
raise RuntimeError("save xml rpc server was not started")
proginit.logger.debug("leave SaveXMLRPCServer.stop()")
class SaveXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
@@ -75,7 +84,7 @@ class SaveXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
return False
# IP-Adresse prüfen
int_acl = SaveXMLRPCServer.aclmgr.get_acllevel(self.address_string())
int_acl = self.server.aclmgr.get_acllevel(self.address_string())
if int_acl >= 0:
return True
else: