From 1032e07a50c8bb265ff9bd31b3bb00e83ddb451e Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 13 Feb 2013 01:32:35 +0900 Subject: launch policykit agent if not running --- src/leap/app.py | 6 ++++++ src/leap/util/polkit.py | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/leap/util/polkit.py diff --git a/src/leap/app.py b/src/leap/app.py index eb38751c..1b2ccd61 100644 --- a/src/leap/app.py +++ b/src/leap/app.py @@ -1,6 +1,7 @@ # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 from functools import partial import logging +import platform import signal # This is only needed for Python v2 but is harmless for Python v3. @@ -12,6 +13,7 @@ from PyQt4 import QtCore from leap import __version__ as VERSION from leap.baseapp.mainwindow import LeapWindow +from leap.util import polkit from leap.gui import locale_rc @@ -62,6 +64,10 @@ def main(): logger.info('Starting app') app = QApplication(sys.argv) + # launch polkit-auth agent if needed + if platform.system() == "Linux": + polkit.check_if_running_polkit_auth() + # To test: # $ LANG=es ./app.py locale = QtCore.QLocale.system().name() diff --git a/src/leap/util/polkit.py b/src/leap/util/polkit.py new file mode 100644 index 00000000..70671124 --- /dev/null +++ b/src/leap/util/polkit.py @@ -0,0 +1,26 @@ +import logging + +import sh +from sh import grep +from sh import ps + +logger = logging.getLogger(__name__) + + +def run_polkit_auth_agent(): + logger.debug('launching policykit authentication agent in background...') + polkit = sh.Command('/usr/lib/policykit-1-gnome/' + 'polkit-gnome-authentication-agent-1') + polkit(_bg=True) + + +def check_if_running_polkit_auth(): + """ + check if polkit authentication agent is running + and launch it if it is not + """ + try: + grep(ps('aux'), '[p]olkit-gnome-authentication-agent-1') + except sh.ErrorReturnCode_1: + logger.debug('polkit auth agent not found, trying to launch it...') + run_polkit_auth_agent() -- cgit v1.2.3