LINUX.ORG.RU

Сообщения Martiner

 

Python -> модификация pyftplib

Помогите пожалуйсто в следующем вопросе: необходимо "модифицировать" либу следующим образом: нужно, чтобы в ф-ции "ftp_STOR" данные, которые пришли по FTP в виде файла и должны "упасть" в файловую систему не "падали" туда; поток с этими данными должен отпарсиваться нужным образом.... Собственно, вопрос: __ где "место", где он пишет на диск ново пришедший файл? __ как "добраться" до потока с данными ("буфера"), в который пишется ново пришедший файл?

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

http://code.google.com/p/pyftpdlib/ -- сайт проджекта http://pyftpdlib.googlecode.com/files/pyftpdlib-0.5.1.tar.gz -- либа собственной персоны

Ф-ция, где происходит прием нового файла и по логики должна быть запись на диск или в буфер:

def ftp_STOR(self, file, mode='w'): """Store a file (transfer from the client to the server).""" # A resume could occur in case of APPE or REST commands. # In that case we have to open file object in different ways: # STOR: mode = 'w' # APPE: mode = 'a' # REST: mode = 'r+' (to permit seeking on file object) if 'a' in mode: cmd = 'APPE' else: cmd = 'STOR' line = self.fs.fs2ftp(file) rest_pos = self.restart_position self.restart_position = 0 if rest_pos: mode = 'r+' try: fd = self.run_as_current_user(self.fs.open, file, mode + 'b') except IOError, err: why = _strerror(err) self.log('FAIL %s "%s". %s.' %(cmd, line, why)) self.respond('550 %s.' %why) return

if rest_pos: # Make sure that the requested offset is valid (within the # size of the file being resumed). # According to RFC-1123 a 554 reply may result in case # that the existing file cannot be repositioned as # specified in the REST. ok = 0 try: assert not rest_pos > self.fs.getsize(file) fd.seek(rest_pos) ok = 1 except AssertionError: why = "Invalid REST parameter" except IOError, err: why = _strerror(err) if not ok: self.respond('554 %s' %why) self.log('FAIL %s "%s". %s.' %(cmd, line, why)) return

self.log('OK %s "%s". Upload starting.' %(cmd, line)) if self.data_channel is not None: self.respond("125 Data connection already open. Transfer starting.") self.data_channel.file_obj = fd self.data_channel.enable_receiving(self.current_type) else: self.respond("150 File status okay. About to open data connection.") self._in_dtp_queue = fd

Martiner
()

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

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

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

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

Martiner
()

Вопрос по 'пробросу' radmina через шлюз с iptables

Есть шлюз с реальным IP, за ним сеть с частной адресацией (192.168.10.*). Нужно поднять на одной из этих машин radmina и сделать его доступным из инета. Для этого написал правило: iptables -t nat -A PREROUTING -p tcp -d $home_ip --dport 4899 -j DNAT --to-destination 192.168.10.11

При подключении к реальному IP шлюза с $home_ip radmin выдает ошибку. Подскажите пожалуйсто в чем может быть проблемма. Заранее спасибо!

Martiner
()

Помогите разработать несложный скрипт(неско строк)

Помогите пожалуйсто написать небольшой скрипт. Никак не получается

Для заданных файлов (вводятся с клавы) заменить строку с заданным номером (тоже с клавы) на другую строку (тоже с клавы).

Если по простому: 1. Все файлы (имя с клавы). 2. Заменить строку с номером $n (введено с клавы) на другую строку $s (тоже от пользователя).

Заранее благодарен!

Martiner
()

RSS подписка на новые темы