APIs
- setDriver
- setComponent
- setProperty
- setProperties
- setChannel
- setCaptcha
- setFilters
- setIp
- outputJsSnippet
- captchaResponse
- setView
- createDatabase
- ban
- unban
- limitSession
- run
The public APIs can be chaining yet SetDriver must be the first and run must be the last.
Chainable
setDriver
- param DriverProvider
- return self
$dbLocation = APPPATH . 'cache/shieldon.sqlite3';
$pdoInstance = new \PDO('sqlite:' . $dbLocation);
$shieldon->setDriver(new \Shieldon\Driver\SqliteDriver($pdoInstance));
setComponent
- param ComponentInterface
- return self
$shieldon->setComponent(new \Shieldon\Component\Ip());
setProperty
- param string
$key - param mixed
$value - return self
$shieldon->setProperty('time_unit_quota', [
's' => 4,
'm' => 20,
'h' => 60,
'd' => 240
]);
Default settings:
| key | type | value |
|---|---|---|
| time_unit_quota | array | ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60] |
| time_reset_limit | integer | 3600 |
| interval_check_referer | integer | 5 |
| interval_check_session | integer | 30 |
| limit_unusual_behavior | array | ['cookie' => 5, 'session' => 5, 'referer' => 10] |
| cookie_name | string | "ssjd" |
| cookie_domain | string | " |
| cookie_value | string | "1" |
setChannel
- param string
$channelChannel name. - return self
$shieldon->setChannel('web_project');
// Start new shieldon each day.
$shieldon->setChannel('web_project_' . date('Ymd'));
setCaptcha
- param CaptchaInterface
- return self
For deatiled usages, please see Captcha sestion.
$shieldon->setCaptcha(new \Shieldon\Captcha\Recaptcha([
'key' => '6LfkOaUUAAAAAH-AlTz3hRQ25SK8kZKb2hDRSwz9',
'secret' => '6LfkOaUUAAAAAJddZ6k-1j4hZC1rOqYZ9gLm0WQh',
'version' => 'v2',
'lang' => 'en',
]));
setFilters
- param array
$settingsFilter settings. - return self
$shieldon->setFilters([
'session' => true,
'cookie' => true,
'referer' => true,
'frequency' => true,
]);
Default settings:
| key | type | value | description |
|---|---|---|---|
| session | boolean | true | Check PHP session cookie. |
| cookie | boolean | false | Check cookie generated by JavaScript. |
| referer | boolean | true | Check HTTP_REFERER |
| frequency | boolean | true | Check time_unit_quota setting. |
The Cookie filter is false by default, because you have to output the JavaScript snippet to your web pages. The JavaScript snippet created by outputJsSnippet will generate cookie by JavaScript.
Check out outputJsSnippet for usage.
setIp
- param string
$ip - return self
// Here is an example, cature real vistor IP from CloudFlare.
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];
// If you use a CDN serive on your website,
// make sure to cature the real vistor IP, overwise users will get banned.
$shieldon->setIp($realIp);
createDatabase
- param bool
$optiontrue or false [default: true] - return self
$this->createDatabase(false);
setView
- param string
$htmlHTML text string. - param string
$typeThe page type. - return self
$htmlText = '<html>...bala...{{captcha}} ...bala...</html>';
$this->setView($htmlText, 'stop');
$type
| type | description |
|---|---|
| stop | The page displayed when user get temporaily banned. |
| limit | The page displayed when user is reached the online session limit. |
| deny | The page displayed when user is in blacklist. |
- Template tag
{{captcha}}: The CAPTCHA form for stop page. (required){{online_info}}: The online session infomation for for limit page.{{lineup_info}}: The line-up number infomation for for limit page.
ban
- param string
$ipSingle IP address. - return self
$shieldon->ban('33.125.12.87');
unban
- param string
$ipSingle IP address. - return self
$shieldon->unban('33.125.12.87');
limitSession
- param integer
$amountMaximum amount of online vistors. - param integer
$periodPeriod. (Unit: second) - return self
$shieldon->setSession(500, 300);
Non-chainable
outputJsSnippet
- return string [The JavaScript string.]
Required if cookie filiter is enabled.
// Output this variable in your page template.
$jsCode = $shieldon->outputJsSnippet();
captchaResponse
- return boolean
true: Captcha is solved successfully, false overwise.
$result = $this->captchaResponsse();
run
- return integer
Reponse code:
| constant | value | reason |
|---|---|---|
| RESPONSE_DENY | 0 | Banned permanently. |
| RESPONSE_ALLOW | 1 | Passed. |
| RESPONSE_TEMPORARILY_DENY | 2 | Banned temporarily. |
| RESPONSE_LIMIT | 3 | Stopped due to reaching online session limit. |
$result = $shieldon->run();