def get_records(): trace = request.args.get('trace') == "true" domain = request.args.get('domain') if domain is None: return 'Domain is missing', 400 domain = domain.split("/")[0] try: get_cache() response: tp.Optional[IpRecord] = None if not trace: response = domain_cache[domain] if response is not None and response.expires_at < time.time(): response = None if response is not None: print(f"Using cache for {domain}") return jsonify( domain=domain, ips=response.ips, ttl=max(response.expires_at - time.time(), 0), ) data_trace = Trace() response = Dns.find_recursive(domain, Dns.ROOT_SERVERS_DNS, data_trace) except Exception as e: print(e) response = None if response is None: return jsonify(error='Domain is not resolved', trace=data_trace.compose()), 404 domain_cache[domain] = response if trace: return jsonify(domain=domain, ips=response.ips, ttl=max(response.expires_at - time.time(), 0), trace=data_trace.compose(), exact_match=any( [d.startswith(domain) for d, _ in response.ips])) else: return jsonify(domain=domain, ips=response.ips, ttl=max(response.expires_at - time.time(), 0), exact_match=any( [d.startswith(domain) for d, _ in response.ips]))