LINUX.ORG.RU

ProFTPd - устранение проблем с русскими названиями файлов


0

0

В статье рассмотрены проблемы возникающие при закачивании на сервер файлов с русскими названиями в кодировке CP1251 и приведено пошаговое их решение. Патч прикрепленный к статье рассчитан на самую последнюю версию ProFTPd - 1.3.0.

>>> Подробности

Если это тот же патч, что был для 1.2.10 ( http://home.h01.itscom.net/para/software/misc/proftpd-iconv/index-e.html ) + убирание switch, то патч не очень аккуратный и в мейнстрейм не пойдёт, т.к. компиляция с выключенным mod_codeconv даст ошибку (unresolved symbol) и ещё некоторые жалуются на то что это нарушение RFC.

К сожалению, нельзя задать кодировку для каждого имени пользователя отдельно, приходится на разных портах (как в старой доброй IRC), это довольно неудобно.

Davidov ★★★★
()

И ещё если кому-нибудь нужно, могу поделиться дебкой (а также debian/*) для 1.2.10, компилировалось на убунте.

Davidov ★★★★
()
Ответ на: комментарий от anonymous

Ты сам-то хоть можешь назвать пару убедительных доводов в пользу utf8 ? Имо тенденция перехода на нее удручает, тк 2 байта на символ - свинство

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

> Ты сам-то хоть можешь назвать пару убедительных доводов в пользу utf8 ? Имо тенденция перехода на нее удручает, тк 2 байта на символ - свинство

Не большее свинство, чем давать именам файлов русские имена.

andreyu ★★★★★
()
Ответ на: комментарий от anonymous

>Ты сам-то хоть можешь назвать пару убедительных доводов в пользу utf8 ? Имо тенденция перехода на нее удручает, тк 2 байта на символ - свинство

Свинство - это три популярные кодировки для одного алфавита. А ещё дикая тупость - тратить уйму времени и ресурсов на такие вот костыли вместо того, чтобы стандартизировать всю символьную информацию под UTF8 и не морочить себе и другим яйца.

ps. сорри, пост выше немного раскоряченный

anonymous
()

> Ты сам-то хоть можешь назвать пару убедительных доводов в пользу utf8 ? Имо тенденция перехода на нее удручает, тк 2 байта на символ - свинство

Для символов в диапазоне ASCII - один байт. И два байта - это небольшая плата за избавление от геморроя при работе с многоязычным текстом.

Sikon ★★★
()

Приятно, что и наш воронежский портал пишет (копирует?) какие-то статьи для linux-сообщества... Респект чуваки!

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

>Пора бы уж перейти на UTF-8

Ага, чтобы не иметь никакой возможности непосредствекнно адресовать N-ный символ строки.

UTF-8 это ужасно неудобный для быстрой обработки набор символов.

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

>Не большее свинство, чем давать именам файлов русские имена.

Русские имена не сообветствуют RFC. Не надо хотеть их исопльзовать в FTP.

anonymous
()

> Ага, чтобы не иметь никакой возможности непосредствекнно адресовать N-ный символ строки.

Кто заставляет использовать UTF-8 во внутренних представлениях? Пусть будет UTF-16.

Sikon ★★★
()
Ответ на: комментарий от stellar

utf8 позваляет иметь обратную совместимость, для всего остального есть utf-16 и utf-32. На самом деле, если хранить тексты в gzip'е или чем-то похожем то проблемы "двух байт" исчезают сами собой... Тоже самое и касается базы pgsql (за другие не скажу, не интересовался), т.е. база на много записей в utf8 ~равна по размеру базе (с той же структурой и теме же данными) базе в koi8r...

Что касается перехода, почему, возможно иметь, правда надо использовать представление повыше, чем "строка -- массив символов".

catap ★★★★★
()

А какие символы разрешены по стандарту для имён файлов?
Можно ли использовать стандартные правила транслита в частности:
ъ -" , ь - ' ?

ksicom
()

Я устранил проблемы с русскими названиями проще: DenyFilter [\xca\xc3\xd5\xcb\xc5\xce\xc7\xdb\xdd\xda\xc8\xdf\xdc\xd6\xc4\xcc\xcf \xd2\xd0\xc1\xd7\xd9\xc6\xd1\xde\xd3\xcd\xc9\xd4\xd8\xc2\xc0]

Имхо так правильнее и удобнее ;)

AiLr ★★
()
Ответ на: комментарий от anonymous

RFC не соответствует потребностям русскоязычной аудитории и идет "фтопку".

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

и что это даст? такой же геморой.

у меня vsftpd, имена файлов в unicode, ни один виндовый клиент не способен эти имена нормально обрабатывать.

O-Ren_Ishii
()
Ответ на: комментарий от Sikon

>> Ага, чтобы не иметь никакой возможности непосредствекнно адресовать N-ный символ строки.

>Кто заставляет использовать UTF-8 во внутренних представлениях? Пусть будет UTF-16.

В UTF-16 также нельзя обратиться к произвольному символу. Она тоже кодировка с ПЕРЕМЕННЫМ числом байт на символ. И только добавляет ещё одну проблему - big / little endian :)

Поможет только UCS-4 (UCS-2 уже не удовлетворяет), если нужно обращаться к произвольному символу.

Вы лучше скажите, в каких алгоритмах обработки текста это необходимо :)

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

Для utf8 в версии 1.3.1 будет устранена проблемма.
Так как будет подерживаться RFC для многих языков.
RFC 2640 это решение данной проблеммы.

stalkerg ★★★★★
()
Ответ на: комментарий от anonymous

> юзеров мало волнует RFC, они хотят русский на фтп и ниипет :(

Навскидку вспомнились SMB и WebDAV... Может, зря, но вспомнились.

const86 ★★★★★
()

г-пди, проблеме пять тысяч лет и она успешно решена. Зачем же постить это?

thresh ★★★
()
Ответ на: комментарий от O-Ren_Ishii

>у меня vsftpd, имена файлов в unicode, ни один виндовый клиент не способен эти имена нормально обрабатывать.

У меня дома файлопомойка с ftp на FileZilla, так они с какой-то версии начали следовать RFC2640. И ничего, качают люди без проблем. Нормально показывают браузеры IE, FF, Konqueror, есть ftp клиент той же filezill'ы.

gfh ★★★
()
Ответ на: комментарий от los_nikos

Опять мимо. Про очевидные вещи не надо мне говорить.

Просто хотелось бы чтобы что-то типа deny_file в конфиге было на кириллицу

Demetrio ★★★★★
()

Спасибо! Очень помогло =)

В сетке utf-8 пользуюсь только я, поэтому возникали опр. проблемы, да и почему то большинство популярных клиентов фтп под винду не имеют опции RemoteCharset

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

>В UTF-16 также нельзя обратиться к произвольному символу. Она тоже >кодировка с ПЕРЕМЕННЫМ числом байт на символ. И только добавляет ещё >одну проблему - big / little endian :)

>Поможет только UCS-4 (UCS-2 уже не удовлетворяет), если нужно >обращаться к произвольному символу.

>Вы лучше скажите, в каких алгоритмах обработки текста это >необходимо :)

Вот и правильно в оффтопике NT сделали все ядро и API на юникоде UCS-2 (правда не все разработчики асилили юникод). Экономить на байтах под символы - крохоборство, и способны на это только "fucking idiots", по выражению Торвальдса.

anonymous
()

я фигею дорогая редакция. поделитесь чем же сие новшество отличается от патча того же

Copyright (c) 2004 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp> / All rights reserved.

от

--- modules/mod_codeconv.c 1970-01-01 09:00:00.000000000 +0900 +++ modules/mod_codeconv.c 2004-09-25 21:44:05.000000000 +0900 ... --- modules/mod_ls.c 2004-05-08 06:31:30.000000000 +0900 +++ modules/mod_ls.c 2004-09-25 21:43:53.000000000 +0900 и т.п.

ВНИМАНИЕ! 2004-09-25 полный текст патча не привожу, ищите в инете. Так ни чем он не отличается! ЭТО ТОТ ЖЕ САМЫЙ только комментарии похоже в другой кодировке. Только недавно старый патч накладывал на относительно свежий proftpd-1.3.0 (16/Apr/2006), а тут оказывается америку открыли заново! Вот так новость. Стыдно!

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

> почему то большинство популярных клиентов фтп под винду не имеют опции RemoteCharset

Потому что проприетарщина поганая.

AngryElf ★★★★★
()

неделю назад нашел такой же рецепт, только датированный годом ранее.

http://www.opennet.ru/base/patch/rus_proftpd.txt.html

пока работает. только гонят они, что оригинальный патч от японцев, вводящий перекодировку, не накладывается на версию 1.3.0 ничего особенного там править не пришлось. хоть бы ссылки на оригинальных авторов ставили.

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

Можно разрешить в AllowFilter/PathAllowFilter только английские символы/цифры/пару знаков. Можно в DenyFilter/PathDenyFilter запретить русские буквы. Выше есть пост с DenyFilter и регэкспом на русскиие символами в юникоде.

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

патч для убирания проблемм с буквой 'я' с комментированием switch-а - добавляет новые проблемы - не работает докачка, не работает ABOR, и т.д...

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

А зачем? я разрешил, сделал

convert_charset_enable=1 local_charset=KOI8R remote_charset=WIN1251

и все, локаль koi8-r, все файлы в консоли вижу по-русски.

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

> юзеров мало волнует RFC, они хотят русский на фтп и ниипет :(

Поэтому с проблемами быквы "я", я им говорю "накуй". При чём здесь корпоративный FTP, а если начальство захочет, открою шару на самбе..... :lol:

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

а какая версия виндов на сервере/клиентах? у меня такая проблема была как с vsftpd так и proftpd

в линуксе - всё показывается, в виндах нет....

O-Ren_Ishii
()
Ответ на: комментарий от catap

А что мешает использовать wchar? И проблем никаких не будет. =)

ЗЫ По теме, а в чём проблема, ну закачал человек файл с именем в cp1251, все у кого cp1251 будут видеть его имя нормально, остальные правда лесом пойдут&#184; но я думаю не слишком большая беда.

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

Я pure-ftpd пользую. В какой кодировке залили, в такой и паказываю. Понятно, что все в win1251 заливают, ну а я в lftp set ftp:charset windows-1251 поставил и всё ок.

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

У меня пока два виртуальных proftpd сервера с разными кодировками висят. Для виндузятников - cp1251 отдаёт, для нормальных людей - utf8. На сервере всё хранится в utf8.
Но наверное всё-таки лучше между сервером и пользователем скриптик как-нибудь засунуть, который в транслит всё заливаемое переводить будет.

ksicom
()

чото слишком мутный патчик.. я проблему решаю следующим способом: заменяю #define IAC 255

на #define IAC 256 и другие тоже. и все работает отлично епта!!

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