| <?php | |
| date_default_timezone_set('America/New_York'); | |
| /* | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| $header = "<html><head><title>VCL Setup Test Script</title>\n"; | |
| $header .= "<style type=\"text/css\">\n"; | |
| $header .= "ul {margin-top: 0;}\n"; | |
| $header .= "li {list-style-type: none;}\n"; | |
| $header .= ".pass {color: green;}\n"; | |
| $header .= ".fail {color: red;}\n"; | |
| $header .= ".title {font-weight: bold; font-style: italic;}\n"; | |
| $header .= "</style>\n"; | |
| $header .= "</head>\n"; | |
| if(isset($_GET['cookietest'])) { | |
| print $header; | |
| print "<body style=\"margin: 0; padding: 0;\">\n"; | |
| if(isset($_COOKIE['cookietest'])) | |
| print "<span class=pass>Successfully set a test cookie</span>\n"; | |
| else | |
| print "<span class=fail>Failed to set a test cookie</span>\n"; | |
| print "</body></html>\n"; | |
| exit; | |
| } | |
| if(isset($_GET['includeconftest'])) { | |
| if(! is_readable('.ht-inc/conf.php')) { | |
| print "unreadable"; | |
| exit; | |
| } | |
| if(include('.ht-inc/conf.php')) | |
| print 'worked'; | |
| exit; | |
| } | |
| if(isset($_GET['includesecretstest'])) { | |
| if(! is_readable('.ht-inc/secrets.php')) { | |
| print "unreadable"; | |
| exit; | |
| } | |
| if(include('.ht-inc/secrets.php')) | |
| print 'worked'; | |
| exit; | |
| } | |
| $header .= "<body>\n"; | |
| function exHandler($errno, $errmsg) { | |
| print "Error: $errmsg<br>"; | |
| } | |
| set_error_handler('exHandler'); | |
| function pass($msg) { | |
| print "<li><span class=pass>$msg</span></li>\n"; | |
| } | |
| function fail($msg) { | |
| print "<li><span class=fail>$msg</span></li>\n"; | |
| } | |
| function title($msg) { | |
| print "<span class=title>$msg ...</span><br>\n"; | |
| } | |
| $myurl = "http://"; | |
| if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") | |
| $myurl = "https://"; | |
| $myurl .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; | |
| $includesecrets = 1; | |
| $includeconf = 1; | |
| $host = $_SERVER['HTTP_HOST']; | |
| if (strpos($host, ':')) { | |
| $host = substr($host, 0, strpos($host, ':')); | |
| } | |
| if(! ip2long(getHostbyname($host))) { | |
| print $header; | |
| # php version | |
| print "PHP version: " . phpversion() . "<br><br>\n"; | |
| title("Trying to resolve my hostname ($host)"); | |
| print "<ul>\n"; | |
| fail("unable to resolve my hostname; ensure $host is in DNS or create an entry for it in /etc/hosts"); | |
| print "</ul>\n"; | |
| $includesecrets = 0; | |
| $includeconf = 0; | |
| } | |
| # test including secrets.php | |
| $allowurlopen = ini_get('allow_url_fopen'); | |
| if($includesecrets) { | |
| $data = ''; | |
| if($fp = fopen("$myurl?includesecretstest=1", 'r')) { | |
| $data = fread($fp, 1000); | |
| fclose($fp); | |
| } | |
| if(preg_match('/parse error/i', $data)) | |
| $data = ''; | |
| if($allowurlopen && (empty($data) || $data == 'unreadable')) { | |
| print $header; | |
| # php version | |
| print "PHP version: " . phpversion() . "<br><br>\n"; | |
| title("Including .ht-inc/secrets.php"); | |
| print "<ul>\n"; | |
| if($data == 'unreadable') | |
| fail("unable to read .ht-inc/secrets.php - check the permissions of the file"); | |
| else | |
| fail("unable to include .ht-inc/secrets.php - this is probably due to a syntax error in .ht-inc/secrets.php"); | |
| fail("skipping tests for contents of .ht-inc/secrets.php"); | |
| print "</ul>\n"; | |
| $includesecrets = 0; | |
| $includeconf = 0; | |
| } | |
| } | |
| else { | |
| title("Including .ht-inc/secrets.php"); | |
| print "<ul>\n"; | |
| fail("cannot include .ht-inc/secrets.php when hostname resolution fails"); | |
| print "</ul>\n"; | |
| } | |
| # conf.php test | |
| if($includeconf) { | |
| $data = ''; | |
| if($fp = fopen("$myurl?includeconftest=1", 'r')) { | |
| $data = fread($fp, 1000); | |
| fclose($fp); | |
| } | |
| if(preg_match('/parse error/i', $data)) { | |
| $data = ''; | |
| } | |
| $allowurlopen = ini_get('allow_url_fopen'); | |
| if($allowurlopen && (empty($data) || $data == 'unreadable')) { | |
| print $header; | |
| # php version | |
| print "PHP version: " . phpversion() . "<br><br>\n"; | |
| title("Including .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| if($data == 'unreadable') | |
| fail("unable to read .ht-inc/conf.php - check the permissions of the file"); | |
| else | |
| fail("unable to include .ht-inc/conf.php - this is probably due to a syntax error in .ht-inc/conf.php (or a file it includes)"); | |
| fail("skipping tests for contents of .ht-inc/conf.php"); | |
| print "</ul>\n"; | |
| $includeconf = 0; | |
| } | |
| } | |
| else { | |
| title("Including .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| fail("cannot include .ht-inc/conf.php when including of .ht-inc/secrets.php fails"); | |
| print "</ul>\n"; | |
| } | |
| # conf.php tests | |
| $createcryptkey = 0; | |
| if($includeconf && include('.ht-inc/conf.php')) { | |
| if(! defined('COOKIEDOMAIN')) { | |
| print $header; | |
| # php version | |
| print "PHP version: " . phpversion() . "<br><br>\n"; | |
| title("Including .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| pass("successfully included .ht-inc/conf.php"); | |
| print "</ul>\n"; | |
| title("Checking COOKIEDOMAIN setting in .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| fail("COOKIEDOMAIN is not defined in .ht-inc/conf.php"); | |
| print "</ul>\n"; | |
| } | |
| else { | |
| $len = strlen(COOKIEDOMAIN); | |
| if($len && substr_compare($host, COOKIEDOMAIN, 0 - $len, $len, true) != 0) { | |
| print $header; | |
| # php version | |
| print "PHP version: " . phpversion() . "<br><br>\n"; | |
| title("Including .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| pass("successfully included .ht-inc/conf.php"); | |
| print "</ul>\n"; | |
| title("Checking COOKIEDOMAIN setting in .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| fail("COOKIEDOMAIN (" . COOKIEDOMAIN . ") does not match all of or ending of the hostname of this server ($host). This will prevent cookies from being set."); | |
| print "</ul>\n"; | |
| } | |
| else { | |
| $expire = time() + 10; | |
| setcookie("cookietest", 1, $expire, '/', COOKIEDOMAIN); | |
| print $header; | |
| # php version | |
| print "PHP version: " . phpversion() . "<br><br>\n"; | |
| title("Including .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| pass("successfully included .ht-inc/conf.php"); | |
| print "</ul>\n"; | |
| title("Checking COOKIEDOMAIN setting in .ht-inc/conf.php"); | |
| print "<ul>\n"; | |
| $test = COOKIEDOMAIN; | |
| if(empty($test)) | |
| pass("COOKIEDOMAIN is set to empty string (this is valid and will result in the domain of cookies being set to $host)"); | |
| else | |
| pass("COOKIEDOMAIN (" . COOKIEDOMAIN . ") appears to be set correctly"); | |
| print "<iframe src=\"$myurl?cookietest=1\" width=200px height=20px scrolling=0 style=\"border: 0; padding: 0px\"></iframe><br>\n"; | |
| print "</ul>\n"; | |
| } | |
| } | |
| # check for BASEURL starting with https | |
| title("Checking that BASEURL in conf.php is set to use https"); | |
| print "<ul>\n"; | |
| if(! defined('BASEURL')) | |
| fail("BASEURL is not defined in .ht-inc/conf.php"); | |
| else { | |
| if(substr_compare(BASEURL, 'https:', 0, 6, true) == 0) | |
| pass("BASEURL correctly set to use https"); | |
| elseif(SSLOFFLOAD == 1 && substr_compare(BASEURL, 'http:', 0, 5, true) == 0) | |
| pass("BASEURL set to use http as SSL is offloaded to load balancer"); | |
| else | |
| fail("BASEURL is not set to use https and SSL offloading is not enabled. https is required."); | |
| } | |
| print "</ul>\n"; | |
| # check for SCRIPT being set | |
| title("Checking that SCRIPT is set appropriately"); | |
| print "<ul>\n"; | |
| if(! defined('SCRIPT')) | |
| fail("SCRIPT is not defined in .ht-inc/conf.php"); | |
| else { | |
| if(substr_compare(SCRIPT, '/', 0, 1, true) == 0 && | |
| substr_compare(SCRIPT, '.php', -4, 4, true) == 0) | |
| pass("SCRIPT appears to be set correctly"); | |
| else | |
| fail("SCRIPT does not appear to be set correctly"); | |
| } | |
| print "</ul>\n"; | |
| # check various other constants | |
| title("Checking that other required constants are defined"); | |
| print "<ul>\n"; | |
| $consts = array('ONLINEDEBUG', 'HELPURL', 'HELPEMAIL', 'ERROREMAIL', 'ENVELOPESENDER', 'DEFAULTLOCALE', 'BASEURL', 'SCRIPT', 'HOMEURL', 'COOKIEDOMAIN', 'DEFAULTGROUP', 'DEFAULT_AFFILID', 'DAYSAHEAD', 'DEFAULT_PRIVNODE', 'SCHEDULER_ALLOCATE_RANDOM_COMPUTER', 'PRIV_CACHE_TIMEOUT', 'MIN_BLOCK_MACHINES', 'MAX_BLOCK_MACHINES', 'DOCUMENTATIONURL', 'USEFILTERINGSELECT', 'FILTERINGSELECTTHRESHOLD', 'SEMTIMEOUT', 'DEFAULTTHEME', 'HELPFAQURL', 'ALLOWADDSHIBUSERS', 'MAXINITIALIMAGINGTIME', 'MAXSUBIMAGES', 'NOAUTH_HOMENAV', 'QUERYLOGGING', 'XMLRPCLOGGING'); | |
| $fails = array(); | |
| foreach($consts as $const) { | |
| if(! defined("$const")) | |
| $fails[] = $const; | |
| } | |
| if(empty($fails)) | |
| pass("All required constants are defined in .ht-inc/conf.php"); | |
| else | |
| fail("The following constants need to be defined in .ht-inc/conf.php. Check conf-default.php for more information about each one.<br>" . implode("<br>\n", $fails)); | |
| print "</ul>\n"; | |
| # check for existance of maintenance directory | |
| title("Checking that .ht-inc/maintenance directory exists"); | |
| print "<ul>\n"; | |
| $file = preg_replace('|/testsetup.php|', '', $_SERVER['SCRIPT_FILENAME']); | |
| $file .= "/.ht-inc/maintenance"; | |
| if(! is_dir($file)) | |
| fail(".ht-inc/maintenance directory does not exist. Please create it."); | |
| else { | |
| pass(".ht-inc/maintenance directory exists"); | |
| print "</ul>\n"; | |
| # check that we can write files to maintenance directory | |
| title("Checking that .ht-inc/maintenance directory is writable"); | |
| print "<ul>\n"; | |
| if(! is_writable("$file")) | |
| fail("maintenance directory is not writable"); | |
| else { | |
| if(! $fh = @fopen("$file/testfile", 'w')) | |
| fail("Failed to open file in maintenance directory"); | |
| else { | |
| if(! fwrite($fh, 'test') || ! fclose($fh)) | |
| fail("Failed to write to file in maintenance directory"); | |
| else { | |
| # check that we can remove files from maintenance directory | |
| if(! unlink("$file/testfile")) | |
| fail("Failed to remove file from maintenance directory"); | |
| else | |
| pass("maintenance directory is writable"); | |
| } | |
| } | |
| } | |
| } | |
| print "</ul>\n"; | |
| # check for existance of cryptkey directory | |
| title("Checking that .ht-inc/cryptkey directory exists"); | |
| print "<ul>\n"; | |
| $file = preg_replace('|/testsetup.php|', '', $_SERVER['SCRIPT_FILENAME']); | |
| $file .= "/.ht-inc/cryptkey"; | |
| if(! is_dir($file)) | |
| fail(".ht-inc/cryptkey directory does not exist. Please create it."); | |
| else { | |
| pass(".ht-inc/cryptkey directory exists"); | |
| print "</ul>\n"; | |
| # check that we can write files to cryptkey directory | |
| title("Checking that .ht-inc/cryptkey directory is writable"); | |
| print "<ul>\n"; | |
| if(! is_writable("$file")) | |
| fail("cryptkey directory is not writable"); | |
| else { | |
| if(! $fh = @fopen("$file/testfile", 'w')) | |
| fail("Failed to open file in cryptkey directory"); | |
| else { | |
| if(! fwrite($fh, 'test') || ! fclose($fh)) | |
| fail("Failed to write to file in cryptkey directory"); | |
| else { | |
| # check that we can remove files from cryptkey directory | |
| if(! unlink("$file/testfile")) | |
| fail("Failed to remove file from cryptkey directory"); | |
| else { | |
| pass("cryptkey directory is writable"); | |
| $createcryptkey = 1; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| print "</ul>\n"; | |
| } | |
| if($createcryptkey) { | |
| title("Checking asymmetric encryption key for this web server"); | |
| print "<ul>\n"; | |
| if(is_readable('.ht-inc/utils.php') && @(include '.ht-inc/utils.php') == TRUE) { | |
| global $aboarting; | |
| $aborting = 1; # set this so if abort function in utils.php is called, it just returns | |
| $file = preg_replace('|/testsetup.php|', '', $_SERVER['SCRIPT_FILENAME']); | |
| $filebase = $file . "/.ht-inc/cryptkey"; | |
| $file1 = "$filebase/cryptkeyid"; | |
| $file2 = "$filebase/private.pem"; | |
| $exist = 0; | |
| if(is_readable("$file1") && is_readable("$file2")) | |
| $exist = 1; | |
| else | |
| print "<li>encryption key does not already exist - attempting to create</li>\n"; | |
| $tmp = $_SERVER['SCRIPT_FILENAME']; | |
| $_SERVER['SCRIPT_FILENAME'] = str_replace('testsetup.php', 'index.php', $_SERVER['SCRIPT_FILENAME']); | |
| $actions = array('pages' => array()); | |
| unset($_COOKIE['VCLAUTH']); | |
| dbConnect(); | |
| initGlobals(); | |
| checkCryptkey(); | |
| dbDisconnect(); | |
| $_SERVER['SCRIPT_FILENAME'] = $tmp; | |
| if(is_readable("$file1") && is_readable("$file2")) { | |
| if($exist) | |
| pass("Asymmetric key validated"); | |
| else | |
| pass("Successfully created asymmetric encryption key"); | |
| } | |
| else | |
| fail("Failed to create asymmetric encryption key"); | |
| } | |
| else { | |
| fail("Failed to include .ht-inc/utils.php"); | |
| } | |
| print "</ul>\n"; | |
| } | |
| # required extentions | |
| title("Testing for required php extensions"); | |
| if(version_compare(phpversion(), "5.2", "<")) | |
| $requiredexts = array('mysql', 'openssl', 'xml', 'xmlrpc', 'session', 'pcre', 'sockets', 'ldap', 'gettext'); | |
| else | |
| $requiredexts = array('mysql', 'openssl', 'xml', 'xmlrpc', 'session', 'pcre', 'sockets', 'ldap', 'json', 'gettext'); | |
| $exts = get_loaded_extensions(); | |
| $diff = array_diff($requiredexts, $exts); | |
| print "<ul>\n"; | |
| if(count($diff)) { | |
| $missing = implode(', ', $diff); | |
| fail("Missing these extensions: $missing. Depending on the extension, some or all of VCL will not work."); | |
| } | |
| else | |
| pass("All required modules are installed"); | |
| if(! in_array('ldap', $exts)) { | |
| print "<li>NOTE: The <strong>ldap</strong> extension is only required if using LDAP authentication</li>\n"; | |
| } | |
| print "</ul>\n"; | |
| # secrets.php file and mysql connection | |
| if($includesecrets && include('.ht-inc/secrets.php')) { | |
| title("Checking values in .ht-inc/secrets.php"); | |
| print "<ul>\n"; | |
| $trymysqlconnect = 1; | |
| $allok = 1; | |
| if(empty($vclhost)) { | |
| fail("\$vclhost in .ht-inc/secrets.php is not set"); | |
| $trymysqlconnect = 0; | |
| $allok = 0; | |
| } | |
| if(empty($vcldb)) { | |
| fail("\$vcldb in .ht-inc/secrets.php is not set"); | |
| $trymysqlconnect = 0; | |
| $allok = 0; | |
| } | |
| if(empty($vclusername)) { | |
| fail("\$vclusername in .ht-inc/secrets.php is not set"); | |
| $trymysqlconnect = 0; | |
| $allok = 0; | |
| } | |
| if(empty($vclpassword)) { | |
| fail("\$vclpassword in .ht-inc/secrets.php is not set"); | |
| $trymysqlconnect = 0; | |
| $allok = 0; | |
| } | |
| if(empty($cryptkey)) { | |
| fail("\$cryptkey in .ht-inc/secrets.php is not set"); | |
| $allok = 0; | |
| } | |
| elseif(function_exists('openssl_encrypt')) { | |
| $rc = base64_decode($cryptkey, 1); | |
| if($rc === FALSE) { | |
| fail("\$cryptkey in .ht-inc/secrets.php is not base64 encoded. Generate new value with <strong>openssl rand 32 | base64</strong>"); | |
| $allok = 0; | |
| } | |
| } | |
| if(empty($pemkey)) { | |
| fail("\$pemkey in .ht-inc/secrets.php is not set"); | |
| $allok = 0; | |
| } | |
| if($allok) | |
| pass("all required values in .ht-inc/secrets.php appear to be set"); | |
| print "</ul>\n"; | |
| if($trymysqlconnect && in_array('mysql', $exts) && in_array('sockets', $exts)) { | |
| title("Testing mysql connection"); | |
| print "<ul>\n"; | |
| if($fp = fsockopen($vclhost, 3306, $errno, $errstr, 5)) { | |
| $link = mysql_connect($vclhost, $vclusername, $vclpassword); | |
| if(! $link) | |
| fail("Could not connect to mysql on $vclhost"); | |
| else { | |
| pass("Successfully connected to mysql on $vclhost"); | |
| if(mysql_select_db($vcldb, $link)) | |
| pass("Successfully selected database ($vcldb) on $vclhost"); | |
| else | |
| fail("Could not select database ($vcldb) on $vclhost"); | |
| } | |
| } | |
| else | |
| fail("Could not connect to port 3306 on $vclhost"); | |
| print "</ul>\n"; | |
| } | |
| } | |
| # test symmetric encryption | |
| title("Testing symmetric encryption"); | |
| if(function_exists('openssl_encrypt')) { | |
| print "<ul>\n"; | |
| if($includesecrets && ! empty($cryptkey)) { | |
| $teststring = 'testing'; | |
| $iv = openssl_random_pseudo_bytes(16); | |
| $mode = "AES-256-CBC"; | |
| if($cryptdata = openssl_encrypt($teststring, $mode, $cryptkey, 1, $iv)) { | |
| pass("Successfully encrypted test string"); | |
| $decrypted = openssl_decrypt($cryptdata, $mode, $cryptkey, 1, $iv); | |
| if(trim($decrypted) == $teststring) | |
| pass("Successfully decrypted test string"); | |
| else | |
| fail("Failed to decrypt test string"); | |
| } | |
| else { | |
| fail("Failed to encrypt data"); | |
| } | |
| } | |
| else | |
| fail("Cannot test encryption without \$cryptkey from .ht-inc/secrets.php"); | |
| print "</ul>\n"; | |
| } | |
| else { | |
| require_once(".ht-inc/phpseclib/Crypt/AES.php"); | |
| print "<ul>\n"; | |
| if($includesecrets && ! empty($cryptkey)) { | |
| $teststring = 'testing'; | |
| $aes = new Crypt_AES(CRYPT_AES_MODE_CBC); | |
| $aes->setKeyLength(256); | |
| $iv = crypt_random_string(16); | |
| $aes->setIV($iv); | |
| $aes->setKey($cryptkey); | |
| if($cryptdata = $aes->encrypt($teststring)) { | |
| pass("Successfully encrypted test string"); | |
| $decrypted = $aes->decrypt($cryptdata); | |
| if(trim($decrypted) == $teststring) | |
| pass("Successfully decrypted test string"); | |
| else | |
| fail("Failed to decrypt test string"); | |
| } | |
| else { | |
| fail("Failed to encrypt data"); | |
| } | |
| } | |
| else | |
| fail("Cannot test encryption without \$cryptkey from .ht-inc/secrets.php"); | |
| print "</ul>\n"; | |
| } | |
| # encryption keys | |
| $privkeyok = 0; | |
| $pubkeyok = 0; | |
| if(in_array('openssl', $exts)) { | |
| title("Testing asymmetric encryption key files"); | |
| print "<ul>\n"; | |
| if($includesecrets && ! empty($pemkey)) { | |
| if(is_readable(".ht-inc/keys.pem")) { | |
| $fp = fopen(".ht-inc/keys.pem", "r"); | |
| $key = fread($fp, 8192); | |
| fclose($fp); | |
| $keys["private"] = openssl_pkey_get_private($key, $pemkey); | |
| if(! $keys['private']) | |
| fail("Could not create private key from private key file (.ht-inc/keys.pem). Try running .ht-inc/genkeys.sh again."); | |
| else { | |
| pass("successfully created private key from private key file"); | |
| $privkeyok = 1; | |
| } | |
| } | |
| else | |
| fail("Could not read private key file (.ht-inc/keys.pem). Check permissions on the file."); | |
| } | |
| else | |
| fail("Cannot test private key file without \$pemkey from .ht-inc/secrets.php"); | |
| if(is_readable(".ht-inc/pubkey.pem")) { | |
| $fp = fopen(".ht-inc/pubkey.pem", "r"); | |
| $key = fread($fp, 8192); | |
| fclose($fp); | |
| $keys["public"] = openssl_pkey_get_public($key); | |
| if(! $keys['public']) | |
| fail("Could not create public key from public key file (.ht-inc/pubkey.pem). Try running .ht-inc/genkeys.sh again."); | |
| else { | |
| pass("successfully created public key from public key file"); | |
| $pubkeyok = 1; | |
| } | |
| } | |
| else | |
| fail("Could not read public key file (.ht-inc/pubkey.pem). Check permissions on the file."); | |
| print "</ul>\n"; | |
| title("Testing asymmetric encryption"); | |
| print "<ul>\n"; | |
| if(! $privkeyok) | |
| fail("cannot test encryption without a valid private key"); | |
| else { | |
| if(openssl_private_encrypt('test string', $cryptdata, $keys["private"])) { | |
| pass("successfully encrypted test string"); | |
| if(! $pubkeyok) | |
| fail("cannot test decryption without a valid public key"); | |
| else { | |
| if(openssl_public_decrypt($cryptdata, $tmp, $keys['public'])) { | |
| if($tmp == 'test string') | |
| pass("successfully decrypted test string"); | |
| else | |
| fail("failed to decrypt test string"); | |
| } | |
| else | |
| fail("failed to decrypt test string"); | |
| } | |
| } | |
| else | |
| fail("failed to encrypt test data"); | |
| } | |
| print "</ul>\n"; | |
| } | |
| # check dojo directories | |
| title("Testing for existance of dojo directory"); | |
| print "<ul>\n"; | |
| if(is_dir('./dojo')) { | |
| pass("dojo directory exists"); | |
| if(is_readable('./dojo')) | |
| pass("dojo directory is readable"); | |
| else | |
| fail("dojo directory is not readable. Check permissions on this directory"); | |
| } | |
| else | |
| fail("dojo directory does not exist. Download and install Dojo Toolkit 1.6.5"); | |
| print "</ul>\n"; | |
| # check for spyc | |
| title("Testing for existance of spyc 0.5.1 and Spyc.php"); | |
| print "<ul>\n"; | |
| if(is_dir('./.ht-inc/spyc-0.5.1')) { | |
| pass("spyc directory exists"); | |
| if(is_readable('./.ht-inc/spyc-0.5.1')) { | |
| pass("spyc directory is readable"); | |
| if(is_file('./.ht-inc/spyc-0.5.1/Spyc.php')) { | |
| pass(".ht-inc/spyc-0.5.1/Spyc.php file exists"); | |
| if(is_readable('.ht-inc/spyc-0.5.1/Spyc.php')) | |
| pass(".ht-inc/spyc-0.5.1/Spyc.php is readable"); | |
| else | |
| fail(".ht-inc/spyc-0.5.1/Spyc.php is not readable. Check permissions on the file."); | |
| } | |
| else | |
| fail(".ht-inc/spyc-0.5.1/Spyc.php file does not exist. Reinstall Spyc 0.5.1"); | |
| } | |
| else | |
| fail("spyc-0.5.1 directory is not readable. Check permissions on this directory"); | |
| } | |
| else | |
| fail(".ht-inc/spyc-0.5.1 directory does not exist. Download and install Spyc 0.5.1"); | |
| print "</ul>\n"; | |
| # check themes directories for dojo content having been copied in | |
| title("Checking themes for dojo css"); | |
| print "<ul>\n"; | |
| $themes = scandir('themes'); | |
| foreach($themes as $theme) { | |
| if($theme == '.' || $theme == '..' || $theme == 'copydojocss.sh') | |
| continue; | |
| if(is_dir("themes/$theme/css/dojo") && is_file("themes/$theme/css/dojo/{$theme}.css")) | |
| pass("themes/$theme has had dojo css copied to it"); | |
| else | |
| fail("themes/$theme is missing dojo css. Run themes/copydojocss.sh from the themes directory to correct this if you want to use this theme."); | |
| } | |
| print "</ul>\n"; | |
| # php display errors | |
| title("Checking value of PHP display_errors"); | |
| $a = ini_get('display_errors'); | |
| print "<ul>\n"; | |
| if($a == 'Off' || $a == 'off' || $a == '') | |
| print "<li>display_errors: <strong>disabled</strong></li>\n"; | |
| elseif($a == 'On' || $a == 'on' || $a == 1) | |
| print "<li>display_errors: <strong>enabled</strong></li>\n"; | |
| else | |
| fail("failed to determine value of display_errors"); | |
| ?> | |
| <li>NOTE: Displaying errors in a production system is a security risk; however,<br> | |
| while getting VCL up and running, having them displayed makes debugging<br> | |
| a little easier. Edit your php.ini file to modify this setting.</li> | |
| </ul> | |
| <?php | |
| print "Done"; | |
| print "</body></html>\n"; | |
| ?> |