mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 15:13:52 +01:00
Fehler behoben bei Aufruf mit ungültigem configrsc Parameter
code style
This commit is contained in:
@@ -12,7 +12,7 @@ Helperfunktionen fuer das gesamte RevPiPyLoad-System.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>None</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>
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
<body style="background-color:#FFFFFF;color:#000000">
|
||||
<h1 style="background-color:#FFFFFF;color:#0000FF">
|
||||
revpipyload.shared</h1>
|
||||
|
||||
<p>
|
||||
Shared modules.
|
||||
</p>
|
||||
|
||||
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
|
||||
@@ -13,7 +13,7 @@ Packages</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td><a style="color:#0000FF" href="index-revpipyload.shared.html">shared</a></td>
|
||||
<td></td>
|
||||
<td>Shared modules.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Modul fuer die Verwaltung der Logdateien.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>None</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>
|
||||
|
||||
@@ -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>None</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>
|
||||
|
||||
@@ -12,7 +12,7 @@ Modul fuer die Verwaltung der PLC Funktionen.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>None</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>
|
||||
|
||||
@@ -15,7 +15,7 @@ IO-Check bei Inbetriebname durchzufuehren.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>None</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>
|
||||
@@ -115,11 +115,11 @@ list() mit Tuple (pos, name)
|
||||
</dl><a NAME="ProcimgServer.ios" ID="ProcimgServer.ios"></a>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
ProcimgServer.ios</h3>
|
||||
<b>ios</b>(<i>type</i>)
|
||||
<b>ios</b>(<i>iotype</i>)
|
||||
<p>
|
||||
Generiert ein dict() der Devices und IOs.
|
||||
</p><dl>
|
||||
<dt><i>type</i></dt>
|
||||
<dt><i>iotype</i></dt>
|
||||
<dd>
|
||||
IO Typ inp/out
|
||||
</dd>
|
||||
|
||||
@@ -12,7 +12,7 @@ Main functions of our program.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>forked</td></tr><tr><td>globalconffile</td></tr><tr><td>logapp</td></tr><tr><td>logger</td></tr><tr><td>logplc</td></tr><tr><td>pargs</td></tr><tr><td>picontrolreset</td></tr><tr><td>rapcatalog</td></tr><tr><td>startdir</td></tr>
|
||||
<tr><td>__author__</td></tr><tr><td>__copyright__</td></tr><tr><td>__license__</td></tr><tr><td>forked</td></tr><tr><td>globalconffile</td></tr><tr><td>logapp</td></tr><tr><td>logger</td></tr><tr><td>logplc</td></tr><tr><td>pargs</td></tr><tr><td>picontrolreset</td></tr><tr><td>rapcatalog</td></tr><tr><td>startdir</td></tr>
|
||||
</table>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Classes</h3>
|
||||
|
||||
@@ -9,6 +9,8 @@ revpipyload</h1>
|
||||
<p>
|
||||
Revolution Pi Python PLC Loader.
|
||||
</p><p>
|
||||
Webpage: https://revpimodio.org/revpipyplc/
|
||||
</p><p>
|
||||
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!
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>pyloadversion</td></tr>
|
||||
<tr><td>__author__</td></tr><tr><td>__copyright__</td></tr><tr><td>__license__</td></tr><tr><td>__version__</td></tr>
|
||||
</table>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Classes</h3>
|
||||
|
||||
@@ -12,7 +12,7 @@ Verwaltet IP Adressen und deren ACLs.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>None</td></tr>
|
||||
<tr><td>__author__</td></tr><tr><td>__copyright__</td></tr><tr><td>__license__</td></tr><tr><td>__version__</td></tr>
|
||||
</table>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Classes</h3>
|
||||
|
||||
@@ -12,7 +12,7 @@ XML-RPC Server anpassungen fuer Absicherung.
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
Global Attributes</h3>
|
||||
<table>
|
||||
<tr><td>None</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>
|
||||
|
||||
@@ -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
|
||||
|
||||
104
revpipyload.e4p
104
revpipyload.e4p
@@ -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: 2018-06-27, 11:29:04 -->
|
||||
<!-- Saved: 2018-08-12, 18:40:18 -->
|
||||
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
|
||||
<Project version="5.1">
|
||||
<Language>en_US</Language>
|
||||
@@ -14,27 +14,27 @@
|
||||
<Email>akira@narux.de</Email>
|
||||
<Eol index="1"/>
|
||||
<Sources>
|
||||
<Source>revpipyload/proginit.py</Source>
|
||||
<Source>setup.py</Source>
|
||||
<Source>revpipyload/revpipyload.py</Source>
|
||||
<Source>revpipyload/procimgserver.py</Source>
|
||||
<Source>revpipyload/logsystem.py</Source>
|
||||
<Source>revpipyload/plcsystem.py</Source>
|
||||
<Source>revpipyload/picontrolserver.py</Source>
|
||||
<Source>revpipyload/helper.py</Source>
|
||||
<Source>revpipyload/xrpcserver.py</Source>
|
||||
<Source>revpipyload/shared/ipaclmanager.py</Source>
|
||||
<Source>revpipyload/logsystem.py</Source>
|
||||
<Source>revpipyload/picontrolserver.py</Source>
|
||||
<Source>revpipyload/plcsystem.py</Source>
|
||||
<Source>revpipyload/procimgserver.py</Source>
|
||||
<Source>revpipyload/proginit.py</Source>
|
||||
<Source>revpipyload/revpipyload.py</Source>
|
||||
<Source>revpipyload/shared/__init__.py</Source>
|
||||
<Source>revpipyload/shared/ipaclmanager.py</Source>
|
||||
<Source>revpipyload/xrpcserver.py</Source>
|
||||
<Source>setup.py</Source>
|
||||
</Sources>
|
||||
<Forms/>
|
||||
<Translations/>
|
||||
<Resources/>
|
||||
<Interfaces/>
|
||||
<Others>
|
||||
<Other>data</Other>
|
||||
<Other>MANIFEST.in</Other>
|
||||
<Other>doc</Other>
|
||||
<Other>data</Other>
|
||||
<Other>debian</Other>
|
||||
<Other>doc</Other>
|
||||
<Other>eric-revpipyload.api</Other>
|
||||
<Other>stdeb.cfg</Other>
|
||||
</Others>
|
||||
@@ -141,9 +141,6 @@
|
||||
</value>
|
||||
</dict>
|
||||
</VcsOptions>
|
||||
<VcsOtherData>
|
||||
<dict/>
|
||||
</VcsOtherData>
|
||||
</Vcs>
|
||||
<FiletypeAssociations>
|
||||
<FiletypeAssociation pattern="*.idl" type="INTERFACES"/>
|
||||
@@ -240,14 +237,6 @@
|
||||
<value>
|
||||
<bool>False</bool>
|
||||
</value>
|
||||
<key>
|
||||
<string>sourceExtensions</string>
|
||||
</key>
|
||||
<value>
|
||||
<list>
|
||||
<string></string>
|
||||
</list>
|
||||
</value>
|
||||
<key>
|
||||
<string>useRecursion</string>
|
||||
</key>
|
||||
@@ -267,6 +256,41 @@
|
||||
</key>
|
||||
<value>
|
||||
<dict>
|
||||
<key>
|
||||
<string>BuiltinsChecker</string>
|
||||
</key>
|
||||
<value>
|
||||
<dict>
|
||||
<key>
|
||||
<string>chr</string>
|
||||
</key>
|
||||
<value>
|
||||
<list>
|
||||
<string>unichr</string>
|
||||
</list>
|
||||
</value>
|
||||
<key>
|
||||
<string>str</string>
|
||||
</key>
|
||||
<value>
|
||||
<list>
|
||||
<string>unicode</string>
|
||||
</list>
|
||||
</value>
|
||||
</dict>
|
||||
</value>
|
||||
<key>
|
||||
<string>CopyrightAuthor</string>
|
||||
</key>
|
||||
<value>
|
||||
<string></string>
|
||||
</value>
|
||||
<key>
|
||||
<string>CopyrightMinFileSize</string>
|
||||
</key>
|
||||
<value>
|
||||
<int>0</int>
|
||||
</value>
|
||||
<key>
|
||||
<string>DocstringType</string>
|
||||
</key>
|
||||
@@ -277,13 +301,13 @@
|
||||
<string>ExcludeFiles</string>
|
||||
</key>
|
||||
<value>
|
||||
<string>demo/*</string>
|
||||
<string>*/demo/*</string>
|
||||
</value>
|
||||
<key>
|
||||
<string>ExcludeMessages</string>
|
||||
</key>
|
||||
<value>
|
||||
<string>E123,E226,E24</string>
|
||||
<string>E123,E226,E24,C101</string>
|
||||
</value>
|
||||
<key>
|
||||
<string>FixCodes</string>
|
||||
@@ -297,6 +321,12 @@
|
||||
<value>
|
||||
<bool>False</bool>
|
||||
</value>
|
||||
<key>
|
||||
<string>FutureChecker</string>
|
||||
</key>
|
||||
<value>
|
||||
<string></string>
|
||||
</value>
|
||||
<key>
|
||||
<string>HangClosing</string>
|
||||
</key>
|
||||
@@ -309,6 +339,24 @@
|
||||
<value>
|
||||
<string></string>
|
||||
</value>
|
||||
<key>
|
||||
<string>LineComplexity</string>
|
||||
</key>
|
||||
<value>
|
||||
<int>15</int>
|
||||
</value>
|
||||
<key>
|
||||
<string>LineComplexityScore</string>
|
||||
</key>
|
||||
<value>
|
||||
<int>10</int>
|
||||
</value>
|
||||
<key>
|
||||
<string>MaxCodeComplexity</string>
|
||||
</key>
|
||||
<value>
|
||||
<int>10</int>
|
||||
</value>
|
||||
<key>
|
||||
<string>MaxLineLength</string>
|
||||
</key>
|
||||
@@ -333,6 +381,12 @@
|
||||
<value>
|
||||
<bool>False</bool>
|
||||
</value>
|
||||
<key>
|
||||
<string>ValidEncodings</string>
|
||||
</key>
|
||||
<value>
|
||||
<string>latin-1, utf-8</string>
|
||||
</value>
|
||||
</dict>
|
||||
</value>
|
||||
</dict>
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
if pargs.configrsc is None:
|
||||
lst_rsc = ["/etc/revpi/config.rsc", "/opt/KUNBUS/config.rsc"]
|
||||
if pargs.configrsc is None:
|
||||
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))
|
||||
)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Shared modules."""
|
||||
__author__ = "Sven Sager"
|
||||
__copyright__ = "Copyright (C) 2018 Sven Sager"
|
||||
__license__ = "GPLv3"
|
||||
|
||||
@@ -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 <class 'str'>"""
|
||||
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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
6
setup.py
6
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
|
||||
|
||||
Reference in New Issue
Block a user