The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"proftpd и буква 'я'"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"proftpd и буква 'я'"
Сообщение от scout emailИскать по авторуВ закладки(ok) on 03-Дек-04, 10:08  (MSK)
При закачке файлов windows-клиентами на ftp-сервер в именах файлов поглощается буква "я" (код 0xFF) и один символ, идущий за ней. Например: "Скрытая угроза.avi" превращается в "Скрытаугроза.avi". Это как-нибудь можно побороть ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "proftpd и буква 'я'"
Сообщение от Keeper emailИскать по авторуВ закладки(??) on 03-Дек-04, 10:41  (MSK)
>При закачке файлов windows-клиентами на ftp-сервер в именах файлов поглощается буква "я"
>(код 0xFF) и один символ, идущий за ней. Например: "Скрытая угроза.avi"
>превращается в "Скрытаугроза.avi". Это как-нибудь можно побороть ?

Поиск по форуму. Lavr постил решения для и для proftpd, и для FreeBSD ftpd.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "proftpd и буква 'я'"
Сообщение от scout emailИскать по авторуВ закладки(ok) on 03-Дек-04, 11:13  (MSK)
>>При закачке файлов windows-клиентами на ftp-сервер в именах файлов поглощается буква "я"
>>(код 0xFF) и один символ, идущий за ней. Например: "Скрытая угроза.avi"
>>превращается в "Скрытаугроза.avi". Это как-нибудь можно побороть ?
>
>Поиск по форуму. Lavr постил решения для и для proftpd, и для
>FreeBSD ftpd.

Так и сделал первым делом. Может я плохо искал, - решения проблемы 0xFF не нашел. Конечно замечательно заставить всех пользоваться клиентами, поддерживающими KOI8-R, но это просто нереально.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "proftpd и буква 'я'"
Сообщение от Keeper emailИскать по авторуВ закладки(??) on 03-Дек-04, 11:20  (MSK)
>>>При закачке файлов windows-клиентами на ftp-сервер в именах файлов поглощается буква "я"
>>>(код 0xFF) и один символ, идущий за ней. Например: "Скрытая угроза.avi"
>>>превращается в "Скрытаугроза.avi". Это как-нибудь можно побороть ?
>>
>>Поиск по форуму. Lavr постил решения для и для proftpd, и для
>>FreeBSD ftpd.
>
>Так и сделал первым делом. Может я плохо искал, - решения проблемы
>0xFF не нашел. Конечно замечательно заставить всех пользоваться клиентами, поддерживающими KOI8-R,
>но это просто нереально.

Было, было на форуме. Сам оттуда брал. Идея такая - ищем кусок кода с "IAC" и комментим его нафиг.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "proftpd и буква 'я'"
Сообщение от scout emailИскать по авторуВ закладки(ok) on 03-Дек-04, 11:26  (MSK)
>Было, было на форуме. Сам оттуда брал. Идея такая - ищем кусок
>кода с "IAC" и комментим его нафиг.

Во! Судя по коду - это оно. Попробую вечером.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "proftpd и буква 'я'"
Сообщение от scout emailИскать по авторуВ закладки(ok) on 05-Дек-04, 11:45  (MSK)
>>Было, было на форуме. Сам оттуда брал. Идея такая - ищем кусок
>>кода с "IAC" и комментим его нафиг.
>
>Во! Судя по коду - это оно. Попробую вечером.

Все работает. В файле netio.c заменить реализацию функции pr_netio_telnet_gets на следующее:

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;
  }

  *bp = '\0';
  return buf;
}


PS Верно для proftpd-1.2.10.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру