Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #7 from bundan/master
wordpress plugin updates
- Loading branch information
Showing
8 changed files
with
183 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?php | ||
|
||
defined( '_JEXEC' ) or die( 'Restricted access' ); | ||
define('CLOUDFLARE_VERSION', '0.1.5'); | ||
require_once("ip_in_range.php"); | ||
|
||
jimport( 'joomla.plugin.plugin' ); | ||
|
||
class PlgSystemCloudFlare extends JPlugin | ||
{ | ||
public function __construct( &$subject, $config ) | ||
{ | ||
parent::__construct( $subject, $config ); | ||
} | ||
|
||
function onAfterInitialise() | ||
{ | ||
global $is_cf; | ||
|
||
$is_cf = FALSE; | ||
$cf_ip_ranges = array("204.93.240.0/24", "204.93.177.0/24", "199.27.128.0/21", "173.245.48.0/20", "103.22.200.0/22", "141.101.64.0/18", "108.162.192.0/18","190.93.240.0/20"); | ||
foreach ($cf_ip_ranges as $range) { | ||
if (ip_in_range($_SERVER["REMOTE_ADDR"], $range)) { | ||
if ($_SERVER["HTTP_CF_CONNECTING_IP"]) { | ||
$_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"]; | ||
$is_cf = TRUE; | ||
} | ||
break; | ||
} | ||
} | ||
|
||
// Let people know that the CF plugin is turned on. | ||
if (!headers_sent()) | ||
{ | ||
header("X-CF-Powered-By: CF-Joomla " . CLOUDFLARE_VERSION); | ||
} | ||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<install version="2.5" type="plugin" group="system"> | ||
<name>CloudFlare Plugin</name> | ||
<author>Jerome Chen</author> | ||
<creationDate>March 2012</creationDate> | ||
<authorEmail>jerome@cloudflare.com</authorEmail> | ||
<authorUrl>http://cloudflare.com</authorUrl> | ||
<version>1.0.0</version> | ||
<description>Plugin for making Joomla sites work with CloudFlare</description> | ||
<files> | ||
<filename plugin="cloudflare">cloudflare.php</filename> | ||
<filename>ip_in_range.php</filename> | ||
</files> | ||
<params> | ||
<param name="cloudflare" | ||
type="text" | ||
default="" | ||
label="CloudFlare" | ||
/> | ||
</params> | ||
</install> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
<?php | ||
|
||
/* | ||
* ip_in_range.php - Function to determine if an IP is located in a | ||
* specific range as specified via several alternative | ||
* formats. | ||
* | ||
* Network ranges can be specified as: | ||
* 1. Wildcard format: 1.2.3.* | ||
* 2. CIDR format: 1.2.3/24 OR 1.2.3.4/255.255.255.0 | ||
* 3. Start-End IP format: 1.2.3.0-1.2.3.255 | ||
* | ||
* Return value BOOLEAN : ip_in_range($ip, $range); | ||
* | ||
* Copyright 2008: Paul Gregg <pgregg@pgregg.com> | ||
* 10 January 2008 | ||
* Version: 1.2 | ||
* | ||
* Source website: http://www.pgregg.com/projects/php/ip_in_range/ | ||
* Version 1.2 | ||
* | ||
* This software is Donationware - if you feel you have benefited from | ||
* the use of this tool then please consider a donation. The value of | ||
* which is entirely left up to your discretion. | ||
* http://www.pgregg.com/donate/ | ||
* | ||
* Please do not remove this header, or source attibution from this file. | ||
*/ | ||
|
||
|
||
// decbin32 | ||
// In order to simplify working with IP addresses (in binary) and their | ||
// netmasks, it is easier to ensure that the binary strings are padded | ||
// with zeros out to 32 characters - IP addresses are 32 bit numbers | ||
function decbin32 ($dec) { | ||
return str_pad(decbin($dec), 32, '0', STR_PAD_LEFT); | ||
} | ||
|
||
// ip_in_range | ||
// This function takes 2 arguments, an IP address and a "range" in several | ||
// different formats. | ||
// Network ranges can be specified as: | ||
// 1. Wildcard format: 1.2.3.* | ||
// 2. CIDR format: 1.2.3/24 OR 1.2.3.4/255.255.255.0 | ||
// 3. Start-End IP format: 1.2.3.0-1.2.3.255 | ||
// The function will return true if the supplied IP is within the range. | ||
// Note little validation is done on the range inputs - it expects you to | ||
// use one of the above 3 formats. | ||
function ip_in_range($ip, $range) { | ||
if (strpos($range, '/') !== false) { | ||
// $range is in IP/NETMASK format | ||
list($range, $netmask) = explode('/', $range, 2); | ||
if (strpos($netmask, '.') !== false) { | ||
// $netmask is a 255.255.0.0 format | ||
$netmask = str_replace('*', '0', $netmask); | ||
$netmask_dec = ip2long($netmask); | ||
return ( (ip2long($ip) & $netmask_dec) == (ip2long($range) & $netmask_dec) ); | ||
} else { | ||
// $netmask is a CIDR size block | ||
// fix the range argument | ||
$x = explode('.', $range); | ||
while(count($x)<4) $x[] = '0'; | ||
list($a,$b,$c,$d) = $x; | ||
$range = sprintf("%u.%u.%u.%u", empty($a)?'0':$a, empty($b)?'0':$b,empty($c)?'0':$c,empty($d)?'0':$d); | ||
$range_dec = ip2long($range); | ||
$ip_dec = ip2long($ip); | ||
|
||
# Strategy 1 - Create the netmask with 'netmask' 1s and then fill it to 32 with 0s | ||
#$netmask_dec = bindec(str_pad('', $netmask, '1') . str_pad('', 32-$netmask, '0')); | ||
|
||
# Strategy 2 - Use math to create it | ||
$wildcard_dec = pow(2, (32-$netmask)) - 1; | ||
$netmask_dec = ~ $wildcard_dec; | ||
|
||
return (($ip_dec & $netmask_dec) == ($range_dec & $netmask_dec)); | ||
} | ||
} else { | ||
// range might be 255.255.*.* or 1.2.3.0-1.2.3.255 | ||
if (strpos($range, '*') !==false) { // a.b.*.* format | ||
// Just convert to A-B format by setting * to 0 for A and 255 for B | ||
$lower = str_replace('*', '0', $range); | ||
$upper = str_replace('*', '255', $range); | ||
$range = "$lower-$upper"; | ||
} | ||
|
||
if (strpos($range, '-')!==false) { // A-B format | ||
list($lower, $upper) = explode('-', $range, 2); | ||
$lower_dec = (float)sprintf("%u",ip2long($lower)); | ||
$upper_dec = (float)sprintf("%u",ip2long($upper)); | ||
$ip_dec = (float)sprintf("%u",ip2long($ip)); | ||
return ( ($ip_dec>=$lower_dec) && ($ip_dec<=$upper_dec) ); | ||
} | ||
return false; | ||
} | ||
} | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters