Qué es NSAdaBrowse
nsadabrowse es el explorador web de ficheros ADABAS de Nacarsoft. Navegue por las bases de datos y sus ficheros desde cualquier navegador, consulte los datos en modo tabla, formulario o FDT (definición del fichero), y administre el acceso con autenticación JWT y control de roles (RBAC con usuarios, grupos, roles y permisos). Varios entornos (DEV/TEST…) se configuran vía YAML.
Los nombres de bases, ficheros y datos de los ejemplos son ficticios.
Casos de uso
1. Consulta rápida de un registro sin herramientas de escritorio
Localizar un registro concreto (p. ej. la póliza POL-2024-00123 ficticia) desde el navegador.
./build/nsadabrowse init /tmp/mibrowse
./build/nsadabrowse start /tmp/mibrowse
./build/nsadabrowse status /tmp/mibrowse
# → nsadabrowse is RUNNING (PID 12345) Listening: http://0.0.0.0:3000
Flujo web (http://localhost:3000, admin / admin123): elija la base (p. ej. DEV) en el panel lateral, abra el fichero en el árbol, use la búsqueda con criterios y lea el registro en vista formulario.
2. Explorar la estructura FDT/DDM de un fichero
Revisar campos, formatos y descriptores de un fichero (p. ej. el nº 100 ficticio) antes de programar contra él.
./build/nsadabrowse status /tmp/mibrowse # confirmar RUNNING
Flujo web: seleccione base y fichero en el árbol lateral; cambie a la vista FDT para ver la definición de campos; alterne a tabla para contrastar con datos reales.
3. Soporte con acceso limitado por base de datos
Dar al equipo de soporte acceso de solo consulta a TEST sin tocar DEV.
curl -s http://localhost:3000/api/health
# → {"service":"nsadabrowse","status":"healthy"}
Flujo web (como admin): cree un rol con permiso de consulta solo sobre la base TEST en la administración RBAC; el usuario de soporte inicia sesión y solo ve TEST en el panel lateral.
4. Paginar un fichero grande con límites controlados
Recorrer un fichero con miles de registros (p. ej. histórico ficticio) sin saturar el servidor.
./build/nsadabrowse stop /tmp/mibrowse
# (ajuste pagination.* en /tmp/mibrowse/config.yaml y rearranque)
./build/nsadabrowse start /tmp/mibrowse
Flujo web: abra el fichero en vista tabla y avance por páginas (pagination.page_size); el límite read_limit acota la lectura máxima por consulta.
Interfaz


Referencia
Comandos CLI (verificados con --help, v1.1.0 build 540)
| Comando | Descripción |
|---|---|
init <dir> | Crea una instancia nueva (config.yaml + base de seguridad + carpetas) |
start [dir] | Arranca el servidor como daemon (por defecto, directorio actual) |
stop [dir] | Detiene el daemon |
status [dir] | Estado del daemon (PID, uptime, memoria; exit 0/1) |
version (o -version) | Muestra versión, build, fecha, commit y estado trial |
-server | Alias obsoleto de start (avisa WARN: '-server' is deprecated — use 'start') |
-stop | Alias obsoleto de stop (avisa WARN: '-stop' is deprecated — use 'stop') |
Nota: el manual lista además
-configy-license, pero el binario real los rechaza (Unknown command): el entorno se elige con el argumento posicional[dir]y la licencia va en la ruta indicada abajo.
Principales opciones de config.yaml (ver config.example.yaml)
| Opción | Descripción |
|---|---|
server.host / server.port | Interfaz y puerto web (por defecto 0.0.0.0:3000) |
server.tls_cert_file / tls_key_file | Certificados TLS; vacíos si el TLS lo termina el proxy (Traefik) |
database.path | SQLite de seguridad (db/security.db): usuarios, grupos, roles, permisos |
security.jwt_secret | Clave JWT — cámbiela en producción |
security.token_expiry_hours | Caducidad del token (24) |
security.password_reset_code_ttl_minutes | Validez del código de reseteo (10) |
adabas.databases | Bases definidas: DEV (dbid 150, connect: "acj;target=150", config_file: ./db/db150.json), TEST (dbid 200, connect: "acj;target=200;ipcs", files: "(100-120)") |
smtp.* | Correo para reseteo de contraseña (host, port, username, password, from, use_tls) |
pagination.page_size / read_limit | Tamaño de página (80) y límite de lectura (10000) |
config.separator_decimal, daemon, logdir, logdays | Separador decimal, modo daemon, directorio y retención de logs |
swagger.enabled, api_key, title, version | Documentación de la REST API |
El ejemplo del manual (
database.path: ./data/nsadabrowse.db, listadatabases:con host/puerto/usuario) es ilustrativo; la configuración real usadb/security.dby el mapaadabas.databasesmostrado arriba.
Áreas de la interfaz web
| Área | Qué hace |
|---|---|
| Login | Autenticación por usuario y contraseña; sesión por token JWT (security.jwt_secret, expira en token_expiry_hours) |
| Panel lateral / árbol | Lista las bases configuradas (DEV, TEST) y sus ficheros con sus números; selector de base activa |
| Vista tabla | Consulta paginada de registros (pagination.page_size), avance por páginas |
| Vista formulario | Lectura registro a registro con todos los campos |
| Vista FDT | Definición del fichero: campos, formatos y descriptores (estructura, sin datos) |
| Búsqueda | Filtro de registros por criterios sobre los campos |
| Administración RBAC | Usuarios, grupos, roles y permisos por base de datos y acción |
| Temas | Tema oscuro y claro disponibles |
Ejemplos comentados
# 1. Instancia nueva y arranque en el directorio actual
./build/nsadabrowse init
./build/nsadabrowse start
./build/nsadabrowse status
# 2. Dos entornos (prod/dev) con el mismo binario
./build/nsadabrowse init /tmp/prod && ./build/nsadabrowse start /tmp/prod
./build/nsadabrowse init /tmp/dev && ./build/nsadabrowse start /tmp/dev
./build/nsadabrowse status /tmp/prod
./build/nsadabrowse stop /tmp/dev
# 3. Verificación: salud, SPA y versión (informa del trial restante)
curl -s http://localhost:3000/api/health
curl -s http://localhost:3000/ -o /dev/null -w '%{http_code}\n'
./build/nsadabrowse version
# 4. Invocación estilo manual (obsoleta pero funcional, con aviso)
./build/nsadabrowse -server # equivale a 'start' (deprecated)
En el ejemplo 4,
-serverfunciona como alias obsoleto destart; los flags-config <fichero>y-licensedel manual ya no existen (Unknown command): el entorno se indica con[dir].
Preguntas frecuentes
¿En qué URL y con qué usuario entro? En http://localhost:3000 con admin / admin123; cambie security.jwt_secret en producción o el login no es seguro.
¿Dónde va la licencia? En /opt/ns/licenses/nsadabrowse.key; sin ella hay trial de 30 días y version muestra los días restantes.
¿No conecta a ADABAS? Revise adabas.databases en config.yaml (dbid, connect, config_file reales; los del manual y del ejemplo son ficticios) y el acceso de red al núcleo ADABAS.
¿Puerto ocupado o login que no carga? Cambie server.port si el 3000 está en uso; si el login falla, verifique que jwt_secret no sea el valor por defecto.