No description
  • Rust 87.8%
  • HTML 10.5%
  • Makefile 1.4%
  • Shell 0.3%
Find a file
despiegk 06767665b6
Some checks failed
CI / Check & Test (push) Failing after 2s
CI / Build Release (push) Has been skipped
chore: canonicalize LICENSE
2026-05-27 19:58:47 +02:00
.forgejo/workflows feat: add UI crate, examples, hero_proc integration, listener enable/disable, CI workflow 2026-03-23 20:55:20 +01:00
crates refactor: replace dirs crate with herolib_core for socket path resolution 2026-05-17 09:18:05 +02:00
scripts feat: add UI crate, examples, hero_proc integration, listener enable/disable, CI workflow 2026-03-23 20:55:20 +01:00
tests/integration test: add integration test crate with 39 end-to-end tests 2026-03-23 11:24:53 +01:00
.gitignore feat: add UI crate, examples, hero_proc integration, listener enable/disable, CI workflow 2026-03-23 20:55:20 +01:00
buildenv.sh feat: add UI crate, examples, hero_proc integration, listener enable/disable, CI workflow 2026-03-23 20:55:20 +01:00
Cargo.toml refactor: replace dirs crate with herolib_core for socket path resolution 2026-05-17 09:18:05 +02:00
LICENSE chore: canonicalize LICENSE 2026-05-27 19:58:47 +02:00
Makefile feat: add UI crate, examples, hero_proc integration, listener enable/disable, CI workflow 2026-03-23 20:55:20 +01:00
README.md docs: restructure README with standard sections 2026-05-27 16:24:14 +02:00

my_dns

What this is

Managed DNS daemon providing zones, records, forwarders, and listeners. Built with Rust, Tokio, Axum, and hickory-dns. It exposes both a DNS server (UDP/TCP port 53) and an IPC control plane over Unix sockets for zone and record management.

The server stores configuration in SQLite and supports caching with TTL-based eviction, recursive forwarding, and configurable listeners per zone.

What this repository contains

Crate / Directory Description
my_dns_server DNS daemon + JSON-RPC control server — zone/record/forwarder/listener management
my_dns_sdk Client library — models, record types, validation, protocol, auth, and socket helpers
my_dns_ui Admin dashboard — Axum-based web UI served over Unix socket
my_dns_cli Command-line interface for DNS management
my_dns_examples SDK usage examples and integration tests
tests/integration Integration test suite

Key server capabilities:

  • zone.* — create, list, get, update, delete DNS zones
  • record.* — manage A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT, and CAA records
  • forwarder.* — configure upstream forwarders and forward policies
  • listener.* — manage DNS listeners (address + port bindings)
  • health.check / system.version / system.config_* — operational endpoints

Role in the stack

my_dns provides managed DNS resolution and zone administration within the Mycelium and Hero stack. It is consumed by other services that need programmatic DNS control — for example, assigning hostnames to VMs, routing internal traffic, or publishing service discovery records.

The server listens on a Unix socket at ~/hero/var/sockets/my_dns/rpc.sock for control-plane RPCs, and on configured UDP/TCP addresses for DNS queries.

Relation to ThreeFold

This technology is used within the ThreeFold ecosystem and was first deployed on the ThreeFold Grid. The component itself is designed as reusable infrastructure technology and should be understood by its technical function first, independent of any specific deployment.

Ownership

This repository is owned and maintained by TF-Tech NV, a Belgian company responsible for the development and maintenance of this technology.

License

This project is licensed under the Apache License 2.0 — see the LICENSE file for details.