aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2014-07-04 07:42:52 +0200
committerChristian Weiske <cweiske@cweiske.de>2014-07-04 07:42:52 +0200
commit3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d (patch)
tree54140ba3dd5d22ffa3bbe1a7ba224d753db320aa
parent328144ad50541b7b854fa05a1eb2f066153e8625 (diff)
downloadphorkie-3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d.tar.gz
phorkie-3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d.zip
rework setup check
-rw-r--r--src/phorkie/SetupCheck.php31
-rw-r--r--www/setup.php98
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;
?>