Много у кого осталась нерешенной проблема использования на юниксовых серверах файлов с названиями в кодировке koi8 клиентами под windows. Аналогичную проблему испытывают японцы со своими языковыми кодировками. Их решение ("ProFTPD - iconv() charset conversion patch" http://home.h01.itscom.net/para/software/m...v/index-e.html) можно и использовать под нас. На своем сервере FreeBSD мне захотелось, что бы proftpd был установлен из портов, но был пропатченным. Итак, приступим. что имеем FreeBSD nat2.spb.ru 6.0-RELEASE FreeBSD 6.0-RELEASE #1: Mon Mar 6 11:03:40 MSK 2006 root@nat2.spb.ru:/usr/src/sys/i386/compile/NAT2 i386 cd /usr/ports/ftp/proftpd cat distinfo MD5 (proftpd-1.3.0rc3.tar.bz2) = 050c3e2caec0d930f8a331e7b3ec0931 SHA256 (proftpd-1.3.0rc3.tar.bz2) = ee181d7fe22b849589d9d886e5a4ed40fbe205cc14f8f4c95cc1db629c95ca97 SIZE (proftpd-1.3.0rc3.tar.bz2) = 1377481 Нам потребуется libiconv cd /usr/ports/converters/libiconv make install make clean Распакуем сырцы proftpd cd /usr/ports/ftp/proftpd make fetch 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 теперь делаем ход конем mv proftpd-1.3.0rc3 proftpd-1.2.10 патчим командой gzip -cd proftpd-1.2.10-iconv.patch.gz |patch -p0 обратный конь mv proftpd-1.2.10 proftpd-1.3.0rc3 теперь избавляемся от проблем от буквы Я в этом файле cd /usr/ports/ftp/proftpd/work/proftpd-1.3.0rc3/src/netio.c надо найти следующий кусок кода (или похожий на него): Code: switch (mode) { case IAC: switch (cp) { case WILL: case WONT: case DO: case DONT: mode = cp; continue; case IAC: mode = 0; break; default: /* Ignore */ mode = 0; continue; } break; case WILL: case WONT: pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp); mode = 0; continue; case DO: case DONT: pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp); mode = 0; continue; default: if (cp == IAC) { mode = cp; continue; } break; } и вырезаем его целиком, начиная от команды switch и до завершающей фигурной скобки что будет находиться гдето от 913 до 954 строчки теперь немного переделываем /usr/ports/ftp/proftpd/Makefile добавляем такие строчки между любыми ".if defined(WITH_***)": MODULES:=${MODULES}:mod_codeconv INCLUDEDIRS:=${INCLUDEDIRS}:${PREFIX}/include LIBDIRS:=${LIBDIRS}:${PREFIX}/lib я добавил после .if defined(WITH_README) а также находим строчку CONFIGURE_ARGS= --localstatedir=/var/run \ это где-то 39 строчка и приводим к такому виду CONFIGURE_ARGS= --localstatedir=/var/run \ --sysconfdir=${EXAMPLESDIR}/etc \ --disable-sendfile \ --with-modules=mod_codeconv \ --with-libraries=/usr/local/lib \ --with-includes=/usr/local/include тоесть мы добавили это для того, что бы configure выполнилось с ключами --with-modules=mod_codeconv --with-libraries=/usr/local/lib --with-includes=/usr/local/include все с Makefile закончено сохраняем и выходим cd /usr/ports/ftp/proftpd/ Конфигурируем командой make configure после этого правим work/proftpd-1.3.0rc3/Make.rules находим LIBS= и в конец строки добавляем -liconv т.е приводим к виду LIBS= -lsupp -lcrypt -lutil -lwrap -lpam -liconv После этого уже делаем make make install Теперь в /usr/local/etc/proftpd.conf добавляем CharsetLocal KOI8-R CharsetRemote CP1251 Все!!! Теперь можно в качестве клиента любой браузер использовать без таблиц кодировки, т.е. имея к примеру на сервере unix+proftpd+samba клиенты под windows смогут без проблем работать с файлами в win1251 кодировке. P.S. Проблема с которой столкнулся при использования анонимнрго доступа, по умолчанию для этого используется пользователь ftp, а при создании его через sysinsyall ему дается шелл /nonexistent которого нет в /etc/shells и нам остается только дописать в конец файла echo '/nonexistent' >> /etc/shells и все будя окей. или пользоваться опцией RequireValidShell off RequireValidShell -- Allow connections based on /etc/shells RequireValidShell [ RequireValidShell on|off] Default RequireValidShell on у всех кого возникли проблемы сборки размещаю мой пакадж http://2.uspenski.z8.ru/proftpd-1.3.0.r3.tgz cat /var/db/ports/proftpd/options # This file is auto-generated by 'make config'. # No user-servicable parts inside! # Options for proftpd-1.3.0.r3 _OPTIONS_READ=proftpd-1.3.0.r3 WITHOUT_IPV6=true WITHOUT_LDAP=true WITHOUT_MYSQL=true WITHOUT_POSTGRESQL=true WITHOUT_OPENSSL=true WITHOUT_QUOTA=true WITH_IFSESSION=true WITH_README=true WITH_RATIO=true WITH_REWRITE=true WITH_WRAP=true WITHOUT_RADIUS=true -------------------------------------------------------------------------------- ваш boss-chifra<САБАКА>mail.ru Взято с www.opennet.ru обобщено и немного добавлено от себя (с миру по нитке) http://www.opennet.ru/base/patch/rus_proftpd.txt.html