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()