VR-Online (Август-сентябрь 2010)

Page 25

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 – запись Well­known 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. vr­online | сентябрь 2010


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.