#!/usr/bin/env python # argv[1] : re6stnet repository path # argv[2] : babeld repository path # argv[3] : openVPN repository path # argv[4] : re6st script # argv[5:] : re6st script arguments import os, sys def __file__(): import argparse sys.dont_write_bytecode = True # Set path to re6stnet repository root folder sys.path[0] = os.path.join(os.path.dirname(sys.path[0]), sys.argv[1]) from argparse import ArgumentParser _parse_args = ArgumentParser.parse_args ArgumentParser.parse_args = lambda self: _parse_args(self, sys.argv[5:]) # Always import to prevent re6st.node.cli from altering the first sys.path from re6st import registry if 1: # Check renewal of certificate. from random import randrange registry.RENEW_PERIOD = 60 _createCertificate = registry.RegistryServer.createCertificate def createCertificate(self, client_prefix, *args): self.cert_duration = 200 if int(client_prefix, 2) == 7 else \ randrange(10, 60) ** 2 try: return _createCertificate(self, client_prefix, *args) finally: del self.cert_duration registry.RegistryServer.createCertificate = createCertificate # Simulate the case of a node that does # not renew its certificate in time. if sys.argv[5] == "@m7/re6stnet.conf": registry.RENEW_PERIOD = -30 return os.path.join(sys.path[0], sys.argv[4]) __file__ = __file__() # Export babeld binary folder in $PATH if sys.argv[2] != '-': os.environ["PATH"] = "%s:%s" % (os.path.join(sys.path[0], sys.argv[2]), os.environ["PATH"]) # Export openvpn binary folder in $PATH if sys.argv[3] != '-': os.environ["PATH"] = "%s:%s" % (os.path.join(sys.path[0], sys.argv[3]), os.environ["PATH"]) execfile(__file__)