mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 15:13:52 +01:00
Übertragung piCtory Datei trennt bei Fehler Verbindung
Übertragung replace_io Datei trennt bei Fehler Verbindung Replace IO wird nur übertragen, wenn HASH nicht HASH_NULL ist
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE Project SYSTEM "Project-5.1.dtd">
|
||||
<!-- eric project file for project revpipyload -->
|
||||
<!-- Saved: 2019-06-16, 15:47:42 -->
|
||||
<!-- Saved: 2019-08-26, 13:17:52 -->
|
||||
<!-- Copyright (C) 2019 Sven Sager, akira@narux.de -->
|
||||
<Project version="5.1">
|
||||
<Language>en_US</Language>
|
||||
@@ -9,7 +9,7 @@
|
||||
<ProgLanguage mixed="0">Python3</ProgLanguage>
|
||||
<ProjectType>Console</ProjectType>
|
||||
<Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description>
|
||||
<Version>0.7.6</Version>
|
||||
<Version>0.8.0</Version>
|
||||
<Author>Sven Sager</Author>
|
||||
<Email>akira@narux.de</Email>
|
||||
<Eol index="1"/>
|
||||
|
||||
@@ -403,10 +403,9 @@ class RevPiSlaveDev(Thread):
|
||||
)
|
||||
break
|
||||
else:
|
||||
continue
|
||||
finally:
|
||||
# End-of-Transmission character immer senden
|
||||
self._devcon.send(b'\x04')
|
||||
continue
|
||||
|
||||
elif cmd == b'PH':
|
||||
# piCtory md5 Hashwert senden (16 Byte)
|
||||
@@ -416,26 +415,26 @@ class RevPiSlaveDev(Thread):
|
||||
self._devcon.sendall(HASH_PICT)
|
||||
|
||||
elif cmd == b'RP':
|
||||
# Replace_IOs Konfiguration senden
|
||||
# Replace_IOs Konfiguration senden, wenn hash existiert
|
||||
proginit.logger.debug(
|
||||
"transfair replace_io configuration: {0}"
|
||||
"".format(proginit.pargs.configrsc)
|
||||
)
|
||||
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", None)
|
||||
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
|
||||
try:
|
||||
if replace_ios:
|
||||
if HASH_RPIO != HASH_NULL and replace_ios:
|
||||
with open(replace_ios, "rb") as fh:
|
||||
# Komplette piCtory Datei senden
|
||||
# Komplette replace_io Datei senden
|
||||
self._devcon.sendall(fh.read())
|
||||
except Exception as e:
|
||||
proginit.logger.error(
|
||||
"error on replace_io transfair: {0}".format(e)
|
||||
)
|
||||
break
|
||||
else:
|
||||
continue
|
||||
finally:
|
||||
# End-of-Transmission character immer senden
|
||||
self._devcon.send(b'\x04')
|
||||
continue
|
||||
|
||||
elif cmd == b'RH':
|
||||
# Replace_IOs md5 Hashwert senden (16 Byte)
|
||||
|
||||
@@ -428,17 +428,18 @@ class RevPiPyLoad():
|
||||
"revpimodio2: 'apt-get install python3-revpimodio2'"
|
||||
"".format(min_revpimodio)
|
||||
)
|
||||
try:
|
||||
self.xml_ps = procimgserver.ProcimgServer(
|
||||
self.xsrv,
|
||||
None if not self.replace_ios_config
|
||||
else self.replace_ios_config,
|
||||
)
|
||||
self.xsrv.register_function(1, self.xml_psstart, "psstart")
|
||||
self.xsrv.register_function(1, self.xml_psstop, "psstop")
|
||||
except Exception as e:
|
||||
self.xml_ps = None
|
||||
proginit.logger.error(e)
|
||||
else:
|
||||
try:
|
||||
self.xml_ps = procimgserver.ProcimgServer(
|
||||
self.xsrv,
|
||||
None if not self.replace_ios_config
|
||||
else self.replace_ios_config,
|
||||
)
|
||||
self.xsrv.register_function(1, self.xml_psstart, "psstart")
|
||||
self.xsrv.register_function(1, self.xml_psstop, "psstop")
|
||||
except Exception as e:
|
||||
self.xml_ps = None
|
||||
proginit.logger.error(e)
|
||||
|
||||
# XML Modus 2 Einstellungen lesen und Programm herunterladen
|
||||
self.xsrv.register_function(
|
||||
@@ -612,7 +613,7 @@ class RevPiPyLoad():
|
||||
# TODO: Nur "Devices" list vergleich
|
||||
|
||||
with open(proginit.pargs.configrsc, "rb") as fh:
|
||||
file_hash = md5(fh.read()).hexdigest()
|
||||
file_hash = md5(fh.read()).digest()
|
||||
if picontrolserver.HASH_PICT == file_hash:
|
||||
return False
|
||||
picontrolserver.HASH_PICT = file_hash
|
||||
@@ -650,14 +651,14 @@ class RevPiPyLoad():
|
||||
return False
|
||||
self.replaceiosmtime = mtime
|
||||
|
||||
# TODO: Instanz von ConfigParser vergleichen
|
||||
|
||||
with open(self.replace_ios_config, "rb") as fh:
|
||||
file_hash = md5(fh.read()).hexdigest()
|
||||
file_hash = md5(fh.read()).digest()
|
||||
if picontrolserver.HASH_RPIO == file_hash:
|
||||
return False
|
||||
picontrolserver.HASH_RPIO = file_hash
|
||||
|
||||
# TODO: Instanz von ConfigParser vergleichen
|
||||
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user