Написание скриптов для WWW сервера |
|
Для запуска скриптов в запросе предусмотрено зарезервированное расширение *.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