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