APIs do Kernel

Kernel

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

ban($ip)

  • param string $ip - Endereço IP único.
  • return void

Bloqueia um endereço IP.

Exemplo:

$kernel->ban('33.125.12.87');

getCurrentUrl()

  • return string

Retorna a URL atual. Este método é equivalente a $_SERVER['REQUEST_URI'].

Exemplo:

echo $kernel->getCurrentUrl();

managedBy($type)

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

Informa ao Shieldon por qual tipo o Firewall está sendo gerenciado. Essa configuração afeta apenas o Painel do Firewall.

Exemplo:

$kernel->managedBy('demo');

run()

  • return int

Executa o processo de verificação.

Códigos de resposta:

constante valor motivo
RESPONSE_DENY 0 Bloqueado permanentemente.
RESPONSE_ALLOW 1 Permitido.
RESPONSE_TEMPORARILY_DENY 2 Bloqueado temporariamente e pode ser desbloqueado resolvendo o Captcha.
RESPONSE_LIMIT 3 Interrompido devido ao limite de sessões online alcançado.

Exemplo:

$result = $kernel->run();

setClosure($key, $closure)

  • param string $key - O nome de identificação do fechamento.
  • param Closure $closure - A função de fechamento.
  • return void

Define uma função de fechamento.

Exemplo:

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

exclude($uriPath)

  • param string $uriPath - O componente de caminho de um URI.
  • return void

Define uma URL que você deseja excluir da proteção.

Exemplo:

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

setExcludedUrls($urls)

  • param array $urls - A coleção de URLs.
  • return void

Define as URLs que você deseja excluir da proteção.

Exemplo:

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

$kernel->setExcludedUrls($list);

setLogger($logger)

  • param ActionLogger $logger - Registra logs de ações para os usuários.
  • return void

Define um registrador de log de ações.

Exemplo:

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

setProperty($key, $value)

  • param string $key - O nome da chave para a propriedade.
  • param mixed $value - O valor da chave.
  • return void

Exemplo:

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

A explicação das configurações pode ser encontrada aqui.

setProperties($settings)

  • param array $settings - As configurações.
  • return void

Exemplo:

$kernel->setProperties($settings);

setStrict($bool)

  • param bool $bool - Define como true para habilitar o modo estrito, false para desabilitá-lo.
  • return void

Exemplo:

$kernel->setStrict(true);

unban($ip)

  • param string $ip - Um endereço IP.
  • return void

Desbloqueia um endereço IP.

Exemplo:

$kernel->unban('33.33.33.33');

Trait Captcha

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

setCaptcha($instance)

  • param CaptchaInterface $instance - A instância do Captcha.
  • return void

Define um Captcha. Para detalhes de uso, consulte a seção Captcha.

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

captchaResponse()

  • return bool

Retorna o resultado dos Captchas. true: Captcha resolvido com sucesso, false caso contrário.

Exemplo:

$result = $this->captchaResponsse();

disableCaptcha()

  • return void

Desabilita todos os módulos Captcha. Este método é para fins de teste.


Trait Component

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

setComponent($instance)

  • param ComponentProvider $instance - A instância do componente.
  • return void

Define um componente.

Exemplo:

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

getComponent()

  • param string $name - O nome da classe do componente.
  • return void | ComponentProvider

Obtém uma instância do componente a partir do contêiner de componentes.

Exemplo:

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

disableComponents()

  • return void

Desabilita todos os componentes, mesmo que já estejam configurados.

Exemplo:

$kernel->disableComponents();

Trait Driver

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

setDriver($driver)

  • param DriverProvider $driver - Consulta dados a partir do driver que você escolher.
  • return void

Exemplo:

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

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

setChannel($channel)

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

Exemplo:

$kernel->setChannel('web_project');

disableDbBuilder()

  • return void

Desabilita a construção automática do banco de dados.

Exemplo:

$kernel->disableDbBuilder();

Trait Filter

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

setFilters($settings)

  • param array $settings - Configurações do filtro.
  • return void
$kernel->setFilters([
    'session' => true,
    'cookie' => true,
    'referer' => true,
    'frequency' => true,
]);

setFilter($filterName, $value)

  • param string $filterName - O nome do filtro.
  • param bool $value - True para habilitar o filtro, false caso contrário.
  • return void

Exemplo:

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

Configurações padrão:

chave tipo valor descrição
session bool true Verifica a sessão criada pelo driver de sessão Shieldon.
cookie bool false Verifica o cookie gerado pelo JavaScript.
referer bool true Verifica HTTP_REFERER
frequency bool true Verifica a configuração time_unit_quota.

O filtro de cookie está configurado como false por padrão, porque você precisa inserir o trecho de JavaScript em suas páginas da web. O trecho criado por getJavascript() irá gerar um cookie através do JavaScript.

Consulte getJavascript() para obter mais detalhes sobre seu uso.

disableFilters()

  • return void

Desabilita todos os filtros, mesmo que já estejam configurados.

$kernel->disableFilters();

Trait IP

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

setIp($ip)

  • param string $ip - Um endereço IP.
  • return void

Define um endereço IP.

Exemplo:

// Aqui está um exemplo de como obter o IP real do visitante do CloudFlare.
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];

// Se você estiver usando um serviço CDN em seu site,
// certifique-se de obter o IP real do visitante, caso contrário, os usuários serão bloqueados.
$kernel->setIp($realIp);

getIp()

  • return string

Obtém o endereço IP atual definido.

Exemplo:

$ip = $kernel->getIp();

setRdns($rdns)

  • param string $rdns - Registro de DNS reverso para esse endereço IP.
  • return void

Define um registro RDNS para verificação.

Exemplo:

$kernel->setRdns('localhost');

getRdns()

  • return string

Obtém o nome de host resolvido para o IP.

$rdns = $kernel->getRdns();

Trait Messenger

Shieldon\Firewall\Kernel\MessengerTrait
  • setMessenger

setMessenger($instance)

  • param MessengerInterface $instance - A instância do mensageiro.
  • return void

Exemplo:

$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 - As configurações da interface do usuário do diálogo.
  • return void

Personaliza a interface do usuário do diálogo.

Exemplo:

$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 ao resultado.

Exemplo:

$response = $kernel->respond();

setTemplateDirectory($directory)

  • param array $directory - O diretório onde os arquivos de modelo estão localizados.
  • return void

Define o diretório de modelos frontend. Você pode copiar esses arquivos para um diretório e modificá-los para personalizar a aparência dos diálogos.

Exemplo:

$kernel->setTemplateDirectory(YOUR_DIRECTORY_PATH);

getJavascript()

  • return string

Imprime um trecho de código JavaScript em suas páginas da web.

Este trecho gera um cookie no navegador do cliente e, em seguida, verificamos o cookie para identificar se o cliente é um robô ou não.

// Imprima essa variável em seu modelo de página.
$jsCode = $kernel->getJavascript();

Sessão

Shieldon\Firewall\Kernel\SessionTrait
  • limitSession
  • getSessionCount

limitSession($count, $period, $unique)

  • param int $count 1000 A quantidade de usuários online. Se atingido, os usuários serão colocados em fila.
  • param int $period 300 O período de tempo permitido para os usuários navegarem. (unidade: segundos)
  • param bool $unique false Permitir apenas uma sessão por endereço IP.
  • return void

Limita as sessões online.

Exemplo:

$kernel->limitSession(100, 300);

getSessionCount()

  • return int

Obtém a contagem de pessoas online. Se limitSession estiver habilitado.

Exemplo:

$count = $kernel->getSessionCount();