Форум сайта python.su
Хочу создать FTP сервер, заточенный под мои нужды. Использую либу http://code.google.com/p/pyftpdlib/
Не смотря на свою гибкость не нашел нужных для меня деталей:
1. Как я понял, список пользователей в виртуальной таблице задается перед запуском сервера и если его надо изменить, то это требует перезагрузки сервера. Можно ли как то это обойти?
2. Каким образом можно реализовать ограничение дисковой квоты, исходя из того что известно текущее свободное место для каждого юзера?
Может быть кто-то работал с этой либой или другой похожей?
Спасибо.
Офлайн
необязательно делать перезапуск, вызываешь ф-ию add_user и пльзователь добавляется.
для этого можно запустить параллельный поток который будет например опрашивать файлик или откроет соединение.
но я бы просто добавил в этот ftp сервер команду adduser, там всего 1 файл исходников
Офлайн
что-б появилась такая ф-ия, в класс FTPHandler надо добавить ф-ию
def ftp_ADDUSER(self,line):
self.server.add_user(line)
Офлайн
спасибо, второй вопрос не подскажете?
Офлайн
rootyесли штатно нет такого функционала, то можно тоже вручную - на функцию заливки файлов повешать проверку.
спасибо, второй вопрос не подскажете?
Офлайн
Сама идея как проверять понятна, не совсем понятно куда вешать, в исходниках не очень ориентируюсь.
Офлайн
для заливки на фтп ф-ия STOR, значит проверку нужно делать в ф-ию ftp_STOR
Офлайн
В этом методе есть имя файла, который будет загружен, однако не ясно как узнать размер будущего файла? Есть функция on_file_received(self, file), которая вызывается по окончании загрузки, но опять же есть свои подводные камни:
1. Она вызывается только при полной загрузке файла, то есть если разорвалось соединение или просто отменена передача, то пролет
2. Файл может быть довольно больших размеров и даже если он полностью закачается, лучше бы предупредить юзера об ограничении квоты перед началом закачки
Офлайн
при заливке самого файла можно контролировать на допустимый размер, при превышении разрывать соединение.
если нужно что-б все “красиво” было, нужно менять ftp на что-нибудь более подходящее под требования.
Офлайн