Usage
This function runs automatically, so it is not called manually. Is this incorrect?
Source File
Located in /libs/Security.php on line 492.
1 Hook
Find these filters and actions in the source code below to hook into them. Use do_action() and add_filter() in your functions file or plugin.
Filters
"nebula_spam_domains"Need a new filter hook? Request one here.
Actions
This function has no action hooks available. Request one?
PHP
public function get_spam_domain_list(){
if ( $this->is_minimal_mode() ){return null;}
$this->timer('Get Spam Domain List', 'start', '[Nebula] Security');
//First get the latest spam domain list maintained by Matomo or Nebula's cache of the Matomo list
$spam_domain_public_list = false; //Default
if ( $this->is_transients_enabled() ){
$spam_domain_public_file = get_template_directory() . '/inc/data/spam_domain_list.txt'; //Eventually change this to "spam_domain_public_list.txt"
$spam_domain_public_list = nebula()->transient('nebula_spam_domain_public_list', function($data){
$response = $this->remote_get('https://raw.githubusercontent.com/matomo-org/referrer-spam-list/master/spammers.txt'); //Watch for this to change from "master" to "main" (if ever)
if ( !is_wp_error($response) ){
$spam_domain_public_list = $response['body'];
}
//If there was an error or empty response, try my GitHub repo
if ( is_wp_error($response) || empty($spam_domain_public_list) ){ //This does not check availability because it is the same hostname as above.
$response = $this->remote_get('https://raw.githubusercontent.com/chrisblakley/Nebula/main/inc/data/spam_domain_list.txt'); //Eventually change this to "spam_domain_public_list.txt"
if ( !is_wp_error($response) ){
$spam_domain_public_list = $response['body'];
}
}
//If either of the above remote requests received data, update the local file and store the data in a transient for 36 hours
if ( !is_wp_error($response) && !empty($spam_domain_public_list) ){
WP_Filesystem();
global $wp_filesystem;
$wp_filesystem->put_contents($data['spam_domain_public_file'], $spam_domain_public_list);
return $spam_domain_public_list;
}
}, array('spam_domain_public_file' => $spam_domain_public_file), HOUR_IN_SECONDS*36);
}
//If neither remote resource worked, get the local file
if ( empty($spam_domain_public_list) ){
WP_Filesystem();
global $wp_filesystem;
$spam_domain_public_list = $wp_filesystem->get_contents($spam_domain_public_file);
}
//If one of the above methods worked, parse the data.
if ( !empty($spam_domain_public_list) ){
$spam_domain_array = array();
foreach( explode("\n", $spam_domain_public_list) as $line ){
if ( !empty($line) ){
$spam_domain_array[] = $line;
}
}
} else {
$this->ga_send_exception('(Security) Public spammers.txt was not available!', false);
}
//Next get the latest spam domain "manual" list maintained by Nebula or the local cache of the Nebula list
$spam_domain_private_list = false; //Default
if ( $this->is_transients_enabled() ){
$spam_domain_private_file = get_template_directory() . '/inc/data/spam_domain_private_list.txt';
$spam_domain_private_list = nebula()->transient('nebula_spam_domain_private_list', function($data){
$response = $this->remote_get('https://raw.githubusercontent.com/chrisblakley/Nebula/main/inc/data/spam_domain_private_list.txt');
if ( !is_wp_error($response) ){
$spam_domain_private_list = $response['body'];
}
//If the above remote request received data, update the local file and store the data in a transient for 36 hours
if ( !is_wp_error($response) && !empty($spam_domain_private_list) ){
WP_Filesystem();
global $wp_filesystem;
$wp_filesystem->put_contents($data['spam_domain_private_file'], $spam_domain_private_list);
return $spam_domain_private_list;
}
}, array('spam_domain_private_file' => $spam_domain_private_file), HOUR_IN_SECONDS*36);
}
//If neither remote resource worked, get the local file
if ( empty($spam_domain_private_list) ){
WP_Filesystem();
global $wp_filesystem;
$spam_domain_private_list = $wp_filesystem->get_contents($spam_domain_private_file);
}
if ( !empty($spam_domain_private_list) ){
$spam_domain_array = array();
foreach( explode("\n", $spam_domain_private_list) as $line ){
if ( !empty($line) ){
$spam_domain_array[] = $line;
}
}
} else {
$this->ga_send_exception('(Security) Private spam_domain_private_list.txt was not available!', false);
}
//Add manual and user-added spam domains
$manual_nebula_spam_domains = array(
'bitcoinpile.com',
'84lv.com', //2024
'16lv.com', //2024
'1-88.vip', //2024
'top8.co', //2024
'tip8.co', //2024
'1-88.live', //2024
);
$all_spam_domains = apply_filters('nebula_spam_domains', $manual_nebula_spam_domains);
$this->timer('Get Spam Domain List');
return array_merge($spam_domain_array, $all_spam_domains);
}
Override
This function can not be short-circuited with an override filter. Request one?