summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkali <kali@leap.se>2013-02-13 01:32:35 +0900
committerkali <kali@leap.se>2013-02-13 01:33:27 +0900
commit1032e07a50c8bb265ff9bd31b3bb00e83ddb451e (patch)
tree9f512367b1d47ced5614702a00f3ff0a8fe746d7 /src
parentb1f4715334a1b6559ce35dbfe40cd1e1ad91cf7f (diff)
launch policykit agent if not running
Diffstat (limited to 'src')
-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()