DNSBlock
This commit is contained in:
125
README.md
Normal file
125
README.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# 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
|
||||
|
||||
### 1. Requisitos
|
||||
- Docker e Docker Compose
|
||||
- Python 3.11+ (para o agente, caso rode fora do Docker)
|
||||
|
||||
### 2. Instalação Rápida (Docker)
|
||||
|
||||
1. Clone o repositório.
|
||||
2. Configure o ambiente:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# O arquivo já vem configurado para o ambiente Docker padrão
|
||||
```
|
||||
3. Suba os containers:
|
||||
```bash
|
||||
docker-compose up -d --build
|
||||
```
|
||||
4. Acesse o sistema:
|
||||
- **URL**: `http://localhost:8001`
|
||||
- **Admin**: `admin@dnsblock.com` / `Admin@123` (Senha padrão atualizada para política forte)
|
||||
- **Cliente**: `joao@provedor.com` / `Client@123`
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Política de Senhas**: O sistema exige senhas com no mínimo **8 caracteres**, contendo pelo menos **uma letra maiúscula** e **um caractere especial**.
|
||||
|
||||
### 3. Instalação Manual (Sem Docker)
|
||||
*Consulte a seção de requisitos no `composer.json` e configure um servidor Apache/Nginx com PHP 8.2+ e MySQL 8.0.*
|
||||
|
||||
### 3. 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.
|
||||
Reference in New Issue
Block a user