LINUX.ORG.RU

ProFTPD, proftpd-1.2.10-iconv.patch, gentoo


0

0

Как это все пропатчить и настроить? Чтоб и в портижах было известно, а не компилить через ./configure. Нет этого патча для proftpd. Или есть но как его задействовать? Помогите пожалуйста :( Моя locale KOI-8 RU. Когда ктото мне закачивает папки и файлы с рускими именами с винды (cp1251) Ясное дело в названии уменя в папке получаються крякозяблики (той что закачли мне). и если я выкладываю само собой они видят мою KOI-8. Как это дело зделать??

если я правильно вас понял...
если делать по этому http://www.linuxcenter.ru/lib/articles/networking/rus_proftpd.phtml howto то примерно сделать следуйщее:
emerge -f proftpd
tar xvjf /usr/portage/distfiles/proftpd-1.2.10.tar.bz2 -C /tmp
cd /tmp/proftpd-1.2.10
wget http://home.h01.itscom.net/para/software/misc/proftpd-iconv/pack/proftpd-1.2.10-
iconv.patch.gz
zcat proftpd-1.2.10-iconv.patch.gz | patch -p1
cp src/netio.c src/netio.c.orig
vim src/netio.c
находим и сносим то что надо, сохраняем
diff -Naur src/netio.orig src/netio.c > proftpd-1.2.10-netio.patch
в /etc/make.conf укажите PORTDIR_OVERLAY=/usr/local/portage
mkdir -p /usr/local/portage/net-ftp/
cp -a /usr/portage/net-ftp/proftpd /usr/local/portage/net-ftp/
gunzip proftpd-1.2.10-iconv.patch.gz
cp proftpd-1.2.10-iconv.patch /usr/local/portage/net-ftp/proftpd/files/
cp proftpd-1.2.10-netio.patch /usr/local/portage/net-ftp/proftpd/files/
добавте в /usr/local/portage/net-ftp/proftpd/proftpd-1.2.10-r7.ebuild в функцию src_unpack()
epatch "${FILESDIR}/${PN}-${PV}-iconv.patch"
epatch "${FILESDIR}/${PN}-${PV}-netio.patch"
в функцию src_compile()
modules="${modules}:mod_codeconv"
сохраняем
ebuild /usr/local/portage/net-ftp/proftpd/proftpd-1.2.10-r7.ebuild digest
emerge -pv proftpd
emerge proftpd
вобщем у меня все это дело компилится, но как работает - проверить не могу.

kostian ★★★★☆
()
Ответ на: комментарий от kostian

Чтото я несильно понял что вырезать :( с netio.c

anonymous
()
Ответ на: комментарий от kostian

Вобщем разобрался вродь. Но проблемка. я в инете читал про проблему "я" буквы толкового решения ее я ненашол. Умя она тож осталась. Как ее решить? :(

TRAVOLTINO
() автор топика
Ответ на: комментарий от init

Проблема серовно полностю неуходит. например у меня создают папку с именем яяя, раская, так от умя получаеться яя, руска, также я в natio.h убил пару строк которые имели какоето отношение IAC. Где ещо что можна? Чтоб полностью отучить фтп сервер от использования символо я для телнета (я точно непомню для чего он его использует но по статьям понял так)? Можно ли както указать другой символ?

TRAVOLTINO
() автор топика
Ответ на: комментарий от TRAVOLTINO

diff -urN proftpd-1.2.10.orig/src/netio.c proftpd-1.2.10/src/netio.c
--- proftpd-1.2.10.orig/src/netio.c     2004-06-15 20:45:21.000000000 +0400
+++ proftpd-1.2.10/src/netio.c  2005-03-10 22:01:17.000000000 +0300
@@ -802,108 +802,63 @@
   return buf;
 }
 
-char *pr_netio_telnet_gets(char *buf, size_t buflen,
-    pr_netio_stream_t *in_nstrm, pr_netio_stream_t *out_nstrm) {
+char *pr_netio_telnet_gets(char *buf, size_t buflen, 
+       pr_netio_stream_t *in_nstrm, pr_netio_stream_t *out_nstrm) {
+               char *bp = buf;
+               unsigned char cp;
+               static unsigned char mode = 0;
+               int toread;
+               pr_buffer_t *pbuf = NULL;
+               buflen--;
+
+               if (in_nstrm->strm_buf)
+                       pbuf = in_nstrm->strm_buf;
+               else
+                       pbuf = netio_buffer_alloc(in_nstrm);
+
+               while (buflen) {
+
+                       /* Is the buffer empty? */
+                       if (!pbuf->current ||
+                               pbuf->remaining == pbuf->buflen) {
+
+                                       toread = pr_netio_read(in_nstrm, pbuf->buf, 
+                                               (buflen < pbuf->buflen ?  buflen : pbuf->buflen), 1);
+
+                                       if (toread <= 0) {
+                                               if (bp != buf) {
+                                                       *bp = '\0';
+                                                       return buf;
+                                               } else
+                                                       return NULL;
+                                       }
+
+                                       pbuf->remaining = pbuf->buflen - toread;
+                                       pbuf->current = pbuf->buf;
+
+                       } else
+                               toread = pbuf->buflen - pbuf->remaining;
+                       while (buflen && toread > 0 && *pbuf->current != '\n' && toread--) {
+                               cp = *pbuf->current++;
+                               pbuf->remaining++;
+                               *bp++ = cp;
+                               buflen--;
+                       }
+
+                       if (buflen && toread && *pbuf->current == '\n') {
+                               buflen--;
+                               toread--;
+                               *bp++ = *pbuf->current++;
+                               pbuf->remaining++; 
+                               break;
+                       }
+
+                       if (!toread)
+                               pbuf->current = NULL;
+               }
-  char *bp = buf;
-  unsigned char cp;
-  static unsigned char mode = 0;
-  int toread;
-  pr_buffer_t *pbuf = NULL;
-  buflen--;
-
-  if (in_nstrm->strm_buf)
-    pbuf = in_nstrm->strm_buf;
-  else
-    pbuf = netio_buffer_alloc(in_nstrm);
-
-  while (buflen) {
-
-    /* Is the buffer empty? */
-    if (!pbuf->current ||
-        pbuf->remaining == pbuf->buflen) {
-
-      toread = pr_netio_read(in_nstrm, pbuf->buf,
-        (buflen < pbuf->buflen ?  buflen : pbuf->buflen), 1);
-
-      if (toread <= 0) {
-        if (bp != buf) {
-          *bp = '\0';
-          return buf;
-
-        } else
-          return NULL;
-      }
-
-      pbuf->remaining = pbuf->buflen - toread;
-      pbuf->current = pbuf->buf;
-
-    } else
-      toread = pbuf->buflen - pbuf->remaining;
-
-    while (buflen && toread > 0 && *pbuf->current != '\n' && toread--) {
-      cp = *pbuf->current++;
-      pbuf->remaining++;
-
-      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;
-      }
-
-      *bp++ = cp;
-      buflen--;
-    }
-
-    if (buflen && toread && *pbuf->current == '\n') {
-      buflen--;
-      toread--;
-      *bp++ = *pbuf->current++;
-      pbuf->remaining++;
-      break;
-    }
-
-    if (!toread)
-      pbuf->current = NULL;
-  }
-
-  *bp = '\0';
-  return buf;
+               *bp = '\0';
+               return buf;
 }
 
 int pr_register_netio(pr_netio_t *netio, int strm_types) {

Deleted
()
Ответ на: комментарий от Deleted

Большое спосибо за помощ но я невсе понял :) Это файл netio.c должен так выглядеть? Извиняюся за ламерский вопрос :=\

TRAVOLTINO
() автор топика
Ответ на: комментарий от Deleted

И ещё...

--- configure.in~       2004-05-26 06:15:35.000000000 +0400
+++ configure.in        2005-05-20 21:38:06.000000000 +0400
@@ -21,8 +21,8 @@

AC_INIT(include/conf.h)

-ac_core_modules="mod_core.o mod_xfer.o mod_auth_unix.o mod_auth_file.o mod_auth.o mod_ls.o mod_log.o mod_site.o"
-ac_build_core_modules="modules/mod_core.o modules/mod_xfer.o modules/mod_auth_unix.o modules/mod_auth_file.o modules/mod_auth.o modules/mod_ls.o modules/mod_log.o modules/mod_site.o"
+ac_core_modules="mod_core.o mod_xfer.o mod_auth_unix.o mod_auth_file.o mod_auth.o mod_ls.o mod_log.o mod_site.o mod_codeconv.o"
+ac_build_core_modules="modules/mod_core.o modules/mod_xfer.o modules/mod_auth_unix.o modules/mod_auth_file.o modules/mod_auth.o modules/mod_ls.o modules/mod_log.o modules/mod_site.o modules/mod_codeconv.o"

Deleted
()
Ответ на: комментарий от Deleted

Попробую. Правдо невсе понял но первую часть выполнить смог :). Это бы куда нить в FAQ я невидел в интернете как в gentoo пропатчить таким способом(мож слепой).....

TRAVOLTINO
() автор топика
Ответ на: комментарий от TRAVOLTINO

Блин, да причём тут FAQ? ;( Вот же gentoo отбивает всё...

man patch посмотри.

Я раньше думал, что пользователи Gentoo - знают, как пересобрать ядро и вообще в системе неплохо разбираются, ан нет...

Оказывается, хватает только на то, чтобы emerge --help прочитать :((

Deleted
()
Ответ на: комментарий от Deleted

Я нетак давно сижу на генту. и нетак давно в линуксе. Несуди по мне. и я дро я умею пересобирать... Я говорил про сам патч.

TRAVOLTINO
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.