diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2014-07-04 07:42:52 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2014-07-04 07:42:52 +0200 |
| commit | 3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d (patch) | |
| tree | 54140ba3dd5d22ffa3bbe1a7ba224d753db320aa | |
| parent | 328144ad50541b7b854fa05a1eb2f066153e8625 (diff) | |
| download | phorkie-3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d.tar.gz phorkie-3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d.zip | |
rework setup check
| -rw-r--r-- | src/phorkie/SetupCheck.php | 31 | ||||
| -rw-r--r-- | www/setup.php | 98 |
2 files changed, 123 insertions, 6 deletions
diff --git a/src/phorkie/SetupCheck.php b/src/phorkie/SetupCheck.php index 177a0f7..c459e2a 100644 --- a/src/phorkie/SetupCheck.php +++ b/src/phorkie/SetupCheck.php @@ -18,6 +18,8 @@ class SetupCheck protected $writableDirs; protected $elasticsearch; + public $messages = array(); + public function __construct() { $cfg = $GLOBALS['phorkie']['cfg']; @@ -31,11 +33,25 @@ class SetupCheck public static function run() { $sc = new self(); + $sc->checkConfigFiles(); $sc->checkDeps(); $sc->checkDirs(); $sc->checkGit(); $sc->checkDatabase(); $sc->checkMimeTypeDetection(); + + return $sc->messages; + } + + public function checkConfigFiles() + { + foreach ($GLOBALS['phorkie']['cfgfiles'] as $file => $loaded) { + if ($loaded) { + $this->ok('Loaded config file: ' . $file); + } else { + $this->info('Possible config file: ' . $file . ' (not loaded)'); + } + } } public function checkDeps() @@ -69,8 +85,7 @@ class SetupCheck foreach ($this->writableDirs as $name => $dir) { if (!is_dir($dir)) { $this->fail($name . ' directory does not exist at ' . $dir); - } - if (!is_writable($dir)) { + } else if (!is_writable($dir)) { $this->fail($name . ' directory is not writable at ' . $dir); } } @@ -120,7 +135,17 @@ class SetupCheck public function fail($msg) { - throw new Exception($msg); + $this->messages[] = array('error', $msg); + } + + public function info($msg) + { + $this->messages[] = array('info', $msg); + } + + public function ok($msg) + { + $this->messages[] = array('ok', $msg); } } diff --git a/www/setup.php b/www/setup.php index d62efe0..cd0deaa 100644 --- a/www/setup.php +++ b/www/setup.php @@ -3,6 +3,8 @@ * Check if all is setup correctly */ namespace phorkie; +header('HTTP/1.0 500 Internal Server Error'); + $reqWritePermissions = false; require_once 'www-header.php'; @@ -13,8 +15,98 @@ if (!$GLOBALS['phorkie']['cfg']['setupcheck']) { exit(1); } -SetupCheck::run(); +$messages = SetupCheck::run(); +$errors = 0; +foreach ($messages as $arMessage) { + list($type, $message) = $arMessage; + $type == 'error' && ++$errors; +} +if ($errors == 0) { + header('HTTP/1.0 200 OK'); +} +header('Content-type: text/html'); + +if ($errors == 0) { + $messages[] = array('ok', 'All fine'); +} + +$out = <<<HTM +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <title>phorkie setup check</title> + <link rel="stylesheet" href="css/bootstrap.min.css"/> + <link rel="stylesheet" href="css/font-awesome.css"/> + <link rel="stylesheet" href="css/phorkie.css"/> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <style type="text/css"> + /**/ + li:before { + text-align: center; + display: inline-block; + width: 1em; + padding: 0 0.5ex; + margin-right: 0.5ex; + } + li.list-group-item-success:before { + content: '✔'; + color: green; + } + li.list-group-item-danger:before { + content: "✘"; + color: white; + background-color: red; + } + li.list-group-item-info:before { + content: "i"; + font-weight: bold; + color: blue; + } +/**/ + </style> + </head> + <body> + <div class="container"> + <div class="row"> + <div class="span12"> + + <div class="page-header"> + <h1>phorkie setup check</h1> + </div> + + <ul class="list-group"> +HTM; +$stateMap = array( + 'ok' => 'success', + 'info' => 'info', + 'error' => 'danger' +); +foreach ($messages as $arMessage) { + list($type, $message) = $arMessage; + $out .= '<li class="list-group-item list-group-item-' + . $stateMap[$type] . '">'; + $out .= htmlspecialchars($message); + $out .= '</li>' . "\n"; +} +$out .= <<<HTM + </ul> + <p> + <a href="./">back</a> to the index + </p> + </div> + </div> + </div> + + <div class="container footer"> + <a href="//sf.net/p/phorkie/">phorkie</a>, + the self-hosted, git-based pastebin software is available under the + <a href="http://www.gnu.org/licenses/agpl-3.0.html"> + <abbr title="GNU Affero General Public License">AGPL</abbr></a>. + </div> -header('Content-type: text/plain'); -echo "All fine\n"; + </body> +</html> +HTM; +echo $out; ?> |
