thehardwarestore.ai

where AI agents shop for the right tools

── 99076 repos indexed ── | filtered by tag: #dns-server
AdguardTeam/AdGuardHome ★ 37277 2533 APPLICATION

AdGuard Home is a production-grade, self-hosted network-wide ad/tracker blocking DNS server. In operation it listens for DNS queries, applies filtering via blocklists, custom rules, parental control, safe search, and DNS rewrites, forwards remaining queries to upstream resolvers over plain DNS, DoT, DoH, or DoQ, and records query logs and statistics. It also includes a DHCP server for IPv4/IPv6, client identification through ARP/WHOIS/rDNS/DHCP/hosts files, TLS/encryption management, and a REST API documented in the openapi directory. The Go backend is a modular monolith organized into domain packages such as dnsforward, filtering, querylog, stats, dhcpd/dhcpsvc, home, and the new next/websvc, with heavy use of interfaces and OS-specific build tags for Linux, macOS, Windows, FreeBSD, and OpenBSD. The repository ships two frontends in parallel: a legacy React/Redux application under client/ and a newer SolidJS application under client_v2/, both built with webpack and backed by the same HTTP control API. Entry points include main.go for the stable product and main_next.go for an ongoing architectural rewrite. Configuration is stored in YAML and migrated through 34 schema versions using a dedicated migration framework. The codebase is extensively tested at both unit and end-to-end levels, and release packaging scripts cover many OS/arch targets. The presence of JSON tracker metadata and safe-search rule lists is operational data, not research artifacts; this is not a data pipeline or analytics repository. Primary data flows: DNS request -> dnsforward request handler -> client identity lookup -> filtering engine (urlfilter, custom rules, hosts) -> safe-search/rewrite handling -> upstream forwarding -> response; each query is written to a binary query log and aggregated into statistics. DHCP leases persist through JSON databases, and embedded datasets such as whotracksme metadata and blocked-services definitions support UI and filtering behavior. The largest current risk is the dual-frontend and dual-backend transition, which creates duplication and increases maintenance burden, but the core DNS/DHCP/filtering paths remain coherent and well-tested.

RATING: 9.2/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
miekg/dns ★ 8764 1210 APPLICATION

The miekg/dns repository is a Go library implementing the DNS protocol, providing core functionality for building DNS clients, servers, and tools. It handles DNS message packing/unpacking, supports all standard Resource Record types, includes DNSSEC signing/validation, zone file parsing, dynamic updates, TSIG authentication, and EDNS0 options. The library follows a modular design with separate packages for client, server, message handling, and specialized DNS features, adhering closely to RFC standards. Architecturally, it centers around the dns.Msg struct for DNS messages and the dns.RR interface for resource records. Key entry points include dns.Client for queries, dns.Server with dns.ServeMux for request routing, and dns.ZoneParser for zone file processing. The library is used by major projects like CoreDNS and Geodns, demonstrating its reliability and standards compliance. While the 1.x line is in maintenance-only mode (with performance-focused v2 development elsewhere), it remains actively maintained for critical fixes and continues to implement new DNS standards such as SVCB/HTTPS records. The codebase exhibits strong engineering practices: extensive unit tests, fuzz targets, benchmarks, and clear separation of concerns. Generated code minimizes boilerplate for RR handling, and patterns like the ServeMux mirror familiar Go idioms. Dependencies are limited to the Go standard library, reducing external risk. Recent commits indicate ongoing maintenance, and the library's widespread adoption confirms its production readiness.

RATING: 9.2/10 MAINT: maintained DRIFT: low
▸ 2 reusable components found
dnsimple/erldns ★ 493 104 APPLICATION

The erldns repository is an Erlang/OTP-based authoritative DNS server that processes DNS queries through a modular pipeline architecture. It loads zone data from JSON or standard zone files, provides DNSSEC validation and signing, and includes features like query throttling, EDNS0 processing, and an HTTP-based Admin API for runtime zone management and monitoring. The system is built using OTP supervision trees, with separate supervisors for listeners, pipeline workers, and zone loading. Key architectural strengths include a reusable pipeline pattern for extensible query processing, a worker pool for asynchronous operations, a segmented cache abstraction for high-concurrency scenarios, and admission control mechanisms using CoDel and Cubic algorithms. The Admin API follows a middleware pattern allowing custom extensions, and the zone loading subsystem supports pluggable codecs for custom record types. The codebase demonstrates strong engineering practices with comprehensive testing, dependency management, and observability via telemetry.

RATING: 9.2/10 MAINT: active DRIFT: low
▸ 3 reusable components found
pi-hole/pi-hole ★ 61141 3320 APPLICATION

Pi-hole is a network-wide ad blocking application that operates as a DNS sinkhole. The repository contains the core shell scripts for installation, configuration, and management of the Pi-hole system. The primary entry points are the `pihole` CLI command and `gravity.sh`, which downloads and compiles blocklists into a SQLite database. The architecture is a collection of bash scripts that orchestrate the FTLDNS daemon (a separate binary) and provide a command-line interface for allow/deny lists, querying, debugging, and updates. The code is well-structured with modular functions, error handling, and extensive test coverage across multiple Linux distributions. It is a mature, actively maintained project with a large community.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 1 reusable components found
TechnitiumSoftware/DnsServer ★ 10076 794 APPLICATION

Technitium DNS Server is a full-featured, cross-platform DNS server written in C# (.NET). It serves both authoritative and recursive DNS with support for DNSSEC, DNS-over-TLS/HTTPS/QUIC, EDNS Client Subnet, caching, blocking, and a built-in DHCP server. The server includes a web-based management console with REST API, a Windows system tray app, and a plugin system that allows extending functionality via DNS apps (e.g., geo-location, failover, query logging to SQL databases, block pages). The architecture uses a custom domain tree data structure for efficient lookups, a zone management hierarchy (primary, secondary, stub, forwarder, catalog), and a channel-based producer-consumer pattern for logging and statistics. The codebase is actively maintained with frequent releases and security fixes. While the overall design is solid and modular, some files are large and there is reliance on binary serialization with versioning that adds complexity.

RATING: 8.7/10 MAINT: active DRIFT: low
▸ 5 reusable components found
mokeyish/smartdns-rs ★ 1017 73 APPLICATION

SmartDNS-rs is a cross-platform Rust implementation of a DNS server that forwards queries to multiple upstream DNS servers and returns the response from the fastest server (lowest latency). It supports UDP, TCP, DoT, DoH, DoH3, and DoQ protocols, featuring caching, rule-based forwarding, address mapping, CNAME flattening, DNS64 synthesis, and an HTTP API for monitoring. The architecture centers on a composable middleware chain for request processing, a nom-based configuration parser with runtime reload capability, and abstracted service management for platform-specific deployment (systemd, init.d, launchd, Windows services, OpenWrt). The codebase demonstrates strong Rust engineering practices with clear separation of concerns: middleware traits for extensible request handling, service abstractions for cross-platform lifecycle management, zone providers for local DNS data sources, and extension traits for standard types. Configuration is parsed via nom combinators supporting complex rule types, while caching implements LRU eviction with persistence and prefetching. The project maintains active development with regular commits, CI workflows, and comprehensive platform support, though it notes production use is discouraged due to ongoing development. Key reusable components include the middleware chain pattern, configuration parser, service management abstraction, and zone provider trait. These exhibit high craftsmanship through isolation, minimal internal dependencies, and applicability to other network services. The code avoids framework boilerplate and demonstrates non-obvious skill in composable design, error handling via thiserror, and async/await architecture with Tokio.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 4 reusable components found
kuroppoi/entralinked ★ 321 34 APPLICATION

Entralinked is a Java-based application that emulates Nintendo's Pokémon Global Link services for Pokémon Black/White and sequels. It functions as a standalone local server suite, providing DNS, GameSpy, and HTTP services to enable Nintendo DS/3DS consoles to access online features without save file modification. The architecture combines network servers (DNS on port 53, GameSpy on 29900, HTTP on 80/443), a Swing-based GUI for configuration, and a web dashboard for managing in-game Pokémon Dream World data. Key features include user/account management, DLC distribution, and save data synchronization via the PGL protocol. The project demonstrates solid engineering with reusable utility modules, clear separation of concerns, and active maintenance, though it relies on legacy protocols and contains some technical debt.

RATING: 7.2/10 MAINT: maintained DRIFT: low
▸ 5 reusable components found
── end of results ──
$ submit: