Много у кого осталась нерешенной проблема использования на юниксовых
серверах файлов с названиями в кодировке 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...
теперь делаем ход конем
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
После этого уже делаем
make
make install
Теперь в /usr/local/etc/proftpd.conf добавляем
CharsetLocal KOI8-R
CharsetRemote CP1251
Все!!! Теперь можно в качестве клиента любой браузер использовать без
таблиц кодировки, т.е. имея к примеру на сервере unix+proftpd+samba
клиенты под windows смогут без проблем работать с файлами в win1251
кодировке.
Взято с www.opennet.ru обобщено и немного добавлено от себя
P.S.
Проблема с которой столкнулся при использования анонимнрго доступа,
по умолчанию для этого используется пользователь ftp, а при создании
его через sysinsyall ему дается шелл /nonexistent которого нет в
/etc/shells и нам остается только дописать в конец файла
echo '/nonexistent' >> /etc/shells и все будя окей.
Оригинал
http://2.uspenski.z8.ru/install_proftpd_freebsd6.txt
Последние комментарии
7 лет 31 неделя назад
7 лет 49 недель назад
8 лет 7 недель назад
8 лет 8 недель назад
8 лет 49 недель назад
8 лет 49 недель назад
8 лет 49 недель назад
8 лет 50 недель назад
8 лет 50 недель назад
8 лет 51 неделя назад