Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
23.10.2004 - 11:21
Вставить ник | Быстрая цитата | Сообщение
#1
|
|
|
Когда меня принес аист, родители смеялись и хотели взять аиста ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 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 |
|
|
|
23.10.2004 - 12:19
Вставить ник | Быстрая цитата | Сообщение
#2
|
|
![]() Anime ![]() ![]() ![]() Группа: Участник Сообщений: 101 Регистрация: 29.09.2003 Пользователь №: 41 |
|
|
|
|
14.07.2005 - 20:19
Вставить ник | Быстрая цитата | Сообщение
#3
|
|
|
Когда меня принес аист, родители смеялись и хотели взять аиста ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 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 |
|
|
|
14.07.2005 - 20:37
Вставить ник | Быстрая цитата | Сообщение
#4
|
|
![]() Продвинутый новичок ![]() ![]() Группа: Участник Сообщений: 57 Регистрация: 19.01.2005 Пользователь №: 6208 |
а клиенты под unix с koi8-r будут сосать лапу?
|
|
|
|
| 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, будут ставить нормальные клиенты и их настраивать :-) |
|
|
|
15.07.2005 - 21:45
Вставить ник | Быстрая цитата | Сообщение
#6
|
|
![]() Продвинутый новичок ![]() ![]() Группа: Участник Сообщений: 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 :-) |
|
|
|
18.07.2005 - 13:10
Вставить ник | Быстрая цитата | Сообщение
#8
|
|
Продвинутый новичок![]() ![]() Группа: Участник Сообщений: 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 |
|
|
|
22.03.2007 - 16:42
Вставить ник | Быстрая цитата | Сообщение
#9
|
|
Продвинутый новичок![]() ![]() Группа: Участник Сообщений: 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
Вставить ник | Быстрая цитата | Сообщение
#10
|
|
![]() Частый гость ![]() ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 1.09.2004 Пользователь №: 4553 |
gentoo'шные ebuild'ы для этих патчей лежат тут:
]]>proftpd-1.3.1_rc2-r1.ebuild]]> ]]>proftpd-1.3.1_rc2-rus.patch]]> ( положить в папку files ) + добавить в use флаги codeconv |
|
|
|
24.03.2007 - 20:37
Вставить ник | Быстрая цитата | Сообщение
#11
|
|
![]() Постоялец форума ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 632 Регистрация: 9.10.2005 Пользователь №: 10041 |
gentoo'шные ebuild'ы для этих патчей лежат тут: ]]>proftpd-1.3.1_rc2-r1.ebuild]]> ]]>proftpd-1.3.1_rc2-rus.patch]]> ( положить в папку files ) + добавить в use флаги codeconv А у нас круче! Брать из оверлея на амаре: rsync://unix.zelan.ru/gentoo-overlays/amara/ Изменения по сравнения с вариантом выше: - патч для буквы "я" применяется всегда - mod_codeconv применяется ТОЛЬКО при установленном флаге iconv - также добавлена зависимость от virtual/libiconv - добавлена поддержка самопала под названием mod_vdir(который, кстати, установлен и работает на unix.zelan.ru -- делает каждому IP-адресу персональную upload-диру -- о багах просьба сообщать) |
|
|
|
24.04.2007 - 20:10
Вставить ник | Быстрая цитата | Сообщение
#12
|
|
![]() #!/usr/bin/neolite ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 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 |
|
|
|
24.04.2007 - 20:15
Вставить ник | Быстрая цитата | Сообщение
#13
|
|
![]() <font color=green>Master of Puppets</font> ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 613 Регистрация: 7.05.2004 Пользователь №: 3462 |
и что тебя смущает?
|
|
|
|
24.04.2007 - 20:17
Вставить ник | Быстрая цитата | Сообщение
#14
|
|
![]() #!/usr/bin/neolite ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1728 Регистрация: 11.11.2003 Пользователь №: 887 |
Цитата и что тебя смущает? Что он отваливается. Или это нормально? Запускаю в нормальном режиме - при коннекте просто виснет и все. Сообщение отредактировано Neolite - 24.04.2007 - 20:17 |
|
|
|
24.04.2007 - 20:28
Вставить ник | Быстрая цитата | Сообщение
#15
|
|
![]() <font color=green>Master of Puppets</font> ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 613 Регистрация: 7.05.2004 Пользователь №: 3462 |
Т.е. тебя не смущает то что он ищет что-то в sql базе и ругается на классы из конфига?
А какая версия bsd, какая версия базы, и желательно кинуть сюда структурку таблицы, заинтриговало, попробую повторить.. а также опшенсы с которыми был собран proftpd |
|
|
|
24.04.2007 - 22:37
Вставить ник | Быстрая цитата | Сообщение
#16
|
|
![]() #!/usr/bin/neolite ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 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 |
|
|
|
24.04.2007 - 22:39
Вставить ник | Быстрая цитата | Сообщение
#17
|
|
![]() Постоялец форума ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 632 Регистрация: 9.10.2005 Пользователь №: 10041 |
А теперь ещё и конфиг...
|
|
|
|
24.04.2007 - 23:06
Вставить ник | Быстрая цитата | Сообщение
#18
|
|
![]() <font color=green>Master of Puppets</font> ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 613 Регистрация: 7.05.2004 Пользователь №: 3462 |
когда говорил про опшенсы то имел ввиду то что лежит в /var/db/ports/proftpd/options
тестить буду на 6.2-R, по сути данное различие роли не должно иметь.. P.S. где-то я эту уже структурку таблиц видел.. |
|
|
|
24.04.2007 - 23:10
Вставить ник | Быстрая цитата | Сообщение
#19
|
|
![]() #!/usr/bin/neolite ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 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 А теперь ещё и конфиг... Код #
# 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> |
|
|
|
25.04.2007 - 00:20
Вставить ник | Быстрая цитата | Сообщение
#20
|
|
![]() <font color=green>Master of Puppets</font> ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 613 Регистрация: 7.05.2004 Пользователь №: 3462 |
проблему повторил, занятно.. завтра на досуге покопаю.. после эксперементов рекомендую сделать следующее #/usr/local/etc/rc.d/proftpd restart а лучше stop а потом ещё и killall -9 proftpd до выяснения, но здается мне что они там сломали койчаго.. даже примерно уже догадываюсь, щас в люлю, а завтра.. хехе..
|
|
|
|
![]() ![]() |
|
Текстовая версия | Сейчас: 20.09.2026 - 22:17 |