summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/leap/app.py6
-rw-r--r--src/leap/util/polkit.py26
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()