fusion-registration-hunter/README.md

67 lines
2.1 KiB
Markdown
Raw Normal View History

2026-04-06 16:18:06 -03:00
# 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
```bash
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)
```cron
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.