Stellt das RevPiPyLoad Programm bereit. Dieses Programm lauft als Daemon auf
dem Revolution Pi. Es stellt Funktionen bereit, die es ermoeglichen ein Python
Programm zu starten und fuehrt dessen Ausgaben in eine Logdatei. Die Logdaten
@@ -32,7 +34,7 @@ begrenzt werden!
Global Attributes
-
pyloadversion
+
__author__
__copyright__
__license__
__version__
Classes
diff --git a/doc/revpipyload.shared.ipaclmanager.html b/doc/revpipyload.shared.ipaclmanager.html
index 9fdebde..c9253e5 100644
--- a/doc/revpipyload.shared.ipaclmanager.html
+++ b/doc/revpipyload.shared.ipaclmanager.html
@@ -12,7 +12,7 @@ Verwaltet IP Adressen und deren ACLs.
Global Attributes
-
None
+
__author__
__copyright__
__license__
__version__
Classes
diff --git a/doc/xrpcserver.html b/doc/xrpcserver.html
index 393e72d..4364aa4 100644
--- a/doc/xrpcserver.html
+++ b/doc/xrpcserver.html
@@ -12,7 +12,7 @@ XML-RPC Server anpassungen fuer Absicherung.
Global Attributes
-
None
+
__author__
__copyright__
__license__
Classes
diff --git a/eric-revpipyload.api b/eric-revpipyload.api
index 354bb8c..d30697b 100644
--- a/eric-revpipyload.api
+++ b/eric-revpipyload.api
@@ -1,3 +1,6 @@
+helper.__author__?9
+helper.__copyright__?9
+helper.__license__?9
helper._setuprt?5(pid, evt_exit)
helper._zeroprocimg?5()
helper.refullmatch?4(regex, string)
@@ -12,6 +15,9 @@ logsystem.PipeLogwriter.newlogfile?4()
logsystem.PipeLogwriter.run?4()
logsystem.PipeLogwriter.stop?4()
logsystem.PipeLogwriter?1(logfilename)
+logsystem.__author__?9
+logsystem.__copyright__?9
+logsystem.__license__?9
picontrolserver.RevPiSlave.check_connectedacl?4()
picontrolserver.RevPiSlave.newlogfile?4()
picontrolserver.RevPiSlave.run?4()
@@ -20,6 +26,9 @@ picontrolserver.RevPiSlave?1(ipacl, port=55234)
picontrolserver.RevPiSlaveDev.run?4()
picontrolserver.RevPiSlaveDev.stop?4()
picontrolserver.RevPiSlaveDev?1(devcon, acl)
+picontrolserver.__author__?9
+picontrolserver.__copyright__?9
+picontrolserver.__license__?9
plcsystem.RevPiPlc.__get_autoreloaddelay?6()
plcsystem.RevPiPlc.__set_autoreloaddelay?6(value)
plcsystem.RevPiPlc._configureplw?5()
@@ -30,14 +39,23 @@ plcsystem.RevPiPlc.newlogfile?4()
plcsystem.RevPiPlc.run?4()
plcsystem.RevPiPlc.stop?4()
plcsystem.RevPiPlc?1(program, arguments, pversion)
+plcsystem.__author__?9
+plcsystem.__copyright__?9
+plcsystem.__license__?9
procimgserver.ProcimgServer.devices?4()
-procimgserver.ProcimgServer.ios?4(type)
+procimgserver.ProcimgServer.ios?4(iotype)
procimgserver.ProcimgServer.loadrevpimodio?4()
procimgserver.ProcimgServer.setvalue?4(device, io, value)
procimgserver.ProcimgServer.start?4()
procimgserver.ProcimgServer.stop?4()
procimgserver.ProcimgServer.values?4()
procimgserver.ProcimgServer?1(xmlserver)
+procimgserver.__author__?9
+procimgserver.__copyright__?9
+procimgserver.__license__?9
+proginit.__author__?9
+proginit.__copyright__?9
+proginit.__license__?9
proginit.cleanup?4()
proginit.configure?4()
proginit.forked?7
@@ -84,7 +102,13 @@ revpipyload.RevPiPyLoad.xml_reload?4()
revpipyload.RevPiPyLoad.xml_setconfig?4(dc, loadnow=False)
revpipyload.RevPiPyLoad.xml_setpictoryrsc?4(filebytes, reset=False)
revpipyload.RevPiPyLoad?1()
-revpipyload.pyloadversion?7
+revpipyload.__author__?9
+revpipyload.__copyright__?9
+revpipyload.__license__?9
+revpipyload.__version__?9
+revpipyload.shared.__author__?9
+revpipyload.shared.__copyright__?9
+revpipyload.shared.__license__?9
revpipyload.shared.ipaclmanager.IpAclManager.__get_acl?6()
revpipyload.shared.ipaclmanager.IpAclManager.__get_filename?6()
revpipyload.shared.ipaclmanager.IpAclManager.__get_regex_acl?6()
@@ -98,6 +122,10 @@ revpipyload.shared.ipaclmanager.IpAclManager.loadaclfile?4(filename)
revpipyload.shared.ipaclmanager.IpAclManager.regex_acl?7
revpipyload.shared.ipaclmanager.IpAclManager.writeaclfile?4(filename=None, aclname=None)
revpipyload.shared.ipaclmanager.IpAclManager?1(minlevel, maxlevel, acl=None)
+revpipyload.shared.ipaclmanager.__author__?9
+revpipyload.shared.ipaclmanager.__copyright__?9
+revpipyload.shared.ipaclmanager.__license__?9
+revpipyload.shared.ipaclmanager.__version__?9
revpipyload.shared.ipaclmanager.refullmatch?4(regex, string)
xrpcserver.SaveXMLRPCRequestHandler.parse_request?4()
xrpcserver.SaveXMLRPCServer._dispatch?5(method, params)
@@ -106,3 +134,6 @@ xrpcserver.SaveXMLRPCServer.register_function?4(acl_level, function, name=None)
xrpcserver.SaveXMLRPCServer.start?4()
xrpcserver.SaveXMLRPCServer.stop?4()
xrpcserver.SaveXMLRPCServer?1(addr, logRequests=True, allow_none=False, ipacl=None)
+xrpcserver.__author__?9
+xrpcserver.__copyright__?9
+xrpcserver.__license__?9
diff --git a/revpipyload.e4p b/revpipyload.e4p
index bd8ef63..097630e 100644
--- a/revpipyload.e4p
+++ b/revpipyload.e4p
@@ -1,7 +1,7 @@
-
+
en_US
@@ -14,27 +14,27 @@
akira@narux.de
- revpipyload/proginit.py
- setup.py
- revpipyload/revpipyload.py
- revpipyload/procimgserver.py
- revpipyload/logsystem.py
- revpipyload/plcsystem.py
- revpipyload/picontrolserver.pyrevpipyload/helper.py
- revpipyload/xrpcserver.py
- revpipyload/shared/ipaclmanager.py
+ revpipyload/logsystem.py
+ revpipyload/picontrolserver.py
+ revpipyload/plcsystem.py
+ revpipyload/procimgserver.py
+ revpipyload/proginit.py
+ revpipyload/revpipyload.pyrevpipyload/shared/__init__.py
+ revpipyload/shared/ipaclmanager.py
+ revpipyload/xrpcserver.py
+ setup.py
- dataMANIFEST.in
- doc
+ datadebian
+ doceric-revpipyload.apistdeb.cfg
@@ -141,9 +141,6 @@
-
-
-
@@ -240,14 +237,6 @@
False
-
- sourceExtensions
-
-
-
-
-
- useRecursion
@@ -267,6 +256,41 @@
+
+ BuiltinsChecker
+
+
+
+
+ chr
+
+
+
+ unichr
+
+
+
+ str
+
+
+
+ unicode
+
+
+
+
+
+ CopyrightAuthor
+
+
+
+
+
+ CopyrightMinFileSize
+
+
+ 0
+ DocstringType
@@ -277,13 +301,13 @@
ExcludeFiles
- demo/*
+ */demo/*ExcludeMessages
- E123,E226,E24
+ E123,E226,E24,C101FixCodes
@@ -297,6 +321,12 @@
False
+
+ FutureChecker
+
+
+
+ HangClosing
@@ -309,6 +339,24 @@
+
+ LineComplexity
+
+
+ 15
+
+
+ LineComplexityScore
+
+
+ 10
+
+
+ MaxCodeComplexity
+
+
+ 10
+ MaxLineLength
@@ -333,6 +381,12 @@
False
+
+ ValidEncodings
+
+
+ latin-1, utf-8
+
diff --git a/revpipyload/helper.py b/revpipyload/helper.py
index e40f4fd..915f546 100644
--- a/revpipyload/helper.py
+++ b/revpipyload/helper.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Helperfunktionen fuer das gesamte RevPiPyLoad-System."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import os
import proginit
from re import match as rematch
@@ -49,7 +46,7 @@ def _setuprt(pid, evt_exit):
try:
kpiddat = kpidps.communicate()[0]
lst_kpids = kpiddat.split()
- except:
+ except Exception:
kpidps.kill()
if proginit.logger is not None:
proginit.logger.error(
@@ -66,7 +63,7 @@ def _setuprt(pid, evt_exit):
if not kpid.isdigit():
if proginit.logger is not None:
proginit.logger.error(
- "pid={} and prio={} are not valid - no rt active"
+ "pid={0} and prio={1} are not valid - no rt active"
"".format(kpid, kprio)
)
return None
@@ -80,7 +77,7 @@ def _setuprt(pid, evt_exit):
if kprio < 10:
# Profile anpassen
- ec = os.system("/usr/bin/env chrt -fp {} {}".format(
+ ec = os.system("/usr/bin/env chrt -fp {0} {1}".format(
dict_change[ps_change], kpid
))
if ec != 0:
@@ -92,12 +89,12 @@ def _setuprt(pid, evt_exit):
# SCHED_RR für pid setzen
if proginit.logger is not None:
- proginit.logger.info("set scheduler profile of pid {}".format(pid))
+ proginit.logger.info("set scheduler profile of pid {0}".format(pid))
- ec = os.system("/usr/bin/env chrt -p 1 {}".format(pid))
+ ec = os.system("/usr/bin/env chrt -p 1 {0}".format(pid))
if ec != 0 and proginit.logger is not None:
proginit.logger.error(
- "could not set scheduler profile of pid {}"
+ "could not set scheduler profile of pid {0}"
"".format(pid)
)
diff --git a/revpipyload/logsystem.py b/revpipyload/logsystem.py
index 370b918..0e06131 100644
--- a/revpipyload/logsystem.py
+++ b/revpipyload/logsystem.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Modul fuer die Verwaltung der Logdateien."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import os
import proginit
from threading import Event, Lock, Thread
@@ -100,7 +97,7 @@ class PipeLogwriter(Thread):
# Pipes öffnen
self._fdr, self.fdw = os.pipe()
- proginit.logger.debug("pipe fd read: {} / write: {}".format(
+ proginit.logger.debug("pipe fd read: {0} / write: {1}".format(
self._fdr, self.fdw
))
@@ -121,7 +118,7 @@ class PipeLogwriter(Thread):
if os.access(dirname, os.R_OK | os.W_OK):
logfile = open(self.logfile, "a")
else:
- raise RuntimeError("can not open logfile {}".format(self.logfile))
+ raise RuntimeError("can not open logfile {0}".format(self.logfile))
proginit.logger.debug("leave PipeLogwriter._configurefh()")
return logfile
@@ -130,7 +127,7 @@ class PipeLogwriter(Thread):
"""Schreibt eine Zeile in die Logdatei oder stdout.
@param message Logzeile zum Schreiben"""
with self._lckfh:
- self._fh.write("{}\n".format(message))
+ self._fh.write("{0}\n".format(message))
self._fh.flush()
def newlogfile(self):
@@ -152,7 +149,7 @@ class PipeLogwriter(Thread):
try:
self._fh.write(line)
self._fh.flush()
- except:
+ except Exception:
proginit.logger.exception("PipeLogwriter in write log line")
finally:
self._lckfh.release()
@@ -178,7 +175,7 @@ class PipeLogwriter(Thread):
# Letzten Log in Pipe schreiben zum befreien
try:
os.write(self.fdw, b"\n")
- except:
+ except Exception:
pass
finally:
self._lckfh.release()
diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py
index 3fb8705..e30db0f 100644
--- a/revpipyload/picontrolserver.py
+++ b/revpipyload/picontrolserver.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Modul fuer die Verwaltung der PLC-Slave Funktionen."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import proginit
import socket
from shared.ipaclmanager import IpAclManager
@@ -52,14 +49,14 @@ class RevPiSlave(Thread):
if level < 0:
# Verbindung killen
proginit.logger.warning(
- "client {} not in acl - disconnect!".format(ip)
+ "client {0} not in acl - disconnect!".format(ip)
)
dev.stop()
elif level != dev._acl:
# ACL Level anpassen
proginit.logger.warning(
- "change acl level from {} to {} on existing connection {}"
- "".format(level, dev._acl, ip)
+ "change acl level from {0} to {1} on existing "
+ "connection {2}".format(level, dev._acl, ip)
)
dev._acl = level
@@ -76,7 +73,7 @@ class RevPiSlave(Thread):
while not self._evt_exit.is_set():
try:
self.so.bind(("", self._port))
- except:
+ except Exception:
proginit.logger.warning("can not bind socket - retry")
self._evt_exit.wait(1)
else:
@@ -91,7 +88,7 @@ class RevPiSlave(Thread):
proginit.logger.info("accept new connection for revpinetio")
try:
tup_sock = self.so.accept()
- except:
+ except Exception:
if not self._evt_exit.is_set():
proginit.logger.exception("accept exception")
continue
@@ -101,7 +98,7 @@ class RevPiSlave(Thread):
if aclstatus == -1:
tup_sock[0].close()
proginit.logger.warning(
- "host ip '{}' does not match revpiacl - disconnect"
+ "host ip '{0}' does not match revpiacl - disconnect"
"".format(tup_sock[1][0])
)
else:
@@ -135,7 +132,7 @@ class RevPiSlave(Thread):
if self.so is not None:
try:
self.so.shutdown(socket.SHUT_RDWR)
- except:
+ except Exception:
pass
proginit.logger.debug("leave RevPiSlave.stop()")
@@ -174,7 +171,7 @@ class RevPiSlaveDev(Thread):
proginit.logger.debug("enter RevPiSlaveDev.run()")
proginit.logger.info(
- "got new connection from host {} with acl {}".format(
+ "got new connection from host {0} with acl {1}".format(
self._addr, self._acl
)
)
@@ -182,11 +179,11 @@ class RevPiSlaveDev(Thread):
# Prozessabbild öffnen
try:
fh_proc = open(proginit.pargs.procimg, "r+b", 0)
- except:
+ except Exception:
fh_proc = None
self._evt_exit.set()
proginit.logger.error(
- "can not open process image {}".format(proginit.pargs.procimg)
+ "can not open process image {0}".format(proginit.pargs.procimg)
)
dirty = True
@@ -197,14 +194,14 @@ class RevPiSlaveDev(Thread):
# Meldung erhalten
try:
netcmd = self._devcon.recv(16)
- except:
+ except Exception:
break
# Wenn Meldung ungültig ist aussteigen
if netcmd[0:1] != b'\x01' or netcmd[-1:] != b'\x17':
if netcmd != b'':
proginit.logger.error(
- "net cmd not valid {}".format(netcmd)
+ "net cmd not valid {0}".format(netcmd)
)
break
@@ -219,7 +216,7 @@ class RevPiSlaveDev(Thread):
fh_proc.seek(position)
try:
self._devcon.sendall(fh_proc.read(length))
- except:
+ except Exception:
proginit.logger.error("error while send read data")
break
@@ -235,7 +232,7 @@ class RevPiSlaveDev(Thread):
# Empfange Datenblock zu schreiben nach Meldung
try:
block = self._devcon.recv(length)
- except:
+ except Exception:
proginit.logger.error("error while recv data to write")
self._writeerror = True
break
@@ -267,7 +264,7 @@ class RevPiSlaveDev(Thread):
try:
timeoutms = int.from_bytes(netcmd[3:5], byteorder="little")
- except:
+ except Exception:
proginit.logger.error("can not convert timeout value")
break
@@ -306,7 +303,7 @@ class RevPiSlaveDev(Thread):
# Record seperator character
self._devcon.send(b'\x1e')
proginit.logger.info(
- "cleared dirty bytes on position {}"
+ "cleared dirty bytes on position {0}"
"".format(position)
)
@@ -321,7 +318,7 @@ class RevPiSlaveDev(Thread):
if block == b'':
break
- except:
+ except Exception:
proginit.logger.error("error while recv dirty bytes")
break
@@ -335,14 +332,14 @@ class RevPiSlaveDev(Thread):
# Record seperator character
self._devcon.send(b'\x1e')
proginit.logger.info(
- "got dirty bytes to write on error on position {}"
+ "got dirty bytes to write on error on position {0}"
"".format(position)
)
elif cmd == b'PI':
# piCtory Konfiguration senden
proginit.logger.debug(
- "transfair pictory configuration: {}"
+ "transfair pictory configuration: {0}"
"".format(proginit.pargs.configrsc)
)
fh_pic = open(proginit.pargs.configrsc, "rb")
@@ -374,7 +371,7 @@ class RevPiSlaveDev(Thread):
comtime = default_timer() - ot
if comtime > self._deadtime:
proginit.logger.warning(
- "runtime more than {} ms: {}!".format(
+ "runtime more than {0} ms: {1}!".format(
int(self._deadtime * 1000), comtime
)
)
@@ -393,7 +390,7 @@ class RevPiSlaveDev(Thread):
self._devcon.close()
self._devcon = None
- proginit.logger.info("disconnected from {}".format(self._addr))
+ proginit.logger.info("disconnected from {0}".format(self._addr))
proginit.logger.debug("leave RevPiSlaveDev.run()")
def stop(self):
diff --git a/revpipyload/plcsystem.py b/revpipyload/plcsystem.py
index fadcf94..43fd6d9 100644
--- a/revpipyload/plcsystem.py
+++ b/revpipyload/plcsystem.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Modul fuer die Verwaltung der PLC Funktionen."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import os
import proginit
import shlex
@@ -81,7 +78,7 @@ class RevPiPlc(Thread):
def _setuppopen(self):
"""Setzt UID und GID fuer das PLC Programm."""
proginit.logger.info(
- "set uid {} and gid {} for plc program".format(
+ "set uid {0} and gid {1} for plc program".format(
self.uid, self.gid)
)
os.setgid(self.gid)
@@ -91,7 +88,7 @@ class RevPiPlc(Thread):
"""Startet das PLC Programm.
@param lst_proc Prozessliste
@return subprocess"""
- proginit.logger.debug("enter RevPiPlc._spopen({})".format(lst_proc))
+ proginit.logger.debug("enter RevPiPlc._spopen({0})".format(lst_proc))
sp = subprocess.Popen(
lst_proc,
@@ -111,7 +108,7 @@ class RevPiPlc(Thread):
if self._plw is not None:
self._plw.newlogfile()
self._plw.logline("-" * 55)
- self._plw.logline("start new logfile: {}".format(asctime()))
+ self._plw.logline("start new logfile: {0}".format(asctime()))
proginit.logger.debug("leave RevPiPlc.newlogfile()")
@@ -122,20 +119,20 @@ class RevPiPlc(Thread):
# LogWriter starten und Logausgaben schreiben
if self._plw is not None:
self._plw.logline("-" * 55)
- self._plw.logline("plc: {} started: {}".format(
+ self._plw.logline("plc: {0} started: {1}".format(
os.path.basename(self._program), asctime()
))
self._plw.start()
# Befehlstliste aufbauen
- lst_proc = shlex.split("/usr/bin/env {} -u {} {}".format(
+ lst_proc = shlex.split("/usr/bin/env {0} -u {1} {2}".format(
"python2" if self._pversion == 2 else "python3",
self._program,
self._arguments
))
# Prozess erstellen
- proginit.logger.info("start plc program {}".format(self._program))
+ proginit.logger.info("start plc program {0}".format(self._program))
self._procplc = self._spopen(lst_proc)
# RealTime Scheduler nutzen nach 5 Sekunden Programmvorlauf
@@ -155,7 +152,7 @@ class RevPiPlc(Thread):
if self.exitcode > 0:
# PLC Python Programm abgestürzt
proginit.logger.error(
- "plc program crashed - exitcode: {}".format(
+ "plc program crashed - exitcode: {0}".format(
self.exitcode
)
)
@@ -198,7 +195,7 @@ class RevPiPlc(Thread):
if self._plw is not None:
self._plw.logline("-" * 55)
- self._plw.logline("plc: {} stopped: {}".format(
+ self._plw.logline("plc: {0} stopped: {1}".format(
os.path.basename(self._program), asctime()
))
@@ -223,18 +220,18 @@ class RevPiPlc(Thread):
# Prozess beenden
count = 0
- proginit.logger.info("term plc program {}".format(self._program))
+ proginit.logger.info("term plc program {0}".format(self._program))
self._procplc.terminate()
while self._procplc.poll() is None and count < 10:
count += 1
proginit.logger.info(
- "wait term plc program {} seconds".format(count * 0.5)
+ "wait term plc program {0} seconds".format(count * 0.5)
)
sleep(0.5)
if self._procplc.poll() is None:
proginit.logger.warning(
- "can not term plc program {}".format(self._program)
+ "can not term plc program {0}".format(self._program)
)
self._procplc.kill()
proginit.logger.warning("killed plc program")
diff --git a/revpipyload/procimgserver.py b/revpipyload/procimgserver.py
index 1526771..e6d9a52 100644
--- a/revpipyload/procimgserver.py
+++ b/revpipyload/procimgserver.py
@@ -1,16 +1,13 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Stellt Funktionen bereit um das Prozessabbild zu ueberwachen.
Bei ausreichend Rechten koennen Ausgaenge auch gesetzt werden um einen
IO-Check bei Inbetriebname durchzufuehren.
"""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import pickle
import proginit
import revpimodio2
@@ -59,18 +56,18 @@ class ProcimgServer():
(dev.position, dev.name) for dev in self.rpi.device
]
- def ios(self, type):
+ def ios(self, iotype):
"""Generiert ein dict() der Devices und IOs.
- @param type IO Typ inp/out
+ @param iotype IO Typ inp/out
@return pickled dict()"""
dict_ios = {}
for dev in self.rpi.device:
dict_ios[dev.position] = []
# IO Typen auswerten
- if type == "inp":
+ if iotype == "inp":
lst_io = dev.get_inputs()
- elif type == "out":
+ elif iotype == "out":
lst_io = dev.get_outputs()
else:
lst_io = []
@@ -98,7 +95,7 @@ class ProcimgServer():
configrsc=proginit.pargs.configrsc,
procimg=proginit.pargs.procimg
)
- except:
+ except Exception:
self.rpi = None
proginit.logger.error("piCtory configuration not loadable")
return False
diff --git a/revpipyload/proginit.py b/revpipyload/proginit.py
index 9583afb..80b6e8a 100644
--- a/revpipyload/proginit.py
+++ b/revpipyload/proginit.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Main functions of our program."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import logging
import os
import sys
@@ -81,7 +78,7 @@ def configure():
# Prüfen ob daemon schon läuft
if os.path.exists(pidfile):
raise SystemError(
- "program already running as daemon. check {}".format(pidfile)
+ "program already running as daemon. check {0}".format(pidfile)
)
# Zum daemon machen
@@ -94,17 +91,18 @@ def configure():
forked = True
# piCtory Konfiguration prüfen
+ lst_rsc = ["/etc/revpi/config.rsc", "/opt/KUNBUS/config.rsc"]
if pargs.configrsc is None:
- lst_rsc = ["/etc/revpi/config.rsc", "/opt/KUNBUS/config.rsc"]
for rscfile in lst_rsc:
if os.access(rscfile, os.F_OK | os.R_OK):
pargs.configrsc = rscfile
break
elif not os.access(pargs.configrsc, os.F_OK | os.R_OK):
pargs.configrsc = None
+
if pargs.configrsc is None:
raise RuntimeError(
- "can not find known pictory configurations at {}"
+ "can not find known pictory configurations at {0}"
"".format(", ".join(lst_rsc))
)
diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py
index 9010f9c..925ce7b 100755
--- a/revpipyload/revpipyload.py
+++ b/revpipyload/revpipyload.py
@@ -1,14 +1,9 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-# Version: see global var pyloadversion
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""Revolution Pi Python PLC Loader.
+Webpage: https://revpimodio.org/revpipyplc/
+
Stellt das RevPiPyLoad Programm bereit. Dieses Programm lauft als Daemon auf
dem Revolution Pi. Es stellt Funktionen bereit, die es ermoeglichen ein Python
Programm zu starten und fuehrt dessen Ausgaben in eine Logdatei. Die Logdaten
@@ -30,6 +25,10 @@ Die Zugriffsmoeglichkeiten koennen ueber einen Konfigurationsparameter
begrenzt werden!
"""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
+__version__ = "0.6.7"
import gzip
import logsystem
import picontrolserver
@@ -50,8 +49,6 @@ from time import asctime
from xmlrpc.client import Binary
from xrpcserver import SaveXMLRPCServer
-pyloadversion = "0.6.7"
-
class RevPiPyLoad():
@@ -112,9 +109,9 @@ class RevPiPyLoad():
return (
self.plcslave !=
- self.globalconfig["PLCSLAVE"].getboolean("plcslave", False)
- or self.plcslavebindip != ip
- or self.plcslaveport != port
+ self.globalconfig["PLCSLAVE"].getboolean("plcslave", False) or
+ self.plcslavebindip != ip or
+ self.plcslaveport != port
)
def _check_mustrestart_plcprogram(self):
@@ -127,18 +124,18 @@ class RevPiPyLoad():
else:
return (
self.plcworkdir !=
- self.globalconfig["DEFAULT"].get("plcworkdir", ".")
- or self.plcprogram !=
- self.globalconfig["DEFAULT"].get("plcprogram", "none.py")
- or self.plcarguments !=
- self.globalconfig["DEFAULT"].get("plcarguments", "")
- or self.plcuid !=
- self.globalconfig["DEFAULT"].getint("plcuid", 65534)
- or self.plcgid !=
- self.globalconfig["DEFAULT"].getint("plcgid", 65534)
- or self.pythonversion !=
- self.globalconfig["DEFAULT"].getint("pythonversion", 3)
- or self.rtlevel !=
+ self.globalconfig["DEFAULT"].get("plcworkdir", ".") or
+ self.plcprogram !=
+ self.globalconfig["DEFAULT"].get("plcprogram", "none.py") or
+ self.plcarguments !=
+ self.globalconfig["DEFAULT"].get("plcarguments", "") or
+ self.plcuid !=
+ self.globalconfig["DEFAULT"].getint("plcuid", 65534) or
+ self.plcgid !=
+ self.globalconfig["DEFAULT"].getint("plcgid", 65534) or
+ self.pythonversion !=
+ self.globalconfig["DEFAULT"].getint("pythonversion", 3) or
+ self.rtlevel !=
self.globalconfig["DEFAULT"].getint("rtlevel", 0)
)
@@ -151,7 +148,7 @@ class RevPiPyLoad():
# Konfigurationsdatei laden
proginit.logger.info(
- "loading config file: {}".format(proginit.globalconffile)
+ "loading config file: {0}".format(proginit.globalconffile)
)
self.globalconfig.read(proginit.globalconffile)
@@ -237,7 +234,7 @@ class RevPiPyLoad():
# Workdirectory wechseln
if not os.access(self.plcworkdir, os.R_OK | os.W_OK | os.X_OK):
raise ValueError(
- "can not access plcworkdir '{}'".format(self.plcworkdir)
+ "can not access plcworkdir '{0}'".format(self.plcworkdir)
)
os.chdir(self.plcworkdir)
@@ -288,7 +285,7 @@ class RevPiPyLoad():
self.xsrv.register_multicall_functions()
# Allgemeine Funktionen
- self.xsrv.register_function(0, lambda: pyloadversion, "version")
+ self.xsrv.register_function(0, lambda: __version__, "version")
self.xsrv.register_function(0, lambda acl: acl, "xmlmodus")
# XML Modus 1 Nur Logs lesen und PLC Programm neu starten
@@ -315,7 +312,7 @@ class RevPiPyLoad():
self.xml_ps = procimgserver.ProcimgServer(self.xsrv)
self.xsrv.register_function(1, self.xml_psstart, "psstart")
self.xsrv.register_function(1, self.xml_psstop, "psstop")
- except:
+ except Exception:
self.xml_ps = None
proginit.logger.warning(
"can not load revpimodio2 module. maybe its not installed "
@@ -377,7 +374,7 @@ class RevPiPyLoad():
# Prüfen ob Programm existiert
if not os.path.exists(os.path.join(self.plcworkdir, self.plcprogram)):
- proginit.logger.error("plc file does not exists {}".format(
+ proginit.logger.error("plc file does not exists {0}".format(
os.path.join(self.plcworkdir, self.plcprogram)
))
return None
@@ -431,7 +428,7 @@ class RevPiPyLoad():
# Logger neu konfigurieren
proginit.configure()
- proginit.logger.warning("start new logfile: {}".format(asctime()))
+ proginit.logger.warning("start new logfile: {0}".format(asctime()))
# stdout für revpipyplc
if self.plc is not None:
@@ -473,7 +470,7 @@ class RevPiPyLoad():
fh_pack.write(
proginit.pargs.configrsc, arcname="config.rsc"
)
- except:
+ except Exception:
filename = ""
finally:
fh_pack.close()
@@ -485,7 +482,7 @@ class RevPiPyLoad():
fh_pack.add(".", arcname=os.path.basename(self.plcworkdir))
if pictory:
fh_pack.add(proginit.pargs.configrsc, arcname="config.rsc")
- except:
+ except Exception:
filename = ""
finally:
fh_pack.close()
@@ -772,7 +769,7 @@ class RevPiPyLoad():
proginit.logger.debug("xmlrpc call plcuploadclean")
try:
rmtree(".", ignore_errors=True)
- except:
+ except Exception:
return False
return True
@@ -821,7 +818,7 @@ class RevPiPyLoad():
localkey = key.replace(suffix, "")
if not refullmatch(keys[sektion][key], str(dc[key])):
proginit.logger.error(
- "got wrong setting '{}' with value '{}'".format(
+ "got wrong setting '{0}' with value '{1}'".format(
key, dc[key]
)
)
@@ -837,7 +834,8 @@ class RevPiPyLoad():
with open(proginit.globalconffile, "w") as fh:
self.globalconfig.write(fh)
proginit.logger.info(
- "got new config and wrote it to {}".format(proginit.globalconffile)
+ "got new config and wrote it to {0}"
+ "".format(proginit.globalconffile)
)
# ACLs sofort übernehmen und schreiben
@@ -846,32 +844,28 @@ class RevPiPyLoad():
self.plcslaveacl.acl = str_acl
if not self.plcslaveacl.writeaclfile(aclname="PLC-SLAVE"):
proginit.logger.error(
- "can not write acl file '{}' for PLC-SLAVE".format(
- self.plcslaveacl.filename
- )
+ "can not write acl file '{0}' for PLC-SLAVE"
+ "".format(self.plcslaveacl.filename)
)
return False
else:
proginit.logger.info(
- "wrote new acl file '{}' for PLC-SLAVE".format(
- self.plcslaveacl.filename
- )
+ "wrote new acl file '{0}' for PLC-SLAVE"
+ "".format(self.plcslaveacl.filename)
)
str_acl = dc.get("xmlrpcacl", None)
if str_acl is not None and self.xmlrpcacl.acl != str_acl:
self.xmlrpcacl.acl = str_acl
if not self.xmlrpcacl.writeaclfile(aclname="XML-RPC"):
proginit.logger.error(
- "can not write acl file '{}' for XML-RPC".format(
- self.xmlrpcacl.filename
- )
+ "can not write acl file '{0}' for XML-RPC"
+ "".format(self.xmlrpcacl.filename)
)
return False
else:
proginit.logger.info(
- "wrote new acl file '{}' for XML-RPC".format(
- self.xmlrpcacl.filename
- )
+ "wrote new acl file '{0}' for XML-RPC"
+ "".format(self.xmlrpcacl.filename)
)
# RevPiPyLoad neu konfigurieren
@@ -899,7 +893,7 @@ class RevPiPyLoad():
# Datei als JSON laden
try:
jconfigrsc = jloads(filebytes.data.decode())
- except:
+ except Exception:
return -1
# Elemente prüfen
@@ -928,7 +922,7 @@ class RevPiPyLoad():
try:
with open(proginit.pargs.configrsc, "wb") as fh:
fh.write(filebytes.data)
- except:
+ except Exception:
return -3
else:
if reset:
diff --git a/revpipyload/shared/__init__.py b/revpipyload/shared/__init__.py
index d059206..1caa366 100644
--- a/revpipyload/shared/__init__.py
+++ b/revpipyload/shared/__init__.py
@@ -1 +1,5 @@
+# -*- coding: utf-8 -*-
"""Shared modules."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
diff --git a/revpipyload/shared/ipaclmanager.py b/revpipyload/shared/ipaclmanager.py
index 5bf9aea..2568ea8 100644
--- a/revpipyload/shared/ipaclmanager.py
+++ b/revpipyload/shared/ipaclmanager.py
@@ -1,11 +1,9 @@
# -*- coding: utf-8 -*-
-#
-# IpAclManager
-#
-# (c) Sven Sager, License: LGPLv3
-# Version 0.1.0
-#
"""Verwaltet IP Adressen und deren ACLs."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
+__version__ = "0.1.0"
from os import access, R_OK, W_OK
from re import match as rematch
@@ -66,7 +64,7 @@ class IpAclManager():
return ACLs als """
str_acl = ""
for aclip in sorted(self.__dict_acl):
- str_acl += "{},{} ".format(aclip, self.__dict_acl[aclip])
+ str_acl += "{0},{1} ".format(aclip, self.__dict_acl[aclip])
return str_acl.strip()
def __get_filename(self):
@@ -173,14 +171,14 @@ class IpAclManager():
if not access(filename, W_OK):
return False
- header = "# {}Access Control List (acl)\n" \
+ header = "# {0}Access Control List (acl)\n" \
"# One entry per Line IPADRESS,LEVEL\n" \
"#\n".format("" if aclname is None else aclname + " ")
with open(filename, "w") as fh:
fh.write(header)
for aclip in sorted(self.__dict_acl):
- fh.write("{},{}\n".format(aclip, self.__dict_acl[aclip]))
+ fh.write("{0},{1}\n".format(aclip, self.__dict_acl[aclip]))
return True
diff --git a/revpipyload/xrpcserver.py b/revpipyload/xrpcserver.py
index ae1f807..d318d68 100644
--- a/revpipyload/xrpcserver.py
+++ b/revpipyload/xrpcserver.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
-#
-# RevPiPyLoad
-#
-# Webpage: https://revpimodio.org/revpipyplc/
-# (c) Sven Sager, License: LGPLv3
-#
"""XML-RPC Server anpassungen fuer Absicherung."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import proginit
from shared.ipaclmanager import IpAclManager
from concurrent import futures
@@ -61,7 +58,7 @@ class SaveXMLRPCServer(SimpleXMLRPCServer):
# ACL Mode abfragen (Gibt ACL Level als Parameter)
if method == "xmlmodus":
- params = (self.requestacl, )
+ params = (self.requestacl,)
return super()._dispatch(method, params)
@@ -132,7 +129,7 @@ class SaveXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
return True
else:
self.send_error(
- 401, "IP '{}' not allowed".format(self.client_address[0])
+ 401, "IP '{0}' not allowed".format(self.client_address[0])
)
return False
diff --git a/setup.py b/setup.py
index 1d54a13..c9ae824 100644
--- a/setup.py
+++ b/setup.py
@@ -1,9 +1,9 @@
#! /usr/bin/env python3
-#
-# (c) Sven Sager, License: LGPLv3
-#
# -*- coding: utf-8 -*-
"""Setupscript fuer RevPiPyLoad."""
+__author__ = "Sven Sager"
+__copyright__ = "Copyright (C) 2018 Sven Sager"
+__license__ = "GPLv3"
import distutils.command.install_egg_info
from glob import glob
from distutils.core import setup