# 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.