Konfiguration von "plcworkdir_set_uid" über PyControl möglich

User ID wird auf 0 oder angegebene gesetzt je nach Parameter in config file
Relative replace_ios Datei wird mit workdir versehen
replace_ios Datei in workdir wird relativ an PyControl gesendet
This commit is contained in:
2019-09-16 10:42:15 +02:00
parent 35d2220a04
commit 6796873a7a
3 changed files with 22 additions and 7 deletions

View File

@@ -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-08-26, 13:17:52 -->
<!-- Saved: 2019-09-15, 20:15:23 -->
<!-- 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.8.0</Version>
<Version>0.8.1</Version>
<Author>Sven Sager</Author>
<Email>akira@narux.de</Email>
<Eol index="1"/>

View File

@@ -28,7 +28,7 @@ begrenzt werden!
__author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "GPLv3"
__version__ = "0.8.0"
__version__ = "0.8.1"
import gzip
import logsystem
import picontrolserver
@@ -331,8 +331,15 @@ class RevPiPyLoad():
os.chdir(self.plcworkdir)
# Workdirectory owner setzen
try:
if self.plcworkdir_set_uid:
os.chown(self.plcworkdir, self.plcuid, -1)
else:
os.chown(self.plcworkdir, 0, -1)
except Exception:
proginit.logger.warning(
"could not set user id on working directory"
)
# MQTT konfigurieren
if restart_plcmqtt:
@@ -872,12 +879,14 @@ class RevPiPyLoad():
dc["autoreloaddelay"] = self.autoreloaddelay
dc["autostart"] = int(self.autostart)
dc["plcworkdir"] = self.plcworkdir
dc["plcworkdir_set_uid"] = self.plcworkdir_set_uid
dc["plcprogram"] = self.plcprogram
dc["plcarguments"] = self.plcarguments
dc["plcuid"] = self.plcuid
dc["plcgid"] = self.plcgid
dc["pythonversion"] = self.pythonversion
dc["replace_ios"] = self.replace_ios_config
dc["replace_ios"] = self.replace_ios_config.replace(
self.plcworkdir + "/", "")
dc["rtlevel"] = self.rtlevel
dc["zeroonerror"] = int(self.zeroonerror)
dc["zeroonexit"] = int(self.zeroonexit)
@@ -1110,6 +1119,7 @@ class RevPiPyLoad():
"autostart": "[01]",
"plcprogram": ".+",
"plcarguments": ".*",
"plcworkdir_set_uid": "[01]",
# "plcuid": "[0-9]{,5}",
# "plcgid": "[0-9]{,5}",
"pythonversion": "[23]",
@@ -1145,6 +1155,11 @@ class RevPiPyLoad():
}
}
# Adjust values
if dc.get("replace_ios", "") and dc["replace_ios"].find("/") == -1:
dc["replace_ios"] = os.path.join(
self.plcworkdir, dc["replace_ios"])
# Werte übernehmen, die eine Definition in key haben (andere nicht)
for sektion in keys:
suffix = sektion.lower()

View File

@@ -27,7 +27,7 @@ setup(
license="LGPLv3",
name="revpipyload",
version="0.8.0",
version="0.8.1",
scripts=["data/revpipyload"],