Много у кого осталась нерешенной проблема использования на юниксовых
серверах файлов с названиями в кодировке 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
Последние комментарии
10 лет 22 недели назад
10 лет 41 неделя назад
10 лет 51 неделя назад
10 лет 51 неделя назад
11 лет 40 недель назад
11 лет 40 недель назад
11 лет 41 неделя назад
11 лет 41 неделя назад
11 лет 42 недели назад
11 лет 43 недели назад