LINUX.ORG.RU

Гы, а что, прикольная идея... на файлах можно было бы сделать...

Но готового ничего не знаю.

Эх был бы не так занят сам бы написал за бутылку...

gods-little-toy ★★★
()
Ответ на: комментарий от akubens

Проблема с синхронизацией будет. в FTP команды download/upload, и
большинство (все) текстовые редакторы не либо вообще не проверяют,
изменился ли файл на сервере, либо не позволяют слить изменения - либо
твои, либо чужие.

Поэтому правильный путь - это что-то вроде:

send_message($chat_message)
{
  echo $chat_message >> /tmp/file
  ncfpput $chat_message ftp://server/path/msg-`date`
}

refresh_chat_window()
{
  for each (file, filetime) in `ncftpls ftp://server/path/` ; do
    ncftpget ftp://server/path/$file
    echo $file >> chat_window;

    # Delete messages older than minute. Hopefully all clients have seen them
    if ($filetime older than 1 minute) ; then
      ncftprm $file
    fi
  done;
}


(синтаксис конечно неправильный, и соптимизировать можно, но идея думаю ясна)

gods-little-toy ★★★
()

Да ладно, не такой уж и бред.
одно сообщение -- один файл.
Самописанный клиент подкл. по фтп-протоколу, отслеживает добавление новых файлов на сервере и отображает их содержимое в одном окне ввиде дискуссии.

качество/удобство такого чата отдельный вопрос, но видимо админ у них там злой, все позакрывал и общедоступен только фтп-сервер.

Короче: пишите клиента -- это может быть даже простой шел-скрипт + lftp (mirror)

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

>не вижу причин не отслеживать изменения в отдельном файле...

по одному файлу на участника чата?

причины слишком очевидны: придется скачивать все измененные файлы (а они будут только расти в процессе дискуссии) и выдирать из них новые сообщения.
Вместо этого, достаточно скачать добавленные мелкие файлы (lftp /mirror), отсортировать по дате и выдать содержимое на экран.

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

да очень просто, перед началом записи просто проверять не успел ли кто модифицировать файл. Если успел - обновляем и дописуем в конец, не успел - пишем сразу.

akubens
()

Скрипт то небольшой получится - возьми да напиши

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

> да очень просто, перед началом записи просто проверять не успел ли кто модифицировать файл. Если успел - обновляем и дописуем в конец, не успел - пишем сразу.

FTP протокол AFAK не имеет программы "дописания в конец". То есть придется скачать а потом залить обратно. Пока скачивал-заливал файл могут изменить и ты эти изменения потрешь

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

в любом случае реализация чата получится нетривиальная. При большом количестве пользователей, не думаю что это вообще возможно без потерь

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

>но видимо админ у них там злой, все позакрывал и общедоступен только фтп-сервер.

Вот, человек сразу всё понял.

>Можно ещё чат через пинги сделать Пинги заблокированы.

>Короче: пишите клиента Ну так написать то можно, но этож время нужно. Можно попробовать сделать что-то типа irc-over-ftp. (чтобы в надцатый раз не реализовывать функциональность чата). Т.е. локальный irc сервер, который проставляется у каждого юзера, и транслирует irc протокол в ftp операции.

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

Чат через фтп это канешно жесть :) Но по-моему тебе проще будет без всяких irc-over-ftp взять любой чат и перенастроить его на 21-й порт, почти любой чат позволяет это делать.

Sherak ★☆
()

в ftp-протоколе есть такая команда -- "NOOP", в принципе, её тоже можно задействовать:

-> NOOP some-protocol-over-ftp-payload-data
<- 200 OK protocol-over-ftp-payload-another-data
-> NOOP some-protocol-over-ftp-payload-data-next-iteration
<- 200 OK protocol-over-ftp-payload-next-reply
...

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

Кстати, а идёя чата через ping довольно-таки интересная. Надо как-нибудь подумать об этом.

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