feat: add dnsmasq DNS record admin UI

- store records in SQLite via built-in node:sqlite, no native deps
- wrap DB reads in await io() so they stay out of the static shell
- add CRUD pages backed by Server Actions with per-request data
- generate managed config and restart container via Docker socket
- add /resolve page to query dnsmasq for A and CNAME records
- add Dockerfile and compose setup with shared config volume
This commit is contained in:
siujamo committed 2026-10-09 16:47:31 +08:00
1 parent c5585f2b13
commit 97ad09ad8a
27 files changed
+1344 -130

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
import type { FieldErrors } from "./validate"
/**
* Shared shape returned by every Server Action that a form consumes via `useActionState`.
* Kept in its own module because a `'use server'` file may only export async functions.
*/
export interface ActionState {
ok: boolean
message?: string
detail?: string
fieldErrors?: FieldErrors
}