Skip to content

Commit 93b0b31

Browse files
committed
hot fix for 2.3.5
1 parent dfd272a commit 93b0b31

File tree

4 files changed

+27
-29
lines changed

4 files changed

+27
-29
lines changed

README.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Simple Python FTP Server for Scanning Devices
22

3-
A lightweight, configurable FTP server designed specifically for receiving scanned documents from MFU devices. Built with Python and pyftpdlib, it supports both background daemon mode and interactive console operation with real-time configuration.
3+
A lightweight, configurable FTP server designed specifically for receiving scanned documents from MFP devices. Built with Python and pyftpdlib, it supports both background daemon mode and interactive console operation with real-time configuration.
44

55
## ⚠️ Current Status: Stable Beta
6-
Core functionality is production-ready and tested with MFU devices. The server is stable for everyday use but has some technical debt that needs addressing.
6+
Core functionality is production-ready and tested with MFP devices. The server is stable for everyday use but has known technical issues that require resolution.
77

88
## ✨ Features
99

@@ -12,7 +12,7 @@ Core functionality is production-ready and tested with MFU devices. The server i
1212
- **User Management**: Multiple user accounts with customizable permissions and access control
1313
- **Transfer Modes**: Configurable passive and active data transfer modes
1414
- **Anonymous Access**: Optional anonymous FTP access with restricted permissions
15-
- **Cross-Platform**: Works on Windows, Linux, and macOS (tested primarily on Windows)
15+
- **Cross-Platform**: Works on Windows, Linux, and macOS (tested primarily on Windows 10, additional testing required for other OSes)
1616

1717
## 🚀 Getting Started
1818

@@ -97,14 +97,13 @@ Interactive console provides real-time management for:
9797
- Directory listing and file operations
9898
- Configurable data port ranges
9999

100-
## 🐛 Known Technical Debt and Limitations
100+
## 🐛 Known Technical Issues and Limitations
101101

102102
### Architectural Issues
103-
- **Circular imports** between modules causing maintenance challenges
104103
- **SOLID principles violations** - classes have too many responsibilities
105104
- **Mixed concerns** - business logic mixed with configuration management
106105

107-
### Security Limitations
106+
### Security Issues
108107
- **Password hashing incomplete** - implementation needs proper salting and storage
109108
- **Plaintext passwords** stored even when hashing is configured
110109
- **Input validation missing** for interactive mode user inputs
@@ -130,10 +129,9 @@ Interactive console provides real-time management for:
130129
## 🗺️ Development Roadmap
131130

132131
### High Priority Fixes
133-
- [ ] Fix circular imports and improve module structure
132+
- [ ] Fix critical issues identified in the current version
134133
- [ ] Complete password hashing implementation with proper salting
135134
- [ ] Add input validation for interactive mode
136-
- [ ] Implement configuration caching to avoid repeated parsing
137135
- [ ] Fix PID file race conditions and Windows process detection
138136

139137
### Medium Priority Improvements
@@ -144,11 +142,10 @@ Interactive console provides real-time management for:
144142
- [ ] Fix threading issues and add proper timeouts
145143

146144
### Code Quality Enhancements
147-
- [ ] Eliminate code duplication
148-
- [ ] Replace magic numbers with constants
149-
- [ ] Improve resource management and cleanup
150145
- [ ] Add proper signal handling for different modes
151146
- [ ] Fix encoding issues for cross-platform compatibility
147+
- [ ] **No log rotation** - Log files can grow indefinitely. Need to add rotation and corresponding settings via configuration file
148+
- [ ] **No health-check mechanism** - Need to implement server health monitoring
152149

153150
## 🤝 Contributing
154151

@@ -164,7 +161,7 @@ We welcome contributions! Please feel free to submit pull requests, report bugs,
164161

165162
### Common Issues
166163
- **Port already in use**: Change default port in configuration
167-
- **Permission denied**: Check directory permissions for anonymous access
164+
- **Permission denied**: Check directory permissions
168165
- **Connection timeout**: Verify firewall settings and passive port ranges
169166

170167
### Getting Help
@@ -178,9 +175,11 @@ This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md
178175

179176
## 🙏 Acknowledgments
180177

181-
- Built on [pyftpdlib](https://github.com/giampaolo/pyftpdlib) - Extremely fast and scalable Python FTP server library
178+
- Built on [pyftpdlib](https://github.com/giampaolo/pyftpdlib) - extremely fast and scalable Python FTP server library
182179
- Inspired by real-world document management processes
183180

184181
---
185182

186-
**Note**: This software is stable for production use with MFU devices but has technical debt that will be addressed in future versions.
183+
**Note**: This software is stable for production use with MFP devices but has known technical issues planned for resolution in future versions.
184+
185+
Passwords are stored in plain text - **secure the configuration file**.

README_ru.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Легкий и настраиваемый FTP сервер, предназначенный для получения отсканированных документов с МФУ устройств. Поддерживает работу в фоновом режиме и интерактивном консольном режиме с интерактивной конфигурацией.
44

55
## ⚠️ Текущий статус: Стабильная бета-версия
6-
Основная функциональность готова к промышленному использованию и протестирована с МФУ устройствами. Сервер стабилен для повседневного использования, но имеет технический долг, который требует устранения.
6+
Основная функциональность готова к промышленному использованию и протестирована с МФУ устройствами. Сервер стабилен для повседневного использования, но имеет технические проблемы, которые требуют устранения.
77

88
## ✨ Возможности
99

@@ -12,7 +12,7 @@
1212
- **Управление пользователями**: Множественные учетные записи с настраиваемыми правами доступа
1313
- **Режимы передачи**: Настраиваемые пассивный и активный режимы передачи данных
1414
- **Анонимный доступ**: Опциональный анонимный доступ с ограниченными правами
15-
- **Кроссплатформенность**: Работает на Windows, Linux и macOS (в основном тестируется на Windows)
15+
- **Кроссплатформенность**: Работает на Windows, Linux и macOS. Основное тестирование проводилось на Windows 10 (для других ОС требуется дополнительное тестирование)
1616

1717
## 🚀 Начало работы
1818

@@ -100,7 +100,6 @@ python src/ftp_server.py --service-stop
100100
## 🐛 Известные технические проблемы и ограничения
101101

102102
### Архитектурные проблемы
103-
- **Циркулярные импорты** между модулями усложняют поддержку
104103
- **Нарушение принципов SOLID** - классы берут на себя слишком много ответственности
105104
- **Смешение ответственности** - бизнес-логика перемешана с управлением конфигурацией
106105

@@ -130,10 +129,9 @@ python src/ftp_server.py --service-stop
130129
## 🗺️ План разработки
131130

132131
### Высокоприоритетные исправления
133-
- [ ] Исправить циркулярные импорты и улучшить структуру модулей
132+
- [ ] Исправить выявленные критические проблемы тикужей версии
134133
- [ ] Завершить реализацию хеширования паролей с добавлением соли
135134
- [ ] Добавить проверку ввода для интерактивного режима
136-
- [ ] Реализовать кэширование конфигурации для избежания повторного парсинга
137135
- [ ] Исправить состояния гонки PID файлов и определение процессов Windows
138136

139137
### Среднеприоритетные улучшения
@@ -144,11 +142,10 @@ python src/ftp_server.py --service-stop
144142
- [ ] Исправить проблемы с потоками и добавить правильные таймауты
145143

146144
### Улучшения качества кода
147-
- [ ] Устранить дублирование кода
148-
- [ ] Заменить магические числа на константы
149-
- [ ] Улучшить управление ресурсами и очистку
150145
- [ ] Добавить правильную обработку сигналов для разных режимов
151146
- [ ] Исправить проблемы с кодировками для кроссплатформенной совместимости
147+
- [ ] Нет ротации логов - Файлы логов могут расти бесконечно. Нужно добавить ротацию и соотвествующие настройки через файл конфигурации
148+
- [ ] Нет механизма "health-check"
152149

153150
## 🤝 Участие в разработке
154151

@@ -164,7 +161,7 @@ python src/ftp_server.py --service-stop
164161

165162
### Частые проблемы
166163
- **Порт уже используется**: Измените порт по умолчанию в конфигурации
167-
- **Доступ запрещен**: Проверьте права доступа к директориям для анонимного доступа
164+
- **Доступ запрещен**: Проверьте права доступа к директориям
168165
- **Таймаут соединения**: Проверьте настройки фаервола и диапазоны пассивных портов
169166

170167
### Получение помощи
@@ -183,4 +180,6 @@ python src/ftp_server.py --service-stop
183180

184181
---
185182

186-
**Примечание**: Данное программное обеспечение стабильно для промышленного использования с МФУ устройствами, но имеет технический долг, который будет устранен в будущих версиях.
183+
**Примечание**: Данное программное обеспечение стабильно для промышленного использования с МФУ устройствами, но имеет технические проблемы, которые планируется устранить в будущих версиях.
184+
185+
Пароли хранятся в открытом виде - **защитите конфигурационный файл**.

src/ftp_server_users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ def toggle_user(config_manager: ConfigManager):
179179
def delete_user(config_manager: ConfigManager):
180180
"""Удаление пользователя"""
181181
logger = config_manager.get_logger()
182-
print_users(config_manager, logger)
182+
print_users(config_manager)
183183

184184
user_id = get_user_id_from_input(config_manager, "\nВведите номер пользователя для удаления: ")
185185
if not user_id:

src/version_info.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# UTF-8
22
VSVersionInfo(
33
ffi=FixedFileInfo(
4-
filevers=(2, 3, 5, 0),
5-
prodvers=(2, 3, 5, 0),
4+
filevers=(2, 3, 6, 1),
5+
prodvers=(2, 3, 6, 1),
66
mask=0x3f,
77
flags=0x0,
88
OS=0x4,
@@ -17,12 +17,12 @@ VSVersionInfo(
1717
[
1818
StringStruct(u'CompanyName', u'ФГБУ Российская государственная библиотека'),
1919
StringStruct(u'FileDescription', u'Простой FTP сервер для сохранения файлов со сканера сетевого МФУ'),
20-
StringStruct(u'FileVersion', u'2.3.5'),
20+
StringStruct(u'FileVersion', u'2.3.6'),
2121
StringStruct(u'InternalName', u'FTPServer'),
2222
StringStruct(u'LegalCopyright', u'Copyright © 2025 Баранчук Ю. Н. ФГБУ "РГБ"'),
2323
StringStruct(u'OriginalFilename', u'ftp_server.exe'),
2424
StringStruct(u'ProductName', u'FTP Server for Scanner'),
25-
StringStruct(u'ProductVersion', u'2.3.5'),
25+
StringStruct(u'ProductVersion', u'2.3.6'),
2626
StringStruct(u'ProgrammingLanguage', u'Python'),
2727
StringStruct(u'Author', u'Баранчук Юлий Николаевич'),
2828
StringStruct(u'Comments', u'Создано с помощью Python и PyInstaller')

0 commit comments

Comments
 (0)