schemas.ts•1.62 kB
import { z } from 'zod';
export const DnsRecordTypeSchema = z.enum([
'A', 'AAAA', 'CNAME', 'MX', 'TXT', 'NS', 'SOA', 'PTR', 'SRV', 'CAA'
]);
export const DnsLookupSchema = z.object({
domain: z.string().min(1).describe('The domain name to lookup'),
recordType: DnsRecordTypeSchema.default('A').describe('The type of DNS record to query'),
useCustomServer: z.boolean().optional().describe('Use custom DNS server if configured'),
timeout: z.number().min(100).max(30000).optional().describe('Query timeout in milliseconds')
});
export const ReverseDnsSchema = z.object({
ipAddress: z.string().ip().describe('The IP address to perform reverse lookup on'),
timeout: z.number().min(100).max(30000).optional().describe('Query timeout in milliseconds')
});
export const BatchDnsSchema = z.object({
queries: z.array(z.object({
domain: z.string().min(1),
recordTypes: z.array(DnsRecordTypeSchema).min(1)
})).min(1).max(50).describe('Array of DNS queries to perform'),
parallel: z.boolean().default(true).describe('Execute queries in parallel'),
timeout: z.number().min(100).max(30000).optional().describe('Query timeout per request')
});
export const DnsTraceSchema = z.object({
domain: z.string().min(1).describe('The domain to trace DNS resolution path'),
recordType: DnsRecordTypeSchema.default('A').describe('The record type to trace')
});
export type DnsLookupInput = z.infer<typeof DnsLookupSchema>;
export type ReverseDnsInput = z.infer<typeof ReverseDnsSchema>;
export type BatchDnsInput = z.infer<typeof BatchDnsSchema>;
export type DnsTraceInput = z.infer<typeof DnsTraceSchema>;