diff options
author | Kali Kaneko (leap communications) <kali@leap.se> | 2019-08-07 22:49:24 +0200 |
---|---|---|
committer | Kali Kaneko (leap communications) <kali@leap.se> | 2019-08-07 23:03:45 +0200 |
commit | dbe330b8796ca9f403b5d5fe2133726ba504a803 (patch) | |
tree | a7b0ff095ebf574239719b316af0b204fad0b312 /branding/templates/snap/local/pre | |
parent | cefd0857d1f6d798fedd2e6495a026d0b1de936b (diff) |
[pkg] missing snap boilerplate
Diffstat (limited to 'branding/templates/snap/local/pre')
-rwxr-xr-x | branding/templates/snap/local/pre/pack_installers | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/branding/templates/snap/local/pre/pack_installers b/branding/templates/snap/local/pre/pack_installers new file mode 100755 index 0000000..9cf7b15 --- /dev/null +++ b/branding/templates/snap/local/pre/pack_installers @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +import os +import subprocess +from base64 import encodestring as encode + +# we expect to find bitmask-dev cloned in the parent folder for this repo +# we will clone it if not +PARENT = '../../' +BITMASK_FOLDER = PARENT + 'bitmask-dev/' +BITMASK_GIT = 'https://0xacab.org/leap/bitmask-dev' +HELPDIR = BITMASK_FOLDER + 'src/leap/bitmask/vpn/helpers/linux/' +INSTALL = 'hooks/install' +POLKIT_FILE = 'se.leap.bitmask.riseupvpn.policy' +APP_NAME = 'riseup-vpn' + +if not os.path.isdir(BITMASK_FOLDER): + print('[+] Cloning bitmask-dev repo to get helpers...') + cmd = 'cd ../.. && git clone %s' % (BITMASK_GIT, ) + os.system(cmd) +else: + print('[+] Updating bitmask-dev repo to get helpers...') + cmd = 'cd ' + BITMASK_FOLDER + ' && git pull' + os.system(cmd) + +with open(os.path.join(HELPDIR, POLKIT_FILE)) as polkit: + b64_polkit = encode(polkit.read().encode()) + +with open(INSTALL, 'w') as install: + install.write('#!/usr/bin/env python3\n') + install.write('# DO NOT MODIFY MANUALLY\n') + install.write('# This helper installs the polkit policy file\n') + install.write('# for the RiseupVPN snap.\n') + install.write('# It is generated automatically\n') + install.write('# by the script at "snap/local/pre/pack_installers"\n') + install.write('import subprocess\n') + install.write('import os\n') + install.write('from base64 import decodestring as decode\n') + install.write(""" +POLKIT = {polkit} + +with open('/usr/share/polkit-1/actions/{polkit_file}', 'w') as polkit: + lines = decode(POLKIT).split(b"\\n") + for line in lines: + polkit.write(line.decode() + "\\n") + +with open('/etc/os-release') as f: + release = f.read() +# this is a workaround for the fact that debian does not place snap desktop entries in a system+wide path. +if 'ID=debian' in release: + desktop_path = "/usr/share/applications/{app_name}.desktop" + if os.path.exists(desktop_path): + os.remove(desktop_path) + os.symlink("/snap/{app_name}/current/snap/meta/gui/{app_name}.desktop", desktop_path) + subprocess.call(['update-desktop-database']) +""".format( + polkit=b64_polkit, + polkit_file=POLKIT_FILE, + app_name=APP_NAME)) + +subprocess.Popen(["chmod", "+x", INSTALL]) +print("[+] Done packing installers into the snap install hook...") |