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)
Exemple #2
0
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)
Exemple #3
0
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