25
Кодинг
нужно доставить почту (mail destination). В настоящее время MD записи не применяются. Используй MX;
qtMF – отправитель почты. В настоящее время опять же не используется. Применяется MX; qtName – каноническая запись имени (псевдоним); qtSOA – начальная запись зоны. Она указывает сервер, на котором храниться эталонная информация о домене; сервера, к которому должна подключаться наша программа и отправлять запросы на получения определенных записей. Рисунок 2. Форма будущей программы
Поскольку DNSзаписи бывают разными, нам требуется предоставить пользователю право выбора. Хочет он получить MX запись – пусть себе получает. Так называемое право выбора я реализовал путем добавления компонента TComboBox. В его свойство Items я сразу же занес типы DNSзаписей. Для своего примера я указал: MX, A, SOA и NS. Ты можешь расширить этот список (предварительно посмотри типы записей, с которыми умеет работать соответствующий компонент из библиотеки Indy), но мне достаточно и этих.
Результаты выполнения запроса я буду выводить в RichBox. Ты можешь поступить точно также или же воспользоваться тем компонентом, который тебе больше нравится. Ну и теперь самое главное – компонент, при помощи которого мы и будем получать DNS записи. В библиотеке Indy за работу с DNS серверами отвечает компонент TIdDNS Resolver.
Немного про TIdDNSResolver
Перед тем как начать писать код, немного познакомимся с компонентом TIdDNSResolver. Всетаки он будет выполнять главную роль. Итак, для начала рассмотрим свойства компонента, а потом перейдем к методам.
Свойства
AllowRecursiveQueries:boolean; свойство определяет, должен ли сервер продолжать обрабатывать запросы клиента, которые требуют получения записей с другого dnsсервера. По умолчанию значение установлено в true. QueryRecords:TqueryType; в этом свойстве определяется список записей, информацию по которым необходимо получить. В качестве записей могут быть:
qtA – адрес хоста;
qtMD – конечные адрес, по которому
qtNS – авторитетный name сервер;
qtMB – почтовый ящик доменного имени; qtMG – член почтовой группы;
qtMR – запись указывает почтовый ящик, соответствующий другому почтовому ящику.
qtWKS – запись Wellknown Service содержит перечень распространенных служб TCP/IP, поддерживаемых определенным протоколом (TCP/UDP) на конкретном IP адресе.
qtPTR – указатель на доменное имя; qtHINFO – информация о хосте;
qtMINFO – определяет почтовый ящик стороны, ответственный за почтовый ящик или список рассылки;
qtMX – запись указывает почтовый сервер, принимающий почту для текущей зоны. qtTXT – дополнительная информация о зоне;
qtSTAR – все типы записей;
QueryResult:TQueryResult; в данном свойстве содержится коллекция с результатами выполнения запроса к dnsсерверу.
Host:string; адрес dnsсервера с которым будет устанавливаться соединение;
Методы
procedure Resolve (ADomain:string); метод выполняет запрос на получение данных о выбранных dnsзаписях с dnsсервера для домена, переданного в качестве параметра.
Собственно говоря, это единственный метод, который нас интересует. На этом считаю, что знакомство с компонентом TIdDNSResolve окончено. Переходим к коду.
Пишем код – 2 минуты
С основным компонентом мы познакомились, теперь пришло время для написания кода. Создай обработчик события OnClick для кнопки, по нажатию которой будет выполняться соединение с DNSсервером и отправка запроса для получения определенных записей и напиши в нем код из листинга 1. vronline | сентябрь 2010