diff options
| author | kali <kali@leap.se> | 2013-02-13 01:32:35 +0900 | 
|---|---|---|
| committer | kali <kali@leap.se> | 2013-02-13 01:33:27 +0900 | 
| commit | 1032e07a50c8bb265ff9bd31b3bb00e83ddb451e (patch) | |
| tree | 9f512367b1d47ced5614702a00f3ff0a8fe746d7 /src | |
| parent | b1f4715334a1b6559ce35dbfe40cd1e1ad91cf7f (diff) | |
launch policykit agent if not running
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/app.py | 6 | ||||
| -rw-r--r-- | src/leap/util/polkit.py | 26 | 
2 files changed, 32 insertions, 0 deletions
| 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() | 
