mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 15:13:52 +01:00
picontrolserver enthält Hashvariablen von piCtory und replace_io Datei
TODO: File-Hash-Werte sollten gegen Inhaltsprüfung getauscht werden
This commit is contained in:
@@ -12,7 +12,7 @@ Modul fuer die Verwaltung der PLC-Slave Funktionen.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>HASH_FAIL</td></tr><tr><td>HASH_NULL</td></tr><tr><td>__author__</td></tr><tr><td>__copyright__</td></tr><tr><td>__license__</td></tr>
|
||||
<tr><td>HASH_FAIL</td></tr><tr><td>HASH_NULL</td></tr><tr><td>HASH_PICT</td></tr><tr><td>HASH_RPIO</td></tr><tr><td>__author__</td></tr><tr><td>__copyright__</td></tr><tr><td>__license__</td></tr>
|
||||
</table>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Classes</h3>
|
||||
|
||||
@@ -34,6 +34,8 @@ mqttserver.__copyright__?9
|
||||
mqttserver.__license__?9
|
||||
picontrolserver.HASH_FAIL?7
|
||||
picontrolserver.HASH_NULL?7
|
||||
picontrolserver.HASH_PICT?7
|
||||
picontrolserver.HASH_RPIO?7
|
||||
picontrolserver.RevPiSlave.check_connectedacl?4()
|
||||
picontrolserver.RevPiSlave.disconnect_all?4()
|
||||
picontrolserver.RevPiSlave.disconnect_replace_ios?4()
|
||||
|
||||
@@ -6,7 +6,6 @@ __license__ = "GPLv3"
|
||||
import proginit
|
||||
import socket
|
||||
from fcntl import ioctl
|
||||
from hashlib import md5
|
||||
from shared.ipaclmanager import IpAclManager
|
||||
from threading import Event, Thread
|
||||
from timeit import default_timer
|
||||
@@ -14,6 +13,8 @@ from timeit import default_timer
|
||||
# Hashvalues
|
||||
HASH_NULL = b'\x00' * 16
|
||||
HASH_FAIL = b'\xff' * 16
|
||||
HASH_PICT = HASH_FAIL
|
||||
HASH_RPIO = HASH_NULL
|
||||
|
||||
|
||||
class RevPiSlave(Thread):
|
||||
@@ -409,22 +410,10 @@ class RevPiSlaveDev(Thread):
|
||||
|
||||
elif cmd == b'PH':
|
||||
# piCtory md5 Hashwert senden (16 Byte)
|
||||
try:
|
||||
with open(proginit.pargs.configrsc, "rb") as fh_pic:
|
||||
# Hashwert erzeugen und senden
|
||||
file_hash = md5(fh_pic.read()).digest()
|
||||
proginit.logger.debug(
|
||||
"send pictory hashvalue: {0}"
|
||||
"".format(file_hash)
|
||||
"send pictory hashvalue: {0}".format(HASH_PICT)
|
||||
)
|
||||
self._devcon.sendall(file_hash)
|
||||
except Exception as e:
|
||||
proginit.logger.error(
|
||||
"error on pictory hash value transfair: {0}".format(e)
|
||||
)
|
||||
break
|
||||
else:
|
||||
continue
|
||||
self._devcon.sendall(HASH_PICT)
|
||||
|
||||
elif cmd == b'RP':
|
||||
# Replace_IOs Konfiguration senden
|
||||
@@ -452,27 +441,10 @@ class RevPiSlaveDev(Thread):
|
||||
# Replace_IOs md5 Hashwert senden (16 Byte)
|
||||
self.got_replace_ios = True
|
||||
|
||||
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
|
||||
try:
|
||||
if replace_ios:
|
||||
with open(replace_ios, "rb") as fh:
|
||||
# Hashwert erzeugen und senden
|
||||
file_hash = md5(fh.read()).digest()
|
||||
else:
|
||||
file_hash = HASH_NULL
|
||||
proginit.logger.debug(
|
||||
"send replace_ios hashvalue: {0}"
|
||||
"".format(file_hash)
|
||||
"send replace_ios hashvalue: {0}".format(HASH_RPIO)
|
||||
)
|
||||
self._devcon.sendall(file_hash)
|
||||
except Exception as e:
|
||||
proginit.logger.error(
|
||||
"error on replace_ios hash value transfair: {0}"
|
||||
"".format(e)
|
||||
)
|
||||
self._devcon.sendall(HASH_FAIL)
|
||||
else:
|
||||
continue
|
||||
self._devcon.sendall(HASH_RPIO)
|
||||
|
||||
elif cmd == b'EX':
|
||||
# Sauber Verbindung verlassen
|
||||
|
||||
@@ -77,9 +77,7 @@ class RevPiPyLoad():
|
||||
|
||||
# Dateimerker
|
||||
self.pictorymtime = 0
|
||||
self.pictoryhash = b''
|
||||
self.replaceiosmtime = 0
|
||||
self.replaceiohash = b''
|
||||
self.replaceiofail = False
|
||||
|
||||
# Berechtigungsmanger
|
||||
@@ -611,11 +609,13 @@ class RevPiPyLoad():
|
||||
return False
|
||||
self.pictorymtime = mtime
|
||||
|
||||
# TODO: Nur "Devices" list vergleich
|
||||
|
||||
with open(proginit.pargs.configrsc, "rb") as fh:
|
||||
file_hash = md5(fh.read()).hexdigest()
|
||||
if self.pictoryhash == file_hash:
|
||||
if picontrolserver.HASH_PICT == file_hash:
|
||||
return False
|
||||
self.pictoryhash = file_hash
|
||||
picontrolserver.HASH_PICT = file_hash
|
||||
|
||||
return True
|
||||
|
||||
@@ -638,9 +638,10 @@ class RevPiPyLoad():
|
||||
|
||||
if not self.replace_ios_config or self.replaceiofail:
|
||||
# Dateipfad leer, prüfen ob es vorher einen gab
|
||||
if self.replaceiosmtime > 0 or self.replaceiohash:
|
||||
if self.replaceiosmtime > 0 \
|
||||
or picontrolserver.HASH_RPIO != picontrolserver.HASH_NULL:
|
||||
self.replaceiosmtime = 0
|
||||
self.replaceiohash = b''
|
||||
picontrolserver.HASH_RPIO = picontrolserver.HASH_NULL
|
||||
return True
|
||||
|
||||
else:
|
||||
@@ -651,9 +652,11 @@ class RevPiPyLoad():
|
||||
|
||||
with open(self.replace_ios_config, "rb") as fh:
|
||||
file_hash = md5(fh.read()).hexdigest()
|
||||
if self.replaceiohash == file_hash:
|
||||
if picontrolserver.HASH_RPIO == file_hash:
|
||||
return False
|
||||
self.replaceiohash = file_hash
|
||||
picontrolserver.HASH_RPIO = file_hash
|
||||
|
||||
# TODO: Instanz von ConfigParser vergleichen
|
||||
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user