diff --git a/MANIFEST.in b/MANIFEST.in index daa6a75..93d3717 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ +include stdeb.cfg recursive-include data * recursive-include debian * recursive-include revpipyload * diff --git a/debian/revpipyload.init b/debian/revpipyload.init index 7ddc1b3..81955f1 100755 --- a/debian/revpipyload.init +++ b/debian/revpipyload.init @@ -1,4 +1,4 @@ -#! /bin/bash +#! /bin/sh ### BEGIN INIT INFO # Provides: revpipyload # Required-Start: $remote_fs $syslog $piControl @@ -19,14 +19,7 @@ NAME=revpipyload DAEMON_ARGS="-d" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME - -# Check install dir -if [ -d /usr/local/share/revpipyload ] -then - DAEMON=/usr/share/revpipyload/revpipyload.py -else - DAEMON=/usr/share/revpipyload/revpipyload.py -fi +DAEMON=/usr/share/revpipyload/revpipyload.py # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 @@ -68,7 +61,7 @@ do_stop() # 1 if daemon was already stopped # 2 if daemon could not be stopped # 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" = 2 ] && return 2 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 # 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 } @@ -89,18 +82,18 @@ case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac +# case "$?" in +# 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; +# 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; +# esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac +# case "$?" in +# 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; +# 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; +# esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? diff --git a/revpipyload/proginit.py b/revpipyload/proginit.py index c9134df..81b35bf 100644 --- a/revpipyload/proginit.py +++ b/revpipyload/proginit.py @@ -66,7 +66,7 @@ class ProgInit(): if self.pid > 0: with open(self.pidfile, "w") as f: f.write(str(self.pid)) - exit(0) + sys.exit(0) global logapp global logplc diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 2464404..8f5af57 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -324,7 +324,7 @@ class RevPiPyLoad(proginit.ProgInit): self.pythonver = \ int(self.globalconfig["DEFAULT"].get("pythonversion", 3)) self.xmlrpc = \ - int(self.globalconfig["DEFAULT"].get("xmlrpc", 1)) + int(self.globalconfig["DEFAULT"].get("xmlrpc", 0)) self.zerooneerror = \ int(self.globalconfig["DEFAULT"].get("zeroonerror", 1)) self.zeroonexit = \ @@ -337,7 +337,7 @@ class RevPiPyLoad(proginit.ProgInit): self.plc = self._plcthread() # XMLRPC-Server Instantiieren und konfigurieren - if self.xmlrpc: + if self.xmlrpc >= 1: proginit.logger.debug("create xmlrpc server") self.xsrv = SimpleXMLRPCServer( ( @@ -349,27 +349,34 @@ class RevPiPyLoad(proginit.ProgInit): ) 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_applog, "get_applog") 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.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_plcrunning, "plcrunning") self.xsrv.register_function(self.xml_plcstart, "plcstart") 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_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: self.xmlrpc, "xmlmodus") proginit.logger.debug("created xmlrpc server") if pauseproc: @@ -418,25 +425,34 @@ class RevPiPyLoad(proginit.ProgInit): """ filename = mktemp(suffix=".packed", prefix="plc") - # TODO: Fehlerabfang - if mode == "zip": fh_pack = zipfile.ZipFile(filename, mode="w") wd = os.walk("./") - for tup_dir in wd: - for file in tup_dir[2]: - arcname = os.path.join( - os.path.basename(self.plcworkdir), tup_dir[0][2:], file) - fh_pack.write(os.path.join(tup_dir[0], file), arcname=arcname) - if pictory: - fh_pack.write(configrsc, arcname="config.rsc") + try: + for tup_dir in wd: + for file in tup_dir[2]: + arcname = os.path.join( + os.path.basename(self.plcworkdir), tup_dir[0][2:], file) + fh_pack.write(os.path.join(tup_dir[0], file), arcname=arcname) + if pictory: + fh_pack.write(configrsc, arcname="config.rsc") + except: + filename = "" + finally: + fh_pack.close() + else: fh_pack = tarfile.open( name=filename, mode="w:gz", dereference=True) - fh_pack.add(".", arcname=os.path.basename(self.plcworkdir)) - if pictory: - fh_pack.add(configrsc, arcname="config.rsc") - fh_pack.close() + try: + fh_pack.add(".", arcname=os.path.basename(self.plcworkdir)) + if pictory: + fh_pack.add(configrsc, arcname="config.rsc") + except: + filename = "" + finally: + fh_pack.close() + return filename def start(self): @@ -444,7 +460,7 @@ class RevPiPyLoad(proginit.ProgInit): proginit.logger.info("starting revpipyload") self._exit = False - if self.xmlrpc: + if self.xmlrpc >= 1: proginit.logger.info("start xmlrpc-server") self.tpe = futures.ThreadPoolExecutor(max_workers=1) self.tpe.submit(self.xsrv.serve_forever) @@ -472,7 +488,7 @@ class RevPiPyLoad(proginit.ProgInit): self.plc.stop() self.plc.join() - if self.xmlrpc: + if self.xmlrpc >= 1: proginit.logger.info("shutting down xmlrpc-server") self.xsrv.shutdown() self.tpe.shutdown() @@ -488,6 +504,7 @@ class RevPiPyLoad(proginit.ProgInit): dc["plcworkdir"] = self.plcworkdir dc["plcprogram"] = self.plcprog dc["plcslave"] = self.plcslave + dc["pythonversion"] = self.pythonver dc["xmlrpc"] = self.xmlrpc dc["xmlrpcport"] = \ self.globalconfig["DEFAULT"].get("xmlrpcport", 55123) @@ -566,7 +583,7 @@ class RevPiPyLoad(proginit.ProgInit): -1 Programm lauft noch 100 Fehler - """ + """ proginit.logger.debug("xmlrpc call plcstart") if self.plc is not None and self.plc.is_alive(): return -1 @@ -645,6 +662,7 @@ class RevPiPyLoad(proginit.ProgInit): "autostart", "plcprogram", "plcslave", + "pythonversion", "xmlrpc", "xmlrpcport", "zeroonerror", diff --git a/setup.py b/setup.py index 2610c42..e68f088 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ """Setupscript fuer RevPiPyLoad.""" import distutils.command.install_egg_info from glob import glob -from setuptools import setup +from distutils.core import setup class MyEggInfo(distutils.command.install_egg_info.install_egg_info):