*
* @author Roland Haeder <webmaster@ship-simu.org>
* @version 3.0.0
- * @copyright Copyright (c) 2009, 2010 Cracker Tracker Team
+ * @copyright Copyright (c) 2009 - 2011 Cracker Tracker Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.ship-simu.org
*
} // END - function
} // END - if
-// Getter for ctracker_debug
+// Getter for ctracker_debug_enabled
function isCrackerTrackerDebug () {
// Is it set?
- return ((isset($GLOBALS['ctracker_debug'])) && ($GLOBALS['ctracker_debug'] === true));
+ return ((isset($GLOBALS['ctracker_debug_enabled'])) && ($GLOBALS['ctracker_debug_enabled'] === TRUE));
}
// Determines the real remote address
function determineCrackerTrackerRealRemoteAddress () {
+ // Initial value
+ $address = '0.0.0.0';
+
// Is a proxy in use?
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// Proxy was used
- $address = $_SERVER['HTTP_X_FORWARDED_FOR'];
+ $address = trim($_SERVER['HTTP_X_FORWARDED_FOR']);
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
// Yet, another proxy
- $address = $_SERVER['HTTP_CLIENT_IP'];
- } else {
+ $address = trim($_SERVER['HTTP_CLIENT_IP']);
+ } elseif (isset($_SERVER['REMOTE_ADDR'])) {
// The regular address when no proxy was used
- $address = $_SERVER['REMOTE_ADDR'];
+ $address = trim(getenv('REMOTE_ADDR'));
}
- // This strips out the real address from proxy output
- if (strstr($address, ',')) {
+ if ($address == 'unknown') {
+ // Invalid IP somehow given
+ $address = '0.0.0.0';
+ elseif (strstr($address, ',')) {
+ // This strips out the real address from proxy output
$addressArray = explode(',', $address);
$address = $addressArray[0];
- } // END - if
+ }
// Return the result
return $address;
// Detects the script name
function crackerTrackerScriptName () {
+ // Is it there?
+ if (!isset($_SERVER['SCRIPT_NAME'])) {
+ // Return NULL
+ return NULL;
+ } // END - if
+
// Should always be there!
return crackerTrackerSecureString($_SERVER['SCRIPT_NAME']);
}
// Detects the query string
function crackerTrackerQueryString () {
+ // Is it there?
+ if (!isset($_SERVER['QUERY_STRING'])) {
+ // Return NULL
+ return NULL;
+ } // END - if
+
// Should always be there!
- return crackerTrackerEscapeString($_SERVER['QUERY_STRING']);
+ return crackerTrackerEscapeString(urldecode($_SERVER['QUERY_STRING']));
}
// Detects the server's name
function crackerTrackerServerName () {
+ // Is it there?
+ if (!isset($_SERVER['SERVER_NAME'])) {
+ // Return NULL
+ return NULL;
+ } // END - if
+
// Should always be there!
return crackerTrackerSecureString($_SERVER['SERVER_NAME']);
}
// Is it there?
if (isset($_SERVER['HTTP_REFERER'])) {
// Then use it securely
- $referer = crackerTrackerSecureString($_SERVER['HTTP_REFERER']);
+ $referer = crackerTrackerSecureString(urldecode($_SERVER['HTTP_REFERER']));
} // END - if
// Return it
// Loads a given "template" (this is more an include file)
function crackerTrackerLoadTemplate ($template) {
// Create the full-qualified filename (FQFN)
- $FQFN = sprintf("%s/templates/%s.tpl.php",
+ $FQFN = sprintf('%s/templates/%s.tpl.php',
dirname(__FILE__),
$template
);
// Loads a given "template" (this is more an include file)
function crackerTrackerLoadLocalizedTemplate ($template) {
// Create the full-qualified filename (FQFN)
- $FQFN = sprintf("%s/templates/%s/%s.tpl.php",
+ $FQFN = sprintf('%s/templates/%s/%s.tpl.php',
dirname(__FILE__),
getCrackerTrackerLanguage(),
$template
} // END - if
// Construct FQFN
- $FQFN = sprintf("%s/language/%s.php",
+ $FQFN = sprintf('%s/language/%s.php',
dirname(__FILE__),
getCrackerTrackerLanguage()
);
$GLOBALS['ctracker_language'] = 'en';
// Construct FQFN again
- $FQFN = sprintf("%s/language/en.php",
- dirname(__FILE__)
- );
+ $FQFN = sprintf('%s/language/en.php', dirname(__FILE__));
} // END - if
// Load the language file
}
// Loads a given email template and passes through $content
-function crackerTrackerLoadEmailTemplate ($template, array $content = array(), $language = null) {
+function crackerTrackerLoadEmailTemplate ($template, array $content = array(), $language = NULL) {
// Init language
crackerTrackerLanguage();
// Generate the FQFN
- $FQFN = sprintf("%s/mails/%s/%s.tpl",
+ $FQFN = sprintf('%s/mails/%s/%s.tpl',
dirname(__FILE__),
getCrackerTrackerLanguage($language),
$template
}
// "Getter" for language
-function getCrackerTrackerLanguage ($lang = null) {
+function getCrackerTrackerLanguage ($lang = NULL) {
// Default is from browser
$language = $GLOBALS['ctracker_language'];
function sendCrackerTrackerCookie () {
// Set the cookie
// @TODO Why can't domain be set to value from crackerTrackerServerName() ?
- setcookie('ctracker_ticket', getCrackerTrackerTicketId(), (time() + 60*60*24), '/', '', crackerTrackerSecured(), true);
+ setcookie('ctracker_ticket', getCrackerTrackerTicketId(), (time() + 60*60*24), '/', '', crackerTrackerSecured(), TRUE);
$_COOKIE['ctracker_ticket'] = getCrackerTrackerTicketId();
}
}
/**
- * Send a HTTP redirect to the browser. This function wass taken from DokuWiki
+ * Send a HTTP redirect to the browser. This function was taken from DokuWiki
* (GNU GPL 2; http://www.dokuwiki.org) and modified to fit into this script.
*
- * ----------------------------------------------------------------------------
- * If you want to redirect, please use redirectToUrl(); instead
- * ----------------------------------------------------------------------------
- *
* Works arround Microsoft IIS cookie sending bug. Does exit the script.
*
* @link http://support.microsoft.com/kb/q176113/
* @access private
*/
function crackerTrackerSendRawRedirect ($url) {
+ // Better remove any data by ctracker
+ unsetCtrackerData();
+
// always close the session
session_write_close();
// check if running on IIS < 6 with CGI-PHP
if ((isset($_SERVER['SERVER_SOFTWARE'])) && (isset($_SERVER['GATEWAY_INTERFACE'])) &&
- (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== false) &&
+ (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== FALSE) &&
(preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($_SERVER['SERVER_SOFTWARE']), $matches)) &&
($matches[1] < 6)) {
// Send the IIS header
exit();
}
+// Removes all ctracker-related data from global space
+function unsetCtrackerData () {
+ // Unset all ctracker data
+ foreach (array(
+ 'ctracker_host',
+ 'ctracker_dbname',
+ 'ctracker_user',
+ 'ctracker_password',
+ 'ctracker_debug_enabled',
+ 'ctracker_email',
+ 'ctracker_whitelist',
+ 'ctracker_get_blacklist',
+ 'ctracker_post_blacklist',
+ 'ctracker_header',
+ 'ctracker_post_track',
+ 'ctracker_checkworm',
+ 'ctracker_check_post',
+ 'ctracker_last_sql',
+ 'ctracker_last_result',
+ 'ctracker_config',
+ 'ctracker_updates',
+ 'ctracker_language',
+ 'ctracker_localized',
+ 'ctracker_link',
+ ) as $key) {
+ // Unset it
+ unset($GLOBALS[$key]);
+ } // END - foreach
+}
+
// [EOF]
?>