diff options
Diffstat (limited to 'installer/packages/riseupvpn/data/post-install.py')
-rwxr-xr-x | installer/packages/riseupvpn/data/post-install.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/installer/packages/riseupvpn/data/post-install.py b/installer/packages/riseupvpn/data/post-install.py new file mode 100755 index 0000000..1e1addd --- /dev/null +++ b/installer/packages/riseupvpn/data/post-install.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +import os +import sys +import subprocess + +HELPER = "bitmask-helper" +HELPER_PLIST = "/Library/LaunchDaemons/se.leap.bitmask-helper.plist" + +def main(): + _dir = os.path.dirname(os.path.realpath(__file__)) + log = open(os.path.join(_dir, 'post-install.log'), 'w') + log.write('Checking for admin privileges...') + + _id = os.getuid() + if _id != 0: + err = "error: need to run as root. UID: %s\n" % str(_id) + logErr(log, msg) + + # failure: sys.exit(1) + + if isHelperRunning(): + log.write("Trying to stop bitmask-helper...") + # if this fail, we can check if the HELPER_PLIST is there + ok = unloadHelper() + log.write("success: %s \n" % str(ok)) + + ok = makeHelperExecutable() + log.write("chmod +x helper: %s \n" % str(ok)) + + # 3. cp se.leap.bitmask-helper.plist /Library/LaunchDaemons/ + copyLaunchDaemon() + + # 4. launchctl load /Library/LaunchDaemons/se.leap.bitmask-helper.plist + launchHelper() + + # 5. chown admin:wheel /Applications/$applicationName.app/Contents/helper # is this the folder? + grantPermissionsOnLogFolder() + + # all good + log.write('post-install script: done') + sys.exit(0) + + +def logErr(log, msg): + log.write(err) + sys.exit(1) + +def isHelperRunning(): + ps = _getProcessList() + return HELPER in ps + +def unloadHelper(): + out = subprocess.call(["launchctl", "unload", HELPER_PLIST]) + return out == 0 + +def makeHelperExecutable(): + out = subprocess.call(["chmod", "+x", HELPER]) + return out == 0 + +def copyLaunchDaemon(): + pass + +def launchHelper(): + pass + +def grantPermissionsOnLogFolder(): + pass + +def _getProcessList(): + _out = [] + output = subprocess.Popen(["ps", "-ceA"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + stdout, stderr = output.communicate() + for line in stdout.split('\n'): + cmd = line.split(' ')[-1] + _out.append(cmd.strip()) + return _out + +if __name__ == "__main__": + main() |