Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #30, МАЙ 2003 г.

Ping Master - трансляция cmd2html на ASP

Владимир Егоров aka Dr.NET

Спецвыпуск Xakep, номер #030, стр. 030-050-2


<asp:Label ID="l1" Runat="server">IP-адрес или DNS-имя компьютера:</asp:Label>

<asp:TextBox Runat="server" Columns="16" ID="addr" MaxLength="100" /><br>

<asp:RegularExpressionValidator Display="Dynamic" ErrorMessage="Ты должен ввести IP-адрес или полное DNS-имя компьютера" ID="rev" Runat="server" ControlToValidate="addr" ValidationExpression="(\d{1,3}.){3}(\d{1,3}){1}|\w+([-.]\w+)*(.[a-z]+)+" />

<br/><br/>

<asp:Button Text="Проверить" OnClick="do_Ping" Runat="server" id="but1" /><br>

<asp:Label ID="l2" Runat="server" />

<asp:Label ID="l3" Runat="server" ForeColor="red" />

</form>

</body>

</html>

В форму помещаем текстовое поле для ввода IP-адреса или DNS-имени интересующего нас компа. Вместе с текстовым полем нам будут нужны три ASP-шные метки (<asp:Label>). В одну помещаем текст "IP-адрес или DNS-имя компьютера". Вторую оставим пустой - она будет нужна для вывода ответа программы на нашу страничку.

Третья тоже будет пустой, но, в отличие от второй, у нее запишем атрибут ForeColor="red", показывающий, что текст будет выводиться красным цветом. Третья метка нужна для вывода сообщения об ошибке, если, конечно, ошибка будет. А она будет когда-нибудь :)! Добавляем валидатор <asp:RegularExpressionValidator>, который будет проводить первичную проверку вводимых данных с помощью регулярного выражения. Атрибуту "ControlToValidate" валидатора присваиваем такое же значение, как и имя текстового поля для ввода адреса (я назвал его "addr"), - этот атрибут указывает на элемент, инфу в котором следует проверить на правильность. В качестве параметра "ErrorMessage" валидатора запишем текст сообщения, которое будет выводиться при неправильных данных. Обрати внимание, что во всех серверных XML-тегах ASP.NET присутствует атрибут Runat="server". Теперь валидатору не хватает атрибута "ValidationExpression", т.е. того самого страшного регулярного выражения для проверки адреса. Это выражение выглядит так: (\d{1,3}.){3}(\d{1,3}){1}|\w+([-.]\w+)*(.[a-z]+)+. Левая часть до знака | соответствует записи IP-адреса, а правая - записи доменного имени. Дополнительную инфу по регулярным выражениям (книги, мануалы и пр.) настоятельно рекомендую читать, а не пролистывать, ибо это очень мощная штука.

Тело

Осталось прописать ASPX-кнопку, при нажатии на которую будет, собственно, и происходить все действо. В атрибут "OnClick" вписываем имя процедуры, ответственной за обработку и вывод данных (у меня "do_Ping"). Закрываем теги и идем далее. Теперь добавим саму процедуру-обработчик нажатия кнопки. Сей грандиозный код следует запихнуть в заголовок HTML-документа между тегами <script language="C#" runat="server"> и </script>. Наша процедура "do_Ping" имеет два аргумента: "object sender" и "EventArgs e". "Sender" - объект, в котором возникло событие (в нашем случае - воздействие на кнопку, выраженное в нажатии :)), а переменная "e" содержит данные о событии. Что нам нужно сделать прежде всего, получив адрес? Сначала надо отделить IP-адрес от DNS-имени и проверить, правильный ли введен IP-шник (так как валидатор в форме проверяет данные только на соответствие формату xxx.xxx.xxx.xxx и не учитывает, что каждое из чисел xxx не может быть больше 255).

Назад на стр. 030-050-1  Содержание  Вперед на стр. 030-050-3