Была как-то поставлена задачка сделать файло-обмен с клиентами.
Казалось бы все просто, поставил апач, модуль autoindex и живи себе спокойно, но ведь мы не ищем легких путей. Если мы - рекламное агентство, и занимаемся дизайном, то все у нас должно быть красиво!
Потому ковырять Апач я отказался - уж больно он громоздкий.
В дело вступает nginx! (Пользуясь случаем хочу сказать огромное спасибо Игорю Сысоеву.
Изучая дерево исходников сервера nginx я увидел следующий файл: nginx/src/http/modules/ngx_http_autoindex_module.c
Очень небольших трудов составило подправить дизайн страницы автоиндекса, и в итоге получился более-менее приличный дизайн: http://file.tessart.ru/test/
Мне страшно от одной только мысли, что пришлось бы копаться в исходниках апача, хотя…. видимо все еще впереди.
По просьбе Андрея, отписавшегося ниже в комментариях выкладываю патч:
117c117
< "<head><title>Index of "
---
> "<head><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"/maxantonov.name.css\" media=\"screen\" /><link rel=\"shortcut icon\" href=\"/favicon.ico\"/><title>Файлы в : "
124c124
< "<h1>Index of "
---
> "<h1>Список файлов в "
127a128,129
> "<a href=\"http://tessart.ru/\"><img style=\"border: 0; \" src=\"/logo.gif\"/></a>" CRLF
> "<p>Рекламное агентство Тессарт</p><p>+7 (495) 980-6795</p>" CRLF
153,154c155,156
< static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
< "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
---
> static char *months[] = { "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
> "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" };
352,353c354,355
< + sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1
< + sizeof("</pre><hr>") - 1
---
> + sizeof("<hr/><pre><a href=\"../\">Наверх</a>" CRLF) - 1
> + sizeof("</pre><hr/>") - 1
387,388c389,390
< b->last = ngx_cpymem(b->last, "<hr><pre><a href=\"../\">../</a>" CRLF,
< sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1);
---
> b->last = ngx_cpymem(b->last, "<hr/><pre><a href=\"../\">Наверх</a>" CRLF,
> sizeof("<hr/><pre><a href=\"../\">Наверх</a>" CRLF) - 1);
516c518
< b->last = ngx_cpymem(b->last, "</pre><hr>", sizeof("</pre><hr>") - 1);
---
> b->last = ngx_cpymem(b->last, "</pre><hr/>", sizeof("</pre><hr/>") - 1);