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">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Global Attributes</h3>
|
Global Attributes</h3>
|
||||||
<table>
|
<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>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Classes</h3>
|
Classes</h3>
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ mqttserver.__copyright__?9
|
|||||||
mqttserver.__license__?9
|
mqttserver.__license__?9
|
||||||
picontrolserver.HASH_FAIL?7
|
picontrolserver.HASH_FAIL?7
|
||||||
picontrolserver.HASH_NULL?7
|
picontrolserver.HASH_NULL?7
|
||||||
|
picontrolserver.HASH_PICT?7
|
||||||
|
picontrolserver.HASH_RPIO?7
|
||||||
picontrolserver.RevPiSlave.check_connectedacl?4()
|
picontrolserver.RevPiSlave.check_connectedacl?4()
|
||||||
picontrolserver.RevPiSlave.disconnect_all?4()
|
picontrolserver.RevPiSlave.disconnect_all?4()
|
||||||
picontrolserver.RevPiSlave.disconnect_replace_ios?4()
|
picontrolserver.RevPiSlave.disconnect_replace_ios?4()
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ __license__ = "GPLv3"
|
|||||||
import proginit
|
import proginit
|
||||||
import socket
|
import socket
|
||||||
from fcntl import ioctl
|
from fcntl import ioctl
|
||||||
from hashlib import md5
|
|
||||||
from shared.ipaclmanager import IpAclManager
|
from shared.ipaclmanager import IpAclManager
|
||||||
from threading import Event, Thread
|
from threading import Event, Thread
|
||||||
from timeit import default_timer
|
from timeit import default_timer
|
||||||
@@ -14,6 +13,8 @@ from timeit import default_timer
|
|||||||
# Hashvalues
|
# Hashvalues
|
||||||
HASH_NULL = b'\x00' * 16
|
HASH_NULL = b'\x00' * 16
|
||||||
HASH_FAIL = b'\xff' * 16
|
HASH_FAIL = b'\xff' * 16
|
||||||
|
HASH_PICT = HASH_FAIL
|
||||||
|
HASH_RPIO = HASH_NULL
|
||||||
|
|
||||||
|
|
||||||
class RevPiSlave(Thread):
|
class RevPiSlave(Thread):
|
||||||
@@ -409,22 +410,10 @@ class RevPiSlaveDev(Thread):
|
|||||||
|
|
||||||
elif cmd == b'PH':
|
elif cmd == b'PH':
|
||||||
# piCtory md5 Hashwert senden (16 Byte)
|
# piCtory md5 Hashwert senden (16 Byte)
|
||||||
try:
|
proginit.logger.debug(
|
||||||
with open(proginit.pargs.configrsc, "rb") as fh_pic:
|
"send pictory hashvalue: {0}".format(HASH_PICT)
|
||||||
# Hashwert erzeugen und senden
|
)
|
||||||
file_hash = md5(fh_pic.read()).digest()
|
self._devcon.sendall(HASH_PICT)
|
||||||
proginit.logger.debug(
|
|
||||||
"send pictory hashvalue: {0}"
|
|
||||||
"".format(file_hash)
|
|
||||||
)
|
|
||||||
self._devcon.sendall(file_hash)
|
|
||||||
except Exception as e:
|
|
||||||
proginit.logger.error(
|
|
||||||
"error on pictory hash value transfair: {0}".format(e)
|
|
||||||
)
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
continue
|
|
||||||
|
|
||||||
elif cmd == b'RP':
|
elif cmd == b'RP':
|
||||||
# Replace_IOs Konfiguration senden
|
# Replace_IOs Konfiguration senden
|
||||||
@@ -452,27 +441,10 @@ class RevPiSlaveDev(Thread):
|
|||||||
# Replace_IOs md5 Hashwert senden (16 Byte)
|
# Replace_IOs md5 Hashwert senden (16 Byte)
|
||||||
self.got_replace_ios = True
|
self.got_replace_ios = True
|
||||||
|
|
||||||
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
|
proginit.logger.debug(
|
||||||
try:
|
"send replace_ios hashvalue: {0}".format(HASH_RPIO)
|
||||||
if replace_ios:
|
)
|
||||||
with open(replace_ios, "rb") as fh:
|
self._devcon.sendall(HASH_RPIO)
|
||||||
# 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)
|
|
||||||
)
|
|
||||||
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
|
|
||||||
|
|
||||||
elif cmd == b'EX':
|
elif cmd == b'EX':
|
||||||
# Sauber Verbindung verlassen
|
# Sauber Verbindung verlassen
|
||||||
|
|||||||
@@ -77,9 +77,7 @@ class RevPiPyLoad():
|
|||||||
|
|
||||||
# Dateimerker
|
# Dateimerker
|
||||||
self.pictorymtime = 0
|
self.pictorymtime = 0
|
||||||
self.pictoryhash = b''
|
|
||||||
self.replaceiosmtime = 0
|
self.replaceiosmtime = 0
|
||||||
self.replaceiohash = b''
|
|
||||||
self.replaceiofail = False
|
self.replaceiofail = False
|
||||||
|
|
||||||
# Berechtigungsmanger
|
# Berechtigungsmanger
|
||||||
@@ -611,11 +609,13 @@ class RevPiPyLoad():
|
|||||||
return False
|
return False
|
||||||
self.pictorymtime = mtime
|
self.pictorymtime = mtime
|
||||||
|
|
||||||
|
# TODO: Nur "Devices" list vergleich
|
||||||
|
|
||||||
with open(proginit.pargs.configrsc, "rb") as fh:
|
with open(proginit.pargs.configrsc, "rb") as fh:
|
||||||
file_hash = md5(fh.read()).hexdigest()
|
file_hash = md5(fh.read()).hexdigest()
|
||||||
if self.pictoryhash == file_hash:
|
if picontrolserver.HASH_PICT == file_hash:
|
||||||
return False
|
return False
|
||||||
self.pictoryhash = file_hash
|
picontrolserver.HASH_PICT = file_hash
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -638,9 +638,10 @@ class RevPiPyLoad():
|
|||||||
|
|
||||||
if not self.replace_ios_config or self.replaceiofail:
|
if not self.replace_ios_config or self.replaceiofail:
|
||||||
# Dateipfad leer, prüfen ob es vorher einen gab
|
# 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.replaceiosmtime = 0
|
||||||
self.replaceiohash = b''
|
picontrolserver.HASH_RPIO = picontrolserver.HASH_NULL
|
||||||
return True
|
return True
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -651,9 +652,11 @@ class RevPiPyLoad():
|
|||||||
|
|
||||||
with open(self.replace_ios_config, "rb") as fh:
|
with open(self.replace_ios_config, "rb") as fh:
|
||||||
file_hash = md5(fh.read()).hexdigest()
|
file_hash = md5(fh.read()).hexdigest()
|
||||||
if self.replaceiohash == file_hash:
|
if picontrolserver.HASH_RPIO == file_hash:
|
||||||
return False
|
return False
|
||||||
self.replaceiohash = file_hash
|
picontrolserver.HASH_RPIO = file_hash
|
||||||
|
|
||||||
|
# TODO: Instanz von ConfigParser vergleichen
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user