diff options
Diffstat (limited to 'src/leap')
| -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() | 
