Документация по ОС FreeBSD Пятница, 03.05.2024, 07:25
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » FTP

ProFTPD+iconv [2008]
Есть такая неприятная особенность нашего мира: как правило на наших хардах файлы лежат не в любимой виндоусом кодировке CP1251, а в koi8-r или utf-8. Что при использовании фтп приносит некоторую головную боль, т.к виндовые фтп-клиенты в большинстве своем желают видеть на сервере файлы в кодировке CP1251, а поисковик часто идет у них на поводу. Есть два пути решения проблемы: либо хранить файлы у себя уже в CP1251, либо осуществлять перекодирование "на лету". Первый вариант меня абсолютно не устраивает. Поэтому мы пойдем по второму. В некоторых фтп-серверах, например в pure-ftpd есть такая возможность "из коробки", а вот в столь любимом мной proftpd ее нет :(. Зато к версиям 1.2.10 и 1.3.0 есть патчик от наших японских друзей, который сию функциональность добавляет. Все было хорошо, даже в родном фряшном порте появилась опция, позволяющая наклыдвать этот патч прям из порта, поставил крестик - и доволен :). Но с приходом в мир версии 1.3.1 опция изчезла, а старые патчи не накладывались. Сначала не захотел возиться с кодом proftpd и разбираться почему не патчится, попробовал мигрировать на pure-ftpd, но прошел месяц, и я в очередной раз осознал, что функциональности этого сервера мне не хватает, слишком уж много у меня заморочек, большая их часть правда еще в проекте :). Итак было принято героическое решение разобраться и пропатчить таки proftpd. По привычке полез в гугл, вдруг кто уже все сделал, так нет, всем лень или никто не хочет делиться. Чтож, полез сам, оказалось все намного проще, чем думал :).

Как это было

Итак, идем в порт ftp/proftpd и делаем там make extract. Попутно качая патчи для версии 1.3.0 (ссылку на них я не привожу - лежат на каждом втором сервере, если надо - гугл вас спасет :)). Патчим, что-то где-то ругается. Говорим make. И очень быстро вылетаем с ошибкой в mod_ls.c, говорят, что переменную buf2 компилятор первый раз в глаза видит, а ей уже сто-то присваивают, даже не объявив, не хорошо. Идем разбираться. Открываем любимым текстовым редактором файл work/proftpd-1.3.1/modules/mod_ls.c (в моем случае это vim, но это так, к слову) и топаем к строке с ошибкой. В соседней консоли внимательно смотрим в соответствующий diff. Оказывается немного изменили строки выше, и объявления из патча просто не нашли куда себя вставлять :). Дописываем и продолжаем сборку. И о чудо! Все собралось, поставилось и даже заработало :). (В опциях порта я выбрал CYRFIX, чтоб не вырезать руками кусок netio.c).

После такого быстрого успеха руки зачесались, потому я сделал патч для новой версии, патч уже включает в себя патч CYRFIX, потому тот накладывать уже не надо.

Накладываем патч на родной порт:

Идем все туда же - ftp/proftpd, make extract, распаковываем архив с патчами в work, собственно накладываем патч :). Дальше make config install. Галку на пункте CYRFIX можно не ставить. Вуаля!

Ленивые обладатели FreeBSD могут сильно не думать, а сразу скачать архив с готовым портом, распаковать, и с помощью привычных make install && make clean, проставив нужные галки, получить готовый Proftpd. (Опция, включающая перекодирование - ICONV)

Файлы:

Переделанный патч, ничего после него править руками не надо, все сам делает, умный :)
Берем его здесь

Собственно порт берем здесь


Источник: http://www.lissyara.su/?id=1617
Категория: FTP | Добавил: oleg (21.03.2008) | Автор: moonug
Просмотров: 1225 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024