def main(): common.config = { 'accepted_formats': 'yml', 'sdk_path': os.getenv('ANDROID_HOME'), } common.fill_config_defaults(common.config) parser = argparse.ArgumentParser( usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument( "appid", nargs='*', help= _("applicationId with optional versionCode in the form APPID[:VERCODE]" )) metadata.add_metadata_arguments(parser) options = parser.parse_args() common.options = options pkgs = common.read_pkg_args(options.appid, True) allapps = metadata.read_metadata(pkgs) apps = common.read_app_args(options.appid, allapps, True) srclib_dir = os.path.join('build', 'srclib') os.makedirs(srclib_dir, exist_ok=True) srclibpaths = [] for appid, app in apps.items(): for build in app.get('Builds', []): for lib in build.srclibs: srclibpaths.append( common.getsrclib(lib, srclib_dir, build=build)) print('Set up srclibs:') pprint.pprint(srclibpaths)
def main(): parser = argparse.ArgumentParser( usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument( "appid", nargs='*', help= _("applicationId with optional versionCode in the form APPID[:VERCODE]" )) metadata.add_metadata_arguments(parser) options = parser.parse_args() common.options = options pkgs = common.read_pkg_args(options.appid, True) allapps = metadata.read_metadata(pkgs) apps = common.read_app_args(options.appid, allapps, True) common.read_config(options) srclib_dir = os.path.join('build', 'srclib') os.makedirs(srclib_dir, exist_ok=True) srclibpaths = [] for appid, app in apps.items(): vcs, _ignored = common.setup_vcs(app) vcs.gotorevision('HEAD', refresh=False) for build in app.get('Builds', []): for lib in build.srclibs: srclibpaths.append( common.getsrclib(lib, srclib_dir, prepare=False, build=build)) print('Set up srclibs:') pprint.pprint(srclibpaths)
def main(): global config, options # Parse command line... parser = ArgumentParser( usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]" ) common.setup_global_opts(parser) parser.add_argument( "app_id", nargs='*', help="app-id with optional versioncode in the form APPID[:VERCODE]") parser.add_argument( "-l", "--latest", action="store_true", default=False, help="Scan only the latest version of each package") parser.add_argument( "--clean-after", default=False, action='store_true', help="Clean after all scans have finished") parser.add_argument( "--clean-before", default=False, action='store_true', help="Clean before the scans start and rebuild the container") parser.add_argument( "--clean-only", default=False, action='store_true', help="Clean up all containers and then exit") parser.add_argument( "--init-only", default=False, action='store_true', help="Prepare drozer to run a scan") parser.add_argument( "--repo-path", default="repo", action="store", help="Override path for repo APKs (default: ./repo)") options = parser.parse_args() config = common.read_config(options) if not os.path.isdir(options.repo_path): sys.stderr.write("repo-path not found: \"" + options.repo_path + "\"") exit(1) # Read all app and srclib metadata allapps = metadata.read_metadata() apps = common.read_app_args(options.app_id, allapps, True) docker = DockerDriver( init_only=options.init_only, fresh_start=options.clean_before, clean_only=options.clean_only ) if options.clean_before: docker.clean() if options.clean_only: exit(0) for app_id, app in apps.items(): vercode = 0 if ':' in app_id: vercode = app_id.split(':')[1] for build in reversed(app.builds): if build.disable: continue if options.latest or vercode == 0 or build.versionCode == vercode: app.builds = [build] break continue continue for app_id, app in apps.items(): for build in app.builds: apks = [] for f in os.listdir(options.repo_path): n = common.get_release_filename(app, build) if f == n: apks.append(f) for apk in sorted(apks): apk_path = os.path.join(options.repo_path, apk) docker.perform_drozer_scan(apk_path, app.id) if options.clean_after: docker.clean()
'maps for the region described in the file name. ' 'https://f-droid.org/packages/net.osmand.plus' ), 'Categories': [ 'Offline', 'OsmAnd', ], } with open(os.path.join('metadata', common.sha256sum(f) + '.yml'), 'w') as fp: yaml.dump(data, fp) urls = [] categories = set() find_repo = dict() apps_from_repo = dict() apps = metadata.read_metadata() for app_id in apps.keys(): found = False for url in source_repos: data = cache['indexes'][url] for app in data['apps']: if app_id == app['packageName']: from_metadata = apps[app_id] newapp = dict() for k, v in app.items(): # convert to field names used in metadata files if k == 'added': newapp[k] = datetime.fromtimestamp(int(v) / 1000) else: newapp[k[0].upper() + k[1:]] = v