Сверхмалый web-сервер
slinger [-a администратор] [-c] [-d] [-e] [-i адрес] [-n] [-p номер_порта] [-s]
- -a администратор
- Контактная информация администратора Slinger (например, -a my_ad.nosp@m.min@.nosp@m.somet.nosp@m.hing.nosp@m..com). Эта информация хранится в переменной среды
SERVER_ADMIN
. Значение по умолчанию – nobody.
- -c
- Отменить сохранение файлов HTML с SSI в кэше браузера. При необходимости отображения файла HTML с SSI браузер игнорирует версию файла, ранее загруженную в локальный кэш, и обращается к серверу. Если используется эта опция, браузер отображает последнюю версию динамических данных SSI.
- -d
- Записывать отладочную информацию в системный журнал. Для перехвата регистрируемых сообщений требуется запуск утилиты syslogd.
- -e
- Активировать команду SSI exec.
- -i адрес
- Интерфейс, прослушиваемый сервером slinger (например, 10.0.0.1). Значение по умолчанию – любой интерфейс.
- -n
- Не переводить в фоновый режим.
- -p номер_порта
- Задать номер порта.
- -s
- Активировать команды SSI.
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита slinger представляет собой сервер HTTP, предназначенный для работы в средах с ограниченными ресурсами. Slinger соответствует стандартам CGI 1.1 и HTTP 1.1, поддерживает DHTML с использованием SSI (Server Side Includes – вставки на стороне сервера).
Запуск сервера Slinger
Для запуска сервера Slinger введите:
slinger &
Сервер slinger прослушивает порт TCP 80. Поскольку этот номер меньше 1024, сервер slinger следует запускать от имени пользователя root. После присоединения к порту HTTP идентификатор пользователя сервера понижается до -2 ( setuid( -2 )).
Принципы работы DHTML
Slinger поддерживает команды SSI (Server Side Include – вставка на стороне сервера) для применения динамического HTML. Например, Slinger использует переменные среды PATH
и CMD_INT
для передачи информации команде SSI exec. Клиенты, использующие DHTML, могут предоставлять на своих web-страницах интерактивные функции, действующие в режиме реального времени.
Клиенты создают код DHTML, добавляя маркеры SSI в код HTML на web-страницах. В маркере SSI содержится команда SSI, обрабатываемая сервером Slinger. При передаче кода HTML сервер Slinger заменяет маркер данными HTML в соответствии с тегом, включенным в маркер SSI.
| Slinger обрабатывает маркеры SSI только при условии, что файл HTML имеет расширение .shtml . |
Синтаксис маркера SSI
Применяется следующий синтаксис маркера SSI:
<!--#тег [[набор_переменных[="значение"]] …] -->
где:
- <!–
- Начальный разделитель комментария SGML/HTML.
- #
- Указывает серверу Slinger, что в комментарии содержится команда.
- тег
- Команда SSI.
- набор_переменных
- Один или несколько аргументов команды SSI.
- значение
- Одно или несколько значений для набора переменных.
- -->
- Конечный разделитель комментария SGML/HTML.
| Конечному разделителю комментария должен предшествовать пробел. |
Размер маркера не ограничен (применяются только ограничения, связанные с объемом памяти).
Команды SSI
Допустимые команды SSI:
- break
- Прекратить передачу документа HTML (в любой момент времени). В команде break аргументы отсутствуют, поэтому применяется следующий синтаксис:
<!--#break --> - config
- Установить определенные опции вывода HTML. Синтаксис:
<!--#config набор_переменных="значение" -->
набор_переменных может содержать: cmdecho, cmdprefix, cmdpostfix, errmsg, onerr, timefmt. Для получения дополнительной информации см. раздел "Команды config". - echo
- Вставить данные из поля формы HTML или из переменной среды на страницу HTML. В команде echo используется один аргумент – var. Синтаксис:
<!--#echo var="строка" -->
где строка является значением поля формы HTML или переменной среды. Пример.
<!--#echo var="Last name" -->
или
<!--#echo var="DATE_LOCAL" -->
В команде echo используются эти переменные SSI, а также переменные среды CGI (для получения дополнительной информации см. раздел "Переменные среды" на странице этой утилиты): - DATE_GMT
- Текущие время и дата по Гринвичу.
- DATE_LOCAL
- Текущие местные время и дата.
- DOCUMENT_NAME
- Полный локальный путь к текущей web-странице.
- DOCUMENT_URI
- Локальный путь к текущей web-странице, указывающий базовый каталог web-пространства.
- LAST_MODIFIED
- Дата и время последнего изменения текущей web-страницы.
- QUERY_STRING_UNESCAPED
- Строка запроса с неэкранированными специальными символами, отправленная удаленным клиентом. Все специальные символы командного интерпретатора экранируются символом \.
- exec
- Запустить внешнюю программу и вывести выходные данные в том же месте на странице HTML, где находится маркер exec. Внешняя программа запускается с целью повышения производительности. В команде 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="[путь/]исполняемый_файл [аргументы]" -->
где:
- [путь/]исполняемый_файл
- Имя исполняемой команды.
- аргументы
- Список аргументов командной строки.
Маркер cmd использует переменную среды CMD_INT
для определения командного интерпретатора (программа_командного_интерпретатора) и затем запускает командный интерпретатор с помощью следующего кода:
программа_командного_интерпретатора -c "строка"
где строка имеет следующий формат:
[путевое_имя/]исполняемый_файл [аргументы]
Если полный путь не предоставлен, Slinger использует путь, указанный в переменной среды PATH
и позволяющий определить, где находятся программа_командного_интерпретатора и исполняемый_файл. Вывести выходные данные можно с помощью следующей команды:
<!--#config cmdecho="ON" -->
Пример:
<!--#config cmdecho="ON" -->
<!--#exec cmd="cd /home/smr; ls" -->
- if
- Выполнить операции SSI по условию и вывести текст HTML по условию. Синтаксис команды if:
<!--#if "операнд1" оператор "операнд2" операция -->
где:
- операнд1
- Строка первого операнда в операторе логического сравнения.
- операнд2
- Строка второго операнда в операторе логического сравнения.
- оператор
- Один из следующих операторов: == != < > !< !> hasstring
- операция
- Действие, выполняемое при условии, что логическое сравнение привело к результату TRUE (истинно). Возможные действия: break, error, errorbreak, goto, print, и printbreak.
Оператор hasstring возвращает результат TRUE, если символьная строка операнд2 обнаружена в строке операнд1. Если оба операнда являются числами, они сравниваются как числа; в противном случае сравнение основывается на алфавитном порядке операндов. Если при логическом сравнении получен результат FALSE (ложно), действие не выполняется. Пример.
<!--#if "5" != "10" goto thislabel -->
Нулевой операнд (NULL
) задается строкой "". Операнд NULL
позволяет проверить наличие каких-либо данных в поле формы. Например, если существует форма с полем Last name (фамилия) и необходимо убедиться, что пользователь заполнил это поле, можно воспользоваться следующим маркером:
<!--#if "Last name" == "" printbreak "<P>The Last
name field cannot be blank; please resubmit the
form." -->
Если поле заполнено, действие не выполняется. Если поле оставлено пустым, выводится сообщение и обработка документа HTML завершается. - goto
- Перейти к маркеру с меткой (пропускаемый текст не выводится и пропускаемые маркеры не применяются). Синтаксис команды goto:
<!--#goto ="имя_метки" -->
где имя_метки является именем, определенным в последующей команде label на странице HTML.
| Знаку равенства должен предшествовать пробел. |
Пример совместного использования команд goto и label:
<!--#goto ="change_temp" -->
<!--Пропустить эту часть страницы HTML. -->
<!--#label ="change_temp" -->
<!--Slinger продолжает сканировать -->
<!--код HTML. --> - include
- Вставить содержимое файла на страницу HTML. В команде include используются следующие аргументы:
- file – Синтаксис:
<!--#include file="путь" -->
где путь является путем и именем файла для файла HTML относительно каталога текущей web-страницы. Не следует использовать абсолютные пути и ../
в пути (поскольку невозможно включить путь, начинающийся с уровня выше текущего каталога).
Если необходимо включить файлы, которые находятся в том же каталоге, что и рабочий каталог, используется тег file. Например предположим, что существует каталог web/support/docs/
, содержащий два файла (my_doc.html
и docs.html
) и используется URL-адрес www.something.com/support/docs/docs.html
. Для вставки файла my_doc.html
на страницу HTML, введите следующий маркер:
<!--#include file="my_doc.html" -->
Файл my_doc.html
указан относительно каталога (web/support/docs
) текущего документа (docs.html
).
- virtual – Синтаксис:
<!--#include virtual="путь" -->
где путь является путем и именем файла относительно корневого каталога на сервере Slinger (этот каталог указан в переменной среды HTTPD_ROOT_DIR
).
Если введен тег virtual, Slinger начинает поиск файла с корневого каталога. Например предположим, что существует каталог web/support/docs/
, содержащий файл my_doc.html
и в переменной среды HTTPD_ROOT_DIR
указан каталог web. Для вставки файла my_doc.html
на страницу HTML с URL-адресом web/support/docs/my_doc.html
введите следующий маркер:
<!--#include virtual="/support/docs/my_doc.html" -->
include является рекурсивной командой; каждый вставляемый файл также может содержать маркеры include.
| Вставленный файл не может являться CGI-сценарием, однако он может содержать ссылку на CGI-сценарий. |
- label
- При обнаружением сервером Slinger команды goto перейти к маркеру label на странице HTML. Синтаксис команды label:
<!--#label ="имя_метки" -->
| Максимальная длина переменной имя_метки составляет 60 символов. Знаку равенства должен предшествовать пробел. |
Пример.
<!--#label ="change_temp" --> - qnxvar
- Получить данные от процесса сервера данных или изменить данные этого процесса. В команде qnxvar используются следующие аргументы:
- format – установить формат для последующего отображения (на странице HTML) данных, полученных от процесса сервера данных. Синтаксис:
<!--#qnxvar format="[текст] %s [текст] " -->
где:
- %s
- Метка-заполнитель для значения переменной.
- текст
- Текст, в котором могут содержаться теги HTML, например "<P>".
Формат остается в силе до появления следующего оператора format. Пример.
<!--#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"" -->
| Максимальная длина строковой переменной имя_переменной составляет 60 символов. За строковой переменной имя_переменной должен следовать пробел. |
Команды config
- cmdecho [ON | OFF]
- Установить опцию вывода для последующих маркеров exec. Значение по умолчанию – OFF (выходные данные не подвергаются синтаксическому анализу и не выводятся). Команда cmdecho не применяется к выходным данным CGI-сценариев.
- cmdprefix
- Задать префикс для каждой строки, выводимой при обработке последующих маркеров exec. Синтаксис:
<!--# config cmdprefix="строка" -->
где строка является любой символьной строкой или тегом форматирования HTML. Если в команде cmdecho установлено значение ON, к выходным данным добавляется префикс строка. В противном случае выходные данные не подвергаются синтаксическому анализу и не выводятся. - cmdpostfix
- Задать символьную строку, добавляемую в конец каждой строки, выводимой при обработке последующих маркеров exec. Синтаксис:
<!--# config cmdpostfix="строка" -->
где строка является любой символьной строкой или тегом форматирования HTML. Если в команде cmdecho установлено значение ON, к выходным данным добавляется строка. В противном случае выходные данные не подвергаются синтаксическому анализу и не выводятся. Например, для вывода выходных данных команды exec в отдельных строках введите следующее:
<!--# config cmdpostfix="<BR>" --> - errmsg
- Создать сообщение об ошибке и вывести его при обнаружении сервером Slinger ошибки SSI (например, ошибки синтаксического анализа или отсутствие необходимых данных). Синтаксис:
<!--# config errmsg="строка" -->
где строка является любой символьной строкой или тегом форматирования HTML. Пример.
<!--# config errmsg="<CENTER>*ERROR*</CENTER>" -->
Сообщение об ошибке остается в силе, пока не будет указана другая команда errmsg. - onerr
- Задать действие, выполняемое сервером Slinger при обнаружении ошибки. Синтаксис:
<!--#config onerr="действие" -->
Возможные значения переменной действие: - goto – перейти к маркеру с меткой. Синтаксис:
<!--#config onerr="goto метка" -->
Пример.
<!--#config onerr="goto oven_temp" -->
- break – прекратить передачу документа HTML клиенту.
- error – вывести текущее сообщение об ошибке, определенное в errmsg.
- errorbreak – вывести текущее сообщение об ошибке, определенное в errmsg, и прекратить передачу документа HTML клиенту.
- print – вывести текст. Синтаксис:
<!--#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" -->
Способы реализации DHTML
Для поддержки изменяющихся систем генерировать код HTML можно динамически. Основные компоненты подобной системы:
- изменяющийся элемент;
- внешние приложения, активирующие и считывающие изменения;
- процесс сервера данных;
- сервер Slinger;
- удаленные клиенты.
Существуют три способа реализации DHTML:
- Использование интерфейса CGI. Этот способ описан в общедоступной литературе.
- Написание менеджера ввода-вывода для изменения кода HTML при каждом открытии/чтении префикса.
- Использование SSI (Server Side Includes – вставки на стороне сервера) с сервером данных. Этот способ описывается далее в этом разделе.
Сервер данных
Процесс сервера данных ( ds) сохраняет глобальные данные. Внешние приложения могут изменять или считывать глобальное состояние с помощью API сервера данных. Slinger может изменять или считывать глобальное состояние посредством команды SSI qnxvar.
На следующем рисунке представлена общая концепция управления и контроля, реализуемая внешним приложением и удаленным клиентом Slinger для некоторого устройства:
Рисунок 1. Использование сервера данных
Для использования динамического HTML:
- Используйте маркеры SSI для работы со страницей HTML.
- Используйте маркеры qnxvar для получения и обработки глобальных данных.
- Напишите приложение для управления глобальным состоянием (воспользуйтесь библиотечными функциями сервера данных). См. примеры для утилиты ds.
Выполнение CGI-сценариев
Если необходимо выполнить некоторый CGI-сценарий, его следует запросить по URL-адресу: http://имя_хоста/cgi-bin/файл_сценария
, где:
- имя_хоста
- Имя или IP-адрес хоста, на котором запущен сервер Slinger.
- cgi-bin
- Выполнить заданный файл CGI-сценария.
- файл_сценария
- Имя выполняемого CGI-сценария. Для определения пути к файлу CGI-сценария сервер Slinger обращается к переменной среды
HTTPD_SCRIPTALIAS
.
При выполнении сервером Slinger CGI-сценария выходные данные сценария анализируются с целью обнаружения директив заголовка HTTP. До передачи данных сценария сервер Slinger должен поместить директивы заголовка в буфер; передача директивы заголовка повлияет на формат директивы заголовка по умолчанию. В буфер может быть записано до 1 КБ информации заголовка. CGI-сценарии должны предоставлять действительный заголовок.
Пустая строка распознается сервером Slinger как конец заголовка; строки завершаются символом "<LF>" или символами "<CR><LF>". В обычной директиве заголовка HTTP указывается тип данных, предоставляемых CGI-сценарием. Тип содержимого (Content-Type) по умолчанию: "text/html". Пример:
Content-Type: text/html<LF>
<LF>
данные CGI-сценария...
Slinger поддерживает следующие директивы заголовка CGI:
Директива | Описание | Пример |
---|
Content-Type | Тип данных, возвращаемых клиенту. | Content-Type: text/html |
Location | Ссылка на файл по URL-адресу. | Location: http://www.kpda.ru |
Status | Возврат кода состояния и пояснения клиенту. Если сценарий выполнен успешно, Slinger возвращает состояние 200 OK (если состояние не было изменено сценарием). | Status: 200 OK |
К заголовку HTTP могут добавляться любые другие директивы.
| Slinger не выполняет синтаксический анализ сценария, имеющего префикс имени файла nph- (например, nph-myscript.cgi), и передает только необработанные данные из такого сценария. Поскольку Slinger не добавляет какое-либо содержимое заголовка HTTP, то любой сценарий, который не подвергается синтаксическому анализу, должен предоставлять полный заголовок HTTP в своих выходных данных. |
Меры обеспечения безопасности
При выборе каталога для файлов данных:
- Не помещайте уязвимые рабочие файлы в каталог документов.
- Отделите каталог файлов данных от каталога системных файлов. Например, использовать каталог
/usr/www
значительно безопаснее, чем корневой каталог /
. Через корневой каталог /
сервер Slinger получает доступ ко всей, обслуживаемой системе.
При конфигурировании сервера Slinger для поддержки CGI:
- Поместите CGI-сценарии в каталог, отделенный от каталога с обычными системными двоичными файлами. Не используйте
/bin
или /usr/bin
в качестве каталога CGI-сценариев. - Не устанавливайте для файла CGI-сценария права доступа "установка эффективного идентификатора пользователя" ("set user ID when executing"), когда владельцем файла является привилегированный пользователь (например, root).
- Храните CGI-сценарии и документы в разных каталогах. Это поможет предотвратить несанкционированный доступ к сценариям.
Не подвергайте систему неоправданному риску. Обеспечьте следующее:
- Все файлы и каталоги должны быть доступны только для чтения.
- Не должны присутствовать файлы, владельцем которых является пользователь с идентификатором userid (-2) (идентификатор userid (-2) используется для запущенного сервера Slinger, однако этот сервер не должен являться владельцем файлов).
Эти меры предосторожности предотвращают несанкционированную замену файла паролей или изменение web-страниц.
- Правильный способ
- Рекомендуется помещать документы и сценарии в разные каталоги. В следующем примере документы помещаются в каталог
/usr/webdoc
(основным документом является foo.html), а CGI-сценарии – в каталог /usr/web/cgi
:
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 &
Для web-сервера slinger требуются стек TCP/IP (включенный в io-pkt-*) и разделяемые библиотеки libsocket.so.
- Конфигурация сервера Slinger
- Slinger использует следующие переменные среды для установки собственной конфигурации:
- PATH
- Путь к интерпретатору команд и исполняемой команде интерпретатора, используемой в команде SSI exec. Для получения дополнительной информации см. exec.
- CMD_INT
- Путь или имя программы командного интерпретатора, используемой для интерпретации строки, переданной команде SSI exec (например,
/bin/sh
). Если путь не задан, Slinger осуществляет поиск пути в переменной среды PATH
для программы командного интерпретатора. - HTTPD_ROOT_DIR
- Имя каталога, в котором сервером Slinger осуществляется поиск файлов данных. Значение по умолчанию –
/usr/local/httpd
. - HTTPD_ROOT_DOC
- Имя основного документа (например,
index.html
). Когда web-клиент запрашивает основной документ, HTTPD_ROOT_DOC
присоединяется к HTTPD_ROOT_DIR
, при этом формируется полный путь к основному документу. Имя по умолчанию – index.html
.
Например, переменная среды HTTPD_ROOT_DOC
определена как index.html
, а переменная среды HTTPD_ROOT_DIR
– /usr/www
. Slinger присоединяет index.html
к /usr/www
, в результате создается имя /usr/www/index.html
. - HTTPD_SCRIPTALIAS
- Каталог, в котором сервером Slinger выполняется поиск исполняемых файлов CGI.
Следует отметить, что если определена переменная среды HTTPD_SCRIPTALIAS
, любой пользователь может запускать сценарии или процессы, находящиеся в данном каталоге на компьютере. Однако, если переменная среды HTTPD_SCRIPTALIAS
не определена, то интерфейс CGI остается выключенным и все запросы CGI не выполняются.
Например допустим, что в переменной среды HTTPD_SCRIPTALIAS
указано имя каталога /cgi/bin
. Если сервер Slinger получает запрос на ресурс www.kpda.ru/cgi-bin/get_data.cgi/foo
, то выполняется сценарий get_data.cgi
, находящийся в каталоге /cgi/bin
, и foo передается (в качестве информации о пути) в get_data.cgi
. Каталог foo определен в переменной среды PATH_INFO
(см. описание ниже).
| По соображениям безопасности системы не следует использовать /bin или /usr/bin в качестве каталога CGI-сценариев. |
- Доступно для CGI-сценариев
- Slinger устанавливает следующие переменные среды для использования в CGI-сценариях:
- 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
- Часовой пояс.
Связь с web-сервером slinger осуществляется с использованием сокетов TCP, поэтому требуется поддержка среды выполнения для сокетов. Это означает, что должен работать стек TCP/IP.
При конфигурировании утилиты slinger примите меры по устранению неоправданного риска для системы:
- В каталоге, содержащем документы, не должны храниться уязвимые рабочие файлы.
- Для всех файлов и каталогов должны быть установлены права доступа только для чтения.
- Владельцем файлов не должен являться пользователь -2(32767).
Эти меры предосторожности предотвращают несанкционированные замену файла паролей или изменение web-страниц.
При конфигурировании утилиты slinger для поддержки CGI необходимо учитывать следующее:
- Запускать процессы на компьютере может любой пользователь.
- CGI-сценарии должны быть помещены в каталог, отличный от каталога с обычными системными двоичными файлами. Другими словами, не используйте
/bin
и /usr/bin
в качестве каталогов для хранения CGI-сценариев!
Дополнительная мера предосторожности: храните документы и сценарии в разных местоположениях. Это предотвратит несанкционированное чтение или изменение сценариев другими пользователями.
Базовые подсистемы ЗОСРВ «Нейтрино»
ds, io-pkt-*
Основано на RFC 2068
Предыдущий раздел: Сервисы