2026-03-19 09:38:15 -03:00
2026-03-17 11:20:17 -03:00
2025-12-17 12:33:42 -03:00
2026-03-18 13:58:20 -03:00
2025-12-17 12:33:42 -03:00
2026-03-19 09:38:15 -03:00
2025-12-06 08:47:48 -03:00
2025-12-05 19:40:39 -03:00
2026-03-17 11:20:17 -03:00
2026-03-17 11:20:17 -03:00
2026-02-19 09:31:50 -03:00
2025-12-05 19:40:39 -03:00
2025-12-05 19:40:39 -03:00
2025-12-06 08:47:48 -03:00
2026-03-17 11:20:17 -03:00
2025-12-17 12:33:42 -03:00
2025-12-06 12:07:05 -03:00

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)

  1. Navegue até a pasta agent:
    cd agent
    
  2. Crie um ambiente virtual e instale dependências:
    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:
      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:
    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):

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:
curl -X POST http://localhost:8001/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"serial_key": "SEU_SERIAL_KEY"}'
  1. 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
No description provided
Readme 25 MiB
Languages
Python 94%
HTML 3.1%
PHP 2%
TeX 0.6%
Shell 0.2%