Skip to content

Releases: jul-den/python-ftp-server

2.3.6

25 Sep 12:21

Choose a tag to compare

Hot fix

Full Changelog: v2.3.5...2.3.6

v2.3.5

23 Sep 10:10

Choose a tag to compare

v2.3.5 Pre-release
Pre-release

Улучшение стабильности и исправление режима сервиса | 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-worker argument

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 issues

5. 🚀 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:

  • ServiceManager now retrieves the logger from ConfigManager
  • 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

23 Sep 10:39

Choose a tag to compare

Простой 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