Arquitectura interna
El proceso Core abre un único ZMQ_Socket en el puerto
5400. Ese socket instancia RPC_Server
(subclase de OFA_ZMQ.RPC, handle RPC_Server)
para el handshake. Los plugins no cuelgan métodos
@RPC sobre ZMQ_Socket: cada plugin activo
instancia su propia subclase (p.ej. LogisticFlowRPC).
from OFA_ZMQ import RPC
class RPC_Server(RPC): # interno del servidor
@RPC.register_return
async def InitConnect(self, **kwargs): ...
class LogisticFlowRPC(RPC): # plugin — handle distinto
@RPC.register_return
async def lf_register(self, ...): ...
LogisticFlowRPC(is_raise=False) # registra en RPC.handles['LogisticFlowRPC']
Certificados
Los certificados de nodo se emiten en
/panel/certs/
con bound_uuid obligatorio ( incrustado en OU / serialNumber ).
El cliente ZMQ presenta esa identidad al conectar.
RPC interno — handle RPC_Server
- RPC
InitConnect — handshake del cliente ZMQ.
- RPC
get_avatar — fragmento de avatar del servidor.
- RPC
ping / test — heredados de RPC.
Invocación: paquete ZMQ con handle="RPC_Server" y
name del método. No use este handle para APIs de plugins.
HTTP del núcleo
- GET
/ — inicio / panel de módulos.
- GET
/docs/ · /docs/api-zmq/ — esta documentación.
- GET
/panel/certs/ — emisión de certificados (staff).
- GET
/panel/tokens/ — gestión de tokens API (staff).
- GET
/panel/visitas/ — estadísticas de visitas (staff).
- GET
/panel/console/ — consola en vivo (superuser).
- GET
/panel/plugins/ — activar / desactivar plugins (superuser).
- GET
/api/console/history/ · /api/console/stream/ — historial y SSE de consola.
Tokens API
Autenticación para apps externas sin sesión de navegador.
El secreto se muestra una sola vez al crear o rotar.
Cabeceras aceptadas: Authorization: Bearer ofa_…
o X-OFA-Token: ofa_….
- GET
/panel/tokens/ — UI staff (crear, rotar, revocar).
- GET
/api/tokens/ — listar tokens (sesión staff o scope tokens:read).
- POST
/api/tokens/ — crear token JSON {name, scopes, expires_days?, note?, allowed_ips?}.
- GET
/api/tokens/scopes/ — catálogo de permisos.
- POST
/api/tokens/<uuid>/ — acciones rotate, revoke, activate o PATCH de metadatos.
Scopes habituales
*
portmap:read
portmap:write
portmap:*
certs:read
certs:write
console:read
visitas:read
tokens:read
tokens:write
curl -sS https://oneforall.cu/api/puertos/ \
-H "Authorization: Bearer ofa_PREFIX_SECRET"
# o
curl -sS https://oneforall.cu/api/puertos/ \
-H "X-OFA-Token: ofa_PREFIX_SECRET"
Panel: /panel/tokens/
· el scope * solo lo puede emitir un superusuario.