FREESCO на Украине Официальный сайт FREESCO

FREESCO router

(программный маршрутизатор на основе Линукс)
Главная/Main -> Документация/Documentation -> Как сделать/HOWTO -> тюнинг HTTP сервера

::тюнинг HTTP сервера

  1. Русификация/Украинизация - или смена кодировки по умолчанию.
  2. Запуск скриптов другого типа и из любого места.
  3. Создание своих страниц ошибок ответа сервера.

Но сначала, общее:
FreeSCO используется маленький, да удаленький http сервер thttpd/2.21b 23apr2001.
Для того чтобы настроить его под себя, необходимо скопировать rc_httpd из директориии /rc в /pkg/rc, и уже там производить все изменения. cp /rc/rc_httpd /pkg/rc edit /pkg/rc/rc_httpd
Это необходимо потому как директория /rc не является перманентной, она находится на RAM-диске, то есть разворачивается каждый раз при запуске системы из образа. Но так как в переменной PATH /pkg/rc идет ранее /rc то одноименные скрипты выполняются именно из /pkg/rc.
Этот рецепт подойдет и для изменения любых других системных скриптов из /rc.

локализация:

По умолчанию thttpd отдает контент в кодировке iso-8859-1, что естественно нас не устраивает :) Для смены кодировки необходимо в скопированном файле дописать параметр командной строки -T с соответствующей кодировкой. Строка запуска находиться в функции fn1().
Для русского языка в кодировке КОИ8 должно получиться что-то типа вот этого: fn1() { [ "$LOGHTTP" != n -o "$BOOTMOD" = debug ] || D="-l /dev/null" echo -n "Starting $4 HTTP server... $CR" thttpd $1 -p $2 -u $3 $D -T koi8-r = $? "Done $CC port $2" }

запустим все, или дырка в безопасности:

По умолчанию thttpd скомпилирован так, что позволяет выполнять CGI-скрипты только из директории веб-сервера /cgi, и только с расширением '*.cgi'. Для изменения этого предназначен параметр -c коммандной строки. Это маска в стиле шелл, определяющая какие файлы считать исполняемыми. Можно использовать '*' для обозначения любого файла в директории или '**' для включения и поддиректорий. Или '?' как маску единичного символа. Символ '|' можна использовать для указания нескольких масок.
Также не забыть что файлы должны быть исполняемыми, то есть chmod +x *.pl к примеру. fn1() { [ "$LOGHTTP" != n -o "$BOOTMOD" = debug ] || D="-l /dev/null" echo -n "Starting $4 HTTP server... $CR" thttpd $1 -p $2 -u $3 $D -T koi8-r -c "/guestbook/**.pl|**.cgi|cgi/**" = $? "Done $CC port $2" } В моем случае я включил выполнение файлов с расширениями '*.cgi' из корня веб-сервера и всех поддиректорий, файлов '*.pl' из каталога гостевой книги, а также разрешил выполнять любой файл из директории '/cgi'.

ВНИМАНИЕ!!! Делать так нельзя ни в коем случае, этим Вы можете здорово подорвать безопасность вашей системы.

раскрасим 404 ошибку:

thttpd позволяет иметь собственные страницу на каждый тип ошибки HTTP. Этим можна воспользоваться для перенаправления пользователя на свою страницу, при ошибке 404. Также можно вывести информацию при некорректной автоизации, ошибка 401. Да и для любой ошибки можна сделать проброс на сайт локальной сети.

Для этого необходимо создать каталог errors в корневой директории вашего вебсервера. А в нем файлы с именами errXXX.html где XXX соответствует коду ошибки. Только для совсем валидного кода рекомендуется не закрывать тело вашего html, так как thttpd сам добавляет в конец свою контактную информацию, <HR> <ADDRESS><A HREF="http://www.acme.com/software/thttpd/">thttpd/2.21b 23apr2001</A></ADDRESS> </BODY></HTML> то есть последние </body> и </html> лучше не ставить, он их сам поставит.



Этот сервер умеет еще много чего, за дополнительной информацией отправляйтесь на официальный сайт программы.