Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Proftpd, русские буквы
Dread
сообщение 23.10.2004 - 11:21

Когда меня принес аист, родители смеялись и хотели взять аиста
***
орден III степени
Группа: Участник
Сообщений: 262
Регистрация: 9.10.2003
Пользователь №: 369


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

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


Code:

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 (я сделал второе). Пересобираем, радуемся жизни - все работает.

гы

Сообщение отредактировано Goblin - 23.10.2004 - 11:32
Перейти в начало страницы
 
+Цитировать сообщение
Fry
сообщение 23.10.2004 - 12:19

Anime
***

Группа: Участник
Сообщений: 101
Регистрация: 29.09.2003
Пользователь №: 41


laugh.gif Обычно те кто с этим сталкивался, например я, уже нашли этот выход из положения laugh.gif Разве что на будущее кому... А вообще - довольно стандартная проблема, по ней можно судить, сталкивался ли реально чел с настройкой ФТП сервера или нет.
Перейти в начало страницы
 
+Цитировать сообщение
Dread
сообщение 14.07.2005 - 20:19

Когда меня принес аист, родители смеялись и хотели взять аиста
***
орден III степени
Группа: Участник
Сообщений: 262
Регистрация: 9.10.2003
Пользователь №: 369


Много у кого осталась нерешенной проблема использования на юниксовых
серверах файлов с названиями в кодировке koi8 клиентами под windows.

Аналогичную проблему испытывают японцы со своими языковыми кодировками.

Их решение ("ProFTPD - iconv() charset conversion patch"
]]>http://home.h01.itscom.net/para/software/m...v/index-e.html)]]>
можно и использовать под нас.

На своем сервере FreeBSD мне захотелось, что бы proftpd был установлен
из портов, но был пропатченным.

Итак, приступим.
Нам потребуется libiconv

cd /usr/ports/converters/libiconv
make install
make clean


Распакуем сырцы proftpd

cd /usr/ports/ftp/proftpd
make extract


Скачаем сам патч в каталог /usr/ports/ftp/proftpd/work
cd /usr/ports/ftp/proftpd/work
fetch ]]>http://home.h01.itscom.net/para/software/m...-iconv.patch.gz]]>

патчим командой

gzip -cd proftpd-1.2.10-iconv.patch.gz |patch -p0


после этого идем в proftpd-1.2.10/src/netio.c
ищем switch (mode) {
case IAC:
и вырезаем весь этот свитч, строк там много, около 2х экранов

в /usr/ports/ftp/proftpd/Makefile
добавляем такие строчки между любыми ".if defined(WITH_***)":

MODULES:=${MODULES}:mod_codeconv
INCLUDEDIRS:=${INCLUDEDIRS}:${PREFIX}/include
LIBDIRS:=${LIBDIRS}:${PREFIX}/lib


Конфигурируем командой

make configure


после этого правим work/proftpd-1.2.10/Make.rules
находим LIBS= и в конец строки добавляем -liconv

После этого уже делаем

make
make install


Если make не прокатил, следует поковырять Makefile, что я с ним делал, я
уже не помню, но смысл в том, что бы configure выполнилось с ключами
--with-modules=mod_codeconv --with-libraries=/usr/local/lib
--with-includes=/usr/local/include

Теперь в /usr/local/etc/proftpd.conf добавляем

CharsetLocal KOI8-R
CharsetRemote CP1251


Все!!! Теперь можно в качестве клиента любой браузер использовать без
таблиц кодировки, т.е. имея к примеру на сервере unix+proftpd+samba
клиенты под windows смогут без проблем работать с файлами в win1251
кодировке.


Взято с OPennet.ru
Перейти в начало страницы
 
+Цитировать сообщение
Negative
сообщение 14.07.2005 - 20:37

Продвинутый новичок
**

Группа: Участник
Сообщений: 57
Регистрация: 19.01.2005
Пользователь №: 6208


а клиенты под unix с koi8-r будут сосать лапу? smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
Guest_IFL_*
сообщение 15.07.2005 - 09:49
| Быстрая цитата | Сообщение #5


Гости





Цитата(Goblin @ 14.07.2005 - 21:19)
Их решение ("ProFTPD - iconv() charset conversion patch"
]]>http://home.h01.itscom.net/para/software/m...v/index-e.html)]]>
можно и использовать под нас.

ИМХО, это тоже известно :-)


Negative, будут ставить нормальные клиенты и их настраивать :-)
Перейти в начало страницы
 
+Цитировать сообщение
Negative
сообщение 15.07.2005 - 21:45

Продвинутый новичок
**

Группа: Участник
Сообщений: 57
Регистрация: 19.01.2005
Пользователь №: 6208


нормальный - это kbear?
у меня с ним отношения не складываются упорно
Перейти в начало страницы
 
+Цитировать сообщение
Guest_IFL_*
сообщение 15.07.2005 - 21:59
| Быстрая цитата | Сообщение #7


Гости





Цитата(Negative @ 15.07.2005 - 22:45)
нормальный - это kbear?
у меня с ним отношения не складываются упорно

например, lftp -- мне его хватает
вообще, почитай: ]]>http://forum.gor-net.ru/index.php?showtopic=42487]]> по поводу kbear

p.s.: у меня вообще системная локаль - utf8 :-)
Перейти в начало страницы
 
+Цитировать сообщение
RexaleX
сообщение 18.07.2005 - 13:10
Продвинутый новичок
**

Группа: Участник
Сообщений: 70
Регистрация: 18.11.2004
Пользователь №: 5420


Цитата
Если make не прокатил, следует поковырять Makefile, что я с ним делал, я
уже не помню, но смысл в том, что бы configure выполнилось с ключами
--with-modules=mod_codeconv --with-libraries=/usr/local/lib
--with-includes=/usr/local/include

Make.rules
+LIBS=-L/usr/local/lib/mysql -lsupp -lcrypt -lutil -lm -lz -lmysqlclient -lwrap -lpam -L/usr/local/lib -liconv
-LIBS=-L/usr/local/lib/mysql -lsupp -lcrypt -lutil -lm -lz -lmysqlclient -lwrap -lpam

Проверил на 1.3.0rc3 FreeBSD 6.0, все работает, надо только в путях сделать поправку на версию.

Сообщение отредактировано RexaleX - 7.01.2006 - 12:29
Перейти в начало страницы
 
+Цитировать сообщение
RexaleX
сообщение 22.03.2007 - 16:42
Продвинутый новичок
**

Группа: Участник
Сообщений: 70
Регистрация: 18.11.2004
Пользователь №: 5420


Свершилось чудо:

В конфиг порта добавили две галки
[ ] CYRFIX Use patch for fix cyrillic encoding
[ ] CODECONV Use charset conversion (mod_codeconv)

Первый фиксит "Я", второй добаляет перекодировку для того чтоб оно работало нада добавить в конфиг:

CharsetLocal KOI8-R
CharsetRemote CP1251

]]>http://www.bsdportal.ru/viewtopic.php?t=13502]]>
Перейти в начало страницы
 
+Цитировать сообщение
Злопасный Брандашмыг
сообщение 24.03.2007 - 15:22

Частый гость
***

Группа: Участник
Сообщений: 139
Регистрация: 1.09.2004
Пользователь №: 4553


gentoo'шные ebuild'ы для этих патчей лежат тут:

]]>proftpd-1.3.1_rc2-r1.ebuild]]>
]]>proftpd-1.3.1_rc2-rus.patch]]> ( положить в папку files )
+ добавить в use флаги codeconv
Перейти в начало страницы
 
+Цитировать сообщение
KiWi
сообщение 24.03.2007 - 20:37

Постоялец форума
*****

Группа: Участник
Сообщений: 632
Регистрация: 9.10.2005
Пользователь №: 10041


Цитата(Злопасный Брандашмыг @ 24.03.2007 - 15:22) *
gentoo'шные ebuild'ы для этих патчей лежат тут:

]]>proftpd-1.3.1_rc2-r1.ebuild]]>
]]>proftpd-1.3.1_rc2-rus.patch]]> ( положить в папку files )
+ добавить в use флаги codeconv

А у нас круче! biggrin.gif
Брать из оверлея на амаре: rsync://unix.zelan.ru/gentoo-overlays/amara/

Изменения по сравнения с вариантом выше:
- патч для буквы "я" применяется всегда
- mod_codeconv применяется ТОЛЬКО при установленном флаге iconv
- также добавлена зависимость от virtual/libiconv
- добавлена поддержка самопала под названием mod_vdir(который, кстати, установлен и работает на unix.zelan.ru -- делает каждому IP-адресу персональную upload-диру -- о багах просьба сообщать)
Перейти в начало страницы
 
+Цитировать сообщение
Neolite
сообщение 24.04.2007 - 20:10

#!/usr/bin/neolite
******
орден III степени
Группа: Модератор
Сообщений: 1728
Регистрация: 11.11.2003
Пользователь №: 887


Угу, поставил я это чудо... в смысле обновил порты, сделал reinstall так эта тварь теперь виснет при коннекте.
Запускаю с флагами -n -d 10, и вот что пишет при соединении:
Цитата
neolite.ru (192.168.0.2[192.168.0.2]) - ROOT PRIVS at main.c:872
neolite.ru (192.168.0.2[192.168.0.2]) - SETUP PRIVS at main.c:877
neolite.ru (192.168.0.2[192.168.0.2]) - FTP session requested from unknown class
neolite.ru (192.168.0.2[192.168.0.2]) - performing module session initializations
neolite.ru (192.168.0.2[192.168.0.2]) - mod_sql/4.2.2: defaulting to 'mysql' backend
neolite.ru (192.168.0.2[192.168.0.2]) - ProFTPD terminating (signal 11)
neolite.ru (192.168.0.2[192.168.0.2]) - FTP session closed.

Total, соответственно, выдает мне просто OFFLINE.
Текс... вот что при этом попадает в лог proftpd:
Цитата
Apr 24 21:07:05 mod_sql/4.2.2[50082]: defaulting to 'mysql' backend
Apr 24 21:07:05 mod_sql/4.2.2[50082]: backend module 'mod_sql_mysql/4.0.7'
Apr 24 21:07:05 mod_sql/4.2.2[50082]: backend api 'mod_sql_api_v1'
Apr 24 21:07:05 mod_sql/4.2.2[50082]: >>> sql_sess_init
Apr 24 21:07:05 mod_sql/4.2.2[50082]: entering mysql cmd_defineconnection

И тут все кончается.

Искал, оказывается, я не один такой: ]]>http://www.opennet.ru:8101/openforum/vsluh...mID1/73500.html]]>

Сообщение отредактировано Neolite - 24.04.2007 - 20:14
Перейти в начало страницы
 
+Цитировать сообщение
[Flint]
сообщение 24.04.2007 - 20:15

<font color=green>Master of Puppets</font>
*****

Группа: Участник
Сообщений: 613
Регистрация: 7.05.2004
Пользователь №: 3462


и что тебя смущает?
Перейти в начало страницы
 
+Цитировать сообщение
Neolite
сообщение 24.04.2007 - 20:17

#!/usr/bin/neolite
******
орден III степени
Группа: Модератор
Сообщений: 1728
Регистрация: 11.11.2003
Пользователь №: 887


Цитата
и что тебя смущает?

Что он отваливается. Или это нормально? Запускаю в нормальном режиме - при коннекте просто виснет и все.

Сообщение отредактировано Neolite - 24.04.2007 - 20:17
Перейти в начало страницы
 
+Цитировать сообщение
[Flint]
сообщение 24.04.2007 - 20:28

<font color=green>Master of Puppets</font>
*****

Группа: Участник
Сообщений: 613
Регистрация: 7.05.2004
Пользователь №: 3462


Т.е. тебя не смущает то что он ищет что-то в sql базе и ругается на классы из конфига?
А какая версия bsd, какая версия базы, и желательно кинуть сюда структурку таблицы, заинтриговало, попробую повторить.. а также опшенсы с которыми был собран proftpd
Перейти в начало страницы
 
+Цитировать сообщение
Neolite
сообщение 24.04.2007 - 22:37

#!/usr/bin/neolite
******
орден III степени
Группа: Модератор
Сообщений: 1728
Регистрация: 11.11.2003
Пользователь №: 887


Цитата
' date='24.04.2007 - 21:28' post='1505501']Т.е. тебя не смущает то что он ищет что-то в sql базе и ругается на классы из конфига?
А какая версия bsd, какая версия базы, и желательно кинуть сюда структурку таблицы, заинтриговало, попробую повторить.. а также опшенсы с которыми был собран proftpd

Итак...
Цитата
FreeBSD neolite.ru 6.1-RELEASE FreeBSD 6.1-RELEASE #1: Sat Jan 13 19:10:59 MSK 2007 Neolite@neolite.ru:/usr/src/sys/i386/compile/NEOLITE i386

Цитата
mysql Ver 12.22 Distrib 4.0.27, for unknown-freebsd6.1 (i386)

Код
--
-- БД: `proftpd`
--

-- --------------------------------------------------------

--
-- Структура таблицы `groups`
--

CREATE TABLE `groups` (
  `groupname` varchar(30) NOT NULL default '',
  `gid` int(11) NOT NULL default '0',
  `members` varchar(255) default NULL
) TYPE=MyISAM;

-- --------------------------------------------------------

--
-- Структура таблицы `users`
--

CREATE TABLE `users` (
  `userid` varchar(30) NOT NULL default '',
  `passwd` varchar(80) NOT NULL default '',
  `uid` int(11) NOT NULL auto_increment,
  `gid` int(11) NOT NULL default '5001',
  `homedir` varchar(255) NOT NULL default '/usr/home/ftp',
  `shell` varchar(255) NOT NULL default '/sbin/nologin',
  UNIQUE KEY `userid` (`userid`),
  UNIQUE KEY `uid` (`uid`)
) TYPE=MyISAM;


Цитата
Compile-time Settings:
Version: 1.3.1rc2
Platform: FREEBSD6 (FREEBSD6_1)
Built With:
configure --localstatedir=/var/run --sysconfdir=/usr/local/etc --enable-builtin-getnameinfo --disable-sendfile --disable-ipv6 --with-modules=mod_ratio:mod_readme:mod_rewrite:mod_wrap2:mod_sql_mysql:mod_sql:mod_ifsession --with-includes=:/include:/usr/local/include:/usr/local/include/mysql --with-libraries=:/usr/local/lib:/usr/local/lib/mysql --prefix=/usr/local i386-portbld-freebsd6.1

CFLAGS: -O2 -fno-strict-aliasing -pipe -Wall
LDFLAGS: -L$(top_srcdir)/lib
LIBS: -lsupp -lcrypt -lutil

Files:
Configuration File:
/usr/local/etc/proftpd.conf
Pid File:
/var/run/proftpd.pid
Scoreboard File:
/var/run/proftpd/proftpd.scoreboard

Features:
- Autoshadow support
- Controls support
+ curses support
- Developer support
- DSO support
- IPv6 support
+ Largefile support
- NLS support
- Lastlog support
- NLS support
+ ncurses support
- OpenSSL support
- POSIX ACL support
- Shadow file suppport
- 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_RCVBUFSZ = 65536
PR_TUNABLE_SCOREBOARD_BUFFER_SIZE = 80
PR_TUNABLE_SCOREBOARD_SCRUB_TIMER = 30
PR_TUNABLE_SELECT_TIMEOUT = 30
PR_TUNABLE_SNDBUFSZ = 32768
PR_TUNABLE_TIMEOUTIDENT = 10
PR_TUNABLE_TIMEOUTIDLE = 600
PR_TUNABLE_TIMEOUTLINGER = 180
PR_TUNABLE_TIMEOUTLOGIN = 300
PR_TUNABLE_TIMEOUTNOXFER = 300
PR_TUNABLE_TIMEOUTSTALLED = 3600
PR_TUNABLE_XFER_BUFFER_SIZE = 32768
PR_TUNABLE_XFER_SCOREBOARD_UPDATES = 10
Перейти в начало страницы
 
+Цитировать сообщение
KiWi
сообщение 24.04.2007 - 22:39

Постоялец форума
*****

Группа: Участник
Сообщений: 632
Регистрация: 9.10.2005
Пользователь №: 10041


А теперь ещё и конфиг...
Перейти в начало страницы
 
+Цитировать сообщение
[Flint]
сообщение 24.04.2007 - 23:06

<font color=green>Master of Puppets</font>
*****

Группа: Участник
Сообщений: 613
Регистрация: 7.05.2004
Пользователь №: 3462


когда говорил про опшенсы то имел ввиду то что лежит в /var/db/ports/proftpd/options

тестить буду на 6.2-R, по сути данное различие роли не должно иметь..

P.S. где-то я эту уже структурку таблиц видел.. wink.gif
Перейти в начало страницы
 
+Цитировать сообщение
Neolite
сообщение 24.04.2007 - 23:10

#!/usr/bin/neolite
******
орден III степени
Группа: Модератор
Сообщений: 1728
Регистрация: 11.11.2003
Пользователь №: 887


Цитата
' date='25.04.2007 - 00:06' post='1505768']когда говорил про опшенсы то имел ввиду то что лежит в /var/db/ports/proftpd/options

тестить буду на 6.2-R, по сути данное различие роли не должно иметь..

Код
# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for proftpd-1.3.1.r2_3
_OPTIONS_READ=proftpd-1.3.1.r2_3
WITHOUT_IPV6=true
WITHOUT_LDAP=true
WITHOUT_LDAP_TLS=true
WITH_MYSQL=true
WITHOUT_PGSQL=true
WITHOUT_OPENSSL=true
WITHOUT_QUOTA=true
WITH_IFSESSION=true
WITH_README=true
WITH_RATIO=true
WITHOUT_CTRLS=true
WITH_REWRITE=true
WITH_WRAP=true
WITHOUT_WRAP_FILE=true
WITHOUT_WRAP_SQL=true
WITHOUT_RADIUS=true
WITHOUT_QUOTATAB_RADIUS=true
WITHOUT_BAN=true
WITHOUT_NLS=true
WITH_CYRFIX=true
WITHOUT_CODECONV=true


Цитата(KiWi @ 24.04.2007 - 23:39) *
А теперь ещё и конфиг...

Код
#
# To have more informations about Proftpd configuration
# look at : http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "ProFTPD Default Installation"
ServerType                      standalone
DefaultServer                   on
#ScoreboardFile                 /var/run/proftpd.scoreboard

# Port 21 is the standard FTP port.
Port                            21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                    30
TimeoutIdle                     300
TimeoutLogin                    180

# Set the user and group under which the server will run.
User                            nobody
Group                           nogroup
ServerAdmin                     root@neolite.ru

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~

# Normally, we want files to be overwriteable.
AllowOverwrite          on

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
  DenyAll
</Limit>

<Global>
   SQLConnectInfo               proftpd@localhost:3306 proftpd ************
#   SQLAuthTypes                PlainText
   SQLAuthTypes                 Crypt
   SQLUserInfo                  users userid passwd uid gid homedir shell
   DefaultRoot                  / wheel
   DefaultRoot                  ~
   RequireValidShell            off
   AllowRetrieveRestart         on
   AllowStoreRestart            on
   AllowOverwrite               on
   SQLGroupInfo                 groups groupname gid members
   SQLAuthenticate              users groups
   SQLLogFile                   /var/log/proftpd.log
   ServerIdent                  off
   DefaultTransferMode          binary
   IdentLookups                 off
</Global>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
#########################################################################
#                                                                       #
# Uncomment lines with only one # to allow basic anonymous access       #
#                                                                       #
#########################################################################

<Anonymous /ftp>
   User                         ftp
   Group                        ftp

  ### We want clients to be able to login with "anonymous" as well as "ftp"
   UserAlias                    anonymous ftp

  ### Limit the maximum number of anonymous logins
   MaxClients                   20
   MaxClientsPerHost            3       "Sorry, too many connections per host! Try again later..."

  ### We want 'welcome.msg' displayed at login, and '.message' displayed
  ### in each newly chdired directory.
  # DisplayLogin                welcome.msg
  # DisplayFirstChdir           .message

  ### Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
     DenyAll
  </Limit>

  <Directory Upload/*>
    <Limit READ>
      DenyAll
    </Limit>

    <Limit STOR>
      AllowAll
    </Limit>
  </Directory>
</Anonymous>

<VirtualHost 80.92.100.221>
    ServerName                  "Neolite's FTP Server"
    Port                        2121
    Umask                       022

    <Limit LOGIN>
        DenyAll
    </Limit>

    <Anonymous /ftp/Parkour>
        User                    ftp
        Group                   ftp
        UserAlias               anonymous ftp

        <Limit LOGIN>
            AllowAll
        </Limit>

        <Limit WRITE>
            DenyAll
        </Limit>
    </Anonymous>
</VirtualHost>
Перейти в начало страницы
 
+Цитировать сообщение
[Flint]
сообщение 25.04.2007 - 00:20

<font color=green>Master of Puppets</font>
*****

Группа: Участник
Сообщений: 613
Регистрация: 7.05.2004
Пользователь №: 3462


проблему повторил, занятно.. завтра на досуге покопаю.. после эксперементов рекомендую сделать следующее #/usr/local/etc/rc.d/proftpd restart а лучше stop а потом ещё и killall -9 proftpd до выяснения, но здается мне что они там сломали койчаго.. даже примерно уже догадываюсь, щас в люлю, а завтра.. хехе..
Перейти в начало страницы
 
+Цитировать сообщение

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 20.09.2026 - 22:17