![]() |
![]() |
![]() |
![]() |
slinger [-a администратор] [-c] [-d] [-e]
[-i адрес]
[-n] [-p номер_порта] [-s]
Neutrino
-a администратор
-c
-d
Записывать отладочную информацию в системный журнал. Для перехвата регистрируемых сообщений требуется запуск утилиты syslogd.-e
Активировать команду SSI exec.-i адрес
Интерфейс, прослушиваемый сервером slinger (например, 10.0.0.1). Значение по умолчанию – любой интерфейс.-n
Не переводить в фоновый режим.-p номер_порта
Задать номер порта.-s
slinger &
<!--#тег [[набор_переменных[="значение"]] …] -->
где:<!--
Начальный разделитель комментария SGML/HTML.#
Указывает серверу Slinger, что в комментарии содержится команда.тег
Команда SSI.набор_переменных
Один или несколько аргументов команды SSI.значение
Одно или несколько значений для набора переменных.-->
Конечный разделитель комментария SGML/HTML.break
<!--#break -->
config
Установить определенные опции вывода HTML. Синтаксис:<!--#config набор_переменных="значение" -->
echo
Вставить данные из поля формы HTML или из переменной среды на страницу HTML. В команде echo используется один аргумент – var. Синтаксис:<!--#echo var="строка" -->
где строка является значением поля формы HTML или переменной среды. Пример.<!--#echo var="Last name" -->
или<!--#echo var="DATE_LOCAL" -->
DATE_GMT
Текущие время и дата по Гринвичу.DATE_LOCAL
Текущие местные время и дата.DOCUMENT_NAME
Полный локальный путь к текущей web-странице.DOCUMENT_URI
Локальный путь к текущей web-странице, указывающий базовый каталог web-пространства.LAST_MODIFIED
Дата и время последнего изменения текущей web-страницы.QUERY_STRING_UNESCAPED
exec
cgi – путь и имя файла для CGI-сценария. Синтаксис:
<!--#exec cgi="исполняемый_файл[/путь]" -->
где:
Имя исполняемого файла CGI.исполняемый_файл
путь
Информация о пути, передаваемая в исполняемый_файл. (Информация о пути, предоставляемая CGI-сценариям, также может содержаться в переменной среды PATH.)
Например допустим, что существует CGI-сценарий othello.cgi и в переменной среды HTTPD_SCRIPTALIAS указан каталог /web/games/. Если на страницу HTML поместить следующий маркер, то сервер Slinger выполняет поиск сценария othello.cgi в каталоге /web/games/:где:<!--#exec cgi="othello.cgi" -->
cmd – запустить командный интерпретатор и выполнить исполняемую команду командного интерпретатора. Синтаксис:
<!--#exec cmd="[путь/]исполняемый_файл [аргументы]" -->
Имя исполняемой команды.[путь/]исполняемый_файл
аргументыСписок аргументов командной строки.
программа_командного_интерпретатора -c "строка"
где строка имеет
следующий формат: [путевое_имя/]исполняемый_файл
[аргументы].
<!--#config cmdecho="ON" -->
Пример.
<!--#config cmdecho="ON" -->
<!--#exec cmd="cd /home/smr; ls" -->
if
Выполнить операции SSI по условию и вывести текст HTML по условию. Синтаксис команды if:<!--#if "операнд1" оператор "операнд2" операция -->
где:операнд1
Строка первого операнда в операторе логического сравнения.операнд2
Строка второго операнда в операторе логического сравнения.оператор
Один из следующих операторов: == != < > !< !> hasstringоперация
<!--#if "5" != "10" goto thislabel -->
<!--#if "Last name" == "" printbreak "<P>The Last
name field cannot be blank; please resubmit the
form." -->
goto
Перейти к маркеру с меткой (пропускаемый текст не выводится и пропускаемые маркеры не применяются). Синтаксис команды goto:<!--#goto ="имя_метки" -->
<!--#goto ="change_temp" -->
<!--Пропустить эту часть страницы HTML. -->
<!--#label ="change_temp" -->
<!--Slinger продолжает сканировать -->
<!--код HTML. -->
include
Вставить содержимое файла на страницу HTML. В команде include используются следующие аргументы:file – Синтаксис:
<!--#include file="путь" -->
где путь является путем и именем файла для файла HTML относительно каталога текущей web-страницы. Не следует использовать абсолютные пути и ../ в пути (поскольку невозможно включить путь, начинающийся с уровня выше текущего каталога).
<!--#include file="my_doc.html" -->
Файл my_doc.html указан относительно каталога (web/support/docs) текущего документа (docs.html).
virtual – Синтаксис:
<!--#include virtual="путь" -->
где путь является
путем и именем файла относительно корневого каталога на
сервере Slinger (этот каталог указан в переменной среды HTTPD_ROOT_DIR).
<!--#include virtual="/support/docs/my_doc.html" -->
include является рекурсивной командой; каждый вставляемый файл также может содержать маркеры include.
label
При обнаружением сервером Slinger команды goto перейти к маркеру label на странице HTML. Синтаксис команды label:<!--#label ="имя_метки" -->
<!--#label ="change_temp" -->
qnxvar
Получить данные от процесса сервера данных или изменить данные этого процесса. В команде qnxvar используются следующие аргументы:format – установить формат для последующего отображения (на странице HTML) данных, полученных от процесса сервера данных. Синтаксис:
<!--#qnxvar format="[текст] %s [текст] " -->
%sМетка-заполнитель для значения переменной.
Текст, в котором могут содержаться теги HTML, например<P>.текст
<!--#qnxvar format="I work for %s." -->
Если необходимо вывести символ %, сопровождаемый переменной, введите \% %s. Для вывода %s введите \%s.
read – получить значение переменной от процесса сервера данных и отобразить результат в том же месте на странице HTML, где находится маркер qnxvar. Синтаксис:
<!--#qnxvar read="имя_переменной длина [имя_переменной длина]" -->
где длина – размер в байтах.
Данные выводятся до обнаружения нулевой строки (NULL) или достижения заданной длины данных. Формат результата определяется тегом format. Пример.
<!--#qnxvar read="company_name 20" -->
write – изменить переменную в процессе сервера данных. Синтаксис:
<!--#qnxvar write="имя_переменной "данные"" -->
где переменная данные является строкой. Пример.
<!--#qnxvar write="set.temperature "300"" -->
cmdecho [ON | OFF]
cmdprefix
Задать префикс для каждой строки, выводимой при обработке последующих маркеров exec. Синтаксис:<!--# config cmdprefix="строка" -->
cmdpostfix
Задать символьную строку, добавляемую в конец каждой строки, выводимой при обработке последующих маркеров exec. Синтаксис:<!--# config cmdpostfix="строка" -->
<!--# config cmdpostfix="<BR>" -->
errmsg
<!--# config errmsg="строка" -->
где строка является любой символьной строкой или тегом форматирования HTML. Пример.
<!--# config errmsg="<CENTER>*ERROR*</CENTER>" -->
Сообщение об ошибке остается в силе, пока не будет указана другая команда errmsg.
onerr
Задать действие, выполняемое сервером Slinger при обнаружении ошибки. Синтаксис:<!--#config onerr="действие" -->
Возможные значения переменной действие:
goto – перейти к маркеру с меткой. Синтаксис:
<!--#config onerr="goto метка" -->
Пример.
<!--#config onerr="goto oven_temp" -->
<!--#config onerr="print " строка"" -->
где строка является любой символьной строкой или тегом HTML.
printbreak – вывести текст и прекратить передачу документа HTML клиенту. Синтаксис:
<!--#config onerr="printbreak " строка"" -->
где строка является любой символьной строкой или тегом HTML. Пример.
<!--#config onerr="printbreak "<P>printbreak
error encountered. Terminating transmission of HTML
text."" -->
timefmt
Установить формат даты и времени. Синтаксис:<!--#config timefmt ="строка" -->
где строка является переменной, совместимой с функцией библиотеки C ANSI strftime(). Строка по умолчанию – %a %b %d %T %Y.
Пример.
<!--#config timefmt ="%A %B %d %Y" -->
изменяющийся элемент;
внешние приложения, активирующие и считывающие изменения;
процесс сервера данных;
сервер Slinger;
удаленные клиенты.
Использование интерфейса CGI. Этот способ описан в общедоступной литературе.
Написание менеджера ввода-вывода для изменения кода HTML при каждом открытии/чтении префикса.
Использование SSI (Server Side Includes – вставки на стороне сервера) с сервером данных. Этот способ описывается далее в этом разделе.
Используйте маркеры SSI для работы со страницей HTML.
Используйте маркеры qnxvar для получения и обработки глобальных данных.
Напишите приложение для управления глобальным состоянием (воспользуйтесь библиотечными функциями сервера данных). См. примеры для утилиты ds.
http://имя_хоста/cgi-bin/файл_сценария
где:имя_хоста
Имя или IP-адрес хоста, на котором запущен сервер Slinger.cgi-bin
Выполнить заданный файл CGI-сценария.файл_сценария
Content-Type: text/html<LF>
<LF>
данные
CGI-сценария...
Директива |
Описание |
Пример |
Content-Type |
Тип данных, возвращаемых клиенту. |
Content-Type: text/html |
Location |
Ссылка на файл по URL-адресу. |
Location: http://www.qnx.com |
Status |
Возврат кода состояния и пояснения клиенту. Если сценарий выполнен успешно, Slinger возвращает состояние 200 OK (если состояние не было изменено сценарием). |
Status: 200 OK |
Не помещайте уязвимые рабочие файлы в каталог документов.
Отделите каталог файлов данных от каталога системных файлов. Например, использовать каталог /usr/www значительно безопаснее, чем корневой каталог /. Через корневой каталог / сервер Slinger получает доступ ко всей, обслуживаемой системе.
Поместите CGI-сценарии в каталог, отделенный от каталога с обычными системными двоичными файлами. Не используйте /bin или /usr/bin в качестве каталога CGI-сценариев.
Не устанавливайте для файла CGI-сценария права доступа "установка эффективного идентификатора пользователя" ("set user ID when executing"), когда владельцем файла является привилегированный пользователь (например, root).
Храните CGI-сценарии и документы в разных каталогах. Это поможет предотвратить несанкционированный доступ к сценариям.
Все файлы и каталоги должны быть доступны только для чтения.
Не должны присутствовать файлы, владельцем которых является пользователь с идентификатором userid (-2) (идентификатор userid (-2) используется для запущенного сервера Slinger, однако этот сервер не должен являться владельцем файлов).
export HTTPD_ROOT_DIR=/usr/webdoc
export HTTPD_ROOT_DOC=foo.html
export HTTPD_SCRIPTALIAS=/usr/web/cgi
slinger &
export HTTPD_ROOT_DIR=/usr/web
export HTTPD_ROOT_DOC=foo.html
export HTTPD_SCRIPTALIAS=/usr/web
slinger &
PATH
CMD_INT
HTTPD_ROOT_DIR
Имя каталога, в котором сервером Slinger осуществляется поиск файлов данных. Значение по умолчанию – /usr/local/httpd.HTTPD_ROOT_DOC
HTTPD_SCRIPTALIAS
ACCEPT_LANGUAGE
Языки, воспринимаемые удаленным клиентом.CONTENT_LENGTH
Длина прикрепленной информации для метода POST.CONTENT_TYPE
Тип прикрепленной информации для метода POST.DOCUMENT_ROOT
Местоположение файлов данных. (То же, что HTTP_ROOT_DIR.)FORWARDED
Имя прокси-сервера, через который обрабатывается web-страница.FROM
Имя удаленного клиента.GATEWAY_INTERFACE
Имя и версия интерфейса CGI, предоставляемого сервером Slinger.HTTP_ACCEPT
Принимаемые клиентом MIME-типы, полученные из заголовков HTTP.HTTP_USER_AGENT
Браузер, используемый клиентом для отправки запросов.PATH
Путь к интерпретатору команд и исполняемой команде интерпретатора, используемой в команде SSI exec.PATH_INFO
Дополнительные передаваемые данные о пути.PATH_TRANSLATED
Путь из переменной среды PATH_INFO, присоединенный к пути из переменной среды HTTPD_ROOT_DIR.QUERY_STRING
Необработанная строка запроса, переданная удаленным клиентом.REFERER
URL-адрес страницы HTML, с которой на удаленном клиенте был выполнен переход на текущую страницу.REMOTE_ADDR
IP-адрес удаленного клиента.REMOTE_HOST
Имя хоста удаленного клиента.REMOTE_IDENT
Имя удаленного пользователя, если поддерживается идентификация в соответствии с RFC 931.REMOTE_PORT
Порт удаленного клиента.REMOTE_USER
Имя пользователя, используемое для проверки аутентификации удаленного клиента.REQUEST_METHOD
Метод, которым была запрошена текущая web-страница (GET или POST).SCRIPT_NAME
Имя выполняемого сценария.SERVER_ADMIN
Контактная информация администратора сервера Slinger, указанная в опции Slinger -a.SERVER_NAME
Имя компьютера, на котором выполняется сервер Slinger.SERVER_PORT
Порт IP, прослушиваемый сервером Slinger.SERVER_PROTOCOL
Имя и версия протокола HTTP, предоставляемого сервером Slinger.SERVER_SOFTWARE
Имя программного обеспечения Slinger.SERVER_ROOT
Текущий рабочий каталог сервера Slinger.TZ
В каталоге, содержащем документы, не должны храниться уязвимые рабочие файлы.
Для всех файлов и каталогов должны быть установлены права доступа только для чтения.
Владельцем файлов не должен являться пользователь -2(32767).
Запускать процессы на компьютере может любой пользователь.
CGI-сценарии должны быть помещены в каталог, отличный от каталога с обычными системными двоичными файлами. Другими словами, не используйте /bin и /usr/bin в качестве каталогов для хранения CGI-сценариев!
![]() |
![]() |
![]() |
![]() |