function update_htaccess($dir, $depth) { if (preg_match('|/CVS$|', $dir)) { return true; } if (preg_match('|/opt$|', $dir)) { return true; } if (preg_match('|/wip$|', $dir)) { return true; } if (preg_match('|/www$|', $dir)) { return true; } $files = fbFile::scandir($dir, 0, false); $dirs = array(); $found = false; foreach ($files as $file) { $path = $dir . '/' . $file; if (@is_dir($path)) { $dirs[] = $path; continue; } if ($file == '.htaccess') { $found = true; continue; } } // foreach($files as $file) $cvsheader_found = false; $deny_found = false; $lines = array(); $path = $dir . '/.htaccess'; if ($found) { $lines = file($path); if ($lines === false) { die(sprintf("Can't open '%s': %s", $file, $php_errormsg)); } for ($i = 0; $i < count($lines); ++$i) { if (preg_match('/(allow|deny)\\s+from\\s+all/i', $lines[$i])) { $deny_found = true; } if (preg_match('/\\$CVSHeader[^\\$]*\\$/', $lines[$i])) { $cvsheader_found = true; } if ($deny_found && $cvsheader_found) { break; } } } if (!$deny_found || !$cvsheader_found) { if (!$deny_found) { $lines[] = "Deny from all\n"; } if (!$cvsheader_found) { $lines[] = "\n# \$CVSHeader\$\n"; } if ($found) { $file_tmp = $path . '.tmp'; $file_bak = $path . '.bak'; } else { $file_tmp = $path; } $fp = fopen($file_tmp, 'wb'); if (!$fp) { die(sprintf("Can't create '%s': %s", $file_tmp, $php_errormsg)); } for ($i = 0; $i < count($lines); ++$i) { fwrite($fp, $lines[$i]); } fclose($fp); printf("Updated %s\n", $path); if ($found) { if (!@rename($path, $file_bak)) { die(sprintf("Can't rename '%s' to '%s': %s", $path, $file_bak, $php_errormsg)); } if (!@rename($file_tmp, $path)) { die(sprintf("Can't rename '%s' to '%s': %s", $file_tmp, $path, $php_errormsg)); } } } // if (!$deny_found || !$cvsheader_found) if ($depth == 0) { foreach ($dirs as $dir) { if (!update_htaccess($dir, $depth + 1)) { return false; } } } return true; }
if (count($__GOOGLE_TEST_USER_AGENT) > 0) { $allowed_gtest_user_agents = implode("|", $__GOOGLE_TEST_USER_AGENT); $htaccess['allowed_gtest_user_agents'][] = 'RewriteCond %{HTTP_USER_AGENT} !(' . $allowed_gtest_user_agents . ') [NC]'; } #~~~ $htaccess['rewrite_rule'][] = 'RewriteRule (.*) byrev-wp-picshield.php?key=' . $data_basic['gtfo_key'] . '&src=$1 [L]'; $htaccess['end'][] = '</IfModule>'; $htaccess['end'][] = _HTACCES_SIGN_END; $htaccess_data = ""; foreach ($htaccess as $index => &$rules) { $htaccess_data .= implode(_CRLF, $rules) . _CRLF; } $result4 = update_htaccess($htaccess_data); msg_info($result4, 'ERROR! .htaccess file ' . _GTFO_DEST_BASE_FILE_CODE . ' not able to be updated.', 'OK! .htacces file ' . _GTFO_DEST_BASE_FILE_CODE . ' was updated.'); } else { $result4 = update_htaccess(_HTACCES_SIGN_BEGIN . _CRLF . _HTACCES_SIGN_END); msg_info(false, 'NOTE: Settings were saved, but the plugin is not active yet. Please set <b>Enable</b> from <b>Enable Hotlink Protection</b> option!', ''); } } if (is_array($byrev_gtfo_hotlink_post_data)) { foreach ($byrev_gtfo_hotlink_post_data as $data_name => $post_data) { list($_value, $_name, $_info, $_input) = $byrev_hotlink_gtfo_copy[$data_name]; if (is_array($_input) && count($_input) > 0) { foreach ($_input as $_options) { list($_op_name, $_op_value) = explode('|', $_options); if ($_op_value == $post_data) { $byrev_hotlink_gtfo_copy[$data_name][0] = $_op_name; break; } } } else {
function byrev_hotlink_nuke_uninstall() { update_htaccess(""); delete_option(_DB_OPTION_NAME); }