From 43969d8162528e3d9857d9f67eef678fddd5c16a Mon Sep 17 00:00:00 2001 From: NaruX Date: Sun, 25 Aug 2019 07:27:53 +0200 Subject: [PATCH] =?UTF-8?q?picontrolserver=20enth=C3=A4lt=20Hashvariablen?= =?UTF-8?q?=20von=20piCtory=20und=20replace=5Fio=20Datei=20TODO:=20File-Ha?= =?UTF-8?q?sh-Werte=20sollten=20gegen=20Inhaltspr=C3=BCfung=20getauscht=20?= =?UTF-8?q?werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/picontrolserver.html | 2 +- eric-revpipyload.api | 2 ++ revpipyload/picontrolserver.py | 48 +++++++--------------------------- revpipyload/revpipyload.py | 19 ++++++++------ 4 files changed, 24 insertions(+), 47 deletions(-) diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html index 2b8fcb1..3a6243e 100644 --- a/doc/picontrolserver.html +++ b/doc/picontrolserver.html @@ -12,7 +12,7 @@ Modul fuer die Verwaltung der PLC-Slave Funktionen.

Global Attributes

- +
HASH_FAIL
HASH_NULL
__author__
__copyright__
__license__
HASH_FAIL
HASH_NULL
HASH_PICT
HASH_RPIO
__author__
__copyright__
__license__

Classes

diff --git a/eric-revpipyload.api b/eric-revpipyload.api index 86a5bd7..b9fa29e 100644 --- a/eric-revpipyload.api +++ b/eric-revpipyload.api @@ -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() diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py index ca132a6..19a7960 100644 --- a/revpipyload/picontrolserver.py +++ b/revpipyload/picontrolserver.py @@ -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) - ) - self._devcon.sendall(file_hash) - except Exception as e: - proginit.logger.error( - "error on pictory hash value transfair: {0}".format(e) - ) - break - else: - continue + proginit.logger.debug( + "send pictory hashvalue: {0}".format(HASH_PICT) + ) + 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) - ) - 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 + proginit.logger.debug( + "send replace_ios hashvalue: {0}".format(HASH_RPIO) + ) + self._devcon.sendall(HASH_RPIO) elif cmd == b'EX': # Sauber Verbindung verlassen diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 8af8049..625e31f 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -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