Skip to main content

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.

  1. Navegar a la carpeta del backend:

    cd backend
    
  2. Crear un Entorno Virtual:

    python3 -m venv venv
    source venv/bin/activate  # En Windows: venv\Scripts\activate
    
  3. Instalar Dependencias:

    pip install -r requirements.txt
    
  4. Migración de Base de Datos:

    python manage.py migrate
    python manage.py createsuperuser  # Crea tu usuario administrador
    
  5. Correr 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 .env para secretos (ver backend/.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 EncryptedCharField para seguridad.
  • Serializers: Convierte modelos a JSON. Marca password como write_only (nunca se devuelve en un GET).
  • Utils (utils.py): El motor del sistema. La clase ServerCommander abstrae si el servidor es Local o Remoto.

📱 Configuración del Frontend (Flutter)

  1. Navegar a la carpeta: cd frontend
  2. Instalar dependencias: flutter pub get
  3. Correr la App: flutter run
  4. Configurar URL:
    • Emulador: http://10.0.2.2:8000.
    • Físico: http://TU_IP_LOCAL:8000.

🍎 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

  1. Edita models.py.
  2. Ejecuta makemigrations y migrate.
  3. Importante: Actualiza serializers.py para exponer el campo a la API.

¡Happy Coding! Desarrollado por CoreSaaS

Need more help? Contact support

💬
Asistente CoreSaaS BETA
⚠️ Límite: 10 consultas por sesión
×