function rs_wpss_update_bw_list_keys($list, $keys) { /*** * Update blacklist or whitelist keys * $list - 'white' or 'black' ***/ $opname = array('white' => 'spamshield_whitelist_keys', 'black' => 'blacklist_keys'); $arr = explode(WPSS_EOL, $keys); $tmp = rs_wpss_sort_unique($arr); $keys = implode(WPSS_EOL, $tmp); update_option($opname[$list], $keys, FALSE); }
private function ip_ban_htaccess() { /*** * Write the updated list of banned IP's to .htaccess. * Added 1.9.4 ***/ $hta_bak_dir = WPSS_CONTENT_DIR_PATH . '/backup'; $hta_wpss_bak_dir = $hta_bak_dir . '/wp-spamshield'; $hta_file = ABSPATH . '/.htaccess'; $hta_bak_file = $hta_wpss_bak_dir . '/original.htaccess'; $wpss_index_file = WPSS_PLUGIN_PATH . '/index.php'; $bak_dir_hta_file = WPSS_PLUGIN_PATH . '/lib/sec/.htaccess'; $ip = rs_wpss_get_ip_addr(); $wpss_ip_ban = get_option('spamshield_ip_ban'); if (empty($wpss_ip_ban)) { return FALSE; } $wpss_ip_ban = rs_wpss_sort_unique($wpss_ip_ban); $banned_ip_count = count($wpss_ip_ban); $ip_ban_rgx = '^(' . str_replace(array('.', ':'), array('\\.', '\\:'), implode('|', $wpss_ip_ban)) . ')$'; $wpss_hta_data = WPSS_EOL . WPSS_EOL . '# BEGIN WP-SpamShield' . WPSS_EOL . WPSS_EOL; $wpss_hta_data .= '<IfModule mod_setenvif.c>' . WPSS_EOL . "\t" . 'SetEnvIf Remote_Addr ' . $ip_ban_rgx . ' WPSS_SEC_THREAT' . WPSS_EOL . '</IfModule>'; $wpss_hta_data .= WPSS_EOL . WPSS_EOL . '# END WP-SpamShield' . WPSS_EOL . WPSS_EOL; $wpss_hta_data_wp = '# BEGIN WordPress'; if (file_exists($hta_file)) { if (!file_exists($hta_wpss_bak_dir)) { wp_mkdir_p($hta_wpss_bak_dir); @chmod($hta_wpss_bak_dir, 0750); @chmod($hta_bak_dir, 0750); @copy($bak_dir_hta_file, $hta_wpss_bak_dir . '/.htaccess'); @copy($wpss_index_file, $hta_wpss_bak_dir . '/index.php'); @copy($bak_dir_hta_file, $hta_bak_dir . '/.htaccess'); @copy($wpss_index_file, $hta_bak_dir . '/index.php'); } if (!file_exists($hta_bak_file)) { @copy($hta_file, $hta_bak_file); } $hta_contents = file_get_contents($hta_file); if (strpos($hta_contents, '# BEGIN WP-SpamShield') !== FALSE && strpos($hta_contents, '# END WP-SpamShield') !== FALSE) { $hta_contents_mod = preg_replace("~#\\ BEGIN\\ WP-SpamShield[\\w\\W]+#\\ END\\ WP-SpamShield~i", trim($wpss_hta_data, WPSS_EOL), $hta_contents); if ($hta_contents_mod !== $hta_contents) { file_put_contents($hta_file, $hta_contents_mod, LOCK_EX); } } elseif (strpos($hta_contents, '# BEGIN WordPress') !== FALSE) { $hta_contents_mod = preg_replace("~#\\ BEGIN\\ WordPress~i", $wpss_hta_data . $wpss_hta_data_wp, $hta_contents); file_put_contents($hta_file, $hta_contents_mod, LOCK_EX); } else { file_put_contents($hta_file, WPSS_EOL . WPSS_EOL . $wpss_hta_data . WPSS_EOL . WPSS_EOL, FILE_APPEND | LOCK_EX); } rs_wpss_append_log_data(WPSS_EOL . 'IP address banned and added to .htaccess block list. IP: ' . $ip, FALSE); } }