Guía para Desarrolladores - CS Monitor
¡Bienvenido al código fuente de CS Monitor! Esta guía cubre la instalación, configuración y arquitectura para desarrolladores que deseen extender o modificar el proyecto.
🛠 Prerrequisitos
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- SO: Linux (Ubuntu recomendado), macOS o Windows.
- Backend: Python 3.12+, Docker & Docker Compose (opcional).
- Frontend: Flutter SDK (Última versión estable), Android Studio / VS Code.
- Git: Control de versiones.
📂 Estructura del Proyecto
(Ver estructura en archivo README.md principal)
🐍 Configuración del Backend (Django)
El backend maneja las conexiones SSH utilizando Paramiko y expone los datos a través de Django Rest Framework.
Navegar a la carpeta del backend:
cd backendCrear un Entorno Virtual:
python3 -m venv venv source venv/bin/activate # En Windows: venv\Scripts\activateInstalar Dependencias:
pip install -r requirements.txtMigración de Base de Datos:
python manage.py migrate python manage.py createsuperuser # Crea tu usuario administradorCorrer el Servidor Local:
python manage.py runserver 0.0.0.0:8000
💡 Conceptos Clave
- Conexiones SSH: La lógica está en
backend/sshmanager/utils.py. - Seguridad: Las contraseñas y claves privadas se encriptan en la BD (ver
backend/servercontrol/settings/base.py). - Variables de entorno: Usa
.envpara secretos (verbackend/.env.example).
🧠 Explicación del Código Backend
1. Módulos de Vistas (/sshmanager/views/)
| Archivo | Descripción |
|---|---|
api_crud.py |
Configuración. Endpoints para agregar/editar Servicios y Logs. |
api_servers.py |
Inventario de Servidores. Maneja el alta y edición de servidores. |
commands_views.py |
Control del Sistema. • ExecuteCommandView: Ejecuta comandos y maneja la inyección de sudo.• ManageServiceView: Controla systemctl.• MaintenanceView: Ejecuta scripts de mantenimiento. |
files_views.py |
Sistema de Archivos. Backend para el explorador y editor de código. |
logs_views.py |
Lector de Logs. Alterna dinámicamente entre tail (archivos) y journalctl (servicios). |
resources_views.py |
Métricas. Obtiene CPU, RAM y Disco en tiempo real. |
2. Otros Archivos Clave
- Models: Define el esquema de datos. Implementa
EncryptedCharFieldpara seguridad. - Serializers: Convierte modelos a JSON. Marca
passwordcomowrite_only(nunca se devuelve en un GET). - Utils (
utils.py): El motor del sistema. La claseServerCommanderabstrae si el servidor es Local o Remoto.
📱 Configuración del Frontend (Flutter)
- Navegar a la carpeta:
cd frontend - Instalar dependencias:
flutter pub get - Correr la App:
flutter run - Configurar URL:
- Emulador:
http://10.0.2.2:8000. - Físico:
http://TU_IP_LOCAL:8000.
- Emulador:
🍎 Nota sobre iOS
Para compilar él .ipa necesitas una Mac con Xcode, aunque el código es 100% compatible.
🧩 Explicación del Código Frontend
1. Dependencias Clave (pubspec.yaml)
| Paquete | Propósito |
|---|---|
flutter_secure_storage |
Crítico. Almacena URL/Token encriptados (AES). |
local_auth |
Maneja la biometría (FaceID/Huella). |
ansicolor |
Parsea colores para la terminal. |
2. Archivos Clave (lib/)
| Archivo | Descripción |
|---|---|
lib/main.dart |
Cerebro. Maneja el ciclo de vida y el bucle de seguridad biométrica. |
lib/services/api_service.dart |
Red. Singleton para peticiones HTTP y gestión de sesión. |
lib/screens/console_screen.dart |
Terminal. Emulador de terminal con soporte de colores. |
lib/screens/file_editor_screen.dart |
Editor. Editor de código monoespaciado. |
lib/screens/home_screen.dart |
Dashboard. Carga datos en paralelo (Future.wait). |
lib/screens/login_screen.dart |
Login. Asistente de primera ejecución con corrección de URL. |
lib/screens/server_config_screen.dart |
Configuración. Formulario dinámico para SSH. |
lib/widgets/resource_card.dart |
Monitor. Barras de CPU/RAM con colores dinámicos. |
lib/widgets/service_card.dart |
Servicios. Controla el estado y protege servicios críticos. |
🚀 Extendiendo la Funcionalidad
1. Extender el Gestor SSH
Para agregar una función (ej. descargar_archivo), modifica backend/sshmanager/utils.py.
Patrón: Debes manejar los dos escenarios (Local y Remoto) dentro de ServerCommander.
2. Agregar Campos a la BD
- Edita
models.py. - Ejecuta
makemigrationsymigrate. - Importante: Actualiza
serializers.pypara exponer el campo a la API.
¡Happy Coding! Desarrollado por CoreSaaS