Skip to content

Latest commit

 

History

History
executable file
·
171 lines (134 loc) · 4.64 KB

File metadata and controls

executable file
·
171 lines (134 loc) · 4.64 KB

Configuración Multi-Servidor

Descripción

El sistema ahora soporta múltiples configuraciones de servidores de correo, permitiendo a los usuarios conectarse a diferentes proveedores (Gmail, Outlook, Yahoo, etc.) o servidores personalizados desde la pantalla de login.

Archivo de Configuración

Ubicación

config/servers.json

Estructura

{
    "default_server": "default",
    "servers": {
        "server_id": {
            "name": "Nombre del Servidor",
            "description": "Descripción opcional",
            "imap": {
                "server": "imap.ejemplo.com",
                "port": 993,
                "ssl": true
            },
            "smtp": {
                "server": "smtp.ejemplo.com",
                "port": 587,
                "secure": "tls"
            }
        }
    }
}

Servidores Preconfigurados

1. default (Servidor Principal)

  • Usa valores de variables de entorno
  • Configuración por defecto del sistema

2. gmail (Gmail)

  • IMAP: imap.gmail.com:993 (SSL)
  • SMTP: smtp.gmail.com:587 (TLS)

3. outlook (Outlook/Hotmail)

  • IMAP: outlook.office365.com:993 (SSL)
  • SMTP: smtp-mail.outlook.com:587 (TLS)

4. yahoo (Yahoo Mail)

  • IMAP: imap.mail.yahoo.com:993 (SSL)
  • SMTP: smtp.mail.yahoo.com:587 (TLS)

5. custom (Servidor Personalizado)

  • Plantilla para configuraciones personalizadas

Uso

Para Usuarios

  1. Seleccionar Servidor: En la pantalla de login, elegir el servidor apropiado
  2. Información Automática: El sistema muestra la configuración del servidor seleccionado
  3. Login Normal: Introducir email y contraseña como siempre

Para Administradores

  1. Editar servers.json: Añadir/modificar configuraciones de servidores
  2. Variables de Entorno: El servidor "default" siempre usa las variables de .env
  3. Sin Reinicio: Los cambios en servers.json se aplican inmediatamente

API de la Clase Config

Métodos Principales

// Obtener lista de servidores
Config::getServers()

// Obtener servidor por defecto
Config::getDefaultServer()

// Establecer servidor actual
Config::setCurrentServer($serverId)

// Obtener configuración completa del servidor
Config::getServerConfig($serverId)

// Obtener configuración IMAP específica
Config::getImapConfig($serverId)

// Obtener configuración SMTP específica
Config::getSmtpConfig($serverId)

Métodos de Compatibilidad

// Estos métodos usan el servidor actual de la sesión
Config::getImapServer()
Config::getImapPort()
Config::getImapSsl()
Config::getSmtpServer()
Config::getSmtpPort()
Config::getSmtpSecure()

Cambios en las Clases

ImapClient

// Constructor actualizado con parámetro opcional de servidor
new ImapClient($username, $password, $serverId = null)

SmtpClient

// Constructor actualizado con parámetro opcional de servidor
new SmtpClient($username, $password, $serverId = null)

Sessión de Usuario

Variables de Sesión Añadidas

  • $_SESSION['current_server']: ID del servidor seleccionado

Persistencia

  • La selección del servidor se mantiene durante toda la sesión
  • Al hacer logout, se limpia la configuración del servidor

Pantalla de Login

Funcionalidades Añadidas

  1. Selector de Servidor: Dropdown con todos los servidores disponibles
  2. Información Dinámica: Muestra servidor:puerto del servidor seleccionado
  3. Detección Automática: Pre-selecciona el servidor por defecto
  4. Validación: El campo servidor es requerido

Personalización

Añadir Nuevo Servidor

  1. Editar config/servers.json
  2. Añadir nueva entrada en la sección "servers"
  3. Definir configuraciones IMAP y SMTP
  4. El servidor aparecerá automáticamente en el login

Ejemplo de Servidor Personalizado

"mi_empresa": {
    "name": "Mi Empresa",
    "description": "Servidor corporativo",
    "imap": {
        "server": "mail.miempresa.com",
        "port": 993,
        "ssl": true
    },
    "smtp": {
        "server": "mail.miempresa.com",
        "port": 587,
        "secure": "tls"
    }
}

Retrocompatibilidad

  • Variables de entorno: Siguen funcionando para el servidor "default"
  • Código existente: Los constructores sin serverId usan el servidor actual
  • Configuración anterior: El sistema funciona sin servers.json usando solo .env

Beneficios

  1. Flexibilidad: Soporte para múltiples proveedores sin reconfiguración
  2. Facilidad de uso: Los usuarios solo seleccionan su proveedor
  3. Mantenimiento: Configuraciones centralizadas y editables
  4. Escalabilidad: Fácil añadir nuevos servidores
  5. Compatibilidad: No rompe instalaciones existentes