This commit is contained in:
Halbe Bruno
2025-12-05 19:40:39 -03:00
commit f37bc712e6
4312 changed files with 359196 additions and 0 deletions

29
database/cleanup_logs.php Normal file
View File

@@ -0,0 +1,29 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use App\Config\Database;
// Configuração: Dias para manter os logs (Default: 30)
$daysToKeep = getenv('LOG_RETENTION_DAYS') ?: 30;
try {
$conn = Database::getInstance()->getConnection();
echo "Iniciando limpeza de logs antigos (> $daysToKeep dias)...\n";
// Calcular data de corte
$cutoffDate = date('Y-m-d H:i:s', strtotime("-$daysToKeep days"));
// Executar limpeza
$stmt = $conn->prepare("DELETE FROM api_logs WHERE created_at < :cutoff");
$stmt->execute(['cutoff' => $cutoffDate]);
$deletedCount = $stmt->rowCount();
echo "Limpeza concluída. $deletedCount registros removidos.\n";
} catch (Exception $e) {
echo "Erro: " . $e->getMessage() . "\n";
exit(1);
}

View File

@@ -0,0 +1,25 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use App\Config\Database;
try {
$conn = Database::getInstance()->getConnection();
echo "Adicionando coluna 'last_seen' na tabela 'servers'...\n";
// Check if column exists
$stmt = $conn->query("SHOW COLUMNS FROM servers LIKE 'last_seen'");
if ($stmt->rowCount() == 0) {
$sql = "ALTER TABLE servers ADD COLUMN last_seen TIMESTAMP NULL DEFAULT NULL AFTER status";
$conn->exec($sql);
echo "Coluna 'last_seen' adicionada com sucesso.\n";
} else {
echo "Coluna 'last_seen' já existe.\n";
}
} catch (Exception $e) {
echo "Erro: " . $e->getMessage() . "\n";
exit(1);
}

View File

@@ -0,0 +1,25 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use App\Config\Database;
try {
$conn = Database::getInstance()->getConnection();
echo "Adicionando coluna machine_id na tabela servers...\n";
// Check if column exists
$stmt = $conn->prepare("SHOW COLUMNS FROM servers LIKE 'machine_id'");
$stmt->execute();
if ($stmt->fetch()) {
echo "Coluna machine_id já existe.\n";
} else {
$conn->exec("ALTER TABLE servers ADD COLUMN machine_id VARCHAR(255) DEFAULT NULL AFTER serial_key");
echo "Coluna machine_id adicionada com sucesso.\n";
}
} catch (Exception $e) {
echo "Erro: " . $e->getMessage() . "\n";
exit(1);
}

View File

@@ -0,0 +1,30 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use App\Config\Database;
try {
$conn = Database::getInstance()->getConnection();
echo "Criando tabela api_logs...\n";
$sql = "CREATE TABLE IF NOT EXISTS `api_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`server_id` int(11) DEFAULT NULL,
`action` varchar(50) NOT NULL,
`message` text,
`ip_address` varchar(45) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `server_id` (`server_id`),
CONSTRAINT `fk_apilogs_server` FOREIGN KEY (`server_id`) REFERENCES `servers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
$conn->exec($sql);
echo "Tabela api_logs criada com sucesso.\n";
} catch (Exception $e) {
echo "Erro: " . $e->getMessage() . "\n";
exit(1);
}

133
database/schema.sql Normal file
View File

@@ -0,0 +1,133 @@
-- Schema para Sistema DNSBlock
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
--
-- Tabela `clients`
--
CREATE TABLE `clients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`asn` varchar(50) NOT NULL,
`email` varchar(255) NOT NULL,
`financial_email` varchar(255) DEFAULT NULL,
`telegram_id` varchar(100) DEFAULT NULL,
`status` enum('active','inactive') NOT NULL DEFAULT 'active',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`role` enum('admin','client') NOT NULL DEFAULT 'client',
`client_id` int(11) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `client_id` (`client_id`),
CONSTRAINT `fk_users_client` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `servers`
--
CREATE TABLE `servers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`ip_v4` varchar(45) NOT NULL,
`ip_v6` varchar(100) DEFAULT NULL,
`serial_key` varchar(255) NOT NULL,
`machine_id` varchar(255) DEFAULT NULL,
`status` enum('active','inactive') NOT NULL DEFAULT 'active',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `serial_key` (`serial_key`),
KEY `client_id` (`client_id`),
CONSTRAINT `fk_servers_client` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `orders`
--
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`type` enum('block','unblock') NOT NULL,
`content` text,
`received_at` datetime NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `domains`
--
CREATE TABLE `domains` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`status` enum('blocked','unblocked') NOT NULL DEFAULT 'blocked',
`last_order_id` int(11) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `last_order_id` (`last_order_id`),
CONSTRAINT `fk_domains_order` FOREIGN KEY (`last_order_id`) REFERENCES `orders` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `order_items`
--
CREATE TABLE `order_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) NOT NULL,
`domain_id` int(11) NOT NULL,
`action` enum('block','unblock') NOT NULL,
PRIMARY KEY (`id`),
KEY `order_id` (`order_id`),
KEY `domain_id` (`domain_id`),
CONSTRAINT `fk_items_order` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_items_domain` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `audit_logs`
--
CREATE TABLE `audit_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`action` varchar(255) NOT NULL,
`description` text,
`ip_address` varchar(45) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Tabela `api_logs`
--
CREATE TABLE `api_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`server_id` int(11) DEFAULT NULL,
`action` varchar(50) NOT NULL,
`message` text,
`ip_address` varchar(45) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `server_id` (`server_id`),
CONSTRAINT `fk_apilogs_server` FOREIGN KEY (`server_id`) REFERENCES `servers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
COMMIT;

29
database/seeds.sql Normal file
View File

@@ -0,0 +1,29 @@
-- Admin User (password: admin123)
INSERT INTO users (name, email, password, role) VALUES
('Administrador', 'admin@dnsblock.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');
-- Demo Client
INSERT INTO clients (name, asn, email, financial_email, status) VALUES
('Provedor Exemplo Ltda', 'AS12345', 'contato@provedor.com', 'financeiro@provedor.com', 'active');
-- Client User (password: client123)
INSERT INTO users (name, email, password, role, client_id) VALUES
('João Cliente', 'joao@provedor.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'client', 1);
-- Demo Server
INSERT INTO servers (client_id, name, ip_v4, serial_key, status) VALUES
(1, 'DNS Principal SP', '192.168.1.100', 'a1b2c3d4e5f600001111222233334444', 'active');
-- Demo Order
INSERT INTO orders (title, type, content, received_at) VALUES
('Processo TJ-SP 001/2024', 'block', 'Determina-se o bloqueio dos domínios listados por conterem conteúdo ilícito.', NOW());
-- Demo Domains
INSERT INTO domains (name, status, last_order_id) VALUES
('jogos-ilegais.com', 'blocked', 1),
('apostas-nao-reg.net', 'blocked', 1);
-- Order Items
INSERT INTO order_items (order_id, domain_id, action) VALUES
(1, 1, 'block'),
(1, 2, 'block');