installation instructions.
Author: BCG
Version: 1.4
Date: 2009-02-10 21:21
Author URI: http://www.kerrins.co.uk/
For changelog please see release-notes.txt
*/
//
// if you are experiencing problems, set this to 'true' and messages will be logged
// in the Admin SSL directory (usually /wp-content/plugins/admin-ssl/debug.log
//
define("DEBUG",false);
//
// if this is 'true' then the database will be updated with the default options - use if
// you cannot access admin-ssl-reset.php after setting wrong Shared SSL settings
// you MUST change back to false after resetting, or you will not be able to enable SSL
//
define("RESET",false);
/* *
* *
* *
* *
* DO NOT EDIT BELOW THIS LINE - USE THE CONFIG PAGE TO CHANGE SETTINGS *
* *
* *
* *
* *
*/
//
// requires $wp_version check - this plugin WILL BREAK earlier versions of WordPress and WPMU
//
if(isset($wp_version) && strpos($wp_version,"wordpress-mu") === false && $wp_version >= 2.2)
{
//
//
// DEBUG MODE AND FUNCTIONS
//
//
if(!defined("TEST") || $first_test):
//
// log debug messages to plugin operating directory
//
function as_log($msg)
{
global $path,$slash;
$msg = preg_replace('/\t/',"",$msg);
if($path && $slash && DEBUG)
error_log($msg."\n\n",3,$path.$slash."debug.log");
elseif(@TEST && DEBUG)
echo("\n$msg");
}
//
// display message on admin pages if debug or reset are enabled
//
function as_warning()
{
global $path,$slash;
if(DEBUG)
echo('
Admin SSL is currently debugging to: '.$path.$slash.'debug.log
');
if(RESET)
echo('
Admin SSL is currently in reset mode - you will not
be able to secure your site with SSL until you disable reset mode.
');
}
//
// shorthands for lazy people
//
function host(){ # returns HTTP_HOST with any port numbers removed
return(preg_replace('/:.+$/',"",$_SERVER["HTTP_HOST"])); }
function is_https(){ # return true or false, HTTPS enabled
global $https_key,$https_value;
return(isset($_SERVER[$https_key]) && $https_value === $_SERVER[$https_key] ? true : false); }
function _post($key){ # safely return escaped value from $_POST array
return(isset($_POST[$key]) ? attribute_escape($_POST[$key]) : null); }
function redirect_to(){ # return WordPress' redirect_to
return(isset($_REQUEST["redirect_to"]) ? attribute_escape($_REQUEST["redirect_to"]) : ""); }
function req_uri(){ # return server request uri
return($_SERVER["REQUEST_URI"]); }
function scheme($use_https){ # return scheme based on test value
return(($use_https ? "https" : "http")."://"); }
function user_can($what){ # checks if function exists before calling it
return(function_exists("current_user_can") ? current_user_can($what) : false); }
//
// safe redirect function - don't want to use wp_redirect()
//
function as_redirect($location)
{
if((!defined("TEST") || $first_test) && !defined("ADMIN_SSL_DO_NOT_REDIRECT"))
{
session_write_close();
header("location: $location");
exit;
}
elseif(TEST) return($location);
}
//
// get the Apache version
//
function apache_version($test=null, $precision=0)
{
$re = "/Apache\/([\d.]+)/";
preg_match($re, $_SERVER["SERVER_SOFTWARE"], $matches);
$version = $matches[1];
if(is_null($test)) return(doubleval($version));
else return(round($version, $precision) == $test ? true : false);
}
endif;
//
//
// OPERATING DIRECTORY AND WPMU DETECTION
//
//
//
// get operating directory and log environment variables
//
$slash = strpos(__FILE__,"/") === false ? "\\" : "/";
$path = str_replace($slash."admin-ssl.php","",__FILE__);
$dir = substr($path,strrpos($path,$slash)+1);
as_log("### ADMIN SSL BEGINS ###");
as_log("HTTP Host: ".host()."
Request URI: ".req_uri()."
Redirect to: ".redirect_to()."
Found admin-ssl.php in
- path: $path
- directory: $dir");
//
// if operating directory is mu-plugins, get the name of admin-ssl directory
//
$plugins_dir = "plugins";
$config_page = $wp_version < 2.5 ? "config-page-old.php" : "config-page.php";
if($dir === "mu-plugins")
{
$d_mu_plugins = dir($path);
$tmp = "";
//
// loop through the main plugins directory
//
while(false !== ($plugin_dir = $d_mu_plugins->read()))
{
if($plugin_dir !== "." && $plugin_dir !== "..")
{
//
// build the path to each entry - if it is a subfolder, open it
//
$plugin_path = $path.$slash.$plugin_dir;
if(is_dir($plugin_path))
{
$d_plugin = dir($plugin_path);
//
// loop through each item in this subfolder, searching for $config_page
//
while(false !== ($entry = $d_plugin->read()))
{
if(is_file($plugin_path.$slash.$entry) && $entry === "readme.txt")
{
$tmp = $plugin_dir;
break(2);
}
}
}
}
}
//
// if the loop finds the config file it saves the directory as $tmp and breaks the loop
//
if($tmp)
{
$dir = $tmp;
$plugins_dir = "mu-plugins";
$config_parent = "wpmu-admin.php";
as_log("Using WPMU - Admin SSL directory changed to: $dir");
}
}
//
// function returns true if WPMU has been detected
//
if(!defined("TEST") || $first_test):
function is_wpmu()
{
global $plugins_dir;
return($plugins_dir === "mu-plugins" ? true : false);
}
function wpmu_dir(){ # returns the operating directory if on WPMU
global $dir,$slash;
return(is_wpmu() ? $dir.$slash : "");
}
endif;
//
// log variables just defined
//
as_log("Plugins directory: $plugins_dir
Config page: $config_page
Is WPMU: ".(is_wpmu() ? "Yes" : "No"));
//
//
// GET (OR SET DEFAULT) OPTIONS
//
//
require_once(wpmu_dir()."includes/options.php");
//
//
// ADD PLUGIN ACTION LINKS
//
//
function as_action_links($links, $file)
{
static $this_plugin;
if(!$this_plugin) $this_plugin = plugin_basename(__FILE__);
global $config_parent,$config_page_ref;
if($file === $this_plugin)
{
$settings_link = ''._("Settings")."";
array_unshift($links, $settings_link);
}
return($links);
}
//
//
// THIS IS WHERE THE REAL STUFF BEGINS...
//
//
if(!defined("TEST") || $first_test):
//
//
// WORDPRESS HOOKS - CHECKING HTTP/HTTPS
//
//
require_once(wpmu_dir()."includes/https.php");
//
//
// WORDPRESS HOOKS - CONFIGURATION
//
//
require_once(wpmu_dir()."includes/config.php");
//
//
// WORDPRESS HOOKS - COOKIE HANDLING
//
//
require_once(wpmu_dir()."includes/cookies.php");
//
//
// ADD WORDPRESS HOOKS
//
//
require_once(wpmu_dir()."includes/hooks.php");
//
//
// REPLACE WP 2.6 COOKIE CODE
//
//
require_once(wpmu_dir()."includes/wp-2.5-auth-cookies.php");
endif;
}
?>