Здравствуйте. Сначала опишу что есть: Ubuntu server 9.04 и в нём LAMP, SSH и ProFTPD сервера. Первых два установил при установке системы, а вот FTP сначала установил дома, а потом принёс кеш на рабочую машину и поставил. Задача такая: сделать FTP сервер с виртуальными пользователями в БД. что я сделал установив apt-get install proftpd-mysql. потом поставил phpmyadmin, нашёл кучу статей и реализовал задуманное.
Проблема в следующем: из под консоли все русскоязычные буквы отоброжаются вопросами (??? ??) те которые закачены по ftp, почитав некое количество статей я выяснил, что всё дело в кодировке, нужно как-то сделать так чтоб proftpd перекодировал полученные файлы и папки, а именно выполнял следующие
CharsetLocal KOI8-R
CharsetRemote CP1251
, но эти стройчи он естественно не понимает.
Если вводить ls | iconv -f cp1251 -t utf8, то всё правильно отображается.
Подскажите что мне делать.? Я буду рад рассмотреть любые предложения.
Цитата: B@F от 09 Ноября 2009, 21:18Здравствуйте. Сначала опишу что есть: Ubuntu server 9.04 и в нём LAMP, SSH и ProFTPD сервера. Первых два установил при установке системы, а вот FTP сначала установил дома, а потом принёс кеш на рабочую машину и поставил. Задача такая: сделать FTP сервер с виртуальными пользователями в БД. что я сделал установив apt-get install proftpd-mysql. потом поставил phpmyadmin, нашёл кучу статей и реализовал задуманное.
Проблема в следующем: из под консоли все русскоязычные буквы отоброжаются вопросами (??? ??) те которые закачены по ftp, почитав некое количество статей я выяснил, что всё дело в кодировке, нужно как-то сделать так чтоб proftpd перекодировал полученные файлы и папки, а именно выполнял следующие
CharsetLocal KOI8-R
CharsetRemote CP1251
, но эти стройчи он естественно не понимает.
Если вводить ls | iconv -f cp1251 -t utf8, то всё правильно отображается.
Подскажите что мне делать.? Я буду рад рассмотреть любые предложения.
Вообще то убунту имеет кодировку UTF-8 и перекодировать надо из UTF-8 в cp1251
Не совсем понятно зачем перекодировать в KOI8-R
Цитата: Vicpo от 09 Ноября 2009, 21:34Вообще то убунту имеет кодировку UTF-8 и перекодировать надо из UTF-8 в cp1251
Не совсем понятно зачем перекодировать в KOI8-R
Прошу прощения вы абсолютно правы
CharsetLocal UTF-8
CharsetRemote CP1251
Цитата: B@F от 09 Ноября 2009, 21:50Прошу прощения вы абсолютно правы
CharsetLocal UTF-8
CharsetRemote CP1251
http://www.proftpd.org/docs/modules/mod_lang.html
Цитата: Vicpo от 09 Ноября 2009, 22:08http://www.proftpd.o...s/mod_lang.html (http://www.proftpd.org/docs/modules/mod_lang.html)
Ещё бы знать как установить этот модуль, apt-cache search такого не находит в стандартных репозиториях, а в нете я не нашёл.
Цитата: B@F от 10 Ноября 2009, 20:13Ещё бы знать как установить этот модуль, apt-cache search такого не находит в стандартных репозиториях, а в нете я не нашёл.
Он уже встроен насколько я понял
Попробуйте прописать параметры
Пришло время возобновить работу, но уже в другом ракурсе.
Итак имеем все тоже: Ubuntu 10.04 proftpd 1.3.2c + mysql (опционально).
Сейчас имею такую конфигурацию
proftpd -V
Compile-time Settings:
Version: 1.3.2c (maint)
Platform: LINUX
Built: Thu Nov 18 00:38:40 UTC 2010
Built With:
configure '--prefix=/usr' '--with-includes=/usr/include/postgresql:/usr/include/mysql' '--mandir=/usr/share/man' '--sysconfdir=/etc/proftpd' '--localstatedir=/var/run' '--libexecdir=/usr/lib/proftpd' '--enable-sendfile' '--enable-facl' '--enable-dso' '--enable-autoshadow' '--enable-ctrls' '--with-modules=mod_readme' '--enable-ipv6' '--enable-nls' '--build' 'i486-linux-gnu' '--with-shared=mod_unique_id:mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_sql_postgres:mod_sql_sqlite:mod_sql_odbc:mod_dynmasq:mod_quotatab_sql:mod_ldap:mod_quotatab_ldap:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_ifsession' 'build_alias=i486-linux-gnu' 'CFLAGS=-O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_OPENSSL -DUSE_LDAP_TLS ' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS=' 'CXXFLAGS=-g -O2' 'FFLAGS=-g -O2'
CFLAGS: -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_OPENSSL -DUSE_LDAP_TLS -Wall
LDFLAGS: -L$(top_srcdir)/lib -Wl,-Bsymbolic-functions
LIBS: -lacl -lssl -lcrypto -lcap -lpam -lsupp -lcrypt
Files:
Configuration File:
/etc/proftpd/proftpd.conf
Pid File:
/var/run/proftpd.pid
Scoreboard File:
/var/run/proftpd/proftpd.scoreboard
Header Directory:
/usr/include/proftpd
Shared Module Directory:
/usr/lib/proftpd
Features:
+ Autoshadow support
+ Controls support
+ curses support
- Developer support
+ DSO support
+ IPv6 support
+ Largefile support
- Lastlog support
+ ncurses support
+ NLS support
+ OpenSSL support
+ POSIX ACL support
+ Shadow file support
+ Sendfile support
+ Trace support
Tunable Options:
PR_TUNABLE_BUFFER_SIZE = 1024
PR_TUNABLE_GLOBBING_MAX = 8
PR_TUNABLE_HASH_TABLE_SIZE = 40
PR_TUNABLE_NEW_POOL_SIZE = 512
PR_TUNABLE_SCOREBOARD_BUFFER_SIZE = 80
PR_TUNABLE_SCOREBOARD_SCRUB_TIMER = 30
PR_TUNABLE_SELECT_TIMEOUT = 30
PR_TUNABLE_TIMEOUTIDENT = 10
PR_TUNABLE_TIMEOUTIDLE = 600
PR_TUNABLE_TIMEOUTLINGER = 30
PR_TUNABLE_TIMEOUTLOGIN = 300
PR_TUNABLE_TIMEOUTNOXFER = 300
PR_TUNABLE_TIMEOUTSTALLED = 3600
PR_TUNABLE_XFER_SCOREBOARD_UPDATES = 10
<IfModule mod_lang.c>
#LangDefault ru_RU - ругается почему-то потому закоментировал
LangEngine on
#LangPath /etc/proftpd/locale - закоментировал, т.к. пока без понятия где этот каталог
UseEncoding on
UseEncoding utf8 cp1251
</IfModule>
Я так понимаю, что теперь когда пользователи будут сохранять файлы или их просматривать, то демон должен автоматом кодировать из cp1251 в utf8 и сохронять на диск. Но почему-то когда я проверяю, то вижу кракозябры, при этом у клиентов все хорошо. Все бы хорошо, но я перешел на линукс и выясняется, что у клиента линукс всё таже бодяга что и у сервера, русские имена все в неверной кодировке.
Есть у кого какие соображения по этому поводу? Может я чет не то делаю?
По-моему это малость не то, почитайте про директиву UseEncoding (http://www.proftpd.org/docs/modules/mod_lang.html) она не конвертирует, а разрешает использование нескольких кодировок.
Цитата: Vicpo от 12 Сентября 2011, 22:02По-моему это малость не то, почитайте про директиву UseEncoding (http://www.proftpd.org/docs/modules/mod_lang.html) она не конвертирует, а разрешает использование нескольких кодировок.
Вот я и не могу понять, что значит "разрешает" на практике?
Вот цитата из документации:
... If the UseEncoding directive is used to translate between local and client character sets...
По моему как раз таки подразумевает транскодирование локальных и удаленных данных, но блин мой ломанный английский со словарем, не могу понять точно что они хотят этим сказать.
в общем для начала проверь что можно конвертировать
iconv --list
Цитата: Vicpo от 12 Сентября 2011, 23:51в общем для начала проверь что можно конвертировать
iconv --list
Да вроде смотрел уже, длинный длинный список чего-то, вот выдержки
iconv --list | grep UTF
ISO-10646/UTF-8/
ISO-10646/UTF8/
UTF-7//
UTF-8//
UTF-16//
UTF-16BE//
UTF-16LE//
UTF-32//
UTF-32BE//
UTF-32LE//
UTF7//
UTF8//
UTF16//
UTF16BE//
UTF16LE//
UTF32//
UTF32BE//
UTF32LE//
baf@Ubuntu10:~$ iconv --list | grep cp1251
baf@Ubuntu10:~$ iconv --list | grep 1251
CP1251//
WINDOWS-1251//
UseEncoding UTF-8 CP1251
а если так?
Цитата: Vicpo от 13 Сентября 2011, 00:02UseEncoding UTF-8 CP1251
а если так?
Сделал так
<IfModule mod_lang.c>
#LangDefault ru
LangEngine on
LangPath /usr/share/locale
UseEncoding UTF-8 WINDOWS-1251
</IfModule>
Вро де бы заработало, почти.
Дело в том, что оказывается клинт фтп тотал или файлзила при установке соединения пытаются определить кодировку на сервре, и если у тотала это не получается, но можно указать вручную (не получается как раз из-за этих настроек), то файзила вообще тупит и вручную пока не нашел как выставить.
Наутилус вообще то работает то нет, идиотский файлменеджер в этом случаи, он часть русских заливает, а часть нет, тупит короче, сейчас лью файлзилой, потом как зальется на сервере и у клиентов будут крякозябры, затем
convmv -f utf8 -t cp1251 --notest -r *
Должно все встать на круги своя, единственный минус это то что из линукса не могу найти путевого клиента фтп, ктр после этих манипуляций отоброжал бы русские символы нормально

/sad.gif\' class=\'bbc_emoticon\' alt=\':(\' />