{"id":13838425,"url":"https://github.com/lucavallin/vodo","last_synced_at":"2025-07-08T19:39:43.456Z","repository":{"id":183270676,"uuid":"661720185","full_name":"lucavallin/vodo","owner":"lucavallin","description":"A primitive DNS server written in Rust for fun.","archived":false,"fork":false,"pushed_at":"2024-11-25T10:15:18.000Z","size":1122,"stargazers_count":25,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-01T09:15:29.277Z","etag":null,"topics":["dns","networking","rust"],"latest_commit_sha":null,"homepage":"https://lucavall.in","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucavallin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-07-03T13:48:36.000Z","updated_at":"2024-11-25T10:15:13.000Z","dependencies_parsed_at":"2024-11-21T01:41:12.501Z","dependency_job_id":null,"html_url":"https://github.com/lucavallin/vodo","commit_stats":null,"previous_names":["lucavallin/vodo"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucavallin%2Fvodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucavallin%2Fvodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucavallin%2Fvodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucavallin%2Fvodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucavallin","download_url":"https://codeload.github.com/lucavallin/vodo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227662997,"owners_count":17800711,"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","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","networking","rust"],"created_at":"2024-08-04T15:01:56.594Z","updated_at":"2024-12-02T03:16:44.609Z","avatar_url":"https://github.com/lucavallin.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# \u003cimg src=\"./docs/vodo.png\" style=\"width:30px;padding-right:20px;margin-bottom:-8px;\"\u003evòdo\n\nA primitive DNS server written in Rust for fun.\n\n```bash\n@lucavallin ➜ /workspaces/vodo (main) $ ./target/debug/vodo -h\nA primitive DNS server written in Rust for fun.\n\nUsage: vodo [OPTIONS]\n\nOptions:\n  -p, --port \u003cPORT\u003e  Port for the server to listen on [default: 5353]\n  -h, --help         Print help\n  -V, --version      Print version\n```\n\n## Usage\n\n```bash\n# Build the server\n$ cargo build --release\n\n# Run the server (or use cargo run)\n$ ./target/release/vodo -p 5353\n\n# Query the server\n$ dig @127.0.0.1 -p 5353 cavall.in\n\n; \u003c\u003c\u003e\u003e DiG 9.18.16-1~deb12u1-Debian \u003c\u003c\u003e\u003e @127.0.0.1 -p 5353 cavall.in\n; (1 server found)\n;; global options: +cmd\n;; Got answer:\n;; -\u003e\u003eHEADER\u003c\u003c- opcode: QUERY, status: NOERROR, id: 8919\n;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 0\n\n;; QUESTION SECTION:\n;cavall.in.                     IN      A\n\n;; ANSWER SECTION:\ncavall.in.              1799    IN      A       185.199.111.153\ncavall.in.              1799    IN      A       185.199.108.153\ncavall.in.              1799    IN      A       185.199.109.153\ncavall.in.              1799    IN      A       185.199.110.153\n\n;; AUTHORITY SECTION:\ncavall.in.              1800    IN      NS      dns1.registrar-servers.com.\ncavall.in.              1800    IN      NS      dns2.registrar-servers.com.\n\n;; Query time: 120 msec\n;; SERVER: 127.0.0.1#2053(127.0.0.1) (UDP)\n;; WHEN: Sun Jul 23 16:04:24 UTC 2023\n;; MSG SIZE  rcvd: 225\n\n```\n\n## Makefile\n\nI have included a Makefile to make it easier to build and run the server.\n\n```bash\n# Build the server\n$ make build[-release|-debug]\n# Run the server\n$ make run [port=5353]\n# Clean the build\n$ make clean\n# Query the server\n$ make query [hostname=example.com]\n```\n\n## Limitations\n\n- There is no true concurrency in this server.\n- It does not support TCP, IPv6, EDNS or DNSSEC.\n- It cannot be used to host its own zones, and allow it to act as an authorative server.\n- There is no caching.\n- There are no automated tests or benchmarks.\n\n## Improvements\n\n- Use [tokio-rs/bytes](https://github.com/tokio-rs/bytes) for handling buffers and `bitvec` for bit manipulation.\n- Async/await with tokio.rs (`header.rs` and `packet.rs` could use [tokio_util::codec](https://docs.rs/tokio-util/latest/tokio_util/codec/index.html))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucavallin%2Fvodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucavallin%2Fvodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucavallin%2Fvodo/lists"}