LINUX.ORG.RU

Небольшие изменения в vsFTPd


0

0

Доброго времени суток!

Есть некоторая проблема: нужно перекомпилить vsftpd следующим образом -- чтобы после прохождения аутентификации, когда начинается запись пришедшего файлового потока в файловую систему сервера, этот файловый поток вместо файловой системы анализировался и немного изменялся. Вобщем: помогите плиз найти место в сорцах, где происходит эта самая запись в FS для дальнейшей работы.

Заранее спасибо! =)

Re: Небольшие изменения в vsFTPd

правильно поставленная задача это половина решения.

MikeDM ★★★★★ ()

Re: Небольшие изменения в vsFTPd

> после прохождения аутентификации, когда начинается запись пришедшего файлового потока

Э, так таки сразу и "начинается запись пришедшего файлового потока"?
Ищи реализацию команды PUT

sdio ★★★★★ ()
Ответ на: Re: Небольшие изменения в vsFTPd от MikeDM

Re: Небольшие изменения в vsFTPd

Полностью согласен! Пока до конца не понял как же это работать будет, изложил ТЗ на пальцах, указав предполагаемое направление =)) Если ещё больше на пальцах, то нужно найти место в сорцах (скорее всего, это будет функция или несколько функций), где сервер записывает полученную инфу (файл) на диск, и заменить код этой функции на свой...

Есть пара нюансов: - процесс обмена "сообщенийми" клиента с сервером нужно оставить без изменения, чтобы для клиента это происходило как обычная загрузка файлов на сервер - если нет ф-ции, где присутствует весь уже собранный "файловый" поток приходящий на сервер (то что будет записано в FS), то можно будет сделать "сборку" всех полученных байт в памяти

Martiner ()
Ответ на: Re: Небольшие изменения в vsFTPd от Martiner

Re: Небольшие изменения в vsFTPd

Он имеет ввиду реализовать средствами FUSE некую надстройку над существующей файловой системой, которая будет специальным образом обрабатывать write(), мне кажеться так. Сам FTP-сервер как бы не причем

oc ()
Ответ на: Re: Небольшие изменения в vsFTPd от oc

Re: Небольшие изменения в vsFTPd

>Он имеет ввиду реализовать средствами FUSE некую надстройку над существующей файловой системой, которая будет специальным образом обрабатывать write(), мне кажеться так. Сам FTP-сервер как бы не причем

Да, именно это я и имел в виду. Правда это возможно только в том случае, если топистартера устроит обработка файла частями, а не всего "скопом". Хотя и это можно обойти, например, если производить реальную запись файла (на низлежащую FS) по close().

Sectoid ★★★★★ ()

Re: Небольшие изменения в vsFTPd

ftpdataio.c

do_file_recv(struct vsf_session* p_sess, int file_fd, int is_ascii)

Или в нём или где-то рядом.

true_admin ★★★★★ ()

Re: Небольшие изменения в vsFTPd

Лучше попробовать прикрутить post-upload скрипт. Так логику изменения файла можно вынести за фтп-сервер (и написать, например, на sh + sed) -- более гибкое решение.

bvvv ()

Re: Небольшие изменения в vsFTPd

Запись на FS - это write, или fwrite. Может быть writev или pwrite. Грепать умеем?

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