V-Fire Monitor

Aplicacao Flask para monitoramento de centrais Notifier via Modbus/TCP, com painel web, descoberta de pontos, integracao com Zabbix e licenciamento por hardware.

O que mudou nesta refatoracao

  • Persistencia JSON com escrita atomica e migracao de configuracao legada.
  • Login com hash de senha em vez de senha em texto puro no arquivo de configuracao.
  • Chave secreta do Flask persistida localmente, sem valor fixo no codigo.
  • Validacao de payloads da API e respostas de erro consistentes.
  • Logging basico para diagnostico, no lugar de falhas silenciosas.
  • Polling Modbus e discovery por blocos, reduzindo chamadas individuais.
  • Frontend com tratamento de erro e textos corrigidos.
  • Gerador de licenca com argumentos de linha de comando e validacao de data.

Estrutura

  • monitor.py: entrypoint simples da aplicacao Flask.
  • vfire_monitor/__init__.py: app factory e bootstrap da aplicacao.
  • vfire_monitor/core.py: regras de negocio, persistencia, licenca e engine de monitoramento.
  • vfire_monitor/routes.py: rotas web e APIs.
  • generator.py: gerador de serial de licenca.
  • templates/: telas do login e dashboard.
  • tests/: suite inicial de testes automatizados.
  • config_nodes.json: configuracao persistida da aplicacao.
  • mapa_dispositivos.json: mapa de dispositivos descobertos.
  • license.key: serial instalado localmente.
  • app_secret.key: segredo de sessao gerado automaticamente na primeira execucao.

Requisitos

  • Python 3.10+
  • Conectividade com as centrais via Modbus/TCP
  • Acesso ao servidor Zabbix, quando a integracao estiver habilitada

Instalacao:

pip install -r requirements.txt

Variaveis de ambiente

Veja .env.example.

As principais:

  • VFM_DEFAULT_PASSWORD: senha inicial do usuario admin na primeira carga do sistema.
  • VFM_APP_SECRET: opcional, substitui o segredo salvo em app_secret.key.
  • VFM_LICENSE_MASTER_KEY: chave mestre do licenciamento. Em producao, use esta variavel e remova a dependencia da chave legada.
  • VFM_ENV: use production para obrigar VFM_LICENSE_MASTER_KEY no startup.
  • VFM_LOG_LEVEL: nivel de log, por exemplo INFO ou DEBUG.
  • PORT: porta HTTP da aplicacao.

Execucao

python monitor.py

O sistema sobe em http://0.0.0.0:8080 por padrao.

Geracao de licenca

Modo interativo:

python generator.py

Modo por argumentos:

python generator.py --hwid "UUID-DO-CLIENTE" --cliente "Cliente" --expira 2026-12-31

Observacoes operacionais

  • A senha do painel fica armazenada como hash em config_nodes.json.
  • Se existir configuracao antiga com web_password, ela e migrada automaticamente para web_password_hash.
  • Em ambiente de desenvolvimento, o sistema ainda aceita a chave de licenca legada embutida para manter compatibilidade.
  • Em ambiente de producao (VFM_ENV=production), VFM_LICENSE_MASTER_KEY passa a ser obrigatoria e o sistema falha no startup sem ela.
  • Bootstrap continua sendo carregado via CDN. Se o ambiente nao tiver acesso externo, copie os assets localmente e ajuste os templates.

Testes

Executar:

pytest

Proximos passos recomendados

  • Adicionar testes cobrindo polling Modbus e integracao com Zabbix com doubles dedicados.
  • Separar configuracao e logging em modulos proprios se a aplicacao continuar crescendo.
  • Trocar Bootstrap via CDN por assets locais se o ambiente alvo nao tiver acesso externo.
S
Description
No description provided
Readme
123 KiB
Languages
Python 48.1%
Shell 23.1%
HTML 20.6%
CSS 6.7%
JavaScript 1.5%