summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/util/polkit_agent.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-08-28 19:44:27 +0200
committerKali Kaneko <kali@leap.se>2013-09-04 11:05:04 +0200
commitd315312740333abf8450e4e0b004d219a0936488 (patch)
tree91d7327efad4d62f8514c357718a5ca6291632b3 /src/leap/bitmask/util/polkit_agent.py
parent614f588c603832586a175c6d8a96b4499c0518d1 (diff)
Properly daemonize the call to polkit gnome authentication agent.
Closes: #3554
Diffstat (limited to 'src/leap/bitmask/util/polkit_agent.py')
-rw-r--r--src/leap/bitmask/util/polkit_agent.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/leap/bitmask/util/polkit_agent.py b/src/leap/bitmask/util/polkit_agent.py
new file mode 100644
index 00000000..a4650273
--- /dev/null
+++ b/src/leap/bitmask/util/polkit_agent.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+# polkit_agent.py
+# Copyright (C) 2013 LEAP
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+Daemonizes polkit authentication agent.
+"""
+import logging
+import subprocess
+
+import daemon
+
+logger = logging.getLogger(__name__)
+
+BASE_PATH = "/usr/lib/policykit-1-gnome/"\
+ + "polkit-%s-authentication-agent-1"
+
+GNOME_PATH = BASE_PATH % ("gnome",)
+KDE_PATH = BASE_PATH % ("kde",)
+
+
+def _launch_agent():
+ logger.debug('Launching polkit auth agent')
+ print "launching polkit"
+ try:
+ subprocess.call(GNOME_PATH)
+ except Exception as exc:
+ try:
+ subprocess.call(KDE_PATH)
+ except Exception as exc:
+ logger.error('Exception while running polkit authentication agent '
+ '%s' % (exc,))
+
+
+def launch():
+ with daemon.DaemonContext():
+ _launch_agent()
+
+if __name__ == "__main__":
+ launch()