[X2Go-Commits] x2gobroker.git - master (branch) updated: 0.0.2.3-119-g167b815

X2Go dev team git-admin at x2go.org
Thu Dec 19 22:36:03 CET 2013


The branch, master has been updated
       via  167b8152ce5403b169a55573d72c43880967b8b6 (commit)
      from  538a0e8003c67a29f6fcd179909fbcf0e648da15 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 167b8152ce5403b169a55573d72c43880967b8b6
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Thu Dec 19 22:23:17 2013 +0100

    Support daemonizing of the authservice.

-----------------------------------------------------------------------

Summary of changes:
 debian/changelog            |    1 +
 sbin/x2gobroker-authservice |   37 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 37 insertions(+), 1 deletion(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 1fe4749..adaa778 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -68,6 +68,7 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low
       an sbin to a bin directory (executable for any user).
     - Make the inifile broker backend the default backend.
     - Support daemonizing of the http broker.
+    - Support daemonizing of the authservice.
   * debian/control:
     + Replace LDAP support with session brokerage support in LONG_DESCRIPTION.
     + Fix SYNOPSIS texts.
diff --git a/sbin/x2gobroker-authservice b/sbin/x2gobroker-authservice
index d45c84c..7f3c113 100755
--- a/sbin/x2gobroker-authservice
+++ b/sbin/x2gobroker-authservice
@@ -32,6 +32,17 @@ import getpass
 import logging.config
 import pam
 
+try:
+    import daemonize
+    CAN_DAEMONIZE = True
+    if os.path.isdir('/run'):
+        RUNDIR = '/run'
+    else:
+        RUNDIR = '/var/run'
+    pidfile = '{run}/x2gobroker/x2gobroker-daemon.pid'.format(run=RUNDIR)
+except ImportError:
+    CAN_DAEMONIZE = False
+
 from pwd import getpwnam
 from grp import getgrnam
 
@@ -158,6 +169,11 @@ if __name__ == '__main__':
         {'args':['-p','--permissions'], 'default': '0660', 'help': 'set these file permissions for the AuthService socket file', },
 
     ]
+    if CAN_DAEMONIZE:
+        common_options.extend([
+            {'args':['-D', '--daemonize'], 'default': False, 'action': 'store_true', 'help': 'Detach the X2Go Broker process from the current terminal and fork to background', },
+            {'args':['-P', '--pidfile'], 'default': pidfile, 'help': 'Alternative file path for the daemon\'s PID file', },
+        ])
     p = argparse.ArgumentParser(description='X2Go Session Broker (PAM Authentication Service)',\
                                 formatter_class=argparse.RawDescriptionHelpFormatter, \
                                 add_help=True, argument_default=None)
@@ -171,9 +187,28 @@ if __name__ == '__main__':
 
     cmdline_args = p.parse_args()
 
+    if CAN_DAEMONIZE and cmdline_args.daemonize:
+        pidfile = os.path.expanduser(cmdline_args.pidfile)
+        if not os.path.isdir(os.path.dirname(pidfile)):
+            try:
+                os.makedirs(os.path.dirname(pidfile))
+            except:
+                pass
+        if not os.access(os.path.dirname(pidfile), os.W_OK) or (os.path.exists(pidfile) and not os.access(pidfile, os.W_OK)):
+            print("")
+            p.print_usage()
+            print("Insufficent privileges. Cannot create PID file {pidfile} path".format(pidfile=pidfile))
+            print("")
+            sys.exit(-3)
+
     socket_file = cmdline_args.socket_file
     AuthService(socket_file, owner=cmdline_args.owner, group_owner=cmdline_args.group, permissions=cmdline_args.permissions)
     try:
-        loop()
+        if CAN_DAEMONIZE and cmdline_args.daemonize:
+            keep_fds = [int(fd) for fd in os.listdir('/proc/self/fd') if fd not in (0,1,2) ]
+            daemon = daemonize.Daemonize(app="x2gobroker", pid=pidfile, action=loop, keep_fds=keep_fds)
+            daemon.start()
+        else:
+            loop()
     except KeyboardInterrupt:
         pass


hooks/post-receive
-- 
x2gobroker.git (HTTP(S) Session broker for X2Go)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2gobroker.git" (HTTP(S) Session broker for X2Go).




More information about the x2go-commits mailing list