03 • Infraestructura: Configuración de Bouncer ZNC en FenixIRC
Persistencia continua de nick 24/7, recuperación transparente de buffer diferido y enmascaramiento total de IP móvil en Android mediante multiplexación de túneles TLS.
Concepto y Arquitectura de Infraestructura Bouncer
Proxy IRC 24/7 de Nivel de Transporte
Un Bouncer (BNC) actúa como intermediario autónomo desplegado en un servidor VPS o clúster dedicado con uptime ininterrumpido. A diferencia de un cliente móvil susceptible a desconexiones por deep-sleep de Android, el daemon ZNC o Soju mantiene sockets TLS abiertos perpetuamente con múltiples servidores IRC.
Cuando FenixIRC se asocia al bouncer, éste vuelca en ráfaga el historial comprimido acumulado (Buffer Playback) mediante marcas de tiempo server-time, restaurando el estado mental de conversación sin saltos.
Implementación Técnica en FenixIRC
Mapeo de UI hacia Capa de Datos (Model Layer)
| Campo de Configuración | Clave Kotlin / Tipo | Valor Bouncer Objetivo |
|---|---|---|
| Servidor Host | host: String | bnc.midominio.com / IP VPS |
| Puerto de Red | port: Int | 5001 o 6697 (Listener ZNC) |
| Usar SSL / TLS | useSsl: Boolean | true (Certificado X.509) |
| Contraseña Servidor | password: String | Clave de usuario ZNC |
| Avanzado: Bouncer | useBouncer: Boolean | true (Habilita sintaxis ZNC) |
| Red / Tag BNC | bouncerNetwork: String | libera / oftc (Target ID) |
useBouncer = true, el motor de FenixIRC deja de asociar la contraseña como autenticación directa NickServ o server pass ordinario, delegándola al protocolo de negociación modular del BNC.
Protocolo de Handshake ZNC en el Motor (IrcEngine.kt)
suspend fun dispatchAuthHandshake(
session: IrcSessionState,
writer: FrameChannelWriter
) {
// Verificación de bandera de infraestructura Bouncer
if (session.serverConfig.useBouncer) {
val bncTag = session.serverConfig.bouncerNetwork.trim()
val zncUser = "${session.credentials.username}/$bncTag"
val zncPass = "${session.credentials.password}/$bncTag"
// Inyección de sintaxis extendida RFC 1459 para ZNC/Soju
writer.writeLine("PASS $zncPass")
writer.writeLine("NICK ${session.credentials.nickname}")
writer.writeLine("USER $zncUser 8 * :FenixIRC Client v2.4")
session.logger.info("BNC Handshake emitido para red [$bncTag]")
} else {
// Conexión directa estándar a servidor RFC regular
if (session.credentials.password.isNotBlank()) {
writer.writeLine("PASS ${session.credentials.password}")
}
writer.writeLine("NICK ${session.credentials.nickname}")
writer.writeLine("USER ${session.credentials.username} 8 * :FenixIRC User")
}
}
Transparencia de Credenciales y Protocolo
ZNC requiere que la autenticación del cliente especifique con qué servidor conectado o red interna desea acoplarse.
El motor de FenixIRC abstrae este comportamiento para el usuario final. Basta con ingresar la contraseña en el campo habitual y el tag en la casilla de bouncer.
Beneficios Críticos de la Infraestructura Bouncer
01. Sesión Persistente 24/7 (Never-Offline)
Tu nick permanece conectado ininterrumpidamente en los canales. Jamás emites un evento /QUIT accidental por cambio de red WiFi a 4G/5G, paso por túneles o apagado de pantalla en Android. Preservas los privilegios de operador de canal (+o, +v) de forma continua.
02. Recuperación de Mensajes Diferidos (Buffer Playback)
Descarga automática y secuencial de menciones destacadas (highlights), consultas privadas (queries) y el backlog completo del canal. Gracias a la extensión IRCv3 server-time, los mensajes se ordenan cronológicamente con su hora exacta de emisión original.
03. Enmascaramiento Integral de IP Móvil
Blindaje total de tu privacidad personal: los servidores IRC y los usuarios en el canal únicamente ven la dirección IPv4/IPv6 estática o el vHost personalizado del servidor VPS remoto. Tu operador telefónico, geolocalización aproximada y dispositivo quedan completamente disimulados.
04. Máxima Eficiencia de Batería y Datos Móviles
El servidor VPS absorbe la ráfaga continua de paquetes PING? / PONG! requeridos por el estándar RFC para mantener la conexión viva. Tu smartphone no necesita mantener radios celulares despiertos constantemente, permitiendo ciclos de suspensión profunda (Deep Sleep).
Guía Paso a Paso para Configurar ZNC en FenixIRC
Navega a la pantalla de Servidores en FenixIRC y presiona el botón de acción flotante [+].
Ingresa el FQDN o IP del bouncer (ej. bnc.dominio.net), puerto 5001 y activa SSL/TLS.
Especifica tu Nick y la contraseña configurada en la cuenta de usuario de tu servidor ZNC.
Activa el switch Conexión vía Bouncer e ingresa el identificador de red, ej: libera.
Guarda la conexión. FenixIRC conectará al túnel, validará certificados y volcará el playback automáticamente.