ProFTPD+MySQL

Автор B@F, 09 Ноября 2009, 21:18

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

B@F

09 Ноября 2009, 21:18 Последнее редактирование: 09 Ноября 2009, 21:20 от B@F
Здравствуйте. Сначала опишу что есть: 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, то всё правильно отображается.

Подскажите что мне делать.? Я буду рад рассмотреть любые предложения.
Поправьте, если я ошибаюсь, буду тока рад.

Vicpo

Цитата: 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

B@F

Цитата: Vicpo от 09 Ноября 2009, 21:34Вообще то убунту имеет кодировку UTF-8 и перекодировать надо из UTF-8 в cp1251
Не совсем понятно зачем перекодировать в KOI8-R

Прошу прощения вы абсолютно правы 


CharsetLocal UTF-8
   CharsetRemote CP1251
Поправьте, если я ошибаюсь, буду тока рад.

Vicpo

Цитата: B@F от 09 Ноября 2009, 21:50Прошу прощения вы абсолютно правы 


CharsetLocal UTF-8
   CharsetRemote CP1251
http://www.proftpd.org/docs/modules/mod_lang.html

B@F

Цитата: Vicpo от 09 Ноября 2009, 22:08http://www.proftpd.o...s/mod_lang.html
Ещё бы знать как установить этот модуль, apt-cache search такого не находит в стандартных репозиториях, а в нете я не нашёл.
Поправьте, если я ошибаюсь, буду тока рад.

Vicpo

Цитата: B@F от 10 Ноября 2009, 20:13Ещё бы знать как установить этот модуль, apt-cache search такого не находит в стандартных репозиториях, а в нете я не нашёл.
Он уже встроен насколько я понял
Попробуйте прописать параметры

B@F

12 Сентября 2011, 21:26 #6 Последнее редактирование: 12 Сентября 2011, 21:32 от B@F
Пришло время возобновить работу, но уже в другом ракурсе.

Итак имеем все тоже: 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 и сохронять на диск. Но почему-то когда я проверяю, то вижу кракозябры, при этом у клиентов все хорошо. Все бы хорошо, но я перешел на линукс и выясняется, что у клиента линукс всё таже бодяга что и у сервера, русские имена все в неверной кодировке.

Есть у кого какие соображения по этому поводу? Может я чет не то делаю?
Поправьте, если я ошибаюсь, буду тока рад.

Vicpo

По-моему это малость не то, почитайте про директиву UseEncoding она не конвертирует, а разрешает использование нескольких кодировок.

B@F

Цитата: Vicpo от 12 Сентября 2011, 22:02По-моему это малость не то, почитайте про директиву UseEncoding она не конвертирует, а разрешает использование нескольких кодировок.

Вот я и не могу понять, что значит "разрешает" на практике?


Вот цитата из документации:

... If the UseEncoding directive is used to translate between local and client character sets... По моему как раз таки подразумевает транскодирование локальных и удаленных данных, но блин мой ломанный английский со словарем, не могу понять точно что они хотят этим сказать.
Поправьте, если я ошибаюсь, буду тока рад.

Vicpo

в общем для начала проверь что можно конвертировать
iconv --list

B@F

Цитата: 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//
Поправьте, если я ошибаюсь, буду тока рад.

Vicpo

UseEncoding UTF-8 CP1251 а если так?

B@F

Цитата: 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 *
Должно все встать на круги своя, единственный минус это то что из линукса не могу найти путевого клиента фтп, ктр после этих манипуляций отоброжал бы русские символы нормальноhttp://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/sad.gif\' class=\'bbc_emoticon\' alt=\':(\' />
Поправьте, если я ошибаюсь, буду тока рад.