Компьютерный форум

Компьютерный форум (/)
-   Системному администратору (http://windowsforum.ru/f61/)
-   -   Проблема с ftp буква "я" (http://windowsforum.ru/t5389/)

Imperio 02.01.2006 10:02

Если поставить FreeBsd и ftpd. При копировании русских папок заканчивающихся на я происходит обрез. т.е хня скопируется как хн
Гугль сказал что это стандартный глюк, обойти его можно если писать букву Я большой.
Linux Red Hat 7.2 + ftpd - такой же глюк
Solaris + vsftpd - все ок
RH7.3 с wu-ftpd - глюк
RH 7.3 + vsftpd - все ок
RH 6.2 + ftpd-BSD - глюк
Solaris + wu-ftpd - глюк

А вот возможные варианты решения данной проблемы
http://ru-admin.com/modules.php?name=Artic...articles_id=843
http://ru-admin.com/modules.php?name=Artic...articles_id=844

Imperio 02.01.2006 10:04

Раньше много копий об эту букву поломали. Напомню, что происходит. При появлении на сервере файла, в имени которого содержится буква "я", в клиенте (напр. total commander) в имени файла эта буква и следующий за ней символ не отображаются. В результате мы имеем битое имя, файл можно скачать (такой же кривой) и нельзя удалить. No such file, понимаешь.

Наткнулся на решение этой проблемы, попробовал - всё работает.
отсюда: http://forum.krasnogorsk.ru/index.php?boar...y;threadid=2637
==============================================
Tim:

Тема актуальна для всех, кто держит на Unix файлы с русскими именами в кодировке 1251.
Как известно, ProFTPD неправильно обрабатывает каталоги и файлы, содержащие маленькую русскую букву "я", код которой (255) совпадает с IAC (Is A Command) протокола telnet.
Опять же, непонятно почему ProFTPD весь сетевой i/o пропускает через telnet-фильтр - разве FTP протокол предусматривает возможность передавать telnet-последовательности на FTP-сервер?

Дабы исправить сие мерзкое поведение, надо сделать следующее:
- открываем файл src/netio.c
- ищем там следующий кусок кода (или похожий на него):

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 и до завершающей фигурной скобки. Можно вырезать cut-ом, можно закомментить #if 0 ... #endif (я сделал второе). Пересобираем, радуемся жизни - все работает.
==============================================

Showjumper 04.01.2006 12:04

А вообще, насколько я помню, по RFC (номер не помню) запрещается использоватьнациональные языки окромя английского и прочих романо-германских (буквы одни и те же) :)


Текущее время: 16:05. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2