-- =====================================================================
-- tb_block_ip — Lista de bloqueios para acesso ao sistema.
--
-- Tipos:
--   ip       → IP único ou range CIDR (ex: 191.183.43.65 ou 10.0.0.0/8)
--   provider → matching por substring no ISP (ex: 'AWS', 'OVH')
--   country  → código ISO 3166-1 alpha-2 (ex: 'CN', 'RU')
--
-- A função acessoBloqueado() em functions.php consulta esta tabela em todo
-- request via global.php (com cache em sessão de 5 min).
-- =====================================================================

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS `tb_block_ip` (
  `id_block_ip`            INT(11)         NOT NULL AUTO_INCREMENT,
  `block_ip_type`          ENUM('ip','provider','country') NOT NULL DEFAULT 'ip',
  `block_ip_value`         VARCHAR(255)    NOT NULL,                             -- IP/CIDR, nome ISP ou código país
  `block_ip_name`          VARCHAR(120)    DEFAULT NULL,                         -- rótulo amigável
  `block_ip_observation`   TEXT            DEFAULT NULL,
  `block_ip_status`        TINYINT(1)      NOT NULL DEFAULT 1,                   -- 1=bloqueio ativo, 0=desligado
  `block_ip_created`       DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `block_ip_updated`       DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_block_ip`),
  KEY `ix_block_type`   (`block_ip_type`),
  KEY `ix_block_status` (`block_ip_status`),
  KEY `ix_block_value`  (`block_ip_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
