308 lines
10 KiB
PHP
308 lines
10 KiB
PHP
<?php
|
||
defined( 'ABSPATH' ) or die();
|
||
|
||
add_filter( 'rsssl_fields', function( $fields ) {
|
||
return array_merge( $fields,
|
||
[
|
||
[
|
||
'id' => 'enable_firewall',
|
||
'menu_id' => 'rules',
|
||
'group_id' => 'firewall_list_general',
|
||
'type' => 'checkbox',
|
||
'label' => __( 'Enable Firewall', 'really-simple-ssl' ),
|
||
'default' => false,
|
||
],
|
||
[
|
||
'id' => 'firewall_white_listing_overview',
|
||
'menu_id' => 'firewall_blocklists',
|
||
'group_id' => 'firewall_white_list_listing',
|
||
'type' => 'geo-ip-datatable',
|
||
'action' => 'rsssl_geo_white_list',
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
]
|
||
],
|
||
'columns' => [
|
||
[
|
||
'name' => __('IP Address', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'searchable' => true,
|
||
'column' => 'ip_address',
|
||
'width' => '45%',
|
||
],
|
||
[
|
||
'name' => __('Note', 'really-simple-ssl'),
|
||
'sortable' => false,
|
||
'column' => 'note',
|
||
'width' => '20%',
|
||
],
|
||
[
|
||
'name' => __('Date', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'column' => 'create_date',
|
||
'width' => '18%',
|
||
],
|
||
[
|
||
'name' => '',
|
||
'sortable' => false,
|
||
'column' => 'action',
|
||
'width' => '13%',
|
||
],
|
||
],
|
||
],
|
||
[
|
||
'id' => 'firewall_block_listing_overview',
|
||
'menu_id' => 'firewall_blocklists',
|
||
'group_id' => 'firewall_block_list_listing',
|
||
'type' => 'blocklist-datatable',
|
||
'action' => 'rsssl_firewall_block_list',
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
]
|
||
],
|
||
'columns' => [
|
||
[
|
||
'name' => __('IP Address', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'searchable' => true,
|
||
'column' => 'ip_address',
|
||
'width' => '55%',
|
||
],
|
||
[
|
||
'name' => __('Note', 'really-simple-ssl'),
|
||
'sortable' => false,
|
||
'column' => 'note',
|
||
'width' => '22%',
|
||
],
|
||
[
|
||
'name' => __('Time left', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'column' => 'time_left',
|
||
'width' => '10%',
|
||
],
|
||
[
|
||
'name' => '',
|
||
'sortable' => false,
|
||
'column' => 'action',
|
||
'width' => '13%',
|
||
],
|
||
],
|
||
],
|
||
[
|
||
'id' => '404_blocking_threshold',
|
||
'menu_id' => 'rules',
|
||
'group_id' => '404_blocking',
|
||
'type' => 'select',
|
||
'label' => __( 'Threshold', 'really-simple-ssl' ),
|
||
'tooltip' => sprintf(__('A lockout will occur if an IP address exceeds the threshold within the given timeframe. Select ‘%s’ if you want to disable 404 blocking.', 'really-simple-ssl'), __('Disabled', 'really-simple-ssl')),
|
||
'default' => 'lax',
|
||
'disabled' => rsssl_maybe_disable_404_blocking(),
|
||
'disabledTooltipText' => __("404 errors detected on your homepage. 404 blocking is unavailable, to prevent blocking of legitimate visitors. It is strongly recommended to resolve these errors.", "really-simple-ssl"),
|
||
'options' => [
|
||
'disabled' => __( 'Disabled', 'really-simple-ssl' ),
|
||
'lax' => __( 'Lax - 10 errors in 2 seconds', 'really-simple-ssl' ),
|
||
'normal' => __( 'Normal - 10 errors in 5 seconds', 'really-simple-ssl' ),
|
||
'strict' => __( 'Strict - 10 errors in 10 seconds', 'really-simple-ssl' ),
|
||
],
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
]
|
||
],
|
||
],
|
||
[
|
||
'id' => '404_blocking_lockout_duration',
|
||
'menu_id' => 'rules',
|
||
'group_id' => '404_blocking',
|
||
'type' => 'select',
|
||
'label' => __( 'Lockout duration', 'really-simple-ssl' ),
|
||
'tooltip' => __('The IP address will see a locked-out screen for the selected duration.', 'really-simple-ssl'),
|
||
'disabled' => rsssl_maybe_disable_404_blocking(),
|
||
'disabledTooltipText' => __("404 errors detected on your homepage. 404 blocking is unavailable, to prevent blocking of legitimate visitors. It is strongly recommended to resolve these errors.", "really-simple-ssl"),
|
||
'options' => [
|
||
'30' => __( '30 minutes', 'really-simple-ssl' ),
|
||
'60' => __( '1 hour', 'really-simple-ssl' ),
|
||
'240' => __( '4 hours', 'really-simple-ssl' ),
|
||
'1440' => __( '1 day', 'really-simple-ssl' ),
|
||
],
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
]
|
||
],
|
||
],
|
||
[
|
||
'id' => '404_blocking_captcha_trigger',
|
||
'menu_id' => 'rules',
|
||
'group_id' => '404_blocking',
|
||
'type' => 'checkbox',
|
||
'tooltip' => __('Allow visitors that might accidentally exceed the threshold to unblock themselves using a Captcha.', 'really-simple-ssl'),
|
||
'label' => __( 'Trigger Captcha on lockout', 'really-simple-ssl' ),
|
||
'disabled' => rsssl_maybe_disable_404_blocking(),
|
||
'disabledTooltipText' => __("404 errors detected on your homepage. 404 blocking is unavailable, to prevent blocking of legitimate visitors. It is strongly recommended to resolve these errors.", "really-simple-ssl"),
|
||
'default' => false,
|
||
'comment' => sprintf(__( 'Please configure your %sCaptcha settings%s before enabling this setting',
|
||
'really-simple-ssl' ), '<a id="set_to_captcha_configuration" href="#settings/general/enable_captcha_provider">', '</a>'),
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
'captcha_fully_enabled' => true,
|
||
],
|
||
],
|
||
],
|
||
[
|
||
'id' => 'user_agent_listing_overview',
|
||
'menu_id' => 'rules',
|
||
'group_id' => 'user_agents',
|
||
'type' => 'user-agents-datatable',
|
||
'action' => 'rsssl_user_agent_list',
|
||
'options' => [
|
||
'deleted' => __('Deleted', 'really-simple-ssl'),
|
||
'blocked' => __('Blocked', 'really-simple-ssl'),
|
||
],
|
||
'disabled' => false,
|
||
'default' => false,
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
]
|
||
],
|
||
'columns' => [
|
||
[
|
||
'name' => __('User-Agent', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'searchable' => true,
|
||
'column' => 'user_agent',
|
||
'width' => '20%',
|
||
],
|
||
[
|
||
'name' => __('Note', 'really-simple-ssl'),
|
||
'sortable' => false,
|
||
'searchable' => false,
|
||
'column' => 'note',
|
||
'width' => '40%',
|
||
],
|
||
[
|
||
'name' => __('Date Added', 'really-simple-ssl'),
|
||
'sortable' => false,
|
||
'column' => 'created_at',
|
||
'width' => '20%',
|
||
],
|
||
[
|
||
'name' => '',
|
||
'sortable' => false,
|
||
'column' => 'action',
|
||
],
|
||
],
|
||
],
|
||
[
|
||
'id' => 'firewall_listing_overview',
|
||
'menu_id' => 'rules',
|
||
'group_id' => 'firewall_list_listing',
|
||
'type' => 'geo-datatable',
|
||
'action' => 'rsssl_geo_list',
|
||
'options' => [
|
||
'blocked' => __('Blocked', 'really-simple-ssl'),
|
||
'locked' => __('Locked-out', 'really-simple-ssl'),
|
||
'trusted' => __('Trusted', 'really-simple-ssl'),
|
||
],
|
||
'disabled' => false,
|
||
'default' => false,
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'enable_firewall' => true,
|
||
]
|
||
],
|
||
'columns' => [
|
||
[
|
||
'name' => __('', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'searchable' => false,
|
||
'column' => 'flag',
|
||
'width' => '5%',
|
||
],
|
||
[
|
||
'name' => __('Country', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'searchable' => true,
|
||
'column' => 'country_name',
|
||
'width' => '150px',
|
||
],
|
||
[
|
||
'name' => __('Continent', 'really-simple-ssl'),
|
||
'sortable' => false,
|
||
'searchable' => false,
|
||
'column' => 'region_name',
|
||
'width' => '30%',
|
||
],
|
||
[
|
||
'name' => __('Status', 'really-simple-ssl'),
|
||
'sortable' => false,
|
||
'column' => 'status',
|
||
'width' => '20%',
|
||
],
|
||
[
|
||
'name' => '',
|
||
'sortable' => false,
|
||
'column' => 'action',
|
||
'width' => '180px',
|
||
],
|
||
],
|
||
],
|
||
[
|
||
'id' => 'firewall_event_log_viewer',
|
||
'menu_id' => 'firewall_logs',
|
||
'group_id' => 'firewall_logs_content',
|
||
'type' => 'eventlog-datatable',
|
||
'action' => 'event_log',
|
||
'event_type' => 'Firewall',
|
||
'label' => __('IP address overview', 'really-simple-ssl'),
|
||
'disabled' => false,
|
||
'default' => false,
|
||
'react_conditions' => [
|
||
'relation' => 'AND',
|
||
[
|
||
'event_log_enabled' => true,
|
||
]
|
||
],
|
||
'columns' => [
|
||
[
|
||
'name' => __('Country', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'column' => 'iso2_code',
|
||
'width' => '8%',
|
||
],
|
||
[
|
||
'name' => __('IP Address', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'searchable' => true,
|
||
'column' => 'source_ip',
|
||
'type' => 'text',
|
||
'width' => '42%',
|
||
],
|
||
[
|
||
'name' => __('Date', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'column' => 'datetime',
|
||
'width' => '20%',
|
||
],
|
||
[
|
||
'name' => __('Event', 'really-simple-ssl'),
|
||
'sortable' => true,
|
||
'column' => 'event_name',
|
||
'width' => '25%',
|
||
]
|
||
],
|
||
],
|
||
]
|
||
);
|
||
}, 200 ); |