API ядра

Ядро

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

ban($ip)

  • param string $ip - Одиночный IP-адрес.
  • return void

Блокировка IP-адреса.

Пример:

$kernel->ban('33.125.12.87');

getCurrentUrl()

  • return string

Возвращает текущий URL. Этот метод эквивалентен $_SERVER['REQUEST_URI'].

Пример:

echo $kernel->getCurrentUrl();

managedBy($type)

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

Сообщает Shieldon, каким образом управляется Shieldon. Этот параметр влияет только на панель Firewall.

Пример:

$kernel->managedBy('demo');

run()

  • return int

Запускает процесс проверки.

Коды ответа:

Константа Значение Причина
RESPONSE_DENY 0 Заблокирован навсегда.
RESPONSE_ALLOW 1 Прошел проверку.
RESPONSE_TEMPORARILY_DENY 2 Временная блокировка, можно разблокировать с помощью Captcha.
RESPONSE_LIMIT 3 Превышен лимит онлайн-сессий.

Пример:

$result = $kernel->run();

setClosure($key, $closure)

  • param string $key - Идентификатор замыкания.
  • param Closure $closure - Функция замыкания.
  • return void

Устанавливает функцию замыкания.

Пример:

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

exclude($uriPath)

  • param string $uriPath - Компонент пути URI.
  • return void

Устанавливает URL, которые должны быть исключены из защиты.

Пример:

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

setExcludedUrls($urls)

  • param array $urls - Коллекция URL.
  • return void

Устанавливает URL, которые должны быть исключены из защиты.

Пример:

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

$kernel->setExcludedUrls($list);

setLogger($logger)

  • param ActionLogger $logger - Регистрирует действия пользователей.
  • return void

Устанавливает регистратор действий.

Пример:

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

setProperty($key, $value)

  • param string $key - Название ключа для свойства.
  • param mixed $value - Значение ключа.
  • return void

Пример:

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

Подробное описание настроек вы можете найти здесь.

setProperties($settings)

  • param array $settings - Настройки.
  • return void

Пример:

$kernel->setProperties($settings);

setStrict($bool)

  • param bool $bool - Установите true, чтобы включить строгий режим, false - чтобы отключить.
  • return void

Пример:

$kernel->setStrict(true);

unban($ip)

  • param string $ip - IP-адрес.
  • return void

Разблокировка IP-адреса.

Пример:

$kernel->unban('33.33.33.33');

Трейт Captcha

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

setCaptcha($instance)

  • param CaptchaInterface $instance - Экземпляр Captcha.
  • return void

Установка Captcha. Для подробного использования см. раздел Captcha.

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

captchaResponse()

  • return bool

Возвращает результат Captcha. true: Captcha успешно решена, false - в противном случае.

Пример:

$result = $this->captchaResponsse();

disableCaptcha()

  • return void

Отключает все модули Captcha. Этот метод предназначен для модульного тестирования.


Трейт Component

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

setComponent($instance)

  • param ComponentProvider $instance - Экземпляр компонента.
  • return void

Установка компонента.

Пример:

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

getComponent()

  • param string $name - Название класса компонента.
  • return void | ComponentProvider

Получает экземпляр компонента из контейнера компонентов.

Пример:

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

disableComponents()

  • return void

Отключает все компоненты, даже если они уже были настроены.

Пример:

$kernel->disableComponents();

Трейт Driver

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

setDriver($driver)

  • param DriverProvider $driver - Запрос данных из выбранного драйвера.
  • return void

Пример:

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

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

setChannel($channel)

  • param string $channel - Укажите канал.
  • return void

Пример:

$kernel->setChannel('web_project');

disableDbBuilder()

  • return void

Отключает автоматическое создание базы данных.

Пример:

$kernel->disableDbBuilder();

Трейт Filter

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

setFilters($settings)

  • param array $settings - Настройки фильтра.
  • return void
$kernel->setFilters([
    'session' => true,
    'cookie' => true,
    'referer' => true,
    'frequency' => true,
]);

setFilter($filterName, $value)

  • param string $filterName - Название фильтра.
  • param bool $value - True, чтобы включить фильтр, false - в противном случае.
  • return void

Пример:

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

Настройки по умолчанию:

Ключ Тип Значение Описание
session bool true Проверка сессии, созданной драйвером сессий Shieldon.
cookie bool false Проверка cookie, созданных JavaScript.
referer bool true Проверка HTTP_REFERER
frequency bool true Проверка настройки time_unit_quota.

Фильтр Cookie по умолчанию установлен в false, поскольку вам необходимо включить фрагмент JavaScript на своих веб-страницах. Фрагмент, созданный getJavascript(), создаст cookie с помощью JavaScript.

См. getJavascript() для примера использования.

disableFilters()

  • return void

Отключает все фильтры, даже если они уже были настроены.

$kernel->disableFilters();

Трейт IP

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

setIp($ip)

  • param string $ip - IP-адрес.
  • return void

Установка IP-адреса.

Пример:

// Вот пример захвата реального IP-адреса посетителя с CloudFlare.
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];

// Если вы используете службу CDN на своем веб-сайте,
// убедитесь, что вы захватываете реальный IP-адрес посетителя, иначе пользователи могут быть заблокированы.
$kernel->setIp($realIp);

getIp()

  • return string

Возвращает текущий установленный IP.

Пример:

$ip = $kernel->getIp();

setRdns($rdns)

  • param string $rdns - Обратная DNS-запись для этого IP-адреса.
  • return void

Установка записи обратной DNS-записи для проверки.

Пример:

$kernel->setRdns('localhost');

getRdns()

  • return string

Возвращает разрешенное имя хоста для IP.

$rdns = $kernel->getRdns();

Трейт Messenger

Shieldon\Firewall\Kernel\MessengerTrait
  • setMessenger

setMessenger($instance)

  • param MessengerInterface $instance - Экземпляр мессенджера.
  • return void

Пример:

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

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

$kernel->setMessenger($telegramMessenger);

Трейт Template

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

setDialog($settings)

  • param array $settings - Настройки пользовательского интерфейса диалога.
  • return void

Настройка пользовательского интерфейса диалога.

Пример:

$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

Возвращает результат.

Пример:

$response = $kernel->respond();

setTemplateDirectory($directory)

  • param array $directory - Каталог, в котором находятся файлы шаблона.
  • return void

Установка каталога шаблона фронтенда. Вы можете скопировать эти файлы в каталог и изменить их, чтобы настроить внешний вид диалогов.

Пример:

$kernel->setTemplateDirectory(YOUR_DIRECTORY_PATH);

getJavascript()

  • return string

Выводит фрагмент JavaScript на ваших веб-страницах.

Этот фрагмент создает cookie в браузере клиента, а затем мы проверяем cookie, чтобы определить, является ли клиент роботом или нет.

// Выводите эту переменную на вашем шаблоне страницы.
$jsCode = $kernel->getJavascript();

Сессия

Shieldon\Firewall\Kernel\SessionTrait
  • limitSession
  • getSessionCount

limitSession($count, $period, $unique)

  • param int $count 1000 Количество онлайн-пользователей. Если достигнуто, пользователи будут в очереди.
  • param int $period 300 Период времени для просмотра пользователей. (в секундах)
  • param bool $unique false Разрешить только одну сессию на IP-адрес.
  • return void

Ограничение онлайн-сессий.

Пример:

$kernel->limitSession(100, 300);

getSessionCount()

  • return int

Возвращает количество онлайн-пользователей. Если включено limitSession.

Пример:

$count = $kernel->getSessionCount();