Documentación

API HTTP y socket ZMQ

El menú separa lo interno del servidor (handshake ZMQ, certificados, RPC_Server) de lo que aportan los plugins activos. Cada plugin registra su propia subclase de OFA_ZMQ.RPC y publica su referencia aquí solo mientras está habilitado.

Base HTTPS: https://oneforall.cu Host ZMQ: oneforall.cu HTTPS :443 ZMQ :5400 UUID 4A17C6FA-829A-4B23-BA02-016AE41D2E38

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.