diff --git a/data/etc/revpipyload/revpipyload.conf b/data/etc/revpipyload/revpipyload.conf index 3f346fe..603af70 100644 --- a/data/etc/revpipyload/revpipyload.conf +++ b/data/etc/revpipyload/revpipyload.conf @@ -3,6 +3,7 @@ autoreload = 1 autoreloaddelay = 5 autostart = 1 plcworkdir = /var/lib/revpipyload +plcworkdir_set_uid = 0 plcprogram = program.py plcarguments = plcuid = 1000 diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html index 84552c0..2b8fcb1 100644 --- a/doc/picontrolserver.html +++ b/doc/picontrolserver.html @@ -12,7 +12,7 @@ Modul fuer die Verwaltung der PLC-Slave Funktionen.

Global Attributes

- +
__author__
__copyright__
__license__
HASH_FAIL
HASH_NULL
__author__
__copyright__
__license__

Classes

diff --git a/eric-revpipyload.api b/eric-revpipyload.api index ad935ce..86a5bd7 100644 --- a/eric-revpipyload.api +++ b/eric-revpipyload.api @@ -32,6 +32,8 @@ mqttserver.MqttServer?1(basetopic, sendinterval, broker_address, port=1883, tls_ mqttserver.__author__?9 mqttserver.__copyright__?9 mqttserver.__license__?9 +picontrolserver.HASH_FAIL?7 +picontrolserver.HASH_NULL?7 picontrolserver.RevPiSlave.check_connectedacl?4() picontrolserver.RevPiSlave.disconnect_all?4() picontrolserver.RevPiSlave.disconnect_replace_ios?4() diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py index 8f9650a..ca132a6 100644 --- a/revpipyload/picontrolserver.py +++ b/revpipyload/picontrolserver.py @@ -11,6 +11,10 @@ from shared.ipaclmanager import IpAclManager from threading import Event, Thread from timeit import default_timer +# Hashvalues +HASH_NULL = b'\x00' * 16 +HASH_FAIL = b'\xff' * 16 + class RevPiSlave(Thread): @@ -438,7 +442,6 @@ class RevPiSlaveDev(Thread): proginit.logger.error( "error on replace_io transfair: {0}".format(e) ) - break else: continue finally: @@ -456,7 +459,7 @@ class RevPiSlaveDev(Thread): # Hashwert erzeugen und senden file_hash = md5(fh.read()).digest() else: - file_hash = b'\x00' * 16 + file_hash = HASH_NULL proginit.logger.debug( "send replace_ios hashvalue: {0}" "".format(file_hash) @@ -467,7 +470,7 @@ class RevPiSlaveDev(Thread): "error on replace_ios hash value transfair: {0}" "".format(e) ) - break + self._devcon.sendall(HASH_FAIL) else: continue diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index b44eef0..8af8049 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -224,6 +224,8 @@ class RevPiPyLoad(): self.globalconfig["DEFAULT"].get("plcprogram", "none.py") self.plcarguments = \ self.globalconfig["DEFAULT"].get("plcarguments", "") + self.plcworkdir_set_uid = self.globalconfig["DEFAULT"].getboolean( + "plcworkdir_set_uid", False) self.plcuid = \ self.globalconfig["DEFAULT"].getint("plcuid", 65534) self.plcgid = \ @@ -333,6 +335,10 @@ class RevPiPyLoad(): ) os.chdir(self.plcworkdir) + # Workdirectory owner setzen + if self.plcworkdir_set_uid: + os.chown(self.plcworkdir, self.plcuid, -1) + # MQTT konfigurieren if restart_plcmqtt: self.stop_plcmqtt()