Найти - Пользователи
Полная версия: FTP server
Начало » Python для экспертов » FTP server
1
rooty
Хочу создать FTP сервер, заточенный под мои нужды. Использую либу http://code.google.com/p/pyftpdlib/
Не смотря на свою гибкость не нашел нужных для меня деталей:
1. Как я понял, список пользователей в виртуальной таблице задается перед запуском сервера и если его надо изменить, то это требует перезагрузки сервера. Можно ли как то это обойти?
2. Каким образом можно реализовать ограничение дисковой квоты, исходя из того что известно текущее свободное место для каждого юзера?

Может быть кто-то работал с этой либой или другой похожей?
Спасибо.
o7412369815963
необязательно делать перезапуск, вызываешь ф-ию add_user и пльзователь добавляется.
для этого можно запустить параллельный поток который будет например опрашивать файлик или откроет соединение.
но я бы просто добавил в этот ftp сервер команду adduser, там всего 1 файл исходников
o7412369815963
что-б появилась такая ф-ия, в класс FTPHandler надо добавить ф-ию
def ftp_ADDUSER(self,line):
self.server.add_user(line)
че то типа того…
rooty
спасибо, второй вопрос не подскажете?
o7412369815963
rooty
спасибо, второй вопрос не подскажете?
если штатно нет такого функционала, то можно тоже вручную - на функцию заливки файлов повешать проверку.
например проверять вес папки пользователя, либо хранить список загруженных файлов с привязкой к пользователю, или ещё какой-нибудь метод.
rooty
Сама идея как проверять понятна, не совсем понятно куда вешать, в исходниках не очень ориентируюсь.
o7412369815963
для заливки на фтп ф-ия STOR, значит проверку нужно делать в ф-ию ftp_STOR
rooty
В этом методе есть имя файла, который будет загружен, однако не ясно как узнать размер будущего файла? Есть функция on_file_received(self, file), которая вызывается по окончании загрузки, но опять же есть свои подводные камни:
1. Она вызывается только при полной загрузке файла, то есть если разорвалось соединение или просто отменена передача, то пролет
2. Файл может быть довольно больших размеров и даже если он полностью закачается, лучше бы предупредить юзера об ограничении квоты перед началом закачки
o7412369815963
при заливке самого файла можно контролировать на допустимый размер, при превышении разрывать соединение.

если нужно что-б все “красиво” было, нужно менять ftp на что-нибудь более подходящее под требования.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB