Files
server/README.md
2025-12-06 12:07:05 -03:00

103 lines
3.1 KiB
Markdown

# 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)](DEPLOY.md)**
### Configuração do Agente (Python)
1. Navegue até a pasta `agent`:
```bash
cd agent
```
2. Crie um ambiente virtual e instale dependências:
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
3. Configure o agente:
- Crie um arquivo `.env` na pasta `agent` com:
```env
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
```
4. Execute o agente:
```bash
python agent.py
```
## 📚 Documentação da API
### Autenticação
- **POST** `/api/auth/login`
- Body: `{"serial_key": "..."}`
- Retorno: `{"token": "JWT_TOKEN", "expires_in": 3600}`
### Domínios
- **GET** `/api/v1/domains`
- Headers: `Authorization: Bearer JWT_TOKEN`
- Retorno: `{"domains": ["exemplo.com", ...], "checksum": "md5...", "timestamp": 123456}`
### Consulta Rápida (Debug Local)
Para listar os domínios bloqueados sem necessidade de autenticação (apenas para desenvolvimento):
```bash
curl http://localhost:8001/debug_domains.php
```
### Consulta via API (Produção/Agente)
A API oficial requer autenticação JWT.
1. Autentique para obter o token:
```bash
curl -X POST http://localhost:8001/api/auth/login \
-H "Content-Type: application/json" \
-d '{"serial_key": "SEU_SERIAL_KEY"}'
```
2. Use o token retornado para consultar:
```bash
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.