Ok!'); define('CHECK_FAIL', '
Not OK
'); define('CHECK_UNKNOWN', '
Unknown
'); define('CHECK_BASEDIR_OK', is_null(ini_get('open_basedir')) || ini_get('open_basedir') === false || ini_get('open_basedir') == ''); if (in_array(CHECK_PHP_SAPI, array('apache', 'apache2handler'))) { define('CHECK_MOD_REWRITE_AVAILABLE', in_array("mod_rewrite",parseApacheModules())); define('CHECK_MOD_SECURITY_ENABLED', in_array("mod_security",parseApacheModules())); } else { define('CHECK_MOD_REWRITE_AVAILABLE', NULL); define('CHECK_MOD_SECURITY_ENABLED', NULL); } if (is_numeric(strpos(CHECK_PHP_SAPI, 'cgi'))) { define('CHECK_CGI_MODE', true); } else { define('CHECK_CGI_MODE', false); } // ----- Make sure that the system is able to access outside URL $ok = false; if (CHECK_CURL_AVAILABLE || CHECK_URL_FOPEN) { if (CHECK_CURL_AVAILABLE) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.eMedia.uk.com/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $temp = curl_exec($ch); curl_close($ch); if (!empty($temp)) { $ok = true; } } else { $temp = file_get_contents('http://www.eMedia.uk.com/'); if (!empty($temp)) { $ok = true; } } } define('ACCESS_REMOTE_URL', $ok); // ----- ?> eMedia System Compatibility Check Script | Lancashire | Manchester

System Compatibility Check Script


Basic Information

'Email_Marketer', 'url' => 'http://www.eMedia.uk.com/emailmarketer/' ), ); foreach ($products as $product_details) { if (!is_array($product_details)) { $product = $product_details; $url = ''; } else { $product = $product_details['label']; $url = $product_details['url']; } $check_func = 'Check_'.$product; if (empty($url)) { echo '

'.str_replace('_', ' ', $product).'

'; } else { echo '

'.str_replace('_', ' ', $product).'

'; } echo '
'; } ?>
'); $s = preg_replace('/]*>([^<]+)<\/th>/',"\\1",$s); $s = preg_replace('/]*>([^<]+)<\/td>/',"\\1",$s); $vTmp = preg_split('/(]*>[^<]+<\/h2>)/',$s,-1,PREG_SPLIT_DELIM_CAPTURE); $vModules = array(); for ($i=1;$i]*>([^<]+)<\/h2>/',$vTmp[$i],$vMat)) { $vName = trim($vMat[1]); $vTmp2 = explode("\n",$vTmp[$i+1]); foreach ($vTmp2 AS $vOne) { $vPat = '([^<]+)<\/info>'; $vPat3 = "/$vPat\s*$vPat\s*$vPat/"; $vPat2 = "/$vPat\s*$vPat/"; if (preg_match($vPat3,$vOne,$vMat)) { // 3cols $vModules[$vName][trim($vMat[1])] = array(trim($vMat[2]),trim($vMat[3])); } elseif (preg_match($vPat2,$vOne,$vMat)) { // 2cols $vModules[$vName][trim($vMat[1])] = trim($vMat[2]); } } } } return $vModules; } function parseApacheModules() { $input = parsePHPModules(); if(isset($input['apache'])){ $modules = $input['apache']['Loaded Modules']; $mod_list = explode(",",$modules); foreach($mod_list as $key=>$value){ $mod_list[$key] = trim($value); } return $mod_list; } elseif(isset($input['apache2handler'])) { $modules = $input['apache2handler']['Loaded Modules']; $mod_list = explode(" ",$modules); foreach($mod_list as $key=>$value){ $mod_list[$key] = trim($value); } return $mod_list; } //apache2handler return array(); } function DisplayResults($checks, $section='') { if (empty($checks)) { return; } echo '
'."\n"; if (!empty($section)) { echo ''.$section.''."\n"; } echo "
\n"; foreach ($checks as $label => $check) { echo "
".$label.":
\n"; if (is_array($check)) { if ($check['result'] === true) { echo '
Ok
'."\n"; } elseif ($check['result'] === false) { echo '
Not Ok
'."\n"; echo '
This feature is required for: '.$check['feature'].'
'."\n"; echo '
To fix this: '.$check['fix'].'
'."\n"; } else { echo '
Unknown
'."\n"; echo '
This feature is required for: '.$check['feature'].'
'."\n"; echo '
To fix this: '.$check['fix'].'
'."\n"; } } else { if ($check === true) { echo '
Ok
'."\n"; } elseif ($check === false) { echo '
Not Ok
'."\n"; } else { echo '
Unknown
'."\n"; } } } echo '
'."\n"; echo '
'."\n"; echo '
'."\n"; } function Check_Sessions() { $checks = array ( 'Sessions working ok' => CHECK_SESSION_OK, 'Session autostart disabled' => !CHECK_SESSION_AUTOSTART, 'Session referer check correct' => CHECK_SESSION_REFERER_CHECK_CORRECT, ); DisplayResults($checks); } function Check_Required_Functions() { $required_functions = array ( 'fopen', 'fread', 'fputs', 'opendir', 'readdir', 'closedir', 'mail', 'parse_ini_file', 'ini_set', ); $checks = array(); foreach ($required_functions as $func) { $checks[$func.'()'] = function_exists($func); } DisplayResults($checks); } function Check_Email_Marketer() { $init_file = dirname(__FILE__) . '/../functions/init.php'; if (is_readable($init_file)) { define('IEM_NO_CONTROLLER', true); require_once $init_file; } $required = array (); // Require PHP 5.1.3 or above $required['PHP 5.1.3 or above'] = (in_array(version_compare('5.1.3', phpversion()), array(0, -1))); // "Safe Mode" must be disabled $required['Safe Mode Disabled'] = CHECK_SAFE_MODE; // "File Uploads" must be enabled $required['File Uploads'] = CHECK_FILE_UPLOADS; // ----- Check database $db_checked = false; if (defined('SENDSTUDIO_DATABASE_TYPE')) { switch (SENDSTUDIO_DATABASE_TYPE) { case 'mysql': $conn = mysql_connect(SENDSTUDIO_DATABASE_HOST, SENDSTUDIO_DATABASE_USER, SENDSTUDIO_DATABASE_PASS); $rs = mysql_query('SELECT VERSION()', $conn); if (!$rs) { break; } $row = mysql_fetch_row($rs); mysql_free_result($rs); mysql_close($conn); if (!preg_match('/^(\d+\.\d+\.\d+)/i', $row[0], $matches)) { break; } $version = $matches[1]; $required['MySQL version 4.1.1 or above Availabe'] = (in_array(version_compare('4.1.1', $version), array(0, -1))); $db_checked = true; break; case 'pgsql': $connectionArray = array(); if (trim(SENDSTUDIO_DATABASE_HOST) != '') { $connectionArray[] = "host='" . SENDSTUDIO_DATABASE_HOST . "'"; } if (trim(SENDSTUDIO_DATABASE_USER) != '') { $connectionArray[] = "user='" . SENDSTUDIO_DATABASE_USER . "'"; } if (trim(SENDSTUDIO_DATABASE_PASS) != '') { $connectionArray[] = "password='" . SENDSTUDIO_DATABASE_PASS . "'"; } $conn = pg_connect(implode(' ', $connectionArray)); $rs = pg_query($conn, 'SELECT VERSION()'); if (!$rs) { break; } $row = pg_fetch_row($rs); pg_free_result($rs); pg_close($conn); if (!preg_match('/^PostgreSQL (\d+\.\d+\.\d+)/i', $row[0], $matches)) { break; } $version = $matches[1]; $required['PostgeSQL version 8.2 or above Available'] = (in_array(version_compare('8.2', $version), array(0, -1))); $db_checked = true; break; } } if (!$db_checked) { $required['MySQL Available'] = CHECK_MYSQL_AVAILABLE; $required['MySQL version 4.1.1 or above'] = 'unknown'; } // ----- // Session autostart must be disabled $required['Session Autostart Disabled'] = !CHECK_SESSION_AUTOSTART; // IMAP module is required $required['IMAP Available'] = array( 'result' => CHECK_IMAP_AVAILABLE, 'feature' => 'Bounce processing', 'fix' => 'Please ask your web host to install IMAP PHP extension module' ); // Need to be able to access outside location $required['Remote URL Access Available'] = ACCESS_REMOTE_URL; // Require GD module $required['GD Available'] = array( 'result' => CHECK_GD_AVAILABLE, 'feature' => 'CAPTCHA and Printing statistics', 'fix' => 'Please ask your web host to install IMAP PHP extension module' ); // Mod security must be disabled $required['Mod Security Disabled'] = !CHECK_MOD_SECURITY_ENABLED; $optional = array( 'fsockopen() Available' => array( 'result' => CHECK_FSOCKOPEN_AVAILABLE, 'feature' => 'Sending emails via remote SMTP servers', 'fix' => 'Please ask your web host to allow the use of the fsockopen() function.' ), ); DisplayResults($required, 'Required'); DisplayResults($optional, 'Optional'); } ?>