mirror of
https://github.com/johndoe6345789/docker-swarm-termina.git
synced 2026-04-25 22:25:35 +00:00
Split monolithic 631-line app.py into focused modules: **Structure:** - config.py - Configuration and shared state - utils/ - Utility functions (1-2 functions per file) - auth.py - Authentication helpers - docker_client.py - Docker client getter - exec_helpers.py - Command execution helpers - formatters.py - Data formatting utilities - terminal_helpers.py - Terminal operation helpers - diagnostics/docker_env.py - Docker diagnostics - routes/ - HTTP endpoints (1 endpoint per file) - login.py, logout.py, health.py - containers/list.py, exec.py, start.py, stop.py, restart.py, remove.py - handlers/ - WebSocket handlers (1 handler per file) - terminal/connect.py, disconnect.py, start.py, input.py, resize.py, register.py **Improvements:** - Reduced function complexity (from 21 locals to 18 max) - Fixed all pylint import order issues - Removed unused imports (select, timedelta, stat) - Applied lazy logging formatting throughout - Added comprehensive docstrings - Each file has focused responsibility - Easier to test, maintain, and extend **Pylint score improvement:** - Before: 25 problems (15 errors, 10 warnings) - After: Only duplicate code warnings (expected for similar routes) https://claude.ai/code/session_011PzvkCnVrsatoxbY3HbGXz
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
"""Main application entry point - refactored modular architecture."""
|
|
from flask import Flask
|
|
from flask_cors import CORS
|
|
from flask_socketio import SocketIO
|
|
|
|
from config import logger
|
|
from routes.login import login_bp
|
|
from routes.logout import logout_bp
|
|
from routes.health import health_bp
|
|
from routes.containers.list import list_bp
|
|
from routes.containers.exec import exec_bp
|
|
from routes.containers.start import start_bp
|
|
from routes.containers.stop import stop_bp
|
|
from routes.containers.restart import restart_bp
|
|
from routes.containers.remove import remove_bp
|
|
from handlers.terminal.register import register_terminal_handlers
|
|
from utils.diagnostics.docker_env import diagnose_docker_environment
|
|
from utils.docker_client import get_docker_client
|
|
|
|
# Initialize Flask app
|
|
app = Flask(__name__)
|
|
CORS(app, resources={r"/*": {"origins": "*"}})
|
|
|
|
# Initialize SocketIO
|
|
socketio = SocketIO(
|
|
app,
|
|
cors_allowed_origins="*",
|
|
async_mode='threading',
|
|
ping_timeout=60,
|
|
ping_interval=25,
|
|
logger=True,
|
|
engineio_logger=True
|
|
)
|
|
|
|
# Register blueprints
|
|
app.register_blueprint(login_bp)
|
|
app.register_blueprint(logout_bp)
|
|
app.register_blueprint(health_bp)
|
|
app.register_blueprint(list_bp)
|
|
app.register_blueprint(exec_bp)
|
|
app.register_blueprint(start_bp)
|
|
app.register_blueprint(stop_bp)
|
|
app.register_blueprint(restart_bp)
|
|
app.register_blueprint(remove_bp)
|
|
|
|
# Register WebSocket handlers
|
|
register_terminal_handlers(socketio)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Run diagnostics on startup
|
|
logger.info("Backend server starting...")
|
|
diagnose_docker_environment()
|
|
|
|
# Try to get Docker client and log result
|
|
test_client = get_docker_client()
|
|
if test_client:
|
|
logger.info("✓ Docker connection verified on startup")
|
|
else:
|
|
logger.error("✗ Docker connection FAILED on startup - check logs above for details")
|
|
|
|
socketio.run(app, host='0.0.0.0', port=5000, debug=True, allow_unsafe_werkzeug=True)
|