Inicio / TLS / Módulos

50 Modules

Cada module es una biblioteca compartida (.so) que exporta 4 funciones. Cada uno hace una sola cosa. Juntos, se componen en cualquier sistema.

Infraestructura

mod_cli

CLI sobre UNIX socket. Edición de línea completa con teclas de dirección, historial (64 comandos), autocompletado con tabulador. Estado por cliente: path actual, sesión de autenticación. Conectar mediante portal -r o portalctl.

v0.1.0 · Infraestructura

mod_web

Gateway de API REST HTTP/HTTPS. Mapea métodos HTTP a métodos Portal. Genera automáticamente un índice de API a partir de los paths activos. Tres métodos de autenticación: API Key, Bearer Token, HTTP Basic Auth. CORS habilitado. Dirección de enlace configurable.

v0.8.0 · Infraestructura

mod_node

Federation de nodos sobre TCP/TLS. Conecta instancias Portal en una red distribuida. Pool de hilos worker por peer. Wire protocol PORTAL02. Hub routing para traversal de NAT. Autenticación por federation key (SHA-256). Reconexión automática.

v0.4.0 · Infraestructura

mod_ssh

Servidor SSH para acceso CLI remoto. Cualquier cliente SSH estándar se conecta y obtiene la CLI interactiva completa. Usa el sistema propio de usuario/contraseña de Portal.

v1.0.0 · Infraestructura

mod_config_sqlite

Backend de almacenamiento SQLite. Transparente — se registra como proveedor de almacenamiento del core. Crea tablas automáticamente. Modo WAL para concurrencia.

v0.6.0 · Infraestructura

mod_config_psql

Backend de almacenamiento PostgreSQL. Transparente — se registra como proveedor de almacenamiento del core. Crea la base de datos y las tablas automáticamente. Consultas parametrizadas (seguro contra inyección SQL).

v0.5.0 · Infraestructura

Datos y mensajería

mod_cache

Caché clave-valor en memoria con expiración por TTL. Hash table thread-safe. CLI: cache set/get/del/keys/flush. Emite eventos ante cambios.

v1.0.0 · Datos

mod_kv

Almacén clave-valor persistente. Respaldado en fichero, sobrevive a reinicios. Cada clave se almacena como un fichero. Thread-safe, protección contra path traversal.

v1.0.0 · Datos

mod_shm

Regiones de memoria compartida POSIX con nombre. Crear, leer, escribir, destruir. Emite eventos al crear.

v1.0.0 · Datos

mod_queue

Colas de mensajes FIFO thread-safe. Push, pop, peek. Emite eventos en push/pop.

v1.0.0 · Datos

mod_websocket

Servidor WebSocket para push en tiempo real a navegadores. Los clientes envían nombres de path y reciben respuestas.

v1.0.0 · Datos

mod_mqtt

Broker MQTT ligero. Los clientes publican/se suscriben a topics. La publicación MQTT se mapea a la emisión de eventos Portal.

v1.0.0 · Datos

mod_email

Emisor de correo SMTP. Servidor y autenticación configurables. Emite evento al enviar.

v1.0.0 · Datos

mod_file

Operaciones de sistema de ficheros en sandbox. Leer, escribir, listar, eliminar, info, mkdir. Protección contra path traversal. Tamaño máximo de fichero y directorio base configurables.

v1.0.0 · Datos

Lógica y scripting

mod_logic

Framework de lógica de aplicación. Orquestador independiente del lenguaje. Gestiona scripts, rutas y handlers de eventos. Delega la ejecución a motores de lenguaje mediante mensajes de path.

v1.0.0 · Lógica

mod_logic_lua

Intérprete embebido Lua 5.4. En proceso, zero-copy. API: portal.get(), portal.call(), portal.set(), portal.route(), portal.on(), portal.log().

v1.0.0 · Lógica

mod_logic_python

Python 3 en subproceso fork. Puente de comunicación JSON por pipe. import portal, misma API. Evita conflictos de señales de CPython con libev.

v1.1.0 · Lógica

mod_logic_c

Motor de scripting en C. Compila ficheros .c con gcc en tiempo de carga, produce .so y los abre con dlopen. Velocidad nativa con hot-reload. Usa portal.h directamente.

v1.0.0 · Lógica

mod_logic_pascal

Motor de scripting Free Pascal. Compila ficheros .pas con fpc. Exporta app_load, app_handle, app_unload con convención cdecl.

v1.0.0 · Lógica

Sistema y monitorización

mod_metrics

Métricas del sistema en tiempo real desde /proc: uso de CPU, memoria, espacio en disco, carga media, tiempo de actividad.

v1.0.0 · Sistema

mod_health

Sondas de liveness/readiness. Compatible con Kubernetes/Docker. CLI: health, uptime.

v1.0.0 · Sistema

mod_sysinfo

Información del sistema: hostname, SO, kernel, número de CPUs, interfaces de red, variables de entorno.

v1.0.0 · Sistema

mod_process

Ejecución de comandos del sistema en sandbox vía popen. Lista blanca configurable. Rechaza patrones peligrosos. Solo administradores.

v1.0.0 · Sistema

mod_log

Acceso a los logs de la instancia Portal mediante el sistema de paths. Tail, búsqueda por patrón, listar ficheros de log, rotar.

v1.0.0 · Sistema

mod_audit

Log de auditoría en buffer circular. Se suscribe automáticamente a /events/*. Buscable por usuario o path. Persistencia en fichero opcional.

v1.0.0 · Sistema

mod_cron

Planificador de tareas por intervalo. Las tareas disparan llamadas a paths. CLI: cron add/remove/trigger/jobs. Emite eventos.

v1.0.0 · Sistema

mod_scheduler

Planificador de tareas diferidas de una sola ejecución. Las tareas se ejecutan una vez en un momento específico. Complemento a los intervalos de mod_cron.

v1.0.0 · Sistema

mod_worker

Pools de hilos con nombre para ejecución de tareas en segundo plano. Número de hilos configurable, envío de tareas, estadísticas de completado/fallo.

v1.0.0 · Sistema

mod_backup

Crear copias de seguridad tar.gz de la configuración y datos de la instancia. Restaurar desde archivos. Listar y eliminar copias. Solo administradores.

v1.0.0 · Sistema

Red e integración

mod_proxy

Proxy inverso HTTP con rutas con nombre. Mapea paths de Portal a servidores upstream. Seguimiento de errores por ruta.

v1.0.0 · Red

mod_dns

Utilidad DNS: resolución de nombres (A/AAAA), búsqueda inversa (PTR), búsqueda completa con alias.

v1.0.0 · Red

mod_http_client

Peticiones HTTP/HTTPS salientes. CLI: curl <url>. Utilizado por otros modules para llamadas a APIs externas.

v1.0.0 · Red

mod_webhook

Registrar URLs de webhook, despacho automático ante eventos Portal. Timeout y reintentos configurables. Se suscribe a /events/*.

v1.0.0 · Red

mod_api_gateway

Enrutamiento de APIs externas con caché de respuestas (mod_cache), limitación de tasa (mod_firewall), paso de cabeceras de autenticación, timeout configurable.

v1.0.0 · Red

mod_tunnel

Reenvío de puertos TCP a través de conexiones federation. Relay de bytes sin overhead usando select(). Permite SSH, HTTP o cualquier servicio TCP a través de NAT.

v1.0.0 · Red

mod_acme

Automatización de certificados ACME/Let's Encrypt. Detecta automáticamente certbot o acme.sh, recurre a autofirmado. Solicitar, comprobar caducidad, renovación automática.

v1.0.0 · Red

Seguridad

mod_firewall

Firewall basado en origen: reglas explícitas de permiso/denegación + limitación de tasa automática. Peticiones por ventana configurables. Thread-safe.

v1.0.0 · Seguridad

mod_crypto

Hash SHA-256, hash MD5, codificación/decodificación Base64, codificación/decodificación hexadecimal. Todo sin dependencias (implementaciones embebidas).

v1.0.0 · Seguridad

mod_ldap

Autenticación de usuarios contra servidores LDAP/Active Directory. Protocolo simple de LDAP bind (codificación BER). Función de prueba de conexión.

v1.0.0 · Seguridad

mod_validator

Validar: email, IPv4/IPv6, URL, JSON, rangos numéricos, regex POSIX, nombres de host. Devuelve válido/inválido con detalles.

v1.0.0 · Seguridad

IoT

mod_iot

Gestión completa de dispositivos IoT. Descubrimiento (escaneo ARP + identificación MAC + sondeo KLAP), control (on/off/toggle), monitorización. Drivers: MQTT (Tasmota/Shelly/Sonoff), HTTP (Shelly/Hue), Tapo KLAP v2 (enchufes, bombillas, hub y aspirador TP-Link), GPIO.

v1.0.0 · IoT

mod_gpio

Control de pines GPIO vía Linux sysfs. Exportar/desexportar pines, establecer dirección, leer/escribir valores. Modo de simulación en hardware sin GPIO.

v1.0.0 · IoT

Compresión

mod_xz

Compresión XZ/LZMA vía liblzma. Nivel configurable (0-9). API basada en buffer.

v1.0.0 · Sistema

mod_gzip

Compresión Gzip vía zlib. Nivel configurable (1-9). Formato de cabecera gzip correcto.

v1.0.0 · Sistema

Renderizado

mod_template

Renderizado de plantillas con sintaxis {{variable}}. Cargar desde ficheros, cachear en memoria, renderizar con sustitución.

v1.0.0 · Sistema

mod_admin

Panel de administración web (SPA). Dashboard con métricas, explorador de modules, vista de federation de nodos, gestión de usuarios/grupos, editor de configuración, visor de log de auditoría.

v2.0.0 · Sistema

Ejemplos

mod_hello

Module de ejemplo mínimo que demuestra la interfaz de 4 exportaciones. Plantilla para nuevos modules.

v1.0.0 · Ejemplo

mod_myapp

Aplicación de ejemplo con contador, eventos y demostración de ACL.

v1.0.0 · Ejemplo

Interfaz de module

Cada module exporta exactamente 4 símbolos:

portal_module_info_t *portal_module_info(void);     // descriptor
int portal_module_load(portal_core_t *core);         // inicializar
int portal_module_unload(portal_core_t *core);       // limpieza
int portal_module_handle(portal_core_t *core,        // gestionar mensajes
                         const portal_msg_t *msg,
                         portal_resp_t *resp);

Gestión en tiempo de ejecución

portal:/> module list              # todos los modules cargados
portal:/> module load mymod        # hot-load
portal:/> module unload mymod      # descarga segura (espera llamadas activas)
portal:/> module reload mymod      # descarga + carga atómica
Los modules nunca se llaman entre sí directamente. Toda la comunicación pasa por el core mediante paths. El Module A envía un mensaje a /modB/resource. El core lo enruta, comprueba la ACL y entrega la respuesta. Si el Module B está descargado, el Module A recibe 503 UNAVAILABLE.