summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2014-06-11 15:59:40 -0500
committerKali Kaneko <kali@leap.se>2014-06-12 11:06:57 -0500
commit09bcc1f3deec4db821d1ad8865d3aa09eb17f341 (patch)
treed244b97ee6627b6d3906713878f5b6a93a8be281
parent28db1cf111efa1eab32d79a19528384a6be1ba96 (diff)
add function to hash bundle binaries
-rwxr-xr-xsetup.py61
1 files changed, 60 insertions, 1 deletions
diff --git a/setup.py b/setup.py
index 3d12db64..bb1937cc 100755
--- a/setup.py
+++ b/setup.py
@@ -20,7 +20,9 @@ Setup file for bitmask.
"""
from __future__ import print_function
+import hashlib
import sys
+import os
import re
if not sys.version_info[0] == 2:
@@ -34,7 +36,6 @@ except ImportError:
from pkg import distribute_setup
distribute_setup.use_setuptools()
from setuptools import setup, find_packages
-import os
from pkg import utils
@@ -168,6 +169,64 @@ class cmd_develop(_develop):
cmdclass["develop"] = cmd_develop
+
+class cmd_binary_hash(Command):
+ """
+ Update the _binaries.py file with hashes for the different helpers.
+ This is used from within the bundle.
+ """
+
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self, *args):
+
+ OPENVPN_BIN = os.environ.get('OPENVPN_BIN', None)
+ BITMASK_ROOT = os.environ.get('BITMASK_ROOT', None)
+
+ def exit():
+ print("Please set environment variables "
+ "OPENVPN_BIN and BITMASK_ROOT pointing to the right path "
+ "to use this command")
+ sys.exit(1)
+
+ bin_paths = OPENVPN_BIN, BITMASK_ROOT
+ if not all(bin_paths):
+ exit()
+
+ if not all(map(os.path.isfile, bin_paths)):
+ exit()
+
+ openvpn_bin_hash, bitmask_root_hash = map(
+ lambda path: hashlib.sha256(open(path).read()).hexdigest(),
+ bin_paths)
+
+ template = r"""
+# Hashes for binaries used in Bitmask Bundle.
+# This file has been automatically generated by `setup.py hash_binaries`
+# DO NOT modify it manually.
+
+OPENVPN_BIN = "{openvpn}"
+BITMASK_ROOT = "{bitmask}"
+"""
+ subst_template = template.format(
+ openvpn=openvpn_bin_hash,
+ bitmask=bitmask_root_hash)
+
+ bin_hash_path = os.path.join('src', 'leap', 'bitmask', '_binaries.py')
+ with open(bin_hash_path, 'w') as f:
+ f.write(subst_template)
+ print("Binaries hash file %s has been updated!" % (bin_hash_path,))
+
+
+cmdclass["hash_binaries"] = cmd_binary_hash
+
+
# next two classes need to augment the versioneer modified ones
versioneer_build = cmdclass['build']