def pytransform_bootstrap(path=None, capsule=None): path = PYARMOR_PATH if path is None else path licfile = os.path.join(path, 'license.lic') if not os.path.exists(licfile): if not os.access(path, os.W_OK): logging.error( 'Bootstrap need write file "license.lic" to %s, ' 'please run pyarmor with sudo for first time', path) raise RuntimeError('No write permission for target path') shutil.copy(os.path.join(PYARMOR_PATH, 'license.tri'), licfile) libname = dll_name + dll_ext platname = None if not os.path.exists(os.path.join(path, libname)): libpath = os.path.join(path, 'platforms') platname = os.getenv('PYARMOR_PLATFORM') platid = pytransform.format_platname(platname) if not os.path.exists(os.path.join(libpath, platid, libname)): download_pytransform(platid) logging.info('Bootstrap OK.\n') pytransform.pyarmor_init(platname=platname) if capsule is not None and 'register' not in sys.argv[1:2]: if not os.path.exists(capsule): logging.info('Generating public capsule ...') make_capsule(capsule)
def pytransform_bootstrap(path=None): path = PYARMOR_PATH if path is None else path libname = dll_name + dll_ext if not os.path.exists(os.path.join(path, libname)): libpath = os.path.join(path, 'platforms') sysname = pytransform.format_platname() if not os.path.exists(os.path.join(libpath, sysname, libname)): download_pytransform(libname) logging.info('Bootstrap OK.\n') pytransform.pyarmor_init()
def pytransform_bootstrap(path=None): path = PYARMOR_PATH if path is None else path libname = dll_name + dll_ext if not os.path.exists(os.path.join(path, libname)): libpath = os.path.join(path, 'platforms') sysname = pytransform.format_platname() if not os.path.exists(os.path.join(libpath, sysname, libname)): logging.info('Searching %s for %s ...', libname, plat_name) src = os.path.join(libpath, plat_name, libname) if not os.path.exists(src): raise RuntimeError('No available library for this platform') logging.info('Found: "%s"', src) logging.info('Copy to %s', path) shutil.copy(src, path) logging.info('Bootstrap OK.\n') pytransform.pyarmor_init()
def pytransform_bootstrap(path=None): licfile = os.path.join(PYARMOR_PATH, 'license.lic') if not os.path.exists(licfile): if not os.access(PYARMOR_PATH, os.W_OK): logging.error( 'Bootstrap need write file "license.lic" to %s, ' 'please run pyarmor with sudo for first time', PYARMOR_PATH) raise RuntimeError('No write permission for target path') shutil.copy(os.path.join(PYARMOR_PATH, 'license.tri'), licfile) path = PYARMOR_PATH if path is None else path libname = dll_name + dll_ext if not os.path.exists(os.path.join(path, libname)): libpath = os.path.join(path, 'platforms') platname = os.getenv('PYARMOR_PLATFORM') platid = pytransform.format_platname(platname) if not os.path.exists(os.path.join(libpath, platid, libname)): download_pytransform(platid) logging.info('Bootstrap OK.\n') pytransform.pyarmor_init(platname=platname)
def pytransform_bootstrap(capsule=None): logging.debug('PyArmor installation path: %s', PYARMOR_PATH) logging.debug('PyArmor data path: %s', DATA_PATH) path = PYARMOR_PATH licfile = os.path.join(path, 'license.lic') if not os.path.exists(licfile): if not os.getenv('HOME', os.getenv('USERPROFILE')): logging.info('Create trial license file: %s', licfile) shutil.copy(os.path.join(path, 'license.tri'), licfile) else: licfile = os.path.join(DATA_PATH, 'license.lic') if not os.path.exists(licfile): if not os.path.exists(DATA_PATH): logging.info('Create pyarmor data path: %s', DATA_PATH) os.makedirs(DATA_PATH) logging.info('Create trial license file: %s', licfile) shutil.copy(os.path.join(path, 'license.tri'), licfile) libname = dll_name + dll_ext platid = pytransform.format_platform() logging.debug('Native platform is %s', _format_platid(platid)) if os.getenv('PYARMOR_PLATFORM'): p = os.getenv('PYARMOR_PLATFORM') logging.info('PYARMOR_PLATFORM is set to %s', p) platid = os.path.join(*os.path.normpath(p).split('.')) logging.debug('Build platform is %s', _format_platid(platid)) if os.path.isabs(platid): if not os.path.exists(os.path.join(platid, dll_name)): raise RuntimeError('No dynamic library found at %s', platid) else: libpath = PLATFORM_PATH logging.debug('Search dynamic library in the path: %s', libpath) if not os.path.exists(os.path.join(libpath, platid, libname)): libpath = CROSS_PLATFORM_PATH logging.debug('Search dynamic library in the path: %s', libpath) if not os.path.exists(os.path.join(libpath, platid, libname)): found = _search_downloaded_files(libpath, platid, libname) if found: logging.debug('Found available dynamic library %s', found) platid = found else: if not os.path.exists(libpath): logging.info('Create cross platform libraries path %s', libpath) os.makedirs(libpath) rid = download_pytransform(platid, libpath, index=0)[0] platid = os.path.join(*rid.split('.')) if libpath == CROSS_PLATFORM_PATH: platid = os.path.abspath(os.path.join(libpath, platid)) pytransform.pyarmor_init(platid=platid) logging.debug('Loaded dynamic library: %s', pytransform._pytransform._name) ver = pytransform.version_info() logging.debug('The version of core library is %s', ver) if ver[0] < 8: raise RuntimeError('PyArmor does not work with this core library ' '(r%d), which reversion < 8' % ver[0]) if capsule is not None and not os.path.exists(capsule): logging.info('Generating public capsule ...') make_capsule(capsule)
# Bootstrap # def search_pytransform(path): logging.info('Searching %s%s for %s ...', dll_name, dll_ext, platform) name = platform.replace('i586', 'i386').replace('i686', 'i386') src = os.path.join(path, 'platforms', name, dll_name + dll_ext) if os.path.exists(src): logging.info('Find _pytransform library "%s"', src) logging.info('Copy %s to %s', src, path) shutil.copy(src, path) else: raise RuntimeError('No library %s found', src) import pytransform try: pytransform.pyarmor_init() except Exception: search_pytransform(PYARMOR_PATH) pytransform.pyarmor_init() def make_capsule(filename): path = PYARMOR_PATH logging.info('Pyarmor install path: %s', path) for a in 'public.key', 'license.lic': x = os.path.join(path, a) if not os.path.exists(x): raise RuntimeError('No %s found in pyarmor' % x) licfile = os.path.join(path, 'license.lic') logging.info('Generating project key ...')
#! /usr/bin/env python '''This script is used to get the license information of one package obfuscated by PyArmor. Copy it to the obfuscated package, generally it should be in the same path of runtime module or package 'pytransform', and run it: cd /path/to/obfuscated-package python get_license_info.py It also could be run by this way cd /path/to/obfuscated-package python -m pyarmor.helper.get_license_info ''' import pytransform if hasattr(pytransform, 'pyarmor_init'): pytransform.pyarmor_init(is_runtime=1) print('Check obfuscated package in the current path') print('Get license information from pytransform at %s:' % pytransform.__file__) for k, v in pytransform.get_license_info().items(): print('%10s: %s' % (k, '' if v is None else v))