--- name: Magnus cobranca_api token + systemd cobranca-api description: Token de autenticacao do servico Python cobranca_api.py no Magnus precisa bater com CRON_TOKEN_SECRETO do .env do sistema type: project originSessionId: 2858844d-38d3-482c-bbfa-0843be5ee19d --- # Magnus cobranca_api (port 8880) — token + systemd `http://69.197.165.194:8880/cobranca/ligar` recebe POST com `{token, tipo, telefone, ...}` e dispara ligacoes VoIP via Asterisk. Erros "token invalido" no log `[VOIP-COB]` indicam que o token nao bate. **Why:** Pos-incidente CVE-2026-41940 (2026-04-30) o `CRON_TOKEN_SECRETO` do `.env` do sistema foi rotacionado, mas o `cobranca_api.py` do Magnus permaneceu com o token antigo (`58253c6b...`). 11 dias de lembretes falhando ate 2026-05-11. **How to apply:** - O token TEM que ser igual nos dois lados. Sincronizar via: - `sudo sed -i 's/TOKEN = ".*"/TOKEN = "NOVO_TOKEN"/' /home/customer/cobranca_api.py && sudo systemctl restart cobranca-api` - Token atual ativo (2026-05-11): `8d861609d45de8eacfa5481302fddcc85f25b23f5794aeb6bbdd791ec39f219a` - Se rotacionar de novo, atualizar `.env` (sistema) E `cobranca_api.py` (Magnus) ao mesmo tempo. **Servico systemd `cobranca-api.service`** (Magnus, 69.197.165.194): - Path: `/etc/systemd/system/cobranca-api.service` - User: `customer` - ExecStart: `/usr/bin/python3 /home/customer/cobranca_api.py` - StandardOutput/Error: agora em `journal` (antes era `append:/tmp/cobranca_api.log` que dava `Permission denied` quando systemd reiniciava — issue resolvido 2026-05-11) - Log atual: `sudo journalctl -u cobranca-api -n 50 -f` - Tambem ha logs antigos em `/tmp/cobranca_api.log` **Bug 2026-04-30 → 2026-05-11:** PID 542 do cobranca_api.py ficou rodando "soltinho" (fora do systemd) por 11 dias com o token velho. systemd nao conseguia subir nova instancia por "Permission denied" no STDOUT (causa raiz nao confirmada — workaround foi trocar para `journal`). Apos `kill -9 542` + ajuste da unit + restart, servico voltou normal em PID nova. **Diagnostico rapido:** ```bash # 1. Token efetivo no Magnus ssh customer@69.197.165.194 "grep '^TOKEN = ' /home/customer/cobranca_api.py" # 2. Token configurado no sistema plink ... root@server.whmservidor.com "grep CRON_TOKEN_SECRETO /home/gotechbr/public_html/sistema.gotechbr/.env" # 3. Testar autenticacao (sem disparar ligacao real) curl -s http://69.197.165.194:8880/cobranca/ligar -H 'Content-Type: application/json' -d '{"token":"","tipo":"teste"}' # Esperado: {"error":"tipo invalido: teste"} (token OK) # Errado: {"error":"token invalido"} (precisa sincronizar) ```