{"id":22433562,"url":"https://github.com/clayoster/dnsquery","last_synced_at":"2025-09-13T03:44:17.698Z","repository":{"id":264542976,"uuid":"893639033","full_name":"clayoster/dnsquery","owner":"clayoster","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-10T02:43:23.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-10T05:54:29.178Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clayoster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-24T23:47:12.000Z","updated_at":"2025-09-10T02:43:27.000Z","dependencies_parsed_at":"2025-09-10T04:22:31.941Z","dependency_job_id":"32ba5059-ae0d-4aea-bbd1-e84d6c22a647","html_url":"https://github.com/clayoster/dnsquery","commit_stats":null,"previous_names":["clayoster/dnsquery"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/clayoster/dnsquery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayoster%2Fdnsquery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayoster%2Fdnsquery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayoster%2Fdnsquery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayoster%2Fdnsquery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clayoster","download_url":"https://codeload.github.com/clayoster/dnsquery/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayoster%2Fdnsquery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274915594,"owners_count":25373194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T22:15:17.979Z","updated_at":"2025-09-13T03:44:17.689Z","avatar_url":"https://github.com/clayoster.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dnsquery\n\nThis is a simple web-based troubleshooting tool for querying DNS environments to view the IP address that a domain name ultimately resolves to. The code behind this was mainly written to troubleshoot where cached records needed to be purged after IP changes.\n\nAt this point, it's intentionally been designed to not show a high level of detail such as the type of record, etc.\n\nAdditional options that can be dispalyed for each query:\n- Record TTL\n- Query Reponse Time\n\nBy default, queries will be sent to Cloudflare Google and if no name servers are specified. You can find instructions for setting up your own name servers [here](#defining-your-own-name-servers-to-query).\n\n## Defining your own Name Servers to Query\n\nYou can specify your own set of servers to query by adding a file named `servers.yml` and mapping it to `/app/servers.yml` within the container. The contents must be in this format:\n\n```yaml\ndnsquery:\n  Name Server 1 - Cloudflare:\n    ip: 1.1.1.1\n  Name Server 2 - Google:\n    ip: 8.8.8.8\n```\n\n## Deployment Options\n\n### Docker Compose (Recommended)\n\nExample docker-compose.yml file\n```yaml\nservices:\n  dnsquery:\n    container_name: dnsquery\n    # Using 'latest' as an example. specifying a specific version is preferred\n    image: ghcr.io/clayoster/dnsquery:latest\n    restart: always\n    # This is required if you want to specify your own name servers to query\n    volumes:\n      - ./servers.yml:/app/servers.yml:ro\n    ports:\n      - \"8080:8080\"\n```\n\n### Kubernetes\n\nExample Kubernetes manifest file defining the following items:\n- Namespace\n- ConfigMap (Containing servers.yml file containing example configuration)\n- Deployment (A single pod with health checks)\n- Service\n- Ingress (Configured for nginx ingress with example domain \"dnsquery.example.com\" with HTTPS optionally)\n\n```yaml\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: dnsquery\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: dnsquery\n  namespace: dnsquery\ndata:\n  servers.yml: |\n    # Example Configuration\n    #\n    # dnsquery:\n    #   Example - CloudFlare - 1.1.1.1:\n    #     ip: '1.1.1.1'\n    #   Example - Google DNS - 8.8.8.8:\n    #     ip: '8.8.8.8'\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: dnsquery\n  namespace: dnsquery\n  labels:\n    app: dnsquery\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: dnsquery\n  template:\n    metadata:\n      labels:\n        app: dnsquery\n    spec:\n      containers:\n      - name: dnsquery\n        image: ghcr.io/clayoster/dnsquery:latest\n        ports:\n          - containerPort: 8080\n            name: 8080tcp\n            protocol: TCP\n        livenessProbe:\n          exec:\n            command:\n              - pgrep\n              - gunicorn\n          failureThreshold: 3\n          initialDelaySeconds: 5\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        resources: {}\n        startupProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /\n            port: 8080\n            scheme: HTTP\n          initialDelaySeconds: 5\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        volumeMounts:\n          - mountPath: /app/servers.yml\n            name: dnsquery\n            readOnly: true\n            subPath: servers.yml\n      volumes:\n      - name: dnsquery\n        configMap:\n          name: dnsquery\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: dnsquery\n  namespace: dnsquery\nspec:\n  selector:\n    app: dnsquery\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 8080\n  type: ClusterIP\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: dnsquery\n  namespace: dnsquery\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: dnsquery.example.com\n    http:\n      paths:\n      - path: /\n        pathType: Prefix\n        backend:\n          service:\n            name: dnsquery\n            port:\n              number: 80\n  # Optional TLS block\n  #tls:\n  #  - hosts:\n  #    - dnsquery.example.com\n  #    secretName: tls-cert-name\n```\n\n## To-Dos:\n- Improve the UI (especially for mobile)\n- Add option to find Active Directory DNS servers based on AD SRV records and query them\n- Add test for DNS timeout handling (test the perform_query function directly)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclayoster%2Fdnsquery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclayoster%2Fdnsquery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclayoster%2Fdnsquery/lists"}