Sindbad~EG File Manager
<?php
/*
Plugin Name: 404 to Start
Plugin URI: https://1manfactory.com/4042start
Description: Send 404 page not found error directly to start page (or any other page/site) to overcome problems with search engines. With optional email alert.
Version: 1.6.1
Author: Jürgen Schulze
Author URI: https://1manfactory.com
License: GNU GPL
*/
/* Copyright 2010-2019 Juergen Schulze, 1manfactory.com (email : 1manfactory@gmail.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
f042start_set_lang_file();
add_action('admin_init', 'f042start_register_settings' );
add_action('admin_menu', 'f042start_plugin_admin_menu');
add_action('template_redirect', 'f042start_output_header');
register_activation_hook(__FILE__, 'f042start_activate');
register_deactivation_hook(__FILE__, 'f042start_deactivate');
register_uninstall_hook(__FILE__, 'f042start_uninstall');
function f042start_register_settings() { // whitelist options
register_setting( 'f042start_option-group', 'f042start_type' );
register_setting( 'f042start_option-group', 'f042start_target', 'f042start_check_values');
register_setting( 'f042start_option-group', 'f042start_emailalert' );
register_setting( 'f042start_option-group', 'f042start_exclude' );
register_setting( 'f042start_option-group', 'f042start_exclude2' );
register_setting( 'f042start_option-group', 'f042start_exclude3' );
register_setting( 'f042start_option-group', 'f042start_emailaddres' );
}
function f042start_set_lang_file() {
# set the language file
$currentLocale = get_locale();
if(!empty($currentLocale)) {
$moFile = dirname(__FILE__) . "/lang/" . $currentLocale . ".mo";
if(@file_exists($moFile) && is_readable($moFile)) load_textdomain('f042start', $moFile);
}
}
function f042start_deactivate() {
// needed
delete_option('f042start_type');
delete_option('f042start_target');
delete_option('f042start_emailalert');
delete_option('f042start_exclude');
delete_option('f042start_exclude2');
delete_option('f042start_exclude3');
delete_option('f042start_emailaddres');
}
function f042start_activate() {
# setting default values
add_option('f042start_type', '301');
add_option('f042start_target', home_url());
add_option('f042start_emailalert', '');
add_option('f042start_exclude', '');
add_option('f042start_exclude2', '');
add_option('f042start_exclude3', '');
add_option('f042start_emailaddres', '');
}
function f042start_uninstall() {
# delete all data stored
delete_option('f042start_type');
delete_option('f042start_target');
delete_option('f042start_emailalert');
delete_option('f042start_exclude');
delete_option('f042start_exclude2');
delete_option('f042start_exclude3');
delete_option('f042start_emailaddres');
}
function f042start_plugin_admin_menu() {
add_options_page(__('404 to Start Settings', 'f042start'), "404 to Start", 'manage_options', basename(__FILE__), 'f042start_plugin_options');
}
function f042start_plugin_options(){
if (!current_user_can('manage_options')) {
wp_die( __('You do not have sufficient permissions to access this page.') );
}
if (get_option("f042start_target")=="") {
// setting target value to home url if empty (maybe because of plugin update)
add_option('f042start_target', home_url());
}
print '<div class="wrap">';
print '<h2>'.__('404 to Start Settings', 'f042start').'</h2>';
print '<form method="post" action="options.php" id="f042start_form">';
wp_nonce_field('update-options', '_wpnonce');
settings_fields( 'f042start_option-group');
print'
<input type="hidden" name="page_options" value="f042start_type, f042start_target, f042start_emailalert, f042start_emailaddres, f042start_exclude, f042start_exclude2, f042start_exclude3" />
<table class="form-table">
<tr valign="top">
<th scope="row">'.__('404 Redirect', 'f042start').'</th>
</tr>
<tr>
<td>
<input type="radio" name="f042start_type" value="off" '.f042start_checked("f042start_type", "off").'/> '.__('off', 'f042start').' <br />
<input type="radio" name="f042start_type" value="301" '.f042start_checked("f042start_type", "301").'/> '.__('301 - Moved permanently', 'f042start').'<br />
<input type="radio" name="f042start_type" value="302" '.f042start_checked("f042start_type", "302").'/> '.__('302 - Found/ Moved temporarily (not recommended)', 'f042start').'<br />
<input type="checkbox" name="f042start_emailalert" value="1" '.f042start_checked("f042start_emailalert", "1").'/> '.__('Email alert to: ', 'f042start').'<input type="text" name="f042start_emailaddres" value="'.get_option("f042start_emailaddres").'" size="50">
<br />
<input type="checkbox" name="f042start_exclude" value="1" '.f042start_checked("f042start_exclude", "1").'/> '.__('Exclude logged in users from triggering email alert', 'f042start').'
<br />
<input type="checkbox" name="f042start_exclude2" value="1" '.f042start_checked("f042start_exclude2", "1").'/> '.__('Exclude search engine agents from triggering email alert', 'f042start').'
<br />
<input type="checkbox" name="f042start_exclude3" value="1" '.f042start_checked("f042start_exclude3", "1").'/> '.__('Exclude hacking attempts from triggering email alert. (Experimental, leave this unchecked if you feel unsure.)', 'f042start').'
<br />
</td>
</tr>
<tr>
<td>
'.__('Target Url: (Start with https://)', 'f042start').' <input type="text" name="f042start_target" value="'.get_option("f042start_target").'" size="100">
</td>
</tr>
</table>
<input type="hidden" name="action" value="update" />
';
print '<p class="submit"><input type="submit" name="submit" value="'.__('Save Changes', 'f042start').'" /></p>';
print '</form>';
print '</div>';
print '<br /><br /><br />';
require_once('whatsup.php');
}
// sanitize function
function f042start_check_values($input) {
# check target url
if (!f042start_is_valid_url($input)) {
add_settings_error('f042start_option-group', 'settings_updated', __('This is not a valid Url', 'f042start'), $type = 'error');
}
return $input;
}
function f042start_checked($checkOption, $checkValue) {
return get_option($checkOption)==$checkValue ? " checked" : "";
}
// Trap 404 errors and redirect them to start page
// 301=permanently moved
// 302=temporary
function f042start_output_header() {
# setting default target to prevent errors
if (get_option('f042start_target')=="") {
$target=home_url();
} else {
$target=get_option("f042start_target");
}
if ( is_404() && get_option("f042start_emailalert") ) {
if (
f042start_is_infinitescroll() ||
(get_option("f042start_exclude") && is_user_logged_in())
|| (get_option("f042start_exclude2") && f042start_is_crawlers())
|| (get_option("f042start_exclude3") && f042start_is_hacker(f042start_curPageURL()))
) {
// no mail
} else {
// send email alert
$message=get_bloginfo('name')."\n";
$message.=get_bloginfo('wpurl')."\n";
$message.="False URL: ".f042start_curPageURL()."\n";
$message.="Referer URL: ".$_SERVER['HTTP_REFERER']."\n";
$message.="User agent: ".$_SERVER['HTTP_USER_AGENT']."\n";
$message.="Remote Host: ".$_SERVER['REMOTE_HOST']."\n";
$message.="Remote Addres: ".$_SERVER['REMOTE_ADDR']."\n";
$returnvalue=wp_mail( get_option("f042start_emailaddres"), __('404 alert from ', 'f042start').get_bloginfo('name'), $message, "From: ".get_bloginfo('admin_email') );
}
}
if ( !is_404() || get_option("f042start_type")=="off" ) return;
wp_redirect( $target, get_option("f042start_type") );
}
function f042start_is_valid_url ( $url ) {
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) return false; else return true;
}
function f042start_curPageURL() {
$pageURL = 'http';
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
function f042start_is_crawlers() {
$sites = 'MnoGoSearch|facebookexternalhit|Squider|NING|genieo|butterfly|JS-Kit|InAGist|BUbiNG|crawler|Java|Google|Yahoo|Ask|bot|spider|Twikle|flipboard|longurl|crowsnest|peerindex|UnwindFetchor'; // Add the rest of the search-engines
return (preg_match("/$sites/i", $_SERVER['HTTP_USER_AGENT']) > 0) ? true : false;
}
function f042start_is_hacker($checkurl) {
$hackersurl = 'wp-content\/plugins\/'; // don't check this
return (preg_match("/$hackersurl/i", $checkurl) > 0) ? true : false;
}
function f042start_is_infinitescroll() {
# page/4
if (preg_match("/page\/\d+/", f042start_curPageURL())) {
# error_log("f042start: ".f042start_curPageURL());
return true;
}
return false;
}
?>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists