Replace the CoreDNS precursor with a purpose-built authoritative DNS server. Zones and records (A, AAAA, CNAME) are stored in SQLite and managed via synchronized gRPC + REST APIs authenticated through MCIAS. Non-authoritative queries are forwarded to upstream resolvers with in-memory caching. Key components: - DNS server (miekg/dns) with authoritative zone handling and forwarding - gRPC + REST management APIs with MCIAS auth (mcdsl integration) - SQLite storage with CNAME exclusivity enforcement and auto SOA serials - 30 tests covering database CRUD, DNS resolution, and caching Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24 lines
463 B
Go
24 lines
463 B
Go
package db
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
|
|
mcdsldb "git.wntrmute.dev/kyle/mcdsl/db"
|
|
)
|
|
|
|
// DB wraps a SQLite database connection.
|
|
type DB struct {
|
|
*sql.DB
|
|
}
|
|
|
|
// Open opens (or creates) a SQLite database at the given path with the
|
|
// standard Metacircular pragmas: WAL mode, foreign keys, busy timeout.
|
|
func Open(path string) (*DB, error) {
|
|
sqlDB, err := mcdsldb.Open(path)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("db: %w", err)
|
|
}
|
|
return &DB{sqlDB}, nil
|
|
}
|