mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 15:13:52 +01:00
xmlrpc mit unterschiedlichen Modi versehen
Fehlerabfang bei packapp init.d script angepasst
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
include stdeb.cfg
|
||||||
recursive-include data *
|
recursive-include data *
|
||||||
recursive-include debian *
|
recursive-include debian *
|
||||||
recursive-include revpipyload *
|
recursive-include revpipyload *
|
||||||
|
|||||||
31
debian/revpipyload.init
vendored
31
debian/revpipyload.init
vendored
@@ -1,4 +1,4 @@
|
|||||||
#! /bin/bash
|
#! /bin/sh
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: revpipyload
|
# Provides: revpipyload
|
||||||
# Required-Start: $remote_fs $syslog $piControl
|
# Required-Start: $remote_fs $syslog $piControl
|
||||||
@@ -19,14 +19,7 @@ NAME=revpipyload
|
|||||||
DAEMON_ARGS="-d"
|
DAEMON_ARGS="-d"
|
||||||
PIDFILE=/var/run/$NAME.pid
|
PIDFILE=/var/run/$NAME.pid
|
||||||
SCRIPTNAME=/etc/init.d/$NAME
|
SCRIPTNAME=/etc/init.d/$NAME
|
||||||
|
DAEMON=/usr/share/revpipyload/revpipyload.py
|
||||||
# Check install dir
|
|
||||||
if [ -d /usr/local/share/revpipyload ]
|
|
||||||
then
|
|
||||||
DAEMON=/usr/share/revpipyload/revpipyload.py
|
|
||||||
else
|
|
||||||
DAEMON=/usr/share/revpipyload/revpipyload.py
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Exit if the package is not installed
|
# Exit if the package is not installed
|
||||||
[ -x "$DAEMON" ] || exit 0
|
[ -x "$DAEMON" ] || exit 0
|
||||||
@@ -68,7 +61,7 @@ do_stop()
|
|||||||
# 1 if daemon was already stopped
|
# 1 if daemon was already stopped
|
||||||
# 2 if daemon could not be stopped
|
# 2 if daemon could not be stopped
|
||||||
# other if a failure occurred
|
# other if a failure occurred
|
||||||
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME.py
|
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
|
||||||
RETVAL="$?"
|
RETVAL="$?"
|
||||||
[ "$RETVAL" = 2 ] && return 2
|
[ "$RETVAL" = 2 ] && return 2
|
||||||
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
|
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
|
||||||
@@ -81,7 +74,7 @@ do_stop()
|
|||||||
# Function that sends a SIGHUP to the daemon/service
|
# Function that sends a SIGHUP to the daemon/service
|
||||||
#
|
#
|
||||||
do_reload() {
|
do_reload() {
|
||||||
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME.py
|
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,18 +82,18 @@ case "$1" in
|
|||||||
start)
|
start)
|
||||||
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
|
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
|
||||||
do_start
|
do_start
|
||||||
case "$?" in
|
# case "$?" in
|
||||||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
# 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
||||||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
# 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
||||||
esac
|
# esac
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
|
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
|
||||||
do_stop
|
do_stop
|
||||||
case "$?" in
|
# case "$?" in
|
||||||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
# 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
||||||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
# 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
||||||
esac
|
# esac
|
||||||
;;
|
;;
|
||||||
status)
|
status)
|
||||||
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
|
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class ProgInit():
|
|||||||
if self.pid > 0:
|
if self.pid > 0:
|
||||||
with open(self.pidfile, "w") as f:
|
with open(self.pidfile, "w") as f:
|
||||||
f.write(str(self.pid))
|
f.write(str(self.pid))
|
||||||
exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
global logapp
|
global logapp
|
||||||
global logplc
|
global logplc
|
||||||
|
|||||||
@@ -324,7 +324,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
self.pythonver = \
|
self.pythonver = \
|
||||||
int(self.globalconfig["DEFAULT"].get("pythonversion", 3))
|
int(self.globalconfig["DEFAULT"].get("pythonversion", 3))
|
||||||
self.xmlrpc = \
|
self.xmlrpc = \
|
||||||
int(self.globalconfig["DEFAULT"].get("xmlrpc", 1))
|
int(self.globalconfig["DEFAULT"].get("xmlrpc", 0))
|
||||||
self.zerooneerror = \
|
self.zerooneerror = \
|
||||||
int(self.globalconfig["DEFAULT"].get("zeroonerror", 1))
|
int(self.globalconfig["DEFAULT"].get("zeroonerror", 1))
|
||||||
self.zeroonexit = \
|
self.zeroonexit = \
|
||||||
@@ -337,7 +337,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
self.plc = self._plcthread()
|
self.plc = self._plcthread()
|
||||||
|
|
||||||
# XMLRPC-Server Instantiieren und konfigurieren
|
# XMLRPC-Server Instantiieren und konfigurieren
|
||||||
if self.xmlrpc:
|
if self.xmlrpc >= 1:
|
||||||
proginit.logger.debug("create xmlrpc server")
|
proginit.logger.debug("create xmlrpc server")
|
||||||
self.xsrv = SimpleXMLRPCServer(
|
self.xsrv = SimpleXMLRPCServer(
|
||||||
(
|
(
|
||||||
@@ -349,27 +349,34 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
)
|
)
|
||||||
self.xsrv.register_introspection_functions()
|
self.xsrv.register_introspection_functions()
|
||||||
|
|
||||||
|
# XML Modus 1 Nur Logs lesen und PLC Programm neu starten
|
||||||
self.xsrv.register_function(self.logr.get_applines, "get_applines")
|
self.xsrv.register_function(self.logr.get_applines, "get_applines")
|
||||||
self.xsrv.register_function(self.logr.get_applog, "get_applog")
|
self.xsrv.register_function(self.logr.get_applog, "get_applog")
|
||||||
self.xsrv.register_function(self.logr.get_plclines, "get_plclines")
|
self.xsrv.register_function(self.logr.get_plclines, "get_plclines")
|
||||||
self.xsrv.register_function(self.logr.get_plclog, "get_plclog")
|
self.xsrv.register_function(self.logr.get_plclog, "get_plclog")
|
||||||
|
|
||||||
self.xsrv.register_function(self.xml_getconfig, "get_config")
|
|
||||||
self.xsrv.register_function(self.xml_getfilelist, "get_filelist")
|
|
||||||
self.xsrv.register_function(self.xml_getpictoryrsc, "get_pictoryrsc")
|
|
||||||
self.xsrv.register_function(self.xml_getprocimg, "get_procimg")
|
|
||||||
self.xsrv.register_function(self.xml_plcdownload, "plcdownload")
|
|
||||||
self.xsrv.register_function(self.xml_plcexitcode, "plcexitcode")
|
self.xsrv.register_function(self.xml_plcexitcode, "plcexitcode")
|
||||||
self.xsrv.register_function(self.xml_plcrunning, "plcrunning")
|
self.xsrv.register_function(self.xml_plcrunning, "plcrunning")
|
||||||
self.xsrv.register_function(self.xml_plcstart, "plcstart")
|
self.xsrv.register_function(self.xml_plcstart, "plcstart")
|
||||||
self.xsrv.register_function(self.xml_plcstop, "plcstop")
|
self.xsrv.register_function(self.xml_plcstop, "plcstop")
|
||||||
self.xsrv.register_function(self.xml_plcupload, "plcupload")
|
|
||||||
self.xsrv.register_function(self.xml_plcuploadclean, "plcuploadclean")
|
|
||||||
self.xsrv.register_function(self.xml_reload, "reload")
|
self.xsrv.register_function(self.xml_reload, "reload")
|
||||||
self.xsrv.register_function(self.xml_setconfig, "set_config")
|
|
||||||
self.xsrv.register_function(self.xml_setpictoryrsc, "set_pictoryrsc")
|
# XML Modus 2 Einstellungen lesen und Programm herunterladen
|
||||||
|
if self.xmlrpc >= 2:
|
||||||
|
self.xsrv.register_function(self.xml_getconfig, "get_config")
|
||||||
|
self.xsrv.register_function(self.xml_getfilelist, "get_filelist")
|
||||||
|
self.xsrv.register_function(self.xml_getpictoryrsc, "get_pictoryrsc")
|
||||||
|
self.xsrv.register_function(self.xml_getprocimg, "get_procimg")
|
||||||
|
self.xsrv.register_function(self.xml_plcdownload, "plcdownload")
|
||||||
|
|
||||||
|
# XML Modus 3 Programm und Konfiguration hochladen
|
||||||
|
if self.xmlrpc >= 3:
|
||||||
|
self.xsrv.register_function(self.xml_plcupload, "plcupload")
|
||||||
|
self.xsrv.register_function(self.xml_plcuploadclean, "plcuploadclean")
|
||||||
|
self.xsrv.register_function(self.xml_setconfig, "set_config")
|
||||||
|
self.xsrv.register_function(self.xml_setpictoryrsc, "set_pictoryrsc")
|
||||||
|
|
||||||
self.xsrv.register_function(lambda: pyloadverion, "version")
|
self.xsrv.register_function(lambda: pyloadverion, "version")
|
||||||
|
self.xsrv.register_function(lambda: self.xmlrpc, "xmlmodus")
|
||||||
proginit.logger.debug("created xmlrpc server")
|
proginit.logger.debug("created xmlrpc server")
|
||||||
|
|
||||||
if pauseproc:
|
if pauseproc:
|
||||||
@@ -418,25 +425,34 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
"""
|
"""
|
||||||
filename = mktemp(suffix=".packed", prefix="plc")
|
filename = mktemp(suffix=".packed", prefix="plc")
|
||||||
|
|
||||||
# TODO: Fehlerabfang
|
|
||||||
|
|
||||||
if mode == "zip":
|
if mode == "zip":
|
||||||
fh_pack = zipfile.ZipFile(filename, mode="w")
|
fh_pack = zipfile.ZipFile(filename, mode="w")
|
||||||
wd = os.walk("./")
|
wd = os.walk("./")
|
||||||
for tup_dir in wd:
|
try:
|
||||||
for file in tup_dir[2]:
|
for tup_dir in wd:
|
||||||
arcname = os.path.join(
|
for file in tup_dir[2]:
|
||||||
os.path.basename(self.plcworkdir), tup_dir[0][2:], file)
|
arcname = os.path.join(
|
||||||
fh_pack.write(os.path.join(tup_dir[0], file), arcname=arcname)
|
os.path.basename(self.plcworkdir), tup_dir[0][2:], file)
|
||||||
if pictory:
|
fh_pack.write(os.path.join(tup_dir[0], file), arcname=arcname)
|
||||||
fh_pack.write(configrsc, arcname="config.rsc")
|
if pictory:
|
||||||
|
fh_pack.write(configrsc, arcname="config.rsc")
|
||||||
|
except:
|
||||||
|
filename = ""
|
||||||
|
finally:
|
||||||
|
fh_pack.close()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
fh_pack = tarfile.open(
|
fh_pack = tarfile.open(
|
||||||
name=filename, mode="w:gz", dereference=True)
|
name=filename, mode="w:gz", dereference=True)
|
||||||
fh_pack.add(".", arcname=os.path.basename(self.plcworkdir))
|
try:
|
||||||
if pictory:
|
fh_pack.add(".", arcname=os.path.basename(self.plcworkdir))
|
||||||
fh_pack.add(configrsc, arcname="config.rsc")
|
if pictory:
|
||||||
fh_pack.close()
|
fh_pack.add(configrsc, arcname="config.rsc")
|
||||||
|
except:
|
||||||
|
filename = ""
|
||||||
|
finally:
|
||||||
|
fh_pack.close()
|
||||||
|
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
@@ -444,7 +460,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
proginit.logger.info("starting revpipyload")
|
proginit.logger.info("starting revpipyload")
|
||||||
self._exit = False
|
self._exit = False
|
||||||
|
|
||||||
if self.xmlrpc:
|
if self.xmlrpc >= 1:
|
||||||
proginit.logger.info("start xmlrpc-server")
|
proginit.logger.info("start xmlrpc-server")
|
||||||
self.tpe = futures.ThreadPoolExecutor(max_workers=1)
|
self.tpe = futures.ThreadPoolExecutor(max_workers=1)
|
||||||
self.tpe.submit(self.xsrv.serve_forever)
|
self.tpe.submit(self.xsrv.serve_forever)
|
||||||
@@ -472,7 +488,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
self.plc.stop()
|
self.plc.stop()
|
||||||
self.plc.join()
|
self.plc.join()
|
||||||
|
|
||||||
if self.xmlrpc:
|
if self.xmlrpc >= 1:
|
||||||
proginit.logger.info("shutting down xmlrpc-server")
|
proginit.logger.info("shutting down xmlrpc-server")
|
||||||
self.xsrv.shutdown()
|
self.xsrv.shutdown()
|
||||||
self.tpe.shutdown()
|
self.tpe.shutdown()
|
||||||
@@ -488,6 +504,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
dc["plcworkdir"] = self.plcworkdir
|
dc["plcworkdir"] = self.plcworkdir
|
||||||
dc["plcprogram"] = self.plcprog
|
dc["plcprogram"] = self.plcprog
|
||||||
dc["plcslave"] = self.plcslave
|
dc["plcslave"] = self.plcslave
|
||||||
|
dc["pythonversion"] = self.pythonver
|
||||||
dc["xmlrpc"] = self.xmlrpc
|
dc["xmlrpc"] = self.xmlrpc
|
||||||
dc["xmlrpcport"] = \
|
dc["xmlrpcport"] = \
|
||||||
self.globalconfig["DEFAULT"].get("xmlrpcport", 55123)
|
self.globalconfig["DEFAULT"].get("xmlrpcport", 55123)
|
||||||
@@ -566,7 +583,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
-1 Programm lauft noch
|
-1 Programm lauft noch
|
||||||
100 Fehler
|
100 Fehler
|
||||||
|
|
||||||
"""
|
"""
|
||||||
proginit.logger.debug("xmlrpc call plcstart")
|
proginit.logger.debug("xmlrpc call plcstart")
|
||||||
if self.plc is not None and self.plc.is_alive():
|
if self.plc is not None and self.plc.is_alive():
|
||||||
return -1
|
return -1
|
||||||
@@ -645,6 +662,7 @@ class RevPiPyLoad(proginit.ProgInit):
|
|||||||
"autostart",
|
"autostart",
|
||||||
"plcprogram",
|
"plcprogram",
|
||||||
"plcslave",
|
"plcslave",
|
||||||
|
"pythonversion",
|
||||||
"xmlrpc",
|
"xmlrpc",
|
||||||
"xmlrpcport",
|
"xmlrpcport",
|
||||||
"zeroonerror",
|
"zeroonerror",
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -6,7 +6,7 @@
|
|||||||
"""Setupscript fuer RevPiPyLoad."""
|
"""Setupscript fuer RevPiPyLoad."""
|
||||||
import distutils.command.install_egg_info
|
import distutils.command.install_egg_info
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from setuptools import setup
|
from distutils.core import setup
|
||||||
|
|
||||||
|
|
||||||
class MyEggInfo(distutils.command.install_egg_info.install_egg_info):
|
class MyEggInfo(distutils.command.install_egg_info.install_egg_info):
|
||||||
|
|||||||
Reference in New Issue
Block a user