Легкий и настраиваемый FTP сервер, предназначенный для получения отсканированных документов с МФУ устройств. Поддерживает работу в фоновом режиме и интерактивном консольном режиме с интерактивной конфигурацией.
Основная функциональность готова к промышленному использованию и протестирована с МФУ устройствами. Сервер стабилен для повседневного использования, но имеет технические проблемы, которые требуют устранения.
- Два режима работы: Запуск в качестве фонового процесса или интерактивного консольного приложения
- Автоматическая конфигурация: Самосоздающийся конфигурационный файл с безопасными случайными учетными данными
- Управление пользователями: Множественные учетные записи с настраиваемыми правами доступа
- Режимы передачи: Настраиваемые пассивный и активный режимы передачи данных
- Анонимный доступ: Опциональный анонимный доступ с ограниченными правами
- Кроссплатформенность: Работает на Windows, Linux и macOS. Основное тестирование проводилось на Windows 10 (для других ОС требуется дополнительное тестирование)
- Python 3.7 или выше
- Менеджер пакетов pip
- Клонируйте репозиторий:
git clone https://github.com/your-username/python-ftp-server.git
cd python-ftp-server- Установите зависимости:
pip install -r requirements.txt- Запустите сервер в первый раз (автоматически создаст конфиг):
python src/ftp_server.pyСервер автоматически создает конфигурационный файл при первом запуске с:
- Безопасными случайными учетными данными администратора (отображаются в консоли)
- Порт по умолчанию 2121
- Диапазон пассивных портов 60000-60100
- Безопасные права доступа по умолчанию
Отредактируйте конфигурационный файл для настройки:
- Сетевых настроек сервера (IP, порты)
- Учетных записей пользователей и прав доступа
- Предпочтений режима работы
Создайте самостоятельный исполняемый файл для Windows:
pyinstaller --onefile --console src/ftp_server.pypython src/ftp_server.py --console# Запуск в качестве фонового процесса
python src/ftp_server.py --service-start
# Остановка работающего фонового процесса
python src/ftp_server.py --service-stop--console: Принудительный запуск в интерактивном консольном режиме--service-start: Запуск в качестве фонового процесса--service-stop: Остановка работающего фонового процесса--service-worker: Внутренний параметр для рабочего процесса
Интерактивная консоль предоставляет реальное управление для:
- Сетевых настроек сервера и конфигурации портов
- Управления учетными записями пользователей (создание, изменение, удаление)
- Контроля прав доступа и ограничений
- Настроек режима работы
- Реализация стандартного FTP протокола
- Оба режима передачи: активный и пассивный
- Аутентификация пользователей
- Листинг директорий и файловые операции
- Настраиваемые диапазоны портов данных
- Нарушение принципов SOLID - классы берут на себя слишком много ответственности
- Смешение ответственности - бизнес-логика перемешана с управлением конфигурацией
- Неполная реализация хеширования паролей - требуется правильное добавление соли и хранение
- Пароли в открытом виде хранятся даже при настроенном хешировании
- Отсутствие проверки ввода в интерактивном режиме
- Не настоящая Служба Windows - фоновый режим использует только процесс-демон
- Состояния гонки PID файлов - потенциальные проблемы в управлении службой
- Ненадежное определение PID на Windows системах
- Проблемы с обработкой путей с обратными слешами в некоторых сценариях
- Накладные расходы парсинга конфигурации - многократный повторный парсинг без кэширования
- Блокирующие операции в основном потоке влияют на отзывчивость
- Отсутствие пула соединений для множественных одновременных подключений
- Дублирование кода между модулями
- Магические числа без должной документации
- Жестко закодированные значения для таймаутов и лимитов перезапусков
- Управление ресурсами - потенциальные утечки памяти
- Проблемы с кодировками возможны на разных платформах
- Исправить выявленные критические проблемы тикужей версии
- Завершить реализацию хеширования паролей с добавлением соли
- Добавить проверку ввода для интерактивного режима
- Исправить состояния гонки PID файлов и определение процессов Windows
- Рефакторинг классов для следования принципам SOLID
- Разделение бизнес-логики и управления конфигурацией
- Добавить правильную обработку ошибок и повсеместное логирование
- Реализовать логику повторных попыток для критических операций
- Исправить проблемы с потоками и добавить правильные таймауты
- Добавить правильную обработку сигналов для разных режимов
- Исправить проблемы с кодировками для кроссплатформенной совместимости
- Нет ротации логов - Файлы логов могут расти бесконечно. Нужно добавить ротацию и соотвествующие настройки через файл конфигурации
- Нет механизма "health-check"
Мы приветствуем участие в разработке! Вы можете отправлять запросы на включение изменений, сообщать об ошибках или предлагать новые функции.
- Сделайте форк проекта
- Создайте ветку для вашей функции (
git checkout -b feature/AmazingFeature) - Зафиксируйте изменения (
git commit -m 'Add some AmazingFeature') - Отправьте в ветку (
git push origin feature/AmazingFeature) - Откройте Pull Request
- Порт уже используется: Измените порт по умолчанию в конфигурации
- Доступ запрещен: Проверьте права доступа к директориям
- Таймаут соединения: Проверьте настройки фаервола и диапазоны пассивных портов
- Проверьте существующие Issues для похожих проблем
- Создайте новый Issue с подробным описанием вашей проблемы
- Включите логи сервера и детали конфигурации (без паролей)
Этот проект лицензирован под MIT License - подробности см. в файле LICENSE.md.
- Построен на pyftpdlib - очень быстрая и масштабируемая библиотека FTP сервера на Python
- Вдохновлен реальными процессами управления документами
Примечание: Данное программное обеспечение стабильно для промышленного использования с МФУ устройствами, но имеет технические проблемы, которые планируется устранить в будущих версиях.
Пароли хранятся в открытом виде - защитите конфигурационный файл.