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

FREESCO router

(программный маршрутизатор на основе Линукс)
Главная/Main -> Загрузка/Download -> Пакеты/Packages -> Поддержка SSI в встроенном HTTP сервере FREESCO

Поддержка SSI в встроенном HTTP сервере FREESCO

nssi 1.0

Учитывая что для разработки даже данного сайта необходим SSI, а thttpd не имеет встроенной поддержки, я попробовал заюзать внешнюю прогу которая выложена у Dingetje ssi.tar.gz, но был неприятно удивлен отсутствием некоторых возможностей:(, в частности конструкция <!--#set var="foo" value="foobar" --> не работала абсолютно :(

Поэтому появилась эта програмка. Правда тут используется Perl, соответственно, работать будет возможно медленее, но я задач производительности не ставил :) Конечно, это решение не идеально. В частности вычисление условных выражений очень ограничено :( Там надо писать довольно сложный анализатор. Надеюсь руки дойдут, исправлю...

Поискав на CPAN нашел несколько модулей для работы с SSI. Наилучшим образом подошел модуль CGI::SHTML by Tim Skirvin <tskirvin@ks.uiuc.edu>. Он и был взят за основу.

Была изменена функциональность включаемых виртуальных ссылок. Чтобы можно было использовать относительные пути с двумя точками. Например в документе http://freesco.linux.kiev.ua/cgi/nssi/docs/overview.shtml ссылка на файл заголовка может быть оформлена таким образом <!--#include virtual="../templates/page_top.shtml" --> и соответствовать она будет http://freesco.linux.kiev.ua/templates/page_top.shtml.
И сделать я ее постарался, чтобы все же не нанести урон безопасности. Поэтому выйти выше корня сайта с помощью такой конструкции нельзя.

При этом не получиться использовать относительные пути в обычных ссылках на ssi документы, так как подстановкой базового пути занимается сам броузер. Перехватить вызов может только сам thttpd демон :( А мы можем резолвить имена только получив управление. Есть несколько вариантов:

Скрипт рассчитан на использование с расширением '.shtml'.
Файлы или каталоги которые не будут распознаны, будут переадресованы обратно веб серверу с верным URL.
Получившаяся программа используется по тому же принципу что и ssi, но реализует больше возможностей :)

Архив: nssi

В архиве находятся два файла: собственно сам nssi и перловый модуль lib/CGI/SHTML.pm. Нобходимо развернуть архив в каталог /www/cgi. Перловый модуль можно поместить в стандартный каталог с модулями /usr/local/lib/perl5/5.6.1/CGI.

Для ее работы необходимо чтобы thttpd мог выполнить этот файл. Для этого или задайте ему расширение .cgi, именно это расширение используется thttpd по умолчанию, или добавьте к строке запуска thttpd параметр -c "cgi/**".

!!! ОСТОРОЖНО !!!, в этом случае все исполняемые файлы в каталоге cgi смогут быть выполнены. Пользуйтесь с умом, неаккуратное использование SSI может отрицательно сказаться на безопасности вашего сайта.

Примеры использования