LINUX.ORG.RU

Протокол FTP и буква «я».


0

0

А вот и не угадали :)

ProFTPd у меня уже пропатчен и работает нормально. Клиентам под виндой в cp1251 (FAR, IE, FireFox) отдаёт нормально.

Возникла проблема с другой программой.
Программа эта: ftpls.
http://www.ohse.de/uwe/ftpcopy.html

Она почему-то не хочет выполнять CWD в каталоги с буквой "я" в имени.
Пишет, что мол сервер вернул "Not Found"
Причём содержимое этого каталога она успешно возвращает, а вот содержимое вложенных каталогов уже не возвращает. Т. е. программа реально не может выполнить CWD.

Нашёл в коде место, где она выполняет CWD. Соответственно строку с именем каталога надо наверно как-то подкорректировать.

Вопрос: как?

Пробовал ставить вместо одного 0xff два раза 0xff. (где-то в инете такой способ нашёл, но не получилось)

Или может проблема на стороне сервера в CWD ?


Сам нашёл.
Чуток глубже надо было копнуть.
Если кому интересно, то в файле ftplib.c в функции ftp_cc_write_escaped Похоже надо закомментировать как показано ниже:

ftp_cc_write_escaped(buffer *io, const unsigned char *s)
{
while (*s) {
// if (*s==255)
// if (-1==buffer_put(io,s,1)) return -1;
if (-1==buffer_put(io,s++,1)) return -1;
}
return 0;
}

ksicom
() автор топика

ftpls обходит каталоги и выдает листинг?

а зайти тем же lftp и сделать ls -lR не катит?

sdio ★★★★★
()

> А вот и не угадали :)

Да уж, обманул :)

Deleted
()
Ответ на: комментарий от sdio

пробовал я lftp.
он подвисает у меня почему-то, если есть пустые каталоги с русскими именами.

ksicom
() автор топика
Ответ на: комментарий от sdio

А как кстати lftp заставить выдавать полные пути для каждого файла?
ls -lR выдаёт в не самом удобном формате.

ksicom
() автор топика

Протокол FTP не поддерживает работу с кодировками отличными от Latin 1. Это написано в RFC прямым текстом. Убейте себя. Умрите мучительно. Прекращайте ламерить в форумах.

wa
()
Ответ на: комментарий от wa

RFC - это конечно хорошо, но вот суровая действительность диктует свои RFC к сожалению.
Когда все и везде перейдут на транслит в именах файлов и перестанут использовать cp1251, мы тут же прекратим ламерить в форумах.

ksicom
() автор топика
Ответ на: комментарий от ksicom

В данном случае есть два варианта 1) Ftp + Utf8. Не совсем RFC, только драфт, но прекрасно поддерживается качалками и браузерами. 2) Apache.

wa
()
Ответ на: комментарий от ksicom

Привет.

Так ты админ ftp-сервера или нет? Кашерные админы делают сами локально 'ls -lR | sed -e 's/КОРЕНЬ_ФТП/ftp:\/\/ИМЯ_СЕРВЕРА/' > ls-lR.txt' и кладут его в корень ftp'шной иерархии, чтоб юзерам не напряжно было.

lego_12239
()
Ответ на: комментарий от lego_12239

Нет. (точнее да, но для решения проблемы это не важно :) ) Я поисковик простенький по ФТП серверам пишу. Сервера мне неподконтрольны. С 90% вероятностью на "серверах" винда. Русские имена файлов есть с гарантией, речи о малейших телодвижениях со стороны большинства владельцев серверов не идёт.

Пока решил делать на основе ftpls. Она выдаёт и в формате хорошем для обработки дальнейшей, и шустро достаточно работает, и глюков пока не заметил.

ksicom
() автор топика
Ответ на: комментарий от Lego_12239

Кстати говоря, "патч" для proftpd с комментированием цикла switch(mode)... только добавляет проблемм - не работает команда ABOR, точнее работает но с глюками, + не работает докачка.

AlexVB
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.