prefix . "ip_authorize";
if($wpdb->get_var("show tables like '$table'") != $table) {
$sql = "CREATE TABLE " . $table . " (
id int(11) NOT NULL AUTO_INCREMENT,
ip varchar(25) NOT NULL,
authorize int(1) NOT NULL,
PRIMARY KEY (id)
)";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
$table = $wpdb->prefix . "ip_authorize_cookie";
if($wpdb->get_var("show tables like '$table'") != $table) {
$sql = "CREATE TABLE " . $table . " (
id int(11) NOT NULL AUTO_INCREMENT,
ip_id varchar(25) NOT NULL,
auth_hash varchar(250) NOT NULL,
authorize int(1) NOT NULL,
PRIMARY KEY (id)
)";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
$table = $wpdb->prefix . "ip_authorize_location";
if($wpdb->get_var("show tables like '$table'") != $table) {
$sql = "CREATE TABLE " . $table . " (
id int(1) NOT NULL AUTO_INCREMENT,
url varchar(100) NOT NULL,
authorize int(1) NOT NULL,
PRIMARY KEY (id)
)";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
}
register_activation_hook(__FILE__,'ip_authorize_install');
function ip_authorize_deactivate()
{
global $wpdb;
$table = $wpdb->prefix . "ip_authorize";
if($wpdb->get_var("show tables like '$table'") == $table)
{
//$sql = "DROP TABLE IF EXISTS". $table;
$wpdb->query("DROP TABLE IF EXISTS $table");
}
$table = $wpdb->prefix . "ip_authorize_location";
if($wpdb->get_var("show tables like '$table'") == $table)
{
//$sql = "DROP TABLE IF EXISTS". $table;
$wpdb->query("DROP TABLE IF EXISTS $table");
}
$table = $wpdb->prefix . "ip_authorize_cookie";
if($wpdb->get_var("show tables like '$table'") == $table)
{
//$sql = "DROP TABLE IF EXISTS". $table;
$wpdb->query("DROP TABLE IF EXISTS $table");
}
}
register_deactivation_hook(__FILE__, 'ip_authorize_deactivate' );
function ip_authorize_menu()
{
add_options_page('Authorize by IP', 'Authorize by IP', 'manage_options', 'IP-Authorize-slug', 'IP_Authorize_option');
}
function IP_Authorize_option()
{
global $wpdb;
switch($_GET['a'])
{
case'add-new-ip':
if(!filter_var($_POST['IP'], FILTER_VALIDATE_IP))
{
echo '
Invalid IP. Only IPv4 is allowed!.
';
}
else
{
//first, check if IP is already in database
//before adding new IP
$rec_ip = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM wp_ip_authorize WHERE ip = '" . $_POST['IP'] . "';"));
if ( $rec_ip == "0" )
{
//add to database
//default value will be 1
$wpdb->query("INSERT INTO wp_ip_authorize(ip, authorize) VALUES('" . $_POST['IP'] . "', '1')");
echo '';
}
else
{
echo 'Failed to add new IP. Given IPv4 is already in database.
';
}
}
break;
case'add-new-url-unauthorized':
if(!filter_var($_POST['url'], FILTER_VALIDATE_URL))
{
echo '';
}
else
{
$wpdb->query("INSERT INTO wp_ip_authorize_location(url, authorize) VALUES('" . $_POST['url'] . "', '0')");
echo '';
}
break;
case'block-ip':
$wpdb->query("UPDATE wp_ip_authorize SET authorize = '0' WHERE id = '" . $_GET['id'] . "'");
$url = $wpdb->get_results("SELECT * FROM wp_ip_authorize WHERE id = '" . $_GET['id'] . "'");
foreach ( $url as $url )
{
$ip = $url->ip;
}
$wpdb->query("UPDATE wp_ip_authorize_cookie SET authorize = '0' WHERE ip = '" . $ip . "'");
echo '';
break;
case'allow-ip':
$wpdb->query("UPDATE wp_ip_authorize SET authorize = '1' WHERE id = '" . $_GET['id'] . "'");
echo '';
$url = $wpdb->get_results("SELECT * FROM wp_ip_authorize WHERE id = '" . $_GET['id'] . "'");
foreach ( $url as $url )
{
$ip = $url->ip;
}
$wpdb->query("UPDATE wp_ip_authorize_cookie SET authorize = '1' WHERE ip = '" . $ip . "'");
break;
case'delete-ip':
$wpdb->query("DELETE FROM wp_ip_authorize WHERE id = '" . $_GET['id'] . "'");
echo '';
break;
case'void-all-cookies':
$wpdb->query("DELETE FROM wp_ip_authorize_cookie");
echo 'All cookies have been cleaned!.
';
break;
case'update-url':
if( $_POST['auth_ip'] == "")
{
$wpdb->query("DELETE FROM wp_ip_authorize_location");
}
else
{
if(!filter_var($_POST['auth_ip'], FILTER_VALIDATE_URL))
{
echo '';
}
else
{
$wpdb->query("UPDATE wp_ip_authorize_location SET url = '" . $_POST['auth_ip'] . "' WHERE authorize = '0'");
echo '' . $_POST['auth_ip'];
}
}
break;
}
?>
Welcome to Authorize by IP for Wordpress
get_var($wpdb->prepare("SELECT COUNT(*) FROM wp_ip_authorize;"));
if ( $record != "0" )
{
?>
get_var($wpdb->prepare("SELECT COUNT(*) FROM wp_ip_authorize_location WHERE authorize = '0';"));
if ( $record != "0" )
{
?>
| URL For Unauthorized IP: |
get_results("SELECT * FROM wp_ip_authorize_location WHERE authorize = '0'");
foreach ( $url as $url )
{
$url_auth = $url->url;
}
?>
|
Add New URL for Unauthorized IP
get_var($wpdb->prepare("SELECT COUNT(*) FROM wp_ip_authorize_cookie;"));
if ( $record != "0" )
{
?>
Add New IP
Only IPv4 is allowed.
get_results("SELECT * FROM wp_ip_authorize_location WHERE authorize = '0'");
foreach ( $url as $url )
{
$unmatched_ip_location = $url->url;
}
if ( $unmatched_ip_location == "" )
//no value, means null
//takes no action
{
echo "\n ";
echo "\n ";
echo "\n";
}
else
{
//check if cookie is present
if( isset( $_COOKIE['auth_ip'] ) )
{
//check if cookie is matched in database
$record = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM wp_ip_authorize_cookie WHERE auth_hash = '". $_COOKIE['auth_ip'] ."';"));
if( $record == "0")
{
//wrong cookie, check ip in database
//check if match in database
$check = $wpdb->get_results("SELECT * FROM wp_ip_authorize WHERE ip = '$cip'");
foreach( $check as $check )
{
$check->ip;
$check->authorize;
}
//unmatched, means unauthorized
if( !$check->ip )
{
echo "\n ";
echo "\n ";
echo "\n";
exit();
}
//matched, check if authorized or not
else
{
if( $check->authorize == "1" )
{
//authorized, load wordpress url
//and do nothing
}
else
{
//unauthorized, redirect to alternative site
echo "\n ";
echo "\n ";
echo "\n ";
exit();
}
}
}
else
{
//check if cookie is allowed in database
$cookie = $wpdb->get_results("SELECT * FROM wp_ip_authorize_cookie WHERE ip = '$cip'");
foreach( $cookie as $cookie )
{
$cookie->ip;
$cookie->authorize;
}
if( $cookie->authorize == "0" )
{
//unauthorized, redirect
echo "\n ";
echo "\n ";
echo "\n ";
exit();
}
}
}
else
{
//check if match in database
$check = $wpdb->get_results("SELECT * FROM wp_ip_authorize WHERE ip = '$cip'");
foreach( $check as $check )
{
$check->ip;
$check->authorize;
}
//unmatched, means unauthorized
if( !$check->ip )
{
echo "\n ";
echo "\n ";
echo "\n";
exit();
}
//matched, check if authorized or not
else
{
if( $check->authorize == "1" )
{
//authorized, load wordpress url
//and do nothing
}
else
{
//unauthorized, redirect to alternative site
echo "\n ";
echo "\n ";
echo "\n ";
exit();
}
}
}
}
}
function header_override()
{
add_filter( 'wp_loaded', 'cookie_header' );
}
function cookie_header()
{
global $wpdb;
session_start();
$auth_hash = md5( time() );
$cip = $_SERVER['REMOTE_ADDR'];
//check if match in database
$check = $wpdb->get_results("SELECT * FROM wp_ip_authorize WHERE ip = '$cip'");
foreach( $check as $check )
{
$check->ip;
$check->authorize;
}
//unmatched, means unauthorized
if( !$check->ip )
{
//do nothing
}
//matched, check if authorized or not
else
{
if( $check->authorize == "1" )
{
//authorized, cookie manipulation here
if ( !isset( $_COOKIE["auth_ip"] ) )
{
setcookie("auth_ip", "$auth_hash", time()+60*60*24*30);
}
//echo $auth_hash;
$wpdb->query("INSERT INTO wp_ip_authorize_cookie(ip, auth_hash, authorize) VALUES('" . $_SERVER['REMOTE_ADDR'] . "', '" . $_COOKIE["auth_ip"] . "', '1')");
}
}
}
?>