opnsense_dns_block_domain
Block a domain by adding a domain override with an empty server, then apply DNS changes to activate.
Instructions
Block a domain by adding a domain override with an empty server. Run opnsense_dns_apply afterwards to activate.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to block (e.g. 'ads.example.com') | |
| server | No | Server to redirect to (empty string = block, default: empty) | |
| description | No | Optional description |
Implementation Reference
- src/tools/dns.ts:155-171 (registration)Registration of opnsense_dns_block_domain in the dnsToolDefinitions array, defining its name, description, and input schema.
{ name: "opnsense_dns_block_domain", description: "Block a domain by adding a domain override with an empty server. Run opnsense_dns_apply afterwards to activate.", inputSchema: { type: "object" as const, properties: { domain: { type: "string", description: "Domain to block (e.g. 'ads.example.com')" }, server: { type: "string", description: "Server to redirect to (empty string = block, default: empty)", }, description: { type: "string", description: "Optional description" }, }, required: ["domain"], }, }, - src/tools/dns.ts:31-35 (schema)Zod schema for validating inputs to opnsense_dns_block_domain. domain is required; server and description are optional.
const BlockDomainSchema = z.object({ domain: DomainSchema, server: z.string().optional(), description: z.string().optional(), }); - src/tools/dns.ts:349-365 (handler)Handler implementation: validates input via BlockDomainSchema, then POSTs to /unbound/settings/addDot with server defaulting to 127.0.0.1 to block a domain.
case "opnsense_dns_block_domain": { const parsed = BlockDomainSchema.parse(args); // OPNsense 24.7+: domain overrides merged into dots model (type: "forward") const result = await client.post("/unbound/settings/addDot", { dot: { enabled: "1", domain: parsed.domain, server: parsed.server || "127.0.0.1", port: "", verify: "", forward_tcp_upstream: "0", forward_first: "0", description: parsed.description ?? "", }, }); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } - src/utils/validation.ts:41-46 (helper)DomainSchema validation regex used by BlockDomainSchema to validate domain names.
export const DomainSchema = z .string() .regex( /^(?!-)[a-zA-Z0-9-]{1,63}(?<!-)(?:\.(?!-)[a-zA-Z0-9-]{1,63}(?<!-))*\.[a-zA-Z]{2,}$/, "Invalid domain name", ); - src/index.ts:59-59 (registration)Registration of handleDnsTool as the handler for all DNS tools, including opnsense_dns_block_domain.
for (const def of dnsToolDefinitions) toolHandlers.set(def.name, handleDnsTool);