URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75096
[ Назад ]

Исходное сообщение
"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"

Отправлено psn1982 , 10-Июл-07 12:48 
Всем привет!
Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make install лезут ошибки.
Для proftpd-1.3.0rc3 описано в http://www.pc-info.in.ua/content/view/1409/288/
Но для 1.3.1rc2 не проходит.
HELP...

Содержание

Сообщения в этом обсуждении
"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено perece , 10-Июл-07 15:35 
>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>install лезут ошибки.
а если руками установить?

\^P^/


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Sky , 10-Июл-07 16:08 
>>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>>install лезут ошибки.
>а если руками установить?
>
>\^P^/


netio ----->
--- netio.c     2006-11-01 09:35:13.000000000 +0700
+++ netio.c2    2007-06-28 00:36:18.000000000 +0800
@@ -523,9 +523,12 @@
   return -1;
}

+extern char* local2remote(char* local);
+
int pr_netio_printf(pr_netio_stream_t *nstrm, const char *fmt, ...) {
   va_list msg;
   char buf[PR_RESPONSE_BUFFER_SIZE] = {'\0'};
+  char* p;

   if (!nstrm) {
     errno = EINVAL;
@@ -537,6 +540,13 @@
   va_end(msg);
   buf[sizeof(buf)-1] = '\0';

+  if (buf[0]) {
+    p = local2remote(buf);
+    if (p) {
+      strcpy(buf, p); free(p);
+    }
+  }
+
   return pr_netio_write(nstrm, buf, strlen(buf));
}

<-----------

mod_ls ----->
--- mod_ls.c    2006-12-16 05:25:31.000000000 +0700
+++ mod_ls.c2   2007-06-28 00:43:53.000000000 +0800
@@ -244,12 +244,15 @@
   return res;
}

+extern char* local2remote(char*);
+
/* sendline() now has an internal buffer, to help speed up LIST output. */
static int sendline(int flags, char *fmt, ...) {
   static char listbuf[PR_TUNABLE_BUFFER_SIZE] = {'\0'};
   va_list msg;
   char buf[PR_TUNABLE_BUFFER_SIZE+1] = {'\0'};
   int res = 0;
+  char* buf2;

   if (flags & LS_SENDLINE_FL_FLUSH) {
     res = pr_data_xfer(listbuf, strlen(listbuf));
@@ -268,6 +271,13 @@

   buf[sizeof(buf)-1] = '\0';

+  if (buf[0]) {
+    buf2 = local2remote(buf);
+    if (buf2) {
+      strcpy(buf, buf2); free(buf2);
+    }
+  }
+
   /* If buf won't fit completely into listbuf, flush listbuf */
   if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
     res = pr_data_xfer(listbuf, strlen(listbuf));
<-----------


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Golub Mikhail , 10-Июл-07 18:41 
>>>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>>>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>>>install лезут ошибки.

В портах FreeBSD есть новый 1.3.1rc3
В конфиг порта включить:
[ ] CYRFIX Use patch for fix cyrillic encoding
[ ] CODECONV Use charset conversion (mod_codeconv)

И все.


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено psn1982 , 11-Июл-07 10:38 
>>>>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>>>>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>>>>install лезут ошибки.
>
>В портах FreeBSD есть новый 1.3.1rc3
>В конфиг порта включить:
>[ ] CYRFIX Use patch for fix cyrillic encoding
>[ ] CODECONV Use charset conversion (mod_codeconv)
>
>И все.


Обновил дерево портов. Включил эти опции. В конфиге прописал
CharsetLocal    KOI8-R
CharsetRemote   CP1251
Но не работает перекодировка почему-то. Может еще что нужно?


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено psn1982 , 11-Июл-07 10:43 
>>>>>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>>>>>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>>>>>install лезут ошибки.
>>
>>В портах FreeBSD есть новый 1.3.1rc3
>>В конфиг порта включить:
>>[ ] CYRFIX Use patch for fix cyrillic encoding
>>[ ] CODECONV Use charset conversion (mod_codeconv)
>>
>>И все.
>
>
>Обновил дерево портов. Включил эти опции. В конфиге прописал
>CharsetLocal    KOI8-R
>CharsetRemote   CP1251
>Но не работает перекодировка почему-то. Может еще что нужно?

Вопрос снят!
CharsetLocal    KOI8-R
CharsetRemote   CP1251
Был прописан в глобальной секции.
Прописал в VirtualHost и все пучком
Спасибо за помощь!!!



"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Den , 11-Июл-07 13:37 
если я с под unix захожу на ftp. Моя локальная кодировка KOI8-R. Я отправляю файл на сервер, он думает что я посылаю в 1251 и делает переконвертацию. В итоге когда виндовый клиент заходит на сервер он видит крякозябры.


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Garick , 22-Авг-07 16:07 
>если я с под unix захожу на ftp. Моя локальная кодировка KOI8-R.
>Я отправляю файл на сервер, он думает что я посылаю в
>1251 и делает переконвертацию. В итоге когда виндовый клиент заходит на
>сервер он видит крякозябры.

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



"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Garick , 22-Авг-07 16:28 
>>>>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>>>>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>>>>install лезут ошибки.
>
>В портах FreeBSD есть новый 1.3.1rc3
>В конфиг порта включить:
>[ ] CYRFIX Use patch for fix cyrillic encoding
>[ ] CODECONV Use charset conversion (mod_codeconv)
>
>И все.

В proftpd 1.3.1.r3_4

[ ] CODECONV Use charset conversion (mod_codeconv)

данная функция отсутствует Ниужель придётся в ручную собирать всё? или откатываться? ктонить знает решение проблемки? как я понял патч удлили из за несовместимости с UTF8 новыми замарочками хотя возможно я и ошибаюсь


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено nwton , 18-Апр-08 16:39 
>[оверквотинг удален]
>>
>>И все.
>
>В proftpd 1.3.1.r3_4
>
>[ ] CODECONV Use charset conversion (mod_codeconv)
>
>данная функция отсутствует Ниужель придётся в ручную собирать всё? или откатываться? ктонить
>знает решение проблемки? как я понял патч удлили из за несовместимости
>с UTF8 новыми замарочками хотя возможно я и ошибаюсь

Внимание (для гугла и прочих) - модуля CYRFIX больше не существует, вместо него CODECONV (если порты обновлены конечно).

Если кого-то интересуют подробности, то вот:

beech 2008-04-02 01:15:47 UTC

FreeBSD ports repository

Modified files:
ftp/proftpd Makefile
ftp/proftpd/files extra-patch-mod-codeconv
Removed files:
ftp/proftpd/files extra-patch-cyrillic-fix-netio.c
Log:
- Remove cyrillic-fix-netio.c (handled by CODECONV)
- Bump portrevision

PR: ports/122355
Submitted by: Alex Keda

Revision Changes Path
1.132 +1 -6 ports/ftp/proftpd/Makefile
1.2 +0 -50 ports/ftp/proftpd/files/extra-patch-cyrillic-fix-netio.c (dead)
1.5 +1 -131 ports/ftp/proftpd/files/extra-patch-mod-codeconv


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено norph , 15-Ноя-07 01:49 
>[оверквотинг удален]
>+    if (buf2) {
>+      strcpy(buf, buf2); free(buf2);
>+    }
>+  }
>+
>   /* If buf won't fit completely into listbuf, flush
>listbuf */
>   if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
>     res = pr_data_xfer(listbuf, strlen(listbuf));
><-----------

по-видимому он патчит файл src/netio.c
кидай этат патч прям в эту папочку с netio.c
даю ему команду patch -p0 < patch_file а он выдает ошибку:

patch: **** malformed patch at line 6: }

Далее открываю патч, смотрю на 6 строчку и ставлю передней пробел, снова патчу и получаю следующую ошибку:
patch: **** malformed patch at line 10: int pr_netio_printf(pr_netio_stream_t *nstrm, const char *fmt, ...) {

Как с его все-таки пропатчить? proftpd-1.3.1rc2


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено norph , 15-Ноя-07 16:03 
>[оверквотинг удален]
>даю ему команду patch -p0 < patch_file а он выдает ошибку:
>
>patch: **** malformed patch at line 6: }
>
>Далее открываю патч, смотрю на 6 строчку и ставлю передней пробел, снова
>патчу и получаю следующую ошибку:
>patch: **** malformed patch at line 10: int pr_netio_printf(pr_netio_stream_t *nstrm, const char
>*fmt, ...) {
>
>Как с его все-таки пропатчить? proftpd-1.3.1rc2

Никто так и не знает как решить проблему?


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено barnette , 19-Ноя-07 15:39 
>В портах FreeBSD есть новый 1.3.1rc3
>В конфиг порта включить:
>[ ] CYRFIX Use patch for fix cyrillic encoding
>[ ] CODECONV Use charset conversion (mod_codeconv)

А где новый порт то, обновзяю дерево - обновляется только до 1.3.1rc2
на freebsd.org/ports тоже он proftpd-1.3.1_2
http://www.freebsd.org/cgi/ports.cgi?query=proftpd&stype=all

Все патчи перепробывал - не собирается


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Corwin , 01-Июн-08 10:28 
>[оверквотинг удален]
>>В конфиг порта включить:
>>[ ] CYRFIX Use patch for fix cyrillic encoding
>>[ ] CODECONV Use charset conversion (mod_codeconv)
>
>А где новый порт то, обновзяю дерево - обновляется только до 1.3.1rc2
>
>на freebsd.org/ports тоже он proftpd-1.3.1_2
>http://www.freebsd.org/cgi/ports.cgi?query=proftpd&stype=all
>
>Все патчи перепробывал - не собирается

На lissyara.su лежит порт для сборки с поддержкой конвертации.


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено Barnette , 02-Июн-08 11:12 
>[оверквотинг удален]
>>>[ ] CODECONV Use charset conversion (mod_codeconv)
>>
>>А где новый порт то, обновзяю дерево - обновляется только до 1.3.1rc2
>>
>>на freebsd.org/ports тоже он proftpd-1.3.1_2
>>http://www.freebsd.org/cgi/ports.cgi?query=proftpd&stype=all
>>
>>Все патчи перепробывал - не собирается
>
>На lissyara.su лежит порт для сборки с поддержкой конвертации.

Думаю тема может быть закрыта т.к. в новой версии портов идет уже готовый модуль CODECONV

Существует другая проблемма, на сей раз с mod_clamav т.е. модулем для работы с антивирусом Clamav. Проблема заключается в следующем, после установки связки proftpd + mod_clamav + Clamav, если закачивать на фтп файл с вирусом в корень (т.е. в ту директории в которую зашел посли логина), то все работает корректно, файл автоматически удаляется, но в случае если зайти в какую либо директорию (не важно какую) и скопировать туда, то в логах будет запись что Clamav не нашел путь к файлу и файл с вирусом останется, т.е. видемо на сокет Clamav сообщается неверный путь к файлу. В инете были примеры патчей, но ни один так и не смог устранить данную проблемму.

Если кто нашел решение, просьба поделится. Заранее благодарен.


"ProFTPD 1.3.1rc2 KOI8-R <-> CP 1251"
Отправлено ierton , 27-Авг-08 22:57 
>Всем привет!
>Кто нибудь добился того чтобы происходила конвертация кодировки KOI8-R <-> CP 1251 на ProFTPD 1.3.1rc2.
>Патч японцев на данной версии не прокатывает. Т.е. патчится, но когда make
>install лезут ошибки.
>Для proftpd-1.3.0rc3 описано в http://www.pc-info.in.ua/content/view/1409/288/
>Но для 1.3.1rc2 не проходит.
>HELP...

Для гугла: Копаясь в коде, нашел способ включить перекодировку в proftpd-1.3.2rc1:
Там это делается директивой
  UseEncoding <from> <to>
например
  UseEncoding UTF8 CP1251