From ef5fccceb8f7d514a90797c63f3bda729ea3e6dc Mon Sep 17 00:00:00 2001 From: relikd Date: Sun, 20 Sep 2020 13:32:53 +0200 Subject: [PATCH] More stats --- src/README.md | 8 ++- src/html_index_domains.py | 11 +++- src/index_domains.py | 2 +- src/index_meta.py | 66 ++++++++++++++++++++ src/main.py | 12 ++-- src/z_dependency.png | Bin 38988 -> 0 bytes src/z_dependency.svg | 126 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 213 insertions(+), 12 deletions(-) create mode 100755 src/index_meta.py delete mode 100644 src/z_dependency.png create mode 100644 src/z_dependency.svg diff --git a/src/README.md b/src/README.md index ba3f7ff..9ea28b0 100644 --- a/src/README.md +++ b/src/README.md @@ -1,4 +1,4 @@ -![dependency](z_dependency.png) +![dependency](z_dependency.svg) ## Structure @@ -39,17 +39,19 @@ If you are missing some icons run `main.py icons`. This should also download any Given A → B, B depends on A ``` -digraph G { +digraph Dependency { "." -> html_root "." -> bundle_download bundle_download -> index_app_names index_app_names -> html_bundle index_app_names -> html_index_apps index_app_names -> html_index_domains + index_meta -> html_index_domains "." -> bundle_combine + bundle_combine -> index_meta + bundle_combine -> html_bundle bundle_combine -> index_domains index_domains -> html_index_domains - bundle_combine -> html_bundle "." -> tracker_download } ``` diff --git a/src/html_index_domains.py b/src/html_index_domains.py index 477c5e6..a29620c 100755 --- a/src/html_index_domains.py +++ b/src/html_index_domains.py @@ -3,6 +3,7 @@ import common_lib as mylib import index_app_names import index_domains +import index_meta def a_app(bundle_id): @@ -115,19 +116,23 @@ def gen_html_lookup(html_dir, json, key, title): def gen_html_stats(c_apps, c_domains): + [c_recordings, c_logs] = index_meta.get_total_counts() title = 'Statistics' mylib.mkdir(mylib.path_out('stats')) with open(mylib.path_out('stats', 'index.html'), 'w') as fp: fp.write(mylib.template_with_base('''

{}

- The AppCheck database currently contains {} apps with a total of {} unique domains. + The AppCheck database currently contains {:,} apps with a total of {:,} unique domains. +

+

+ Collected through {:,} recordings with {:,} individual requests.

'''.format(title, c_apps, c_domains), title=title)) +'''.format(title, c_apps, c_domains, c_recordings, c_logs), title=title)) def process(): diff --git a/src/index_domains.py b/src/index_domains.py index b317e3c..a080b77 100755 --- a/src/index_domains.py +++ b/src/index_domains.py @@ -128,5 +128,5 @@ if __name__ == '__main__': if len(args) > 0: process(args) else: - process(['*'], deleteOnly=False) + # process(['*'], deleteOnly=False) mylib.usage(__file__, '[bundle_id] [...]') diff --git a/src/index_meta.py b/src/index_meta.py new file mode 100755 index 0000000..63085b6 --- /dev/null +++ b/src/index_meta.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 + +import sys +import common_lib as mylib + + +def index_file(): + return mylib.path_data_index('meta.json') + + +def load_json_from_disk(fname): + return mylib.json_read(fname) if mylib.file_exists(fname) else {} + + +def get_total_counts(): + try: + return load_json_from_disk(index_file())['_'] + except KeyError: + return [0, 0] + + +def process(bundle_ids, deleteOnly=False): + print('writing index: meta ...') + fname = index_file() + if bundle_ids == ['*']: + bundle_ids = list(mylib.enum_data_appids()) + print(' full reset') + mylib.rm_file(fname) # rebuild from ground up + + # json format: `bundle-id : [#recordings, #logs, #domains, #subdomains]` + index = load_json_from_disk(fname) + for bid in bundle_ids: + # delete old value + try: + del(index[bid]) + except KeyError: + pass + if deleteOnly: + continue + # set new value + json = mylib.json_read(mylib.path_data_app(bid, 'evaluated.json')) + index[bid] = [json['sum_rec'], json['sum_logs'], + len(json['pardom']), len(json['subdom'])] + # sum of counts + try: + del(index['_']) + except KeyError: + pass + total = [0, 0] + for val in index.values(): + total[0] += val[0] + total[1] += val[1] + index['_'] = total + + # write json + mylib.json_write(fname, index, pretty=False) + print('') + + +if __name__ == '__main__': + args = sys.argv[1:] + if len(args) > 0: + process(args) + else: + # process(['*'], deleteOnly=False) + mylib.usage(__file__, '[bundle_id] [...]') diff --git a/src/main.py b/src/main.py index 9c9a259..5c544af 100755 --- a/src/main.py +++ b/src/main.py @@ -11,6 +11,7 @@ import html_bundle import html_index_domains import index_app_names import index_domains +import index_meta import tracker_download @@ -27,13 +28,14 @@ def print_usage_and_exit(): exit(0) -def rebuild_app_index(inclRoot=False): +def rebuild_app_index_html(inclRoot=False): html_index_apps.process() if inclRoot: # TODO: remove check if root contains dynamic content html_root.process() def rebuild_domain_index(bundle_ids, deleteOnly=False): + index_meta.process(bundle_ids, deleteOnly=deleteOnly) index_domains.process(bundle_ids, deleteOnly=deleteOnly) html_index_domains.process() @@ -60,7 +62,7 @@ def del_id(bundle_ids): print('') rebuild_domain_index(bundle_ids, deleteOnly=True) if update_app_index: - rebuild_app_index(inclRoot=True) + rebuild_app_index_html(inclRoot=True) def combine_and_update(bundle_ids, where=None): @@ -81,7 +83,7 @@ def combine_and_update(bundle_ids, where=None): print('no bundle affected by tracker, not generating bundle html') # 5. make all apps index if len(new_ids) > 0: - rebuild_app_index() # must be called after bundle_combine + rebuild_app_index_html() # must be called after bundle_combine else: print('no new bundle, not rebuilding index') @@ -131,10 +133,10 @@ try: # tracker_download.combine_all() elif cmd == 'icons': if bundle_download.download_missing_icons(force=False): - rebuild_app_index() + rebuild_app_index_html() elif cmd == 'index': rebuild_domain_index(['*']) - rebuild_app_index(inclRoot=True) + rebuild_app_index_html(inclRoot=True) elif cmd == 'run': if len(params) == 0: print_usage_and_exit() diff --git a/src/z_dependency.png b/src/z_dependency.png deleted file mode 100644 index e35e406503373cdfee773e4457c82a0b4c074aa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38988 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 + +Dependency + + +. + +. + + +html_root + +html_root + + +.->html_root + + + + +bundle_download + +bundle_download + + +.->bundle_download + + + + +bundle_combine + +bundle_combine + + +.->bundle_combine + + + + +tracker_download + +tracker_download + + +.->tracker_download + + + + +index_app_names + +index_app_names + + +bundle_download->index_app_names + + + + +html_bundle + +html_bundle + + +index_app_names->html_bundle + + + + +html_index_apps + +html_index_apps + + +index_app_names->html_index_apps + + + + +html_index_domains + +html_index_domains + + +index_app_names->html_index_domains + + + + +index_meta + +index_meta + + +index_meta->html_index_domains + + + + +bundle_combine->html_bundle + + + + +bundle_combine->index_meta + + + + +index_domains + +index_domains + + +bundle_combine->index_domains + + + + +index_domains->html_index_domains + + + + + \ No newline at end of file