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
67 lines
2.1 KiB
Markdown
67 lines
2.1 KiB
Markdown
# 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.
|