Написание скриптов для WWW сервера

Previous pageReturn to chapter overviewNext page

 

Для запуска скриптов в запросе предусмотрено зарезервированное расширение *.tisp. При этом будет запускаться одноименный файл Windows Scripting Host скрипта типа *.wsf. Он может содержать скрипт на любом языке, который поддерживается Windows. В примерах этого раздела используется Jscript.

 

С помощью запуска скриптов на веб-сервере может быть сформирован любой динамический контент. Скрипт пишется в файле типа *.wsf и полностью соответствует формату Windows Scripting Host. В примерах раздела используется язык JScript, но также может использоваться и VBScript.

 

Скрипт может вызываться как по методу GET, так и POST. Для доступа к параметрам запроса следует использовать именованную коллекцию WScript.Arguments.Named. Также при вызове скрипта ему передаются следующие параметры:

 

_RootDir_

Путь к корневому каталогу веб-сервера

_CurrentDir_

Путь к текущему каталогу

_Method_

GET или POST

_APIPassword_

Идентификатор сессии. Должен быть передан функции APILogon для аутентификации через API

_UserName_

Имя пользователя. Доступно, если клиент прошел аутентификацию.

_UserID_

GUID пользователя. Доступно, если клиент прошел аутентификацию. Следует использовать при работе с API.

_ServerName_

Отображаемое имя сервера (сети). Задается в настройках прокси сервера. Параметр не передается, если он не задан.

_ClientIP_

IP адрес клиента, с которого идет запрос.

 

Если скрипт был запущен при анонимном доступе, то последние два параметра будут отсутствовать.

 

Для вывода данных могут использоваться функция WScript.Echo или поток WScript.StdOut. Следует отметить, что при выводе через WScript.Echo будут проблемы с русской кодировкой, так как эта функция использует OEM (DOS) кодировку. Поэтому для вывода контента используйте только WScript.StdOut.

 

Данные из скрипта выводятся двумя порциями, отделяемыми пустой строкой. Сначала, если необходимо, выводятся HTTP заголовки, затем через пустую строку сам контент. Если заголовки явно не выводятся, то будет автоматически подставлен content-type: text/html; charset=windows-1251. Заголовок длины данных content-length формировать в скрипте не надо, он добавляется автоматически. Таким образом, при выводе html-контента достаточно просто перед данными вывести пустую строку.

 

Следующий пример выводит список всех входных параметров запроса:

 

<job id="default">

<script language="JScript">

 

WScript.Echo("");

WScript.Echo("<html><body>");

 

objArgs = WScript.Arguments;

for (i = 0; i < objArgs.length; i++)

{

  WScript.Echo(objArgs(i)+"<br>");

}

 

WScript.Echo("</body></html>");

 

</script>

</job>

 

Следующий пример выводит отчет работы пользователя в виде xml данных. Для форматирования его в html скрипт надо дополнить подключением xsl шаблона.

 

Также обратите внимание, что для аутентификации в API выполняется вызов APILogon с передачей в качестве пароля идентификатора сессии.

 

<job id="default">

<script language="JScript">

 

var Serv = WScript.CreateObject("TrafInsp.TrafInspAdmin");

 

// Получаем пароль для доступа с API и получаем доступ

objArgs = WScript.Arguments.Named;

Serv.APILogon(objArgs.Item("_APIPassword_"));

 

var UserID = objArgs.Item("_UserID_");

 

var Dom =  WScript.CreateObject("Msxml2.DOMDocument.4.0");

 

// Считываем параметры запроса. Они могут быть получены методом GET или POST

var Date1 = objArgs.Item("Date1");

var Date2 = objArgs.Item("Date2");

 

// Читаем данные отчета

Serv.APIReadLogXML(1, Date1, Date2, UserID, Dom, 0);

 

// Выдаем HTTP заголовок

WScript.Echo("content-type: text/xml; charset=windows-1251");

WScript.Echo("");

 

// Выдаем данные

WScript.StdOut.Write(Dom.xml);

 

</script>

</job>

 

 

 


Текущая страница справки: help.smart-soft.ru/index.html?sdkwwwservscript.htm

Сайт разработчиков Traffic Inspector