summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/util
diff options
context:
space:
mode:
authorkali <kali@leap.se>2014-08-08 19:10:39 -0500
committerkali <kali@leap.se>2014-08-08 19:10:39 -0500
commitcef0be0b4f866c9283eaf696fbc23b8120e40443 (patch)
treeff54448f7354e56235d22dabaf0fb03597790c98 /src/leap/bitmask/util
parenta9173e8e2816b767028787735e4a84b2576f258d (diff)
parent465c0b89ca61279eb036afec2de3b4d24b257311 (diff)
Merge branch '0.6.1-rc' into deb-0.6.1-rc
Conflicts: pkg/linux/bitmask-root src/leap/bitmask/gui/login.py
Diffstat (limited to 'src/leap/bitmask/util')
-rw-r--r--src/leap/bitmask/util/__init__.py25
-rw-r--r--src/leap/bitmask/util/autostart.py70
-rw-r--r--src/leap/bitmask/util/keyring_helpers.py7
-rw-r--r--src/leap/bitmask/util/leap_argparse.py26
-rw-r--r--src/leap/bitmask/util/polkit_agent.py6
-rw-r--r--src/leap/bitmask/util/privilege_policies.py4
6 files changed, 115 insertions, 23 deletions
diff --git a/src/leap/bitmask/util/__init__.py b/src/leap/bitmask/util/__init__.py
index 25b86874..caa94ec7 100644
--- a/src/leap/bitmask/util/__init__.py
+++ b/src/leap/bitmask/util/__init__.py
@@ -129,3 +129,28 @@ def force_eval(items):
return map(do_eval, items)
else:
return do_eval(items)
+
+
+def dict_to_flags(values):
+ """
+ Set the flags values given in the values dict.
+ If a value isn't provided then use the already existing one.
+
+ :param values: the values to set.
+ :type values: dict.
+ """
+ for k, v in values.items():
+ setattr(flags, k, v)
+
+
+def flags_to_dict():
+ """
+ Get the flags values in a dict.
+
+ :return: the values of flags into a dict.
+ :rtype: dict.
+ """
+ items = [i for i in dir(flags) if i[0] != '_']
+ values = {i: getattr(flags, i) for i in items}
+
+ return values
diff --git a/src/leap/bitmask/util/autostart.py b/src/leap/bitmask/util/autostart.py
new file mode 100644
index 00000000..d7a8afb8
--- /dev/null
+++ b/src/leap/bitmask/util/autostart.py
@@ -0,0 +1,70 @@
+# -*- coding: utf-8 -*-
+# autostart.py
+# Copyright (C) 2013, 2014 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/>.
+"""
+Helpers to enable/disable bitmask's autostart.
+"""
+import logging
+import os
+
+from leap.bitmask.config import flags
+from leap.bitmask.platform_init import IS_LINUX
+from leap.common.files import mkdir_p
+
+logger = logging.getLogger(__name__)
+
+
+DESKTOP_ENTRY = """\
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Type=Application
+Name=Bitmask
+Comment=Secure Communication
+Exec=bitmask --start-hidden
+Terminal=false
+Icon=bitmask
+"""
+
+DESKTOP_ENTRY_PATH = os.path.expanduser("~/.config/autostart/")
+DESKTOP_ENTRY_FILE = os.path.join(DESKTOP_ENTRY_PATH, 'bitmask.desktop')
+
+
+def set_autostart(enabled):
+ """
+ Set the autostart mode to enabled or disabled depending on the parameter.
+ If `enabled` is `True`, save the autostart file to its place. Otherwise,
+ remove that file.
+ Right now we support only Linux autostart.
+
+ :param enabled: whether the autostart should be enabled or not.
+ :type enabled: bool
+ """
+ # we don't do autostart for bundle or systems different than Linux
+ if flags.STANDALONE or not IS_LINUX:
+ return
+
+ if enabled:
+ mkdir_p(DESKTOP_ENTRY_PATH)
+ with open(DESKTOP_ENTRY_FILE, 'w') as f:
+ f.write(DESKTOP_ENTRY)
+ else:
+ try:
+ os.remove(DESKTOP_ENTRY_FILE)
+ except OSError: # if the file does not exist
+ pass
+ except Exception as e:
+ logger.error("Problem disabling autostart, {0!r}".format(e))
diff --git a/src/leap/bitmask/util/keyring_helpers.py b/src/leap/bitmask/util/keyring_helpers.py
index 0512d988..c580f19e 100644
--- a/src/leap/bitmask/util/keyring_helpers.py
+++ b/src/leap/bitmask/util/keyring_helpers.py
@@ -54,11 +54,8 @@ def _get_keyring_with_fallback():
return None
kr = keyring.get_keyring()
if not canuse(kr):
- try:
- kr_klass = keyring.backends.SecretService
- kr = kr_klass.Keyring()
- except AttributeError:
- logger.warning("Keyring cannot find SecretService Backend")
+ logger.debug("No usable keyring found")
+ return None
logger.debug("Selected keyring: %s" % (kr.__class__,))
if not canuse(kr):
logger.debug("Not using default keyring since it is obsolete")
diff --git a/src/leap/bitmask/util/leap_argparse.py b/src/leap/bitmask/util/leap_argparse.py
index c7fed0a3..cbd6d8a5 100644
--- a/src/leap/bitmask/util/leap_argparse.py
+++ b/src/leap/bitmask/util/leap_argparse.py
@@ -107,19 +107,19 @@ def build_parser():
'against domains.')
# Not in use, we might want to reintroduce them.
- #parser.add_argument('-i', '--no-provider-checks',
- #action="store_true", default=False,
- #help="skips download of provider config files. gets "
- #"config from local files only. Will fail if cannot "
- #"find any")
- #parser.add_argument('-k', '--no-ca-verify',
- #action="store_true", default=False,
- #help="(insecure). Skips verification of the server "
- #"certificate used in TLS handshake.")
- #parser.add_argument('-c', '--config', metavar="CONFIG FILE", nargs='?',
- #action="store", dest="config_file",
- #type=argparse.FileType('r'),
- #help='optional config file')
+ # parser.add_argument('-i', '--no-provider-checks',
+ # action="store_true", default=False,
+ # help="skips download of provider config files. gets "
+ # "config from local files only. Will fail if cannot "
+ # "find any")
+ # parser.add_argument('-k', '--no-ca-verify',
+ # action="store_true", default=False,
+ # help="(insecure). Skips verification of the server "
+ # "certificate used in TLS handshake.")
+ # parser.add_argument('-c', '--config', metavar="CONFIG FILE", nargs='?',
+ # action="store", dest="config_file",
+ # type=argparse.FileType('r'),
+ # help='optional config file')
return parser
diff --git a/src/leap/bitmask/util/polkit_agent.py b/src/leap/bitmask/util/polkit_agent.py
index 6fda2f88..7764f571 100644
--- a/src/leap/bitmask/util/polkit_agent.py
+++ b/src/leap/bitmask/util/polkit_agent.py
@@ -39,9 +39,9 @@ def _launch_agent():
logger.error('Exception while running polkit authentication agent '
'%s' % (exc,))
# XXX fix KDE launch. See: #3755
- #try:
- #subprocess.call(KDE_PATH)
- #except Exception as exc:
+ # try:
+ # subprocess.call(KDE_PATH)
+ # except Exception as exc:
def launch():
diff --git a/src/leap/bitmask/util/privilege_policies.py b/src/leap/bitmask/util/privilege_policies.py
index adc3503f..f894d73b 100644
--- a/src/leap/bitmask/util/privilege_policies.py
+++ b/src/leap/bitmask/util/privilege_policies.py
@@ -87,8 +87,8 @@ class LinuxPolicyChecker(PolicyChecker):
else self.LINUX_POLKIT_FILE)
def is_missing_policy_permissions(self):
- # FIXME this name is quite confusing, it does not have anything to do with
- # file permissions.
+ # FIXME this name is quite confusing, it does not have anything to do
+ # with file permissions.
"""
Returns True if we could not find the appropriate policykit file
in place