カーネル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が管理される方法を指定します。 この設定は、ファイアウォールパネルにのみ影響します。

例:

$kernel->managedBy('demo');

run()

  • return int

チェックプロセスを実行します。

レスポンスコード:

定数 理由
RESPONSE_DENY 0 永久にブロックされました。
RESPONSE_ALLOW 1 パスしました。
RESPONSE_TEMPORARILY_DENY 2 一時的にブロックされ、キャプチャを解決することでブロックが解除されます。
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 JavaScriptによって生成されたクッキーのチェック。
referer bool true HTTP_REFERERのチェック
frequency bool true time_unit_quotaの設定のチェック。

Cookieフィルターはデフォルトでfalseに設定されています。これは、JavaScriptスニペットをWebページに出力する必要があるためです。getJavascript()が生成するスニペットはJavaScriptによってクッキーを生成します。

使用法については、getJavascript()を参照してください。

disableFilters()

  • return void

設定済みのすべてのフィルターを無効にします。

$kernel->disableFilters();

IPトレイト

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

setIp($ip)

  • param string $ip - IPアドレス。
  • return void

IPアドレスを設定します。

例:

// ここでは、CloudFlareから実際の訪問者のIPを取得する例です。
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];

// ウェブサイトでCDNサービスを使用している場合は、
// 実際の訪問者のIPを取得するようにしてください。そうしないと、ユーザーがブロックされます。
$kernel->setIp($realIp);

getIp()

  • return string

現在設定されているIPを取得します。

例:

$ip = $kernel->getIp();

setRdns($rdns)

  • param string $rdns - IPアドレスの逆引きDNSレコード。
  • 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 - ダイアログUIの設定。
  • return void

ダイアログUIをカスタマイズします。

例:

$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

WebページにJavaScriptスニペットを出力します。

このスニペットは、クライアントのブラウザでクッキーを生成し、クッキーをチェックしてクライアントがボットかどうかを識別します。

// ページテンプレートでこの変数を出力します。
$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 1つのIPアドレスに対して1つのセッションのみを許可します。
  • return void

オンラインセッションを制限します。

例:

$kernel->limitSession(100, 300);

getSessionCount()

  • return int

オンラインの人数を取得します。limitSessionが有効な場合。

例:

$count = $kernel->getSessionCount();