mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 23:23:52 +01:00
Neue Optionen für Config-file übernommen
Neuen XML-Modus 4 angelegt
This commit is contained in:
@@ -12,6 +12,7 @@ from threading import Event, Thread
|
|||||||
from timeit import default_timer
|
from timeit import default_timer
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE: Sollte dies als Process ausgeführt werden?
|
||||||
class RevPiSlave(Thread):
|
class RevPiSlave(Thread):
|
||||||
|
|
||||||
"""RevPi PLC-Server.
|
"""RevPi PLC-Server.
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ class RevPiPyLoad():
|
|||||||
if "XMLRPC" in self.globalconfig:
|
if "XMLRPC" in self.globalconfig:
|
||||||
self.xmlrpc = \
|
self.xmlrpc = \
|
||||||
int(self.globalconfig["XMLRPC"].get("xmlrpc", 0))
|
int(self.globalconfig["XMLRPC"].get("xmlrpc", 0))
|
||||||
self.xmlrpcacl = IpAclManager(minlevel=0, maxlevel=3)
|
self.xmlrpcacl = IpAclManager(minlevel=0, maxlevel=4)
|
||||||
if not self.xmlrpcacl.loadacl(
|
if not self.xmlrpcacl.loadacl(
|
||||||
self.globalconfig["XMLRPC"].get("acl", "")):
|
self.globalconfig["XMLRPC"].get("acl", "")):
|
||||||
proginit.logger.warning(
|
proginit.logger.warning(
|
||||||
@@ -268,10 +268,12 @@ class RevPiPyLoad():
|
|||||||
3, self.xml_plcslavestart, "plcslavestart")
|
3, self.xml_plcslavestart, "plcslavestart")
|
||||||
self.xsrv.register_function(
|
self.xsrv.register_function(
|
||||||
3, self.xml_plcslavestop, "plcslavestop")
|
3, self.xml_plcslavestop, "plcslavestop")
|
||||||
|
|
||||||
|
# XML Modus 4 Einstellungen ändern
|
||||||
self.xsrv.register_function(
|
self.xsrv.register_function(
|
||||||
3, self.xml_setconfig, "set_config")
|
4, self.xml_setconfig, "set_config")
|
||||||
self.xsrv.register_function(
|
self.xsrv.register_function(
|
||||||
3, self.xml_setpictoryrsc, "set_pictoryrsc")
|
4, self.xml_setpictoryrsc, "set_pictoryrsc")
|
||||||
|
|
||||||
proginit.logger.debug("created xmlrpc server")
|
proginit.logger.debug("created xmlrpc server")
|
||||||
|
|
||||||
@@ -302,12 +304,12 @@ class RevPiPyLoad():
|
|||||||
self.plcarguments,
|
self.plcarguments,
|
||||||
self.pythonversion
|
self.pythonversion
|
||||||
)
|
)
|
||||||
th_plc.autoreload = self.autoreload
|
th_plc.autoreload = bool(self.autoreload)
|
||||||
th_plc.gid = self.plcgid
|
th_plc.gid = int(self.plcgid)
|
||||||
th_plc.uid = self.plcuid
|
th_plc.uid = int(self.plcuid)
|
||||||
th_plc.rtlevel = self.rtlevel
|
th_plc.rtlevel = int(self.rtlevel)
|
||||||
th_plc.zeroonerror = self.zeroonerror
|
th_plc.zeroonerror = bool(self.zeroonerror)
|
||||||
th_plc.zeroonexit = self.zeroonexit
|
th_plc.zeroonexit = bool(self.zeroonexit)
|
||||||
|
|
||||||
proginit.logger.debug("leave RevPiPyLoad._plcthread()")
|
proginit.logger.debug("leave RevPiPyLoad._plcthread()")
|
||||||
return th_plc
|
return th_plc
|
||||||
@@ -489,20 +491,32 @@ class RevPiPyLoad():
|
|||||||
@return dict() der Konfiguration"""
|
@return dict() der Konfiguration"""
|
||||||
proginit.logger.debug("xmlrpc call getconfig")
|
proginit.logger.debug("xmlrpc call getconfig")
|
||||||
dc = {}
|
dc = {}
|
||||||
|
|
||||||
|
# DEFAULT Sektion
|
||||||
dc["autoreload"] = self.autoreload
|
dc["autoreload"] = self.autoreload
|
||||||
|
dc["autoreloaddelay"] = self.autoreloaddelay
|
||||||
dc["autostart"] = self.autostart
|
dc["autostart"] = self.autostart
|
||||||
dc["plcworkdir"] = self.plcworkdir
|
dc["plcworkdir"] = self.plcworkdir
|
||||||
dc["plcprogram"] = self.plcprogram
|
dc["plcprogram"] = self.plcprogram
|
||||||
dc["plcarguments"] = self.plcarguments
|
dc["plcarguments"] = self.plcarguments
|
||||||
dc["plcslave"] = self.plcslave
|
# dc["plcuid"] = self.plcuid
|
||||||
dc["plcslaveacl"] = self.plcslaveacl.acl
|
# dc["plcgid"] = self.plcgid
|
||||||
dc["plcslaveport"] = self.plcslaveport
|
|
||||||
dc["pythonversion"] = self.pythonversion
|
dc["pythonversion"] = self.pythonversion
|
||||||
dc["rtlevel"] = self.rtlevel
|
dc["rtlevel"] = self.rtlevel
|
||||||
dc["xmlrpc"] = self.xmlrpc
|
|
||||||
dc["xmlrpcacl"] = self.xmlrpcacl.acl
|
|
||||||
dc["zeroonerror"] = self.zeroonerror
|
dc["zeroonerror"] = self.zeroonerror
|
||||||
dc["zeroonexit"] = self.zeroonexit
|
dc["zeroonexit"] = self.zeroonexit
|
||||||
|
|
||||||
|
# PLCSLAVE Sektion
|
||||||
|
dc["plcslave"] = self.plcslave
|
||||||
|
dc["plcslaveacl"] = self.plcslaveacl.acl
|
||||||
|
dc["plcslavebindip"] = self.plcslavebindip
|
||||||
|
dc["plcslaveport"] = self.plcslaveport
|
||||||
|
|
||||||
|
# XMLRPC Sektion
|
||||||
|
dc["xmlrpc"] = self.xmlrpc
|
||||||
|
dc["xmlrpcacl"] = self.xmlrpcacl.acl
|
||||||
|
dc["xmlrpcbindip"] = self.xmlrpcbindip
|
||||||
|
|
||||||
return dc
|
return dc
|
||||||
|
|
||||||
def xml_getfilelist(self):
|
def xml_getfilelist(self):
|
||||||
@@ -664,32 +678,51 @@ class RevPiPyLoad():
|
|||||||
@return True, wenn erfolgreich angewendet"""
|
@return True, wenn erfolgreich angewendet"""
|
||||||
proginit.logger.debug("xmlrpc call setconfig")
|
proginit.logger.debug("xmlrpc call setconfig")
|
||||||
keys = {
|
keys = {
|
||||||
"autoreload": "[01]",
|
"DEFAULT": {
|
||||||
"autostart": "[01]",
|
"autoreload": "[01]",
|
||||||
"plcprogram": ".+",
|
"autoreloaddelay": "[0-9]+",
|
||||||
"plcarguments": ".*",
|
"autostart": "[01]",
|
||||||
"plcslave": "[01]",
|
"plcprogram": ".+",
|
||||||
"plcslaveacl": self.plcslaveacl.regex_acl,
|
"plcarguments": ".*",
|
||||||
"plcslaveport": "[0-9]{,5}",
|
# "plcuid": "[0-9]{,5}",
|
||||||
"pythonversion": "[23]",
|
# "plcgid": "[0-9]{,5}",
|
||||||
"rtlevel": "[0-1]",
|
"pythonversion": "[23]",
|
||||||
"xmlrpc": "[0-3]",
|
"rtlevel": "[0-1]",
|
||||||
"xmlrpcacl": self.xmlrpcacl.regex_acl,
|
"zeroonerror": "[01]",
|
||||||
"zeroonerror": "[01]",
|
"zeroonexit": "[01]",
|
||||||
"zeroonexit": "[01]"
|
},
|
||||||
|
"PLCSLAVE": {
|
||||||
|
"plcslave": "[01]",
|
||||||
|
"plcslaveacl": self.plcslaveacl.regex_acl,
|
||||||
|
# "plcslavebindip": "^((([\\d]{1,3}\\.){3}[\\d]{1,3})|\\*)+$",
|
||||||
|
"plcslaveport": "[0-9]{,5}",
|
||||||
|
},
|
||||||
|
"XMLRPC": {
|
||||||
|
"xmlrpc": "[01]",
|
||||||
|
"xmlrpcacl": self.xmlrpcacl.regex_acl,
|
||||||
|
# "xmlrpcbindip": "^((([\\d]{1,3}\\.){3}[\\d]{1,3})|\\*)+$",
|
||||||
|
# "xmlslaveport": "[0-9]{,5}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Werte übernehmen
|
# Werte übernehmen
|
||||||
for key in keys:
|
for sektion in keys:
|
||||||
if key in dc:
|
suffix = sektion.lower()
|
||||||
if not refullmatch(keys[key], str(dc[key])):
|
for key in keys[sektion]:
|
||||||
proginit.logger.error(
|
if key in dc:
|
||||||
"got wrong setting '{}' with value '{}'".format(
|
localkey = key.replace(suffix, "")
|
||||||
key, dc[key]
|
if not refullmatch(keys[sektion][key], str(dc[key])):
|
||||||
|
proginit.logger.error(
|
||||||
|
"got wrong setting '{}' with value '{}'".format(
|
||||||
|
key, dc[key]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
return False
|
||||||
|
self.globalconfig.set(
|
||||||
|
sektion,
|
||||||
|
key if localkey == "" else localkey,
|
||||||
|
str(dc[key])
|
||||||
)
|
)
|
||||||
return False
|
|
||||||
self.globalconfig.set("DEFAULT", key, str(dc[key]))
|
|
||||||
|
|
||||||
# conf-Datei schreiben
|
# conf-Datei schreiben
|
||||||
with open(proginit.globalconffile, "w") as fh:
|
with open(proginit.globalconffile, "w") as fh:
|
||||||
|
|||||||
Reference in New Issue
Block a user