Skip to content

feat(sessions): importa e sincroniza hosts e grupos do Zabbix - #104

Merged
acacio90 merged 3 commits into
developfrom
feat/103-importar-zabbix
Oct 23, 2026
Merged

acacio90 merged 3 commits into
developfrom
feat/103-importar-zabbix

Conversation

@acacio90

@acacio90 acacio90 commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Depende do #102 (está em cima da branch dele). Depois do merge do #102, a base muda para develop e faço o rebase.

O que mudou

  • Arquivo → Importar → Hosts do Zabbix…: diálogo com endereço, API token ou usuário/senha e opção de aceitar certificado autoassinado. Conectar lista os grupos com a quantidade de hosts (com filtro); escolhidos os grupos e a pasta de destino (padrão Zabbix), Sincronizar… mostra a prévia e grava se confirmado.
  • Arquivo → Importar → Sincronizar com o Zabbix: repete com a conexão, os grupos e a pasta guardados (também com prévia).
  • Sincronização (planZabbixSync), só nas sessões com zabbixHostId:
    • hosts novos entram; removidos do Zabbix ou de grupos desmarcados saem;
    • endereço, nome e pasta vêm do Zabbix; usuário, porta e MAC só quando o Zabbix tem valor;
    • tipo, chave, VPN, opções e tags editados no MultTerm são mantidos;
    • sessões criadas à mão nunca são alteradas (conflito de pasta/nome vira aviso).
  • src/sessions/import-zabbix.ts: hosts → sessões. Cada grupo escolhido vira pasta (/ no nome cria subpasta) e um host em vários grupos entra em cada um. Endereço da interface principal do agente (IP/DNS conforme useip), senão SNMP. Tipo pela tag multterm.type; sem ela, Windows no inventário ou nos templates vira RDP. Tags multterm.user/multterm.port e MAC do inventário.
  • src/zabbix/client.ts: cliente JSON-RPC (6.0+) sem dependência nova; a versão decide Bearer (6.4+) ou auth, with_hosts/real_hosts e selectHostGroups/selectGroups.
  • src/desktop/zabbix.ts: IPC e zabbix.json (endereço, grupos, pasta); token e senha cifrados com safeStorage, nunca enviados à interface.
  • Sessão ganha o campo opcional zabbixHostId (gravado no YAML e mantido ao editar).
  • README e CHANGELOG.

Testes

  • npm run typecheck: ok
  • npm test: 157/157 passaram (novos: import-zabbix.test.ts, com a sincronização, e zabbix-client.test.ts, contra um servidor JSON-RPC falso nas versões 6.0 e 7.0)
  • npm run test:ui: 89/89 passaram (zabbix.spec.ts: conectar, prévia, gravar, editar à mão, mudar o Zabbix, sincronizar pelo menu, cancelar e "nada mudou")
  • Manual contra um Zabbix 7.4.14 real: 10 grupos, 81 hosts → 159 sessões em ~0,3 s

Closes #103

@acacio90 acacio90 added this to the v0.10.0 milestone Oct 22, 2026
@acacio90 acacio90 added the enhancement New feature or request label Oct 22, 2026
@acacio90 acacio90 changed the title feat(sessions): importa hosts e grupos do Zabbix feat(sessions): importa e sincroniza hosts e grupos do Zabbix Oct 22, 2026
Arquivo → Importar → Hosts do Zabbix: conecta na API (6.0+, token ou usuário/senha),
lista os grupos e importa os hosts dos escolhidos; cada grupo vira pasta e cada host
uma sessão, com o hostid guardado em zabbixHostId. Credencial cifrada pelo safeStorage.
A importação do Zabbix passa a sincronizar: hosts novos entram, removidos (ou de grupos
desmarcados) saem e os existentes são atualizados pelo zabbixHostId, mantendo o que foi
editado no MultTerm. Prévia antes de gravar e item "Sincronizar com o Zabbix" no menu.
localhost, 127.x.x.x e ::1 (como o próprio servidor do Zabbix) não são alcançáveis por esse endereço; ficam de fora com aviso.
@acacio90
acacio90 force-pushed the feat/103-importar-zabbix branch from 949ba57 to c8ca5a6 Compare October 23, 2026 00:16
@acacio90
acacio90 changed the base branch from feat/101-inventario-sem-ansible to develop October 23, 2026 00:16
@acacio90
acacio90 merged commit 677faa0 into develop Oct 23, 2026
3 checks passed
@acacio90
acacio90 deleted the feat/103-importar-zabbix branch October 23, 2026 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant