ProFtpd по-русски. Изменение кодировки koi8->win1251 на лету

Много у кого осталась нерешенной проблема использования на юниксовых серверах файлов с названиями в кодировке koi8 клиентами под windows. Аналогичную проблему испытывают японцы со своими языковыми кодировками. Их решение можно использовать и внашем случае.

[Дмитрий Паскаль (pascal AT orion-k DOT ru)]

Много у кого осталась нерешенной проблема использования на юниксовых серверах файлов с названиями в кодировке koi8 клиентами под windows.

Аналогичную проблему испытывают японцы со своими языковыми кодировками.

Их решение ("ProFTPD - iconv() charset conversion patch" http://home.h01.itscom.net/para/software/misc/proftpd-iconv/index-e.html) можно и использовать под нас.

На своем сервере FreeBSD мне захотелось, что бы proftpd был установлен из портов, но был пропатченным.

Итак, приступим. Нам потребуется libiconv

	cd /usr/ports/converters/libiconv
	make install
	make clean
Распакуем сырцы proftpd
    
        cd /usr/ports/ftp/proftpd
	make extract
Скачаем сам патч в каталог /usr/ports/ftp/proftpd/work
        cd /usr/ports/ftp/proftpd/work
	fetch http://home.h01.itscom.net/para/software/misc/proftpd-iconv/pack/proftpd-1.2.10-iconv.patch.gz
патчим командой
        gzip -cd proftpd-1.2.10-iconv.patch.gz |patch -p0
после этого идем в proftpd-1.2.10/src/netio.c ищем
switch (mode) {
case IAC:
и вырезаем весь этот свитч, строк там много, около 2х экранов

в /usr/ports/ftp/proftpd/Makefile добавляем такие строчки между любыми ".if defined(WITH_***)":

	MODULES:=${MODULES}:mod_codeconv
	INCLUDEDIRS:=${INCLUDEDIRS}:${PREFIX}/include
	LIBDIRS:=${LIBDIRS}:${PREFIX}/lib
Конфигурируем командой
	make configure
после этого правим work/proftpd-1.2.10/Make.rules находим LIBS= и в конец строки добавляем -liconv

После этого уже делаем

	make
	make install
Если make не прокатил, следует поковырять Makefile, что я с ним делал, я уже не помню, но смысл в том, что бы configure выполнилось с ключами --with-modules=mod_codeconv --with-libraries=/usr/local/lib --with-includes=/usr/local/include

Теперь в /usr/local/etc/proftpd.conf добавляем

	CharsetLocal KOI8-R
	CharsetRemote CP1251
Все!!! Теперь можно в качестве клиента любой браузер использовать без таблиц кодировки, т.е. имея к примеру на сервере unix+proftpd+samba клиенты под windows смогут без проблем работать с файлами в win1251 кодировке.

Статья взята с сайта OpenNet.

[ опубликовано 23/06/2005 ]

Дмитрий Паскаль (pascal AT orion-k DOT ru) - ProFtpd по-русски. Изменение кодировки koi8->win1251 на лету   Версия для печати