rooty
Фев. 20, 2010 20:03:13
Хочу создать FTP сервер, заточенный под мои нужды. Использую либу
http://code.google.com/p/pyftpdlib/Не смотря на свою гибкость не нашел нужных для меня деталей:
1. Как я понял, список пользователей в виртуальной таблице задается перед запуском сервера и если его надо изменить, то это требует перезагрузки сервера. Можно ли как то это обойти?
2. Каким образом можно реализовать ограничение дисковой квоты, исходя из того что известно текущее свободное место для каждого юзера?
Может быть кто-то работал с этой либой или другой похожей?
Спасибо.
o7412369815963
Фев. 20, 2010 21:38:39
необязательно делать перезапуск, вызываешь ф-ию add_user и пльзователь добавляется.
для этого можно запустить параллельный поток который будет например опрашивать файлик или откроет соединение.
но я бы просто добавил в этот ftp сервер команду adduser, там всего 1 файл исходников
o7412369815963
Фев. 20, 2010 21:45:46
что-б появилась такая ф-ия, в класс FTPHandler надо добавить ф-ию
def ftp_ADDUSER(self,line):
self.server.add_user(line)
че то типа того…
rooty
Фев. 20, 2010 22:29:42
спасибо, второй вопрос не подскажете?
o7412369815963
Фев. 20, 2010 22:49:26
rooty
спасибо, второй вопрос не подскажете?
если штатно нет такого функционала, то можно тоже вручную - на функцию заливки файлов повешать проверку.
например проверять вес папки пользователя, либо хранить список загруженных файлов с привязкой к пользователю, или ещё какой-нибудь метод.
rooty
Фев. 20, 2010 22:51:15
Сама идея как проверять понятна, не совсем понятно куда вешать, в исходниках не очень ориентируюсь.
o7412369815963
Фев. 20, 2010 23:10:17
для заливки на фтп ф-ия STOR, значит проверку нужно делать в ф-ию ftp_STOR
rooty
Фев. 21, 2010 10:22:38
В этом методе есть имя файла, который будет загружен, однако не ясно как узнать размер будущего файла? Есть функция on_file_received(self, file), которая вызывается по окончании загрузки, но опять же есть свои подводные камни:
1. Она вызывается только при полной загрузке файла, то есть если разорвалось соединение или просто отменена передача, то пролет
2. Файл может быть довольно больших размеров и даже если он полностью закачается, лучше бы предупредить юзера об ограничении квоты перед началом закачки
o7412369815963
Фев. 21, 2010 12:03:32
при заливке самого файла можно контролировать на допустимый размер, при превышении разрывать соединение.
если нужно что-б все “красиво” было, нужно менять ftp на что-нибудь более подходящее под требования.