DNSBlock - Sistema de Gestão de Bloqueios DNS
Sistema SaaS completo para gerenciamento de ordens judiciais de bloqueio de domínios, com integração para agentes remotos (Unbound).
🚀 Funcionalidades
- Painel Administrativo: Gestão de clientes, servidores e ordens judiciais.
- Painel do Cliente: Visualização de status, servidores e ordens.
- API REST: Integração segura para agentes remotos.
- Agente Python: Script para sincronização automática com Unbound (RPZ).
- Validação ASN: Verificação de IPs de servidores.
- Processamento CSV: Importação em massa de domínios.
🛠️ Tecnologias
- Backend: PHP 8.2+ (MVC Customizado)
- Frontend: Tailwind CSS + Alpine.js
- Banco de Dados: MySQL 8.0
- Agente: Python 3.11+
📦 Instalação e Deploy
Para instruções detalhadas de como instalar e implantar a aplicação em ambiente de produção, consulte o guia oficial:
👉 Guia de Implantação (DEPLOY.md)
Configuração do Agente (Python)
- Navegue até a pasta
agent:cd agent - Crie um ambiente virtual e instale dependências:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt - Configure o agente:
- Crie um arquivo
.envna pastaagentcom:API_URL=http://localhost:8001/api SERIAL_KEY=seu_serial_key_do_servidor RPZ_FILE=/caminho/para/rpz.zone UNBOUND_CMD=echo "reload unbound" # Comando real para reload
- Crie um arquivo
- Execute o agente:
python agent.py
📚 Documentação da API
Autenticação
- POST
/api/auth/login- Body:
{"serial_key": "..."} - Retorno:
{"token": "JWT_TOKEN", "expires_in": 3600}
- Body:
Domínios
- GET
/api/v1/domains- Headers:
Authorization: Bearer JWT_TOKEN - Retorno:
{"domains": ["exemplo.com", ...], "checksum": "md5...", "timestamp": 123456}
- Headers:
Consulta Rápida (Debug Local)
Para listar os domínios bloqueados sem necessidade de autenticação (apenas para desenvolvimento):
curl http://localhost:8001/debug_domains.php
Consulta via API (Produção/Agente)
A API oficial requer autenticação JWT.
- Autentique para obter o token:
curl -X POST http://localhost:8001/api/auth/login \
-H "Content-Type: application/json" \
-d '{"serial_key": "SEU_SERIAL_KEY"}'
- Use o token retornado para consultar:
curl http://localhost:8001/api/v1/domains \
-H "Authorization: Bearer SEU_TOKEN_JWT"
🎨 Estrutura do Projeto
/DNSBlock
├── app/ # Core da Aplicação PHP
│ ├── Config/ # Configurações
│ ├── Controllers/ # Controladores
│ ├── Models/ # Modelos de Dados
│ ├── Middleware/ # Middlewares de Auth
│ ├── Services/ # Lógica de Negócio (ASN, CSV)
│ └── Utils/ # Utilitários (JWT, View)
├── public/ # Document Root
├── resources/views/ # Templates HTML/PHP
├── database/ # Scripts SQL
└── agent/ # Agente Python
📄 Licença
Proprietário.
Description
Languages
Python
94%
HTML
3.1%
PHP
2%
TeX
0.6%
Shell
0.2%