{"id":24064688,"url":"https://github.com/jeninsutradhar/queri","last_synced_at":"2026-02-15T16:03:09.751Z","repository":{"id":270364765,"uuid":"910129963","full_name":"JeninSutradhar/Queri","owner":"JeninSutradhar","description":"Queri is a powerful DNS resolver Engine built with Rust. It's designed to perform both iterative and recursive DNS lookups, providing detailed information about domain names","archived":false,"fork":false,"pushed_at":"2024-12-30T15:18:45.000Z","size":21,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T19:13:11.600Z","etag":null,"topics":["dns","dns-over-https","dns-record","dns-server","resolver","rust","rust-networking"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/JeninSutradhar.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}},"created_at":"2024-12-30T15:10:38.000Z","updated_at":"2024-12-30T20:06:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"fface6a9-c8d5-403d-a373-e1a004840086","html_url":"https://github.com/JeninSutradhar/Queri","commit_stats":null,"previous_names":["jeninsutradhar/queri"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JeninSutradhar/Queri","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeninSutradhar%2FQueri","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeninSutradhar%2FQueri/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeninSutradhar%2FQueri/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeninSutradhar%2FQueri/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JeninSutradhar","download_url":"https://codeload.github.com/JeninSutradhar/Queri/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeninSutradhar%2FQueri/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275186734,"owners_count":25420183,"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-14T02:00:10.474Z","response_time":75,"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":["dns","dns-over-https","dns-record","dns-server","resolver","rust","rust-networking"],"created_at":"2025-01-09T10:39:43.531Z","updated_at":"2025-10-03T21:40:15.925Z","avatar_url":"https://github.com/JeninSutradhar.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Queri: DNS Resolver Server\n\n[![Rust](https://img.shields.io/badge/rust-1.63+-orange?style=flat-square\u0026logo=rust)](https://www.rust-lang.org/) [![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/a392f1df-1474-4556-b0d5-623427b663e5\" alt=\"Queri Logo\" width=\"300\"/\u003e\n\u003c/p\u003e\n\nQueri is a simple yet powerful command-line DNS resolver built with Rust. It's designed to perform both iterative and recursive DNS lookups, providing you with detailed information about domain names. Queri supports various DNS record types, making it a versatile tool for network analysis and DNS exploration.\n\n## Features\n\n*   **Recursive DNS Resolution:** Recursively queries nameservers to find the IP addresses for domain names.\n*   **Iterative Lookup Support:** Also supports iterative lookups for nameservers when needed.\n*   **Support for A, AAAA, MX, NS, CNAME, SRV, and TXT Records:** Provides results for all essential record types.\n*   **Dynamic Byte Packet Buffer:** Efficiently handles DNS message parsing and construction.\n\n## How It Works\n\nQueri's backend, upon receiving a query either from the server or the user, first uses a UDP socket to interact with DNS protocols, encoding the query into a binary DNS message. It then recursively queries nameservers, parsing each response by decoding the binary data to follow CNAME and NS records to reach an A, AAAA, MX, NS, CNAME, SRV, or TXT record, caching resolved results to improve efficiency and finally format the DNS responses to send to the user or client.\n\n\n## USAGE\n\n### Prerequisites\n\n*   **Rust:** You need to have the Rust toolchain installed. If you don't, visit [rustup.rs](https://rustup.rs/) for installation instructions.\n\n### Building Queri\n\n1.  **Clone the repository:**\n\n    ```bash\n    $ git clone https://github.com/JeninSutradhar/Queri\n    $ cd Queri\n    ```\n2.  **Build the project:**\n\n    ```bash\n    $ cargo build --release\n    ```\n    This command compiles the project and creates the executable in the `target/release` folder.\n\n### Running Queri\n\n1.  **Run the executable:**\n\n    ```bash\n\t$ cargo run\n\t```\n\n    This will start Queri in interactive mode by default. You'll see a prompt asking for the domain and query type.\n    ```bash\n    Enter domain to resolve:\n    ```\n    and then for\n    ```bash\n    Enter query type (A, AAAA, MX, NS, CNAME, SRV, TXT, ALL):\n    ```\n   If any incoming query is received then Queri will act as a DNS server first.\n\n## Example Output\n```bash\n$ Enter domain to resolve: www.yahoo.com\nEnter query type (A, AAAA, MX, NS, CNAME, SRV, TXT, ALL): ALL\n\nAttempting to resolve www.yahoo.com with type ALL\n\n========================= DNS Resolution Results =========================\nQuery Type | Response Code | Record                                   | TTL  \n--------------------------------------------------------------------\nA          | NOERROR      | www.yahoo.com - me-ycpi-cf-www.g06.yahoodns.net | 60   \nMX         | NOERROR      | www.yahoo.com - me-ycpi-cf-www.g06.yahoodns.net | 60   \nNS         | NOERROR      | www.yahoo.com - me-ycpi-cf-www.g06.yahoodns.net | 60   \nCNAME      | NOERROR      | www.yahoo.com - me-ycpi-cf-www.g06.yahoodns.net | 60   \nSRV        | NOERROR      | www.yahoo.com - me-ycpi-cf-www.g06.yahoodns.net | 60   \nTXT        | NOERROR      | www.yahoo.com - me-ycpi-cf-www.g06.yahoodns.net | 60   \n\n========================= Resolution Complete =========================\n\nDo you want to resolve another domain? (y/n): \n```\n\n##  Using Queri as a DNS Server\n\nYou can send direct queries to Queri as a DNS server:\n\n1. Start the Queri app by running `./target/release/queri`. This will make Queri act as a DNS server on port `8080`.\n2. In a new terminal window use `dig` with `@127.0.0.1` to query Queri like:\n    ```bash\n    dig @127.0.0.1 -p 8080 google.com A\n    ```\n\n## 📦 Dependencies\n```toml\n[dependencies]\ncolored = \"2.0\"\n```\n\n## License\n\nQueri is licensed under the MIT License. See the [LICENSE](LICENSE) file for more information.\n\n## Contributing\n\nContributions are always welcome! Feel free to submit issues or pull requests for bugs, features, and improvements.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeninsutradhar%2Fqueri","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeninsutradhar%2Fqueri","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeninsutradhar%2Fqueri/lists"}