fusion-registration-hunter/README.md
Rafael Lopes a94f49a3b0
Some checks are pending
Deploy corp01 / deploy (push) Waiting to run
Deploy corp05 / deploy (push) Waiting to run
Deploy corp06 / deploy (push) Waiting to run
Deploy corp07 / deploy (push) Waiting to run
Deploy corp02 / deploy (push) Successful in 1s
Deploy corp03 / deploy (push) Successful in 5s
Deploy corp04 / deploy (push) Successful in 2m1s
Initial commit
2026-04-06 16:18:06 -03:00

2.1 KiB

Coleta de Registros FreeSWITCH + FusionPBX

Este script coleta os registros SIP ativos do FreeSWITCH, cruza com os ramais cadastrados no FusionPBX (PostgreSQL) e gera CSVs por domínio contendo status, dispositivo, troncos e DDR.

O que ele gera

  • Pasta csv_registrations/ com um CSV por domínio.
  • Colunas: Ramal, Domínio, Status, Dispositivo, Troncos, DDR.

Requisitos

  • Python 3.8+
  • Acesso local ao fs_cli no servidor do FreeSWITCH
  • Acesso local ao banco PostgreSQL do FusionPBX
  • Dependência Python:
    • psycopg2-binary

Configuração

  1. Copie o arquivo .env.example para .env e ajuste os valores.
  2. Garanta que o usuário do banco tenha permissão de leitura nas tabelas do FusionPBX.

Variáveis do .env

  • FS_CLI_PATH: caminho do fs_cli (ex.: fs_cli ou /usr/bin/fs_cli)
  • FS_PROFILE: perfil do FreeSWITCH (ex.: internal)
  • FS_CLI_TIMEOUT: timeout em segundos do comando fs_cli (ex.: 10)
  • DB_HOST: host do Postgres
  • DB_PORT: porta do Postgres
  • DB_NAME: nome do banco
  • DB_USER: usuário
  • DB_PASSWORD: senha

Como rodar

pip install -r requirements.txt
python3 coleta_registro.py

Replicar para outros servidores

  1. Clone este repositório no servidor que roda o FreeSWITCH.
  2. Configure o .env com os parâmetros daquele servidor.
  3. Instale dependências e execute.

Esse fluxo é o mais confiável porque o fs_cli normalmente precisa rodar localmente no servidor do FreeSWITCH.

Deploy com Gitea Actions (runner no servidor)

Os workflows em .gitea/workflows/ usam labels por servidor (ex.: corp01, corp02, etc.). Para cada servidor:

  1. Instale e registre o runner no próprio servidor.
  2. Atribua a label correspondente (ex.: corp03).
  3. Faça o clone em /opt/collect-registry.

No push, o runner com a label correta executa o deploy localmente, sem SSH.

Exemplo de crontab (rodar todos os dias às 02h)

0 2 * * * /usr/bin/python3 /opt/collect-registry/coleta_registro.py >> /var/log/coleta_registro.log 2>&1

Ajuste o caminho do Python e do projeto conforme o seu servidor.