API del kernel

Kernel

Shieldon\Firewall\Kernel
  • ban
  • getCurrentUrl
  • managedBy
  • run
  • setClosure
  • exclude
  • setExcludedUrls
  • setLogger
  • setProperty
  • setProperties
  • setStrict
  • unban

ban($ip)

  • param string $ip - Dirección IP individual.
  • return void

Bloquea una dirección IP.

Ejemplo:

$kernel->ban('33.125.12.87');

getCurrentUrl()

  • return string

Devuelve la URL actual. Este método es equivalente a $_SERVER['REQUEST_URI'].

Ejemplo:

echo $kernel->getCurrentUrl();

managedBy($type)

  • param string $type "" managed | config | demo
  • return void

Indica a Shieldon cómo está gestionado el Firewall. Esta configuración solo afecta al Panel de Firewall.

Ejemplo:

$kernel->managedBy('demo');

run()

  • return int

Ejecuta el proceso de verificación.

Códigos de respuesta:

constante valor motivo
RESPONSE_DENY 0 Bloqueado permanentemente.
RESPONSE_ALLOW 1 Permitido.
RESPONSE_TEMPORARILY_DENY 2 Bloqueado temporalmente y se puede desbloquear resolviendo el Captcha.
RESPONSE_LIMIT 3 Detenido debido a alcanzar el límite de sesión en línea.

Ejemplo:

$result = $kernel->run();

setClosure($key, $closure)

  • param string $key - El nombre de identificación del cierre.
  • param Closure $closure - La función de cierre.
  • return void

Establece una función de cierre.

Ejemplo:

$kernel->setClosure('www_authenticate', function() use ($authHandler, $authenticateList) {
    $authHandler->set($authenticateList);
    $authHandler->check();
});

exclude($uriPath)

  • param string $uriPath - El componente de ruta de una URI.
  • return void

Establece una URL que desea excluir de la protección.

Ejemplo:

$kernel->exclude('/firewall/panel');

setExcludedUrls($urls)

  • param array $urls - La colección de URL.
  • return void

Establece las URL que desea excluir de la protección.

Ejemplo:

$list = [
    '/example/1',
    '/wp-login.php',
];

$kernel->setExcludedUrls($list);

setLogger($logger)

  • param ActionLogger $logger - Registra los registros de acciones para los usuarios.
  • return void

Establece un registrador de registros de acciones.

Ejemplo:

$kernel->setLogger(
    new \Shieldon\Firewall\Log\ActionLogger(
        BOOTSTRAP_DIR . '/../tmp/shieldon'
    )
);

setProperty($key, $value)

  • param string $key - El nombre de clave para la propiedad.
  • param mixed $value - El valor de la clave.
  • return void

Ejemplo:

$kernel->setProperty('time_unit_quota', [
    's' => 4,
    'm' => 20, 
    'h' => 60, 
    'd' => 240,
]);

La explicación de la configuración se puede encontrar aquí.

setProperties($settings)

  • param array $settings - Las configuraciones.
  • return void

Ejemplo:

$kernel->setProperties($settings);

setStrict($bool)

  • param bool $bool - Establece en true para habilitar el modo estricto, en false para deshabilitarlo.
  • return void

Ejemplo:

$kernel->setStrict(true);

unban($ip)

  • param string $ip - Una dirección IP.
  • return void

Desbloquea una dirección IP.

Ejemplo:

$kernel->unban('33.33.33.33');

Trait Captcha

Shieldon\Firewall\Kernel\CaptchaTrait
  • setCaptcha
  • captchaResponse
  • disableCaptcha

setCaptcha($instance)

  • param CaptchaInterface $instance - La instancia de Captcha.
  • return void

Establece un Captcha. Para más detalles de uso, consulte la sección Captcha.

$kernel->setCaptcha(
    new \Shieldon\Firewall\Captcha\Recaptcha([
        'key' => '6LfkOaUUAAAAAH-AlTz3hRQ25SK8kZKb2hDRSwz9',
        'secret' => '6LfkOaUUAAAAAJddZ6k-1j4hZC1rOqYZ9gLm0WQh',
        'version' => 'v2',
        'lang' => 'en',
    ])
);

captchaResponse()

  • return bool

Devuelve el resultado de los Captchas. true: El Captcha se resolvió correctamente, false en caso contrario.

Ejemplo:

$result = $this->captchaResponsse();

disableCaptcha()

  • return void

Deshabilita todos los módulos Captcha. Este método es para fines de prueba.


Trait Component

Shieldon\Firewall\Kernel\ComponentTrait
  • setComponent
  • getComponent
  • disableComponents

setComponent($instance)

  • param ComponentProvider $instance - La instancia del componente.
  • return void

Establece un componente.

Ejemplo:

$kernel->setComponent(
    new \Shieldon\Firewall\Component\UserAgent()
);

getComponent()

  • param string $name - El nombre de clase del componente.
  • return void | ComponentProvider

Obtiene una instancia del componente desde el contenedor de componentes.

Ejemplo:

$useragent = $kernel->getComponent('UserAgent');

disableComponents()

  • return void

Deshabilita todos los componentes incluso si ya están configurados.

Ejemplo:

$kernel->disableComponents();

Trait Driver

Shieldon\Firewall\Kernel\DriverTrait
  • setDriver
  • setChannel
  • disableDbBuilder

setDriver($driver)

  • param DriverProvider $driver - Consulta datos desde el controlador que elijas.
  • return void

Ejemplo:

$dbLocation = APPPATH . 'cache/shieldon.sqlite3';
$pdoInstance = new \PDO('sqlite:' . $dbLocation);

$kernel->setDriver(
    new \Shieldon\Firewall\Driver\SqliteDriver($pdoInstance)
);

setChannel($channel)

  • param string $channel - Especifica un canal.
  • return void

Ejemplo:

$kernel->setChannel('web_project');

disableDbBuilder()

  • return void

Deshabilita la creación automática de la base de datos.

Ejemplo:

$kernel->disableDbBuilder();

Trait Filter

Shieldon\Firewall\Kernel\FilterTrait
  • setFilters
  • setFilter
  • disableFilters

setFilters($settings)

  • param array $settings - Configuraciones de filtro.
  • return void
$kernel->setFilters([
    'session' => true,
    'cookie' => true,
    'referer' => true,
    'frequency' => true,
]);

setFilter($filterName, $value)

  • param string $filterName - El nombre del filtro.
  • param bool $value - True para habilitar el filtro, false en caso contrario.
  • return void

Ejemplo:

$kernel->setFilter('session', false);
$kernel->setFilter('cookie', false);
$kernel->setFilter('referer', true);
$kernel->setFilter('frequency', false); 

Configuraciones predeterminadas:

clave tipo valor descripción
session bool true Comprueba la sesión creada por el controlador de sesión de Shieldon.
cookie bool false Comprueba la cookie generada por JavaScript.
referer bool true Comprueba HTTP_REFERER
frequency bool true Comprueba la configuración time_unit_quota.

El filtro de cookie está configurado en false de manera predeterminada, porque debes insertar el fragmento de JavaScript en tus páginas web. El fragmento creado por getJavascript() generará una cookie mediante JavaScript.

Consulta getJavascript() para obtener más detalles sobre su uso.

disableFilters()

  • return void

Deshabilita todos los filtros incluso si ya están configurados.

$kernel->disableFilters();

Trait IP

Shieldon\Firewall\IpTrait
  • setIp
  • getIp
  • setRdns
  • getRdns

setIp($ip)

  • param string $ip - Una dirección IP.
  • return void

Establece una dirección IP.

Ejemplo:

// Aquí tienes un ejemplo de cómo obtener la dirección IP real de CloudFlare.
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];

// Si usas un servicio CDN en tu sitio web,
// asegúrate de obtener la dirección IP real del visitante, de lo contrario, los usuarios serán bloqueados.
$kernel->setIp($realIp);

getIp()

  • return string

Obtiene la dirección IP actual establecida.

Ejemplo:

$ip = $kernel->getIp();

setRdns($rdns)

  • param string $rdns - Registro DNS inverso para esa dirección IP.
  • return void

Establece un registro RDNS para la verificación.

Ejemplo:

$kernel->setRdns('localhost');

getRdns()

  • return string

Obtiene el nombre de host resuelto para la IP.

$rdns = $kernel->getRdns();

Trait Messenger

Shieldon\Firewall\Kernel\MessengerTrait
  • setMessenger

setMessenger($instance)

  • param MessengerInterface $instance - La instancia del mensajero.
  • return void

Ejemplo:

$apiKey = '981441296:AAGCcgv_NETMdWQCBTaMOk_yoMfax5EV7YQ';
$channel = '@your_channel';

$telegramMessenger = new \Messenger\Telegram($apiKey, $channel);

$kernel->setMessenger($telegramMessenger);

Trait Template

Shieldon\Firewall\Kernel\TemplateTrait
  • setDialog
  • respond
  • setTemplateDirectory
  • getJavascript

setDialog($settings)

  • param array $settings - La configuración de la interfaz de usuario del diálogo.
  • return void

Personaliza la interfaz de usuario del diálogo.

Ejemplo:

$settings = [
    'lang'             => 'en',
    'background_image' => '',
    'bg_color'         => '#ffffff',
    'header_bg_color'  => '#212531',
    'header_color'     => '#ffffff',
    'shadow_opacity'   => '0.2',
];

$kernel->setDialog($settings);

respond()

  • return ResponseInterface

Responde al resultado.

Ejemplo:

$response = $kernel->respond();

setTemplateDirectory($directory)

  • param array $directory - El directorio donde se encuentran los archivos de plantilla.
  • return void

Establece el directorio de plantillas frontend. Puedes copiar estos archivos en un directorio y modificarlos para personalizar el aspecto de los diálogos.

Ejemplo:

$kernel->setTemplateDirectory(YOUR_DIRECTORY_PATH);

getJavascript()

  • return string

Imprime un fragmento de código JavaScript en tus páginas web.

Este fragmento genera una cookie en el navegador del cliente, luego verificamos la cookie para identificar si el cliente es un robot o no.

// Imprime esta variable en tu plantilla de página.
$jsCode = $kernel->getJavascript();

Sesión

Shieldon\Firewall\Kernel\SessionTrait
  • limitSession
  • getSessionCount

limitSession($count, $period, $unique)

  • param int $count 1000 La cantidad de usuarios en línea. Si se alcanza, los usuarios estarán en cola.
  • param int $period 300 El período de tiempo que los usuarios pueden navegar. (unidad: segundos)
  • param bool $unique false Permitir solo una sesión por dirección IP.
  • return void

Limita las sesiones en línea.

Ejemplo:

$kernel->limitSession(100, 300);

getSessionCount()

  • return int

Obtiene el número de personas en línea. Si se habilita limitSession.

Ejemplo:

$count = $kernel->getSessionCount();