Модуль для APACHE на FreeBSD
Доброго времени суток!
Требуется сделать модуль для сервера Apache(желательно 2.2.14, но не суть важно) , установленного под FreeBSD (7.2).
Что должно получиться:
1) в первую очередь пишем на С для FreeBSD
(но надо максимально выполнять стандарт POSIX,
чтобы для других UNIX-ов потом легче было применять)
2) конфигурация модуля задаётся в httpd.conf для заданной директории
обязательно должен быть "Включатель" модуля
и URL сервиса, который должен отвечать на запросы
3) протокол работы примерно такой
1. клиент пробует открыть файл, адрес файла, например, такой:
http://www.host.com/files/kino.avi?что_нибудь
2. apache это замечает и посылает запрос сервису:
URLсервиса+что_нибудь+адрес_файла
3. сервис отвечает false или true
4. если apache получил false, то ответ клиенту будет HTTP 403 и
выдача файла не начинается.
если apache получил true , то ответ клиенту будет HTTP 200 и
выдача файла начинается в обычном порядке
4) Проверка прав доступа должна выполняться только в момент
начала загрузки файла.
Общий пример
1) в конфигурации Apache написано
AgentPermissionChecker=On
AgentPermissionCheckerURL=http://www.znu.edu.ua/index.php?action=check
2) клиент пробует открыть файл:
http://www.host.com/files/kino.avi?key=724897nge6y287yrochlkjfhluaycle4uycwlfl
3) apache загружает текст страницы:
4) если получает в ответ слово "True", то выдаёт файл в обычном порядке,
а если получает что-то другое то посылает в ответ заголовок "HTTP 403" и файла не выдаёт.
Файл с кодом - скелет модуля со всевозможными потенциальными хуками.
Реально перехвачен последний этап - выдача контента (hello world).
Компилятор и заголовочные файлы - нужно искать под свой Apache.
P.S. заинтересованных прошу в ПМ