diff --git a/data/etc/revpipyload/aclxmlrpc.conf b/data/etc/revpipyload/aclxmlrpc.conf index 04c35f9..a92ef60 100644 --- a/data/etc/revpipyload/aclxmlrpc.conf +++ b/data/etc/revpipyload/aclxmlrpc.conf @@ -1,3 +1,4 @@ # XML-RPC Access Control List (acl) # One entry per Line IPADRESS,LEVEL # +127.0.0.1,4 diff --git a/revpipyload/helper.py b/revpipyload/helper.py index 03befb3..b437536 100644 --- a/revpipyload/helper.py +++ b/revpipyload/helper.py @@ -131,6 +131,10 @@ def get_revpiled_address(configrsc_bytes): except Exception: return -1 + # Check the result does match + if not type(rsc) == dict: + return -1 + byte_address = -1 for device in rsc.get("Devices", ()): # type: dict if device.get("type", "") == "BASE": diff --git a/revpipyload/mqttserver.py b/revpipyload/mqttserver.py index 55418bd..2d8d9e8 100644 --- a/revpipyload/mqttserver.py +++ b/revpipyload/mqttserver.py @@ -162,10 +162,11 @@ class MqttServer(Thread): "defaults now | {0}".format(e) ) - except Exception: + except Exception as e: self._rpi = None proginit.logger.error( - "piCtory configuration not loadable for MQTT" + "piCtory configuration not loadable for MQTT | " + "{0}".format(e) ) raise e diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py index e5932b4..49fd78e 100644 --- a/revpipyload/picontrolserver.py +++ b/revpipyload/picontrolserver.py @@ -452,11 +452,11 @@ class RevPiSlaveDev(Thread): elif cmd == b'RP': # Replace_IOs Konfiguration senden, wenn hash existiert + replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "") proginit.logger.debug( "transfair replace_io configuration: {0}" - "".format(proginit.pargs.configrsc) + "".format(replace_ios) ) - replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "") if HASH_RPIO != HASH_NULL and replace_ios: try: with open(replace_ios, "rb") as fh: diff --git a/revpipyload/procimgserver.py b/revpipyload/procimgserver.py index d4c9c46..c7a68ae 100644 --- a/revpipyload/procimgserver.py +++ b/revpipyload/procimgserver.py @@ -126,10 +126,11 @@ class ProcimgServer(): "replace_ios_file not loadable for ProcimgServer - using " "defaults now | {0}".format(e) ) - except Exception: + except Exception as e: self.rpi = None proginit.logger.error( - "piCtory configuration not loadable for ProcimgServer" + "piCtory configuration not loadable for ProcimgServer | " + "{0}".format(e) ) return e diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 5dbf833..d835aaf 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -28,7 +28,7 @@ begrenzt werden! __author__ = "Sven Sager" __copyright__ = "Copyright (C) 2020 Sven Sager" __license__ = "GPLv3" -__version__ = "0.8.5" +__version__ = "0.9.0" import gzip import os @@ -53,7 +53,7 @@ from shared.ipaclmanager import IpAclManager from watchdogs import ResetDriverWatchdog from xrpcserver import SaveXMLRPCServer -min_revpimodio = "2.4.5" +min_revpimodio = "2.5.0" class RevPiPyLoad(): @@ -634,15 +634,23 @@ class RevPiPyLoad(): def check_pictory_changed(self): """Prueft ob sich die piCtory Datei veraendert hat. @return True, wenn veraendert wurde""" - mtime = os.path.getmtime(proginit.pargs.configrsc) + try: + mtime = os.path.getmtime(proginit.pargs.configrsc) + except FileNotFoundError: + self.pictorymtime = 0 + return False + if self.pictorymtime == mtime: return False self.pictorymtime = mtime # TODO: Nur "Devices" list vergleich da HASH immer neu wegen timestamp - with open(proginit.pargs.configrsc, "rb") as fh: - rsc_buff = fh.read() + try: + with open(proginit.pargs.configrsc, "rb") as fh: + rsc_buff = fh.read() + except Exception: + return False # Check change of RevPiLED address self.revpi_led_address = get_revpiled_address(rsc_buff) @@ -675,7 +683,7 @@ class RevPiPyLoad(): if not self.replaceiofail: proginit.logger.error( - "can not access (r/w) the replace_ios file '{0}' " + "can not access the replace_ios file '{0}' " "using defaults".format(self.replace_ios_config) ) self.replaceiofail = True @@ -737,7 +745,7 @@ class RevPiPyLoad(): fh_pack.write( os.path.join(tup_dir[0], file), arcname=arcname ) - if pictory: + if pictory and os.access(proginit.pargs.configrsc, os.R_OK): fh_pack.write( proginit.pargs.configrsc, arcname="config.rsc" ) @@ -751,7 +759,7 @@ class RevPiPyLoad(): name=filename, mode="w:gz", dereference=True) try: fh_pack.add(".", arcname=os.path.basename(self.plcworkdir)) - if pictory: + if pictory and os.access(proginit.pargs.configrsc, os.R_OK): fh_pack.add(proginit.pargs.configrsc, arcname="config.rsc") except Exception: filename = "" @@ -943,7 +951,7 @@ class RevPiPyLoad(): dc["autoreloaddelay"] = self.autoreloaddelay dc["autostart"] = int(self.autostart) dc["plcworkdir"] = self.plcworkdir - dc["plcworkdir_set_uid"] = self.plcworkdir_set_uid + dc["plcworkdir_set_uid"] = int(self.plcworkdir_set_uid) dc["plcprogram"] = self.plcprogram dc["plcprogram_watchdog"] = self.plcprogram_watchdog dc["plcarguments"] = self.plcarguments diff --git a/setup.py b/setup.py index 6fdd674..06a46e0 100644 --- a/setup.py +++ b/setup.py @@ -27,11 +27,11 @@ setup( license="LGPLv3", name="revpipyload", - version="0.8.5d", + version="0.9.0", scripts=["data/revpipyload"], - install_requires=["revpimodio2 >= 2.4.5"], + install_requires=["revpimodio2 >= 2.5.0"], python_requires=">=3.2", data_files=[ diff --git a/stdeb.cfg b/stdeb.cfg index ac90a34..18464ac 100644 --- a/stdeb.cfg +++ b/stdeb.cfg @@ -1,5 +1,5 @@ [DEFAULT] Debian-Version: 1 -Depends3: python3-revpimodio2 (>= 2.4.5) +Depends3: python3-revpimodio2 (>= 2.5.0) Package: revpipyload Suite: stable