DNSBlock
This commit is contained in:
29
database/cleanup_logs.php
Normal file
29
database/cleanup_logs.php
Normal 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);
|
||||
}
|
||||
25
database/migration_add_last_seen.php
Normal file
25
database/migration_add_last_seen.php
Normal 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);
|
||||
}
|
||||
25
database/migration_add_machine_id.php
Normal file
25
database/migration_add_machine_id.php
Normal 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);
|
||||
}
|
||||
30
database/migration_create_api_logs.php
Normal file
30
database/migration_create_api_logs.php
Normal 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
133
database/schema.sql
Normal 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
29
database/seeds.sql
Normal 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');
|
||||
Reference in New Issue
Block a user