import json import config_utils import factory from pages.overview.view import load_dns_metrics, _dns_providers_table _PERIOD_OPTIONS = [ (1, '1 Day'), (7, '7 Days'), (30, '30 Days'), (60, '60 Days'), (90, '90 Days'), (365, '365 Days'), (0, 'All Time'), ] def _period_selector_html(current_period): opts = ''.join( f'' for v, label in _PERIOD_OPTIONS ) return ( '
' '' f'' f'' '
' ) def collect_tokens(cfg): try: new = mod_metrics.collect_metrics(cfg) if new: mod_metrics.update_metrics_db(new) except Exception: pass tokens = config_utils.collect_layout_tokens(cfg) dns = cfg.get('upstream_dns', {}) servers = dns.get('upstream_servers', []) tokens['DNS_STRICT_ORDER'] = 'true' if dns.get('strict_order') else 'false' tokens['DNS_CACHE_SIZE'] = str(dns.get('cache_size', '-')) tokens['DNS_UPSTREAM_SERVERS_JSON'] = json.dumps(servers) period = int(dns.get('metrics_period', 0)) dns_stats = load_dns_metrics(period=period) tokens['DNS_PERIOD_SELECTOR'] = _period_selector_html(period) tokens['DNS_METRICS_SINCE'] = dns_stats['since'] tokens['DNS_METRICS_UPDATED'] = dns_stats['updated'] tokens['DNS_STAT_QUERIES'] = dns_stats['queries'] tokens['DNS_STAT_HITS'] = dns_stats['hits'] tokens['DNS_STAT_HIT_RATE'] = dns_stats['hit_rate'] tokens['DNS_STAT_FORWARDED'] = dns_stats['forwarded'] tokens['DNS_STAT_AUTH'] = dns_stats['auth'] tokens['DNS_STAT_TCP_PEAK'] = dns_stats['tcp_peak'] tokens['DNS_STAT_CACHE_EVICTIONS'] = dns_stats['cache_evictions'] tokens['DNS_PROVIDERS_TABLE'] = _dns_providers_table(dns_stats['servers']) return tokens