Releases: jul-den/python-ftp-server
2.3.6
v2.3.5
Улучшение стабильности и исправление режима сервиса | Stability Improvements & Service Mode Fixes
📋 Кратко для русскоязычных пользователей | English summary above
Основные улучшения:
- Исправление критических ошибок сервисного режима
- Улучшенная работа с сетевыми путями
- Более стабильный запуск как Windows-сервис
- Автоматическое отключение пользователей с проблемными директориями
⬇️ Полная версия на русском ниже
📋 Summary for English Users
This release focuses on improving stability, especially in service mode, and enhances path handling for network resources.
Key Highlights:
- 🔄 Logging architecture refactoring
- 🐛 Critical service mode fixes
- 📁 Improved network path handling
- 🔧 Enhanced user validation
⬇️ Full version in English above
🎯 Основные изменения в версии 2.3.5
1. 🔄 Рефакторинг архитектуры логирования
- Убрана жесткая привязка к именам файлов (
ftp_server.cfg,ftp_server.log) - Добавлена функция
get_absolute_path()для динамического определения путей - Логгер теперь создается с передачей файла лога в конструктор
2. 🐛 Критическое исправление сервисного режима
- Исправлено:
ConfigManager(working_dir)→ConfigManager(base_dir=working_dir) - Устранена ошибка
'str' object has no attribute 'set_log_file' - Улучшена обработка аргумента
--service-worker
3. 📁 Улучшенная работа с путями
- Централизованное управление путями через
ConfigManager - Исправлена проблема с относительными путями в сервисном режиме
- Более надежное определение базовой директории
4. 🔧 Улучшения валидации пользователей
# Добавлена проверка при включении/добавлении пользователя
is_valid, error_msg = config_manager._validate_directory(directory, f"пользователя {username}", check_access=True)
if not is_valid:
user_enabled = False # Автоматическое отключение при проблемах5. 🚀 Улучшения сервисного режима
- Более стабильный запуск worker-процесса
- Улучшенная обработка PID-файлов
- Добавлен основной цикл мониторинга в сервисном процессе
6. 📊 Улучшенное логирование и диагностика
- Добавлены traceback при критических ошибках
- Более информативные сообщения об ошибках
- Логирование состояния сервиса
🔄 Ключевые технические изменения
Архитектурные улучшения:
ServiceManagerтеперь получает логгер изConfigManager- Убраны прямые зависимости между модулями
- Улучшена инкапсуляция
Исправления безопасности:
- Проверка доступности директорий перед включением пользователей
- Защита от некорректных путей
- Более строгая валидация конфигурации
Стабильность сервиса:
# Добавлен мониторинг работоспособности
while True:
time.sleep(10)
if not self.ftp_core.server_thread or not self.ftp_core.server_thread.is_alive():
self.logger("ОШИБКА: поток сервера завершился неожиданно")
break🎁 Что это дает пользователям
Для сервисного режима:
- ✅ Стабильный запуск как Windows-сервис
- ✅ Автоматическое восстановление при сбоях
- ✅ Корректное логирование в файл
Для консольного режима:
- ✅ Улучшенная обработка сетевых путей
- ✅ Лучшая диагностика проблем
- ✅ Более информативные сообщения об ошибках
Для администраторов:
- ✅ Автоматическое отключение пользователей с проблемными директориями
- ✅ Улучшенный мониторинг состояния сервера
- ✅ Более надежное управление конфигурацией
📈 Версионные изменения
- FileVersion: 2.3.0.1 → 2.3.5.0
- ProductVersion: 2.3.0.1 → 2.3.5.0
Версия 2.3.5 представляет собой значительное улучшение стабильности и надежности, особенно для сервисного режима работы и обработки сетевых ресурсов.
Выявленные проблемы (будут исправлены в следующей версии)
- Режим консоли: Некорректное отображение изменённых настроек пользователя (запись в файл конфигурации корректная)
- Режим консоли: Из-за рудимента в коде, оставшегося после рефакторинга, не работает удаление пользователя
🎯 What's New in Version 2.3.5
1. 🔄 Logging Architecture Refactoring
- Removed hard-coded filenames (
ftp_server.cfg,ftp_server.log) - Added
get_absolute_path()function for dynamic path resolution - Logger is now initialized with the log file path passed to its constructor
2. 🐛 Critical Service Mode Fix
- Fixed:
ConfigManager(working_dir)→ConfigManager(base_dir=working_dir) - Resolved error
'str' object has no attribute 'set_log_file' - Improved handling of the
--service-workerargument
3. 📁 Improved Path Handling
- Centralized path management via
ConfigManager - Fixed an issue with relative paths in service mode
- More reliable determination of the base directory
4. 🔧 Enhanced User Validation
# Added validation when enabling/adding a user
is_valid, error_msg = config_manager._validate_directory(directory, f"for user {username}", check_access=True)
if not is_valid:
user_enabled = False # Automatically disable on issues5. 🚀 Service Mode Improvements
- More stable worker process startup
- Enhanced PID file handling
- Added main monitoring loop to the service process
6. 📊 Enhanced Logging and Diagnostics
- Added traceback for critical errors
- More informative error messages
- Service state logging
🔄 Key Technical Changes
Architectural Improvements:
ServiceManagernow retrieves the logger fromConfigManager- Removed direct dependencies between modules
- Improved encapsulation
Security Fixes:
- Directory accessibility check before enabling users
- Protection against invalid paths
- Stricter configuration validation
Service Stability:
# Added health monitoring
while True:
time.sleep(10)
if not self.ftp_core.server_thread or not self.ftp_core.server_thread.is_alive():
self.logger("ERROR: Server thread terminated unexpectedly")
break🎁 Benefits for Users
For Service Mode:
- ✅ Stable startup as a Windows Service
- ✅ Automatic recovery from crashes
- ✅ Correct file logging
For Console Mode:
- ✅ Improved handling of network paths
- ✅ Better problem diagnostics
- ✅ More informative error messages
For Administrators:
- ✅ Automatic disabling of users with problematic directories
- ✅ Enhanced server state monitoring
- ✅ More reliable configuration management
📈 Version Changes
- FileVersion: 2.3.0.1 → 2.3.5.0
- ProductVersion: 2.3.0.1 → 2.3.5.0
Version 2.3.5 represents a significant improvement in stability and reliability, especially for service mode operation and handling of network resources.
Known Issues (to be fixed in the next release)
- Console Mode: Incorrect display of modified user settings (configuration file is written correctly).
- Console Mode: User deletion does not work due to a code artifact left after refactoring.
Full Changelog: v2.3.0...v2.3.5
EXE создан через PyInstaller | EXE built with PyInstaller
v2.3.0
Простой FTP сервер на Python для устройств сканирования
Легкий и настраиваемый FTP сервер, первый стабильный релиз.
⚠️ Текущий статус: Стабильная бета-версия
Основная функциональность готова к промышленному использованию и протестирована с МФУ устройствами. Сервер стабилен для повседневного использования, но имеет технические проблемы, которые требуют устранения.
Не тестировалось на ОС отличных от Windows.
✨ Возможности
- Два режима работы: Запуск в качестве фонового процесса или интерактивного консольного приложения
- Автоматическая конфигурация: Самосоздающийся конфигурационный файл с безопасными случайными учетными данными
- Управление пользователями: Множественные учетные записи с настраиваемыми правами доступа
- Режимы передачи: Настраиваемые пассивный и активный режимы передачи данных
- Анонимный доступ: Опциональный анонимный доступ с ограниченными правами
- Кроссплатформенность: Работает на Windows, Linux и macOS (в основном тестируется на Windows)
🐛 Известные технические проблемы и ограничения
- Сервисный режим: при запуске EXE файла в сервисном режиме теряется путь рабочего каталога, из-за чего не правильно строится работа с файлом конфигурации (исправлено в версии 2.3.5).
Full Changelog: https://github.com/jul-den/python-ftp-server/commits/v2.3.0