The branch, master has been updated via 620140e5cc38e3f84d014042f54c1235347c4923 (commit) from e4f4a3be711ee2246032b555da42151dfb232af8 (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 620140e5cc38e3f84d014042f54c1235347c4923 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Thu Apr 18 16:58:06 2013 +0200 Separate logging logic of x2gobroker-authservice from the rest of the logging in x2gobroker. (Fixes: #172). ----------------------------------------------------------------------- Summary of changes: debian/changelog | 2 + debian/python-x2gobroker.install | 1 - debian/python-x2gobroker.postinst | 29 ++++++++++++ debian/python-x2gobroker.postrm | 27 +++++++++++ debian/python-x2gobroker.preinst | 31 +++++++++++++ debian/x2gobroker-agent.postinst | 3 ++ debian/x2gobroker-authservice.install | 3 +- debian/x2gobroker-daemon.install | 1 + debian/x2gobroker-daemon.postinst | 3 ++ debian/x2gobroker-wsgi.install | 3 +- debian/x2gobroker-wsgi.postinst | 3 ++ etc/broker/x2gobroker-loggers.conf | 21 ++------- logrotate/x2gobroker-authservice | 13 ++++++ logrotate/x2gobroker-daemon | 13 ++++++ logrotate/{x2gobroker => x2gobroker-wsgi} | 4 +- sbin/x2gobroker-authservice | 21 ++++----- x2gobroker/__init__.py | 9 ---- x2gobroker/agent.py | 5 +- x2gobroker/authservice.py | 48 +++++++++++++++++--- x2gobroker/loggers.py | 5 -- .../{__init__.py => x2gobroker_exceptions.py} | 0 21 files changed, 186 insertions(+), 59 deletions(-) create mode 100755 debian/python-x2gobroker.postinst create mode 100755 debian/python-x2gobroker.postrm create mode 100755 debian/python-x2gobroker.preinst create mode 100644 debian/x2gobroker-daemon.install create mode 100644 logrotate/x2gobroker-authservice create mode 100644 logrotate/x2gobroker-daemon rename logrotate/{x2gobroker => x2gobroker-wsgi} (57%) copy x2gobroker/{__init__.py => x2gobroker_exceptions.py} (100%) The diff of changes is: diff --git a/debian/changelog b/debian/changelog index 4bf0feb..d340550 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,8 @@ x2gobroker (0.0.1.1-0~x2go1) UNRELEASED; urgency=low session profile parameter that triggers key based auth in X2Go Client. (Fixes: #154). - Fix hard-coded path to x2gobroker's authservice socket. + - Separate logging logic of x2gobroker-authservice from the rest of + the logging in x2gobroker. (Fixes: #172). * /debian/control: + Fix --root parameter in DEB_PYTHON_INSTALL_ARGS. + Let bin:package x2gobroker-authservice depend on python-x2gobroker (of the diff --git a/debian/python-x2gobroker.install b/debian/python-x2gobroker.install index 91aabf6..c8bd09a 100644 --- a/debian/python-x2gobroker.install +++ b/debian/python-x2gobroker.install @@ -1,5 +1,4 @@ etc/x2gobroker.conf etc/x2go/ etc/broker etc/x2go/ -logrotate/x2gobroker etc/logrotate.d/ pam/x2gobroker etc/pam.d/ usr/ diff --git a/debian/python-x2gobroker.postinst b/debian/python-x2gobroker.postinst new file mode 100755 index 0000000..5829481 --- /dev/null +++ b/debian/python-x2gobroker.postinst @@ -0,0 +1,29 @@ +#!/bin/sh +# postinst script for python-x2gobroker +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postinst> `configure' <most-recently-configured-version> +# * <old-postinst> `abort-upgrade' <new version> +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> +# <new-version> +# * <postinst> `abort-remove' +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' +# <failed-install-package> <version> `removing' +# <conflicting-package> <version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +if dpkg-maintscript-helper supports rm_conffile 2>/dev/null; then + dpkg-maintscript-helper rm_conffile /etc/logrotate.d/x2gobroker 0.0.1.1-0 -- "$@" +fi + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/python-x2gobroker.postrm b/debian/python-x2gobroker.postrm new file mode 100755 index 0000000..d8e6815 --- /dev/null +++ b/debian/python-x2gobroker.postrm @@ -0,0 +1,27 @@ +#! /bin/sh +# postrm script for python-x2gobroker +# +# see: dh_installdeb(1) +# summary of how this script can be called: +# * <postrm> `remove' +# * <postrm> `purge' +# * <old-postrm> `upgrade' <new-version> +# * <new-postrm> `failed-upgrade' <old-version> +# * <new-postrm> `abort-install' +# * <new-postrm> `abort-install' <old-version> +# * <new-postrm> `abort-upgrade' <old-version> +# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version> +# for details, see /usr/share/doc/packaging-manual/ + +set -e + +if dpkg-maintscript-helper supports rm_conffile 2>/dev/null; then + dpkg-maintscript-helper rm_conffile /etc/logrotate.d/x2gobroker 0.0.1.1-0 -- "$@" +fi + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 \ No newline at end of file diff --git a/debian/python-x2gobroker.preinst b/debian/python-x2gobroker.preinst new file mode 100755 index 0000000..1f28dd6 --- /dev/null +++ b/debian/python-x2gobroker.preinst @@ -0,0 +1,31 @@ +#!/bin/sh +# preinst script for python-x2gobroker +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postinst> `configure' <most-recently-configured-version> +# * <old-postinst> `abort-upgrade' <new version> +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> +# <new-version> +# * <postinst> `abort-remove' +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' +# <failed-install-package> <version> `removing' +# <conflicting-package> <version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +if dpkg-maintscript-helper supports rm_conffile 2>/dev/null; then + dpkg-maintscript-helper rm_conffile /etc/logrotate.d/x2gobroker 0.0.1.1-0 -- "$@" +fi + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/debian/x2gobroker-agent.postinst b/debian/x2gobroker-agent.postinst index 8f48ccd..a6fd79d 100755 --- a/debian/x2gobroker-agent.postinst +++ b/debian/x2gobroker-agent.postinst @@ -56,6 +56,9 @@ case "$1" in if ! dpkg-statoverride --list /usr/lib/x2go/x2gobroker-agent 1>/dev/null; then dpkg-statoverride --add --update root x2gobroker 4750 /usr/lib/x2go/x2gobroker-agent fi + touch /var/log/x2gobroker/broker.log && chown x2gobroker:adm /var/log/x2gobroker/broker.log + touch /var/log/x2gobroker/error.log && chown x2gobroker:adm /var/log/x2gobroker/error.log + ;; diff --git a/debian/x2gobroker-authservice.install b/debian/x2gobroker-authservice.install index 03fb37c..8d466ac 100644 --- a/debian/x2gobroker-authservice.install +++ b/debian/x2gobroker-authservice.install @@ -1 +1,2 @@ -sbin/x2gobroker-authservice usr/sbin/ \ No newline at end of file +sbin/x2gobroker-authservice usr/sbin/ +logrotate/x2gobroker-authservice etc/logrotate.d/ \ No newline at end of file diff --git a/debian/x2gobroker-daemon.install b/debian/x2gobroker-daemon.install new file mode 100644 index 0000000..7f70476 --- /dev/null +++ b/debian/x2gobroker-daemon.install @@ -0,0 +1 @@ +logrotate/x2gobroker-daemon etc/logrotate.d/ \ No newline at end of file diff --git a/debian/x2gobroker-daemon.postinst b/debian/x2gobroker-daemon.postinst index 9bc1d52..95c4475 100755 --- a/debian/x2gobroker-daemon.postinst +++ b/debian/x2gobroker-daemon.postinst @@ -53,6 +53,9 @@ case "$1" in if ! dpkg-statoverride --list /var/log/x2gobroker 1>/dev/null; then dpkg-statoverride --add --update x2gobroker adm 2750 /var/log/x2gobroker fi + touch /var/log/x2gobroker/access.log && chown x2gobroker:adm /var/log/x2gobroker/access.log + touch /var/log/x2gobroker/broker.log && chown x2gobroker:adm /var/log/x2gobroker/broker.log + touch /var/log/x2gobroker/error.log && chown x2gobroker:adm /var/log/x2gobroker/error.log ;; diff --git a/debian/x2gobroker-wsgi.install b/debian/x2gobroker-wsgi.install index 26c32b7..f7f6452 100644 --- a/debian/x2gobroker-wsgi.install +++ b/debian/x2gobroker-wsgi.install @@ -1,2 +1,3 @@ etc/x2gobroker-wsgi.apache.conf /etc/x2go/ -etc/x2gobroker-wsgi.apache.vhost /etc/x2go/ \ No newline at end of file +etc/x2gobroker-wsgi.apache.vhost /etc/x2go/ +logrotate/x2gobroker-wsgi etc/logrotate.d/ \ No newline at end of file diff --git a/debian/x2gobroker-wsgi.postinst b/debian/x2gobroker-wsgi.postinst index 873b123..0372383 100755 --- a/debian/x2gobroker-wsgi.postinst +++ b/debian/x2gobroker-wsgi.postinst @@ -56,6 +56,9 @@ case "$1" in if ! dpkg-statoverride --list /var/log/x2gobroker 1>/dev/null; then dpkg-statoverride --add --update x2gobroker adm 2750 /var/log/x2gobroker fi + touch /var/log/x2gobroker/broker.log && chown x2gobroker:adm /var/log/x2gobroker/broker.log + touch /var/log/x2gobroker/error.log && chown x2gobroker:adm /var/log/x2gobroker/error.log + touch /var/log/x2gobroker/wsgi.log && chown x2gobroker:adm /var/log/x2gobroker/wsgi.log ;; diff --git a/etc/broker/x2gobroker-loggers.conf b/etc/broker/x2gobroker-loggers.conf index 87d7dca..e2edd23 100644 --- a/etc/broker/x2gobroker-loggers.conf +++ b/etc/broker/x2gobroker-loggers.conf @@ -21,17 +21,17 @@ # WARNING: only modify this file if you _exactly_ know what you are doing!!! [loggers] -keys=root,broker,authservice,access,error +keys=root,broker,access,error [logger_root] level=NOTSET handlers=stderrHandler [handlers] -keys=stderrHandler,brokerFileHandler,authserviceFileHandler,accessFileHandler,errorFileHandler +keys=stderrHandler,brokerFileHandler,accessFileHandler,errorFileHandler [formatters] -keys=brokerFormatter,authserviceFormatter,accessFormatter,errorFormatter +keys=brokerFormatter,accessFormatter,errorFormatter [handler_stderrHandler] class=StreamHandler @@ -52,21 +52,6 @@ args=('/var/log/x2gobroker/broker.log',) format=%(asctime)s - %(name)s - %(levelname)s - %(message)s datefmt= -[logger_authservice] -level=DEBUG -handlers=authserviceFileHandler -qualname=authservice -propagate=0 - -[handler_authserviceFileHandler] -class=FileHandler -formatter=authserviceFormatter -args=('/var/log/x2gobroker/authservice.log',) - -[formatter_authserviceFormatter] -format=%(asctime)s - %(name)s - %(levelname)s - %(message)s -datefmt= - [logger_access] level=DEBUG handlers=accessFileHandler diff --git a/logrotate/x2gobroker-authservice b/logrotate/x2gobroker-authservice new file mode 100644 index 0000000..d19cc13 --- /dev/null +++ b/logrotate/x2gobroker-authservice @@ -0,0 +1,13 @@ +/var/log/x2gobroker/authservice.log { + weekly + missingok + rotate 52 + compress + delaycompress + notifempty + create 640 root adm + sharedscripts + postrotate + invoke-rc.d x2gobroker-authservice restart > /dev/null + endscript +} diff --git a/logrotate/x2gobroker-daemon b/logrotate/x2gobroker-daemon new file mode 100644 index 0000000..31da1bd --- /dev/null +++ b/logrotate/x2gobroker-daemon @@ -0,0 +1,13 @@ +/var/log/x2gobroker/access.log /var/log/x2gobroker/broker.log /var/log/x2gobroker/error.log { + weekly + missingok + rotate 52 + compress + delaycompress + notifempty + create 640 x2gobroker adm + sharedscripts + postrotate + invoke-rc.d x2gobroker-daemon restart > /dev/null + endscript +} diff --git a/logrotate/x2gobroker b/logrotate/x2gobroker-wsgi similarity index 57% rename from logrotate/x2gobroker rename to logrotate/x2gobroker-wsgi index 4e8c689..bb040b7 100644 --- a/logrotate/x2gobroker +++ b/logrotate/x2gobroker-wsgi @@ -1,4 +1,4 @@ -/var/log/x2gobroker/*.log { +/var/log/x2gobroker/broker.log /var/log/x2gobroker/error.log /var/log/x2gobroker/wsgi.log { weekly missingok rotate 52 @@ -7,7 +7,5 @@ notifempty create 640 x2gobroker adm sharedscripts - postrotate - /etc/init.d/x2gobroker restart > /dev/null endscript } diff --git a/sbin/x2gobroker-authservice b/sbin/x2gobroker-authservice index e17271e..5f0bd13 100755 --- a/sbin/x2gobroker-authservice +++ b/sbin/x2gobroker-authservice @@ -28,12 +28,10 @@ import argparse import logging try: - import x2gobroker.defaults + import x2gobroker.authservice except ImportError: sys.path.insert(0, os.path.join(os.getcwd(), '..')) - import x2gobroker.defaults - -import x2gobroker.authservice + import x2gobroker.authservice PROG_NAME = os.path.basename(sys.argv[0]) PROG_OPTIONS = sys.argv[1:] @@ -41,20 +39,19 @@ setproctitle.setproctitle("%s %s" % (PROG_NAME, " ".join(PROG_OPTIONS))) from x2gobroker import __VERSION__ from x2gobroker import __AUTHOR__ -from x2gobroker.loggers import logger_authservice # raise log level to DEBUG if requested... -if x2gobroker.defaults.X2GOBROKER_DEBUG and not x2gobroker.defaults.X2GOBROKER_TESTSUITE: - logger_authservice.setLevel(logging.DEBUG) +if x2gobroker.authservice.X2GOBROKER_DEBUG and not x2gobroker.authservice.X2GOBROKER_TESTSUITE: + x2gobroker.authservice.logger_authservice.setLevel(logging.DEBUG) -logger_authservice.info('X2Go Session Broker ({version}), written by {author}'.format(version=__VERSION__, author=__AUTHOR__)) -logger_authservice.info('Setting up the PAM authentication service\'s environment...') -logger_authservice.info(' X2GOBROKER_DEBUG: {value}'.format(value=x2gobroker.defaults.X2GOBROKER_DEBUG)) -logger_authservice.info(' X2GOBROKER_AUTHSERVICE_SOCKET: {value}'.format(value=x2gobroker.defaults.X2GOBROKER_AUTHSERVICE_SOCKET)) +x2gobroker.authservice.logger_authservice.info('X2Go Session Broker ({version}), written by {author}'.format(version=__VERSION__, author=__AUTHOR__)) +x2gobroker.authservice.logger_authservice.info('Setting up the PAM authentication service\'s environment...') +x2gobroker.authservice.logger_authservice.info(' X2GOBROKER_DEBUG: {value}'.format(value=x2gobroker.authservice.X2GOBROKER_DEBUG)) +x2gobroker.authservice.logger_authservice.info(' X2GOBROKER_AUTHSERVICE_SOCKET: {value}'.format(value=x2gobroker.authservice.X2GOBROKER_AUTHSERVICE_SOCKET)) # check effective UID the broker runs as and complain appropriately... if os.geteuid() != 0: - logger_authservice.warn('X2Go Session Broker\'s PAM authentication service should run with root privileges to guarantee proper access to all PAM modules.') + x2gobroker.authservice.logger_authservice.warn('X2Go Session Broker\'s PAM authentication service should run with root privileges to guarantee proper access to all PAM modules.') if __name__ == '__main__': diff --git a/x2gobroker/__init__.py b/x2gobroker/__init__.py index 5ebaa35..f912e33 100644 --- a/x2gobroker/__init__.py +++ b/x2gobroker/__init__.py @@ -20,12 +20,3 @@ __VERSION__ = '0.0.1.1' __AUTHOR__ = 'Mike Gabriel (X2Go Project) <mike.gabriel@das-netzwerkteam.de>' - -from loggers import logger_error - -class X2GoBrokerBaseException(BaseException): - def __init__(self, *args, **kwargs): - BaseException.__init__(self, *args, **kwargs) - logger_error.error('An exceptional problem occurred: {exception}("{msg}")'.format(exception=type(self).__name__, msg=str(self))) - -class X2GoBrokerAgentException(X2GoBrokerBaseException): pass diff --git a/x2gobroker/agent.py b/x2gobroker/agent.py index 001a800..35bb6a6 100644 --- a/x2gobroker/agent.py +++ b/x2gobroker/agent.py @@ -31,6 +31,7 @@ x2gobroker._paramiko.monkey_patch_paramiko() # X2Go Broker modules import x2gobroker.defaults +import x2gobroker.x2gobroker_exceptions from x2gobroker.loggers import logger_broker, logger_error @@ -83,7 +84,7 @@ def call_local_broker_agent(username, mode, cmdline_args=[]): if result[0].startswith('OK'): return [ r for r in result[1:] if r ] - raise x2gobroker.X2GoBrokerAgentException('Query to local X2Go Broker Agent failed with no response') + raise x2gobroker.x2gobroker_exceptions.X2GoBrokerAgentException('Query to local X2Go Broker Agent failed with no response') def call_remote_broker_agent(username, mode, cmdline_args=[], remote_agent=None): """\ @@ -135,7 +136,7 @@ def call_remote_broker_agent(username, mode, cmdline_args=[], remote_agent=None) if result and result[0].startswith('OK'): return [ r for r in result[1:] if r ] except (paramiko.SSHException, paramiko.AuthenticationException, paramiko.BadHostKeyException, socket.error): - raise x2gobroker.X2GoBrokerAgentException('Query to remote X2Go Broker Agent (user: {user}, hostname: {hostname}, port: {port}) failed'.format(user=remote_username, hostname=remote_hostname, port=remote_port)) + raise x2gobroker.x2gobroker_exceptions.X2GoBrokerAgentException('Query to remote X2Go Broker Agent (user: {user}, hostname: {hostname}, port: {port}) failed'.format(user=remote_username, hostname=remote_hostname, port=remote_port)) def list_sessions(username, query_mode='LOCAL', remote_agent=None): diff --git a/x2gobroker/authservice.py b/x2gobroker/authservice.py index df97435..808988a 100644 --- a/x2gobroker/authservice.py +++ b/x2gobroker/authservice.py @@ -24,22 +24,56 @@ import os import asyncore import pam import socket +import getpass +import logging +import logging.config from pwd import getpwnam from grp import getgrnam -# set up the broker's environment -import x2gobroker.defaults - -from loggers import logger_authservice - -logger_authservice.info('X2Go Session Broker PAM Authentication Service: Setting up the broker\'s environment...') +# normally this would go into defaults.py, however, we do not want to pull in defaults.py here as that will create +# unwanted logfiles (access.log, broker.log, error.log) when x2gobroker-authservice is installed as standalone service +if os.environ.has_key('X2GOBROKER_DEBUG'): + X2GOBROKER_DEBUG = ( os.environ['X2GOBROKER_DEBUG'].lower() in ('1', 'on', 'true', 'yes', ) ) +else: + X2GOBROKER_DEBUG = False +if os.environ.has_key('X2GOBROKER_TESTSUITE'): + X2GOBROKER_TESTSUITE = ( os.environ['X2GOBROKER_TESTSUITE'].lower() in ('1', 'on', 'true', 'yes', ) ) +else: + X2GOBROKER_TESTSUITE = False +if os.environ.has_key('X2GOBROKER_DAEMON_USER'): + X2GOBROKER_DAEMON_USER=os.environ['X2GOBROKER_DAEMON_USER'] +else: + X2GOBROKER_DAEMON_USER="x2gobroker" +if os.environ.has_key('X2GOBROKER_AUTHSERVICE_LOGCONFIG'): + X2GOBROKER_AUTHSERVICE_LOGCONFIG=os.environ['X2GOBROKER_AUTHSERVICE_LOGCONFIG'] +else: + X2GOBROKER_AUTHSERVICE_LOGCONFIG="/etc/x2go/broker/x2gobroker-authservice-logger.conf" if os.environ.has_key('X2GOBROKER_AUTHSERVICE_SOCKET'): X2GOBROKER_AUTHSERVICE_SOCKET=os.environ['X2GOBROKER_AUTHSERVICE_SOCKET'] else: X2GOBROKER_AUTHSERVICE_SOCKET="/run/x2gobroker/x2gobroker-authservice.socket" -logger_authservice.info(' X2GOBROKER_AUTHSERVICE_SOCKET: {value}'.format(value=X2GOBROKER_AUTHSERVICE_SOCKET)) +# standalone daemon mode (x2gobroker-authservice as daemon) or interactive mode (called from the cmdline)? +if getpass.getuser() in (X2GOBROKER_DAEMON_USER, 'root'): + + # we run in standalone daemon mode, so let's use the system configuration for logging + logging.config.fileConfig(X2GOBROKER_AUTHSERVICE_LOGCONFIG) + + # create authservice logger + logger_authservice = logging.getLogger('authservice') + +else: + logger_root = logging.getLogger() + stderr_handler = logging.StreamHandler(sys.stderr) + stderr_handler.setFormatter(logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='')) + + # all loggers stream to stderr... + logger_root.addHandler(stderr_handler) + + logger_authservice = logging.getLogger('authservice') + logger_authservice.addHandler(stderr_handler) + logger_authservice.propagate = 0 class AuthClient(asyncore.dispatcher_with_send): diff --git a/x2gobroker/loggers.py b/x2gobroker/loggers.py index e7eabe0..2d0963c 100644 --- a/x2gobroker/loggers.py +++ b/x2gobroker/loggers.py @@ -43,7 +43,6 @@ if getpass.getuser() in (X2GOBROKER_DAEMON_USER, 'root'): # create loggers logger_broker = logging.getLogger('broker') - logger_authservice = logging.getLogger('authservice') logger_access = logging.getLogger('access') logger_error = logging.getLogger('error') @@ -59,10 +58,6 @@ else: logger_broker.addHandler(stderr_handler) logger_broker.propagate = 0 - logger_authservice = logging.getLogger('authservice') - logger_authservice.addHandler(stderr_handler) - logger_authservice.propagate = 0 - logger_access = logging.getLogger('access') logger_access.addHandler(stderr_handler) logger_access.propagate = 0 diff --git a/x2gobroker/__init__.py b/x2gobroker/x2gobroker_exceptions.py similarity index 100% copy from x2gobroker/__init__.py copy to x2gobroker/x2gobroker_exceptions.py 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).