Skip to content

Full-stack application in Java and JavaFX developed for N-Multifibra for centralized SSH access to OLTs via automatized CLI commands

Notifications You must be signed in to change notification settings

toomazs/NM-OLT-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💙 NM OLT App v1.6.0.0

Desenvolvido por Eduardo Tomaz para N-Multifibra


📋 Sobre o Projeto

O NM OLT App é uma solução completa desenvolvida em Java que oferece acesso SSH seguro, diagnósticos avançados e monitoramento em tempo real para gestão centralizada de ONTs dos clientes dentro das OLTs, reduzindo o tempo de resposta e facilitando o trabalho por meio de automações internas.
A ferramenta foi criada especificamente para otimizar o trabalho das equipes de Suporte e T.I. da N-Multifibra, proporcionando uma interface intuitiva, automática e confortavel para gerenciamento dos clientes na rede.



🎯 Recursos Principais

🔐 Login & Alteração de Senha

  • Autenticação segura com controle de permissões por cargo
  • Alteração de senha integrada, com senha padrão inicial protegida e criptografada
  • Verificação em tempo real do status das credenciais
  • Sessão protegida com logout forçado ao fechar o aplicativo
Imagens
  • Login (com último user salvo via .json)


  • Alteração de Senha


🌐 OLTs

  • Acesso direto às OLTs em tempo real via autenticação SSH
  • Conexão e desconexão seguras, sem cache e sem sobrecarga das OLTs
  • Status Online/Offline por protocolos TCP e ICMP (fallback automático)
  • Adição manual e dinâmica de OLTs pelo usuário final
Imagens
  • Aba OLTs


  • Inside-Terminal (ssh)


📡 Consulta de Sinal

  • Análise detalhada dos sinais RX e TX de cada ONT/ONU na PON
  • Cálculo automático das médias de sinais RX e TX
  • Alertas para sinais críticos (abaixo de -29.00 dBm)
  • Identificação de sinais incompatíveis com a média da PON (entre -27 e -29 dBm)
Imagens
  • Consulta de Sinal


  • Média dos Sinais e Alertas


📋 Summary

  • Visão geral das PONs (F/S/P) com detalhes completos de cada ONT/ONU
  • Autoverificação de rompimentos e drops rompidos
  • Status em tempo real de todos os dispositivos
Imagens
  • Consulta de Summary


  • Análise de Rompimentos ou Drops


🔍 By-SN

  • Localização rápida de ONT/ONU por número de série (SN)
  • Acesso prioritário ao IP remoto via DHCP
  • Informações completas do dispositivo (T-CONT, GEM PORT, TR-069, etc.)
Imagens
  • Consulta de By-SN


📉 Quedas

  • Registro detalhado das 10 últimas desconexões por ONT/ONU
  • Horários precisos de cada ocorrência
  • Resumo de cada incidente e respectiva causa
Imagens
  • Consulta de Quedas


📈 Tráfego

  • Monitoramento em tempo real do consumo por até 2 minutos
  • Conversão automática de Kbps para Mbps
  • Opção de interrupção do monitoramento a qualquer momento
Imagens
  • Consulta em tempo real de Tráfego


⚙️ Serviços

  • Acompanhamento dos serviços autorizados por ONT/ONU
  • Classificação por VLANs (100, 101, 102)
  • Status detalhado de cada serviço ativo (Internet, Acesso Remoto, VoIP, etc.)
Imagens
  • Consulta de Serviços



💡 Bastando informar apenas o F/S/P ou o ID da ONT em cada aba!


🎫 Chamados (Admin e Devs)

  • Acompanhamento dos tickets internos abertos
  • Respostas em tempo real aos tickets (em manutenção, resolvido, etc.)
  • Exclusão de tickets desnecessários
Imagens
  • Gerenciamento de Chamados




🚀 Recursos Secundários

🧠 Diagnósticos Inteligentes

  • Pattern Matching com Regex Avançado em todas as abas
  • Análise Automática de sinais e detectação de anomalias
  • Resumos Inteligentes de dados complexos
  • Alertas Proativos para problemas críticos
Patterns Matchings e Regex

🧑‍💻 Regex Globais

Regex / Padrão Finalidade Exemplo Prático em olt_teste_01
IP_REGEX Encontrar e destacar endereços IP no texto do terminal. Em uma mensagem como Conectado ao host 10.0.40.10, o padrão localiza e permite destacar o 10.0.40.10.
CR_PROMPT_PATTERN Detectar prompts que exigem que a tecla "Enter" (<cr>) seja pressionada para confirmar uma ação ou completar um comando. olt_teste_01(config-if-gpon-0/1)# commit { <cr> }:. O código detecta isso e envia automaticamente o "Enter".
MORE_PROMPT_PATTERN Identificar quando a OLT pausa uma saída longa e exibe uma mensagem como ---- More ----, indicando que há mais conteúdo a ser exibido. ---- More ( Press 'Q' to break ) ----. O código detecta e pode enviar um espaço para continuar.
oltPromptRegex Reconhecer o prompt de comando da OLT. É o principal indicador de que um comando terminou de ser executado e a OLT está pronta para a próxima instrução. olt_teste_01# (modo enable)
olt_teste_01(config)# (modo de configuração)
olt_teste_01(config-if-gpon-0/1)# (modo de configuração da interface)


📡 Consulta de Sinal (queryOpticalSignal)

  • Comando:
    display ont optical-info 0 all (executado na interface gpon 0/1/0)

  • Padrão Regex:

    ^\s*(\d+)\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s+(\d+)\s+(-?\d+\.\d+)\s+(-?\d+)\s+(\d+)\s*$
  • Exemplo capturado:

    0  -18.45   2.98  -19.12   41   3.305    19      985
    


📋 Summary (queryPonSummary)

  • Comandos:
    display port desc 0/1/0
    display ont info summary 0/1/0
Padrão no Código Finalidade Exemplo de Texto Capturado
descDataLinePattern Captura a linha de descrição da porta para a F/S/P. 0/ 1/ 0 - PRIMARIA 00--CABO00
summaryCountPattern Extrai o número total de ONTs e quantas estão online. In port 0 / 1 / 0, total of ONTs are: 32, online: 29.
statusPattern Captura os detalhes de status das ONTs (online/offline). 0 online 01/06/2025 10:00:15 01/01/1970 00:00:00 -
infoPattern Captura SN, modelo e nome do cliente. 0 HWTCaabbccdd HG8245H 985 -18.4/-19.1 Cliente-Exemplo-01
statusPatternForAnalysis Identifica ONTs offline para análise de rompimentos. 1 offline 10/05/2025 09:20:00 08/06/2025 04:15:30 Dying-gasp


🔎 By-SN (queryOntInfoBySn)

  • Comando:
    display ont info by-sn <SERIAL>
Padrão no Código Finalidade Exemplo de Texto Capturado
keyValuePattern Captura chaves e valores no formato Chave : Valor F/S/P : 0/1/0
ONT-ID : 0
ontIpPattern Captura o endereço IP da ONT ONT IP 1 address/mask : 192.168.100.5 / 255.255.255.0


📉 Quedas (queryOntRegisterInfo)

  • Comando:
    display ont register-info 0 0 (executado na interface gpon 0/1/0)

  • Exemplo de bloco processado:

    Index          : 1
    Register time  : 2025/06/01 10:00:15
    Deregister time: 2025/06/08 14:30:00
    DownCause      : LOSi/LOBi alarm
    


📈 Tráfego (queryOntTraffic)

  • Comando:
    display ont traffic 0 0 (executado na interface gpon 0/1/0)
Padrão no Código Finalidade Exemplo de Texto Capturado
upTrafficPattern Captura o tráfego de upload (kbps) Up traffic(kbps) : 8192
downTrafficPattern Captura o tráfego de download (kbps) Down traffic(kbps) : 51200


⚙️ Serviços (queryServicePortInfo)

  • Comando:
    display service-port port 0/1/0 ont 0
Padrão no Código Finalidade Exemplo de Texto Capturado
dataPattern Captura a linha de detalhes de cada service-port. 1 100 vlan-100 - 0/1/0 0 - - vlan 100 - - up
totalMatcher Captura o resumo final da saída. Total : 2 (Up/Down : 2/2)


🔄 Detecção Automática de OLTs

  • Status Online/Offline via protocolos TCP e ICMP
  • Verificação de porta SSH acessível
  • Fallback automático entre protocolos
Exemplos da Detecção
  • OLT Offline (Bloqueada/Desligada)


  • OLT Online (Porta Aberta e Acessível)

Os protocolos TCP e ICMP verificarão se a porta está aberta e acessível para autenticação.


➕ Adição Dinâmica e Filtragem de OLTs

  • Interface modal para adicionar novas OLTs-
  • Integração automática com a lista existente
  • Validação de conectividade em tempo real
  • Filtragem por busca, status, IP, etc.
Imagens do Modal de Adição
  • Modal de Adicionar OLT


  • Exemplo de Adição de OLT


  • Exemplo de Filtragem de OLTs



🎫 Sistema de Tickets Internos

  • Suporte direto do desenvolvedor
  • Correção rápida de bugs
  • Modal para sugestões de melhorias
Imagens do Modal de Tickets
  • Modal de Abrir Ticket


  • Modal dos seus Tickets abertos



📊 Exportação de Relatórios

Geração de relatórios completos usando:

  • Apache POI para arquivos Excel (XLSX)
  • OpenPDF para documentos PDF
  • FileWriter para CSV e TXT
Imagens do Modal de Exports
  • Modal de relatórios (exports) em PDF, XLSX, CSV e TXT



🎨 Temas Personalizáveis

Ver todos os 14 temas disponíveis
  • 💜 Roxo (Tema Padrão)


  • 🖤 All Black


  • 🤍 All White


  • 🧛 Dracula


  • 🔮 GitHub Dark


  • 🟪 Shades of Purple


  • 🦉 Night Owl


  • 🦉 Light Owl


  • 🍮 Creme


  • 🧑‍💻 Terminal


  • 💙 Azul


  • 💚 Verde


  • ❤️ Vermelho


  • 🩷 Rosa



🛠️ Libs

Bibliotecas Versão Função
JavaFX 22+ Interface gráfica moderna
JSCH 0.1.55 Comunicação SSH segura
PostgreSQL 42.7.6 Conexão com banco de dados
Apache POI 5.4.1 Exportação XLSX
OpenPDF 1.3.32 Exportação PDF
RichTextFX 0.11.5 Terminal com syntax highlighting
JNA 5.17.0 Acesso nativo ao sistema operacional
Ikonli 12.3.1 Ícones FontAwesome para JavaFX
XMLBeans 5.3.0 Processamento de documentos XML
SparseBitSet 1.3 Estruturas de dados otimizadas
Log4j 3.0.0-beta3 Sistema de logging avançado
Launch4j 3.50 Empacotamento Windows

💾 Instalação

⚠️ Se você for um colaborador da N-Multifibra, procure o Eduardo Tomaz — ele lhe fornecerá o projeto completo personalizado desenvolvido internamente para a empresa.

Se você for um desconhecido, siga os passos abaixo:

🔧 Configuração do Ambiente

# 1. Clone o repositório
git clone https://github.com/toomazs/NM-OLT-App.git
cd NM-OLT-App

# 2. Verifique a versão do Java (Recomendado Java 24)
java -version

# 3. Abra na sua IDE favorita
# Todas as dependências estão em lib/

🗄️ Configuração do Banco de Dados

O sistema é compatível com PostgreSQL, MariaDB (MySQL), SQLite e NoSQL.

Exemplo com PostgreSQL:

-- Criar database
CREATE DATABASE olt_db;

-- Tabela de usuários
CREATE TABLE usuarios (
    id SERIAL PRIMARY KEY,
    nome TEXT NOT NULL,
    usuario TEXT UNIQUE NOT NULL,
    senha TEXT NOT NULL,
    cargo TEXT NOT NULL;
);

-- Inserir usuários
INSERT INTO usuarios (nome, usuario, senha, cargo) VALUES
    ('Usuário Padrão', 'intern', '12345678', 'estagiario'),
    ('Administrador', 'admin', '12345678', 'supervisor');
--  ... Quantos users quiser

⚙️ Arquivos de Configuração (Obrigatório)

🔐 SecretsDB.java - Credenciais do Banco

package database;

public class SecretsDB {
  // Configuração PostgreSQL (exemplo)
  public static final String DB_URL = "jdbc:postgresql://localhost:5432/olt_db";
  public static final String DB_USER = "usuario_db";
  public static final String DB_PASSWORD = "senha_db";
}

📁 Localização: src/database/SecretsDB.java

🌐 Secrets.java - SSH e Lista de OLTs

public class Secrets {
  // Credenciais SSH
  public static final String SSH_USER = "usuario_ssh";
  public static final String SSH_PASS = "senha_ssh";

  // Lista de OLTs {"Nome", "IP"}
  public static final String[][] OLT_LIST = {
          {"OLT_SP_CENTRO_1", "192.168.1.10"},
          {"OLT_SP_CENTRO_2", "192.168.1.11"},
          {"OLT_SP_NORTE_1", "192.168.1.20"},
          {"OLT_SP_SUL_1", "192.168.1.30"}
          // ... Adicione quantas OLTs quiser
  };
}

📁 Localização: src/models/Secrets.java

Após isso, recompile o código .java usando uma IDE. Pode compilar um .exe com Launch4j ou use -cp via bash ou bat.


📚 Estrutura do Projeto Final

NM-OLT-App/
├── lib/                                   # Bibliotecas JAR
├── resources/                             # Temas CSS, Ícones e Fontes
├── src/                                   # Pasta Principal
│   └── Main.java
│   └── SSHManager.java              
│   └── StageResizer.java
│   └── HuaweiOltCommands.java
│   ├── database/                          # Database
│   │   └── SecretsDB.java                 # (não versionado)      
│   │   └── DatabaseManager.java   
│   │   └── LoginResultStatus.java
│   ├── models/                            # Funcionalidades
│   │   └── Secrets.java                   # (não versionado)   
│   │   └── Ticket.java
│   │   └── Usuario.java
│   │   └── OLT.java
│   │   └── OLTList.java
│   ├── screens/                           # Telas de Login e Alterar Senha
│   │   └── ButtonEffects.java
│   │   └── ChangePasswordScreen.java
│   │   └── LoginScreen.java
│   └── utils/                             # Manager de cada Switch Case e JSON
│       └── ConfigManager.java
│       └── ThemeManager.java
│       └── WindowsUtils.java
└── OLTApp.exe
└── OLTApp.jar
└── unins000.exe

📞 Suporte

Eduardo Tomaz - Desenvolvedor Principal


📜 Licença & Agradecimentos

Em especial, agradeço toda a equipe de Suporte, porém reconheço e agradeço àqueles que acompanharam o sistema desde o início, identificando bugs e sugerindo melhorias contínuas:
César Bragança, Gabriel Marques, Gabriel Rosa, João Miyake e Kaiky Leandro.

Este projeto é de propriedade exclusiva da N-Multifibra e foi desenvolvido por Eduardo Tomaz para uso interno da empresa.

Todos os direitos reservados © 2025 N-Multifibra


About

Full-stack application in Java and JavaFX developed for N-Multifibra for centralized SSH access to OLTs via automatized CLI commands

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published