From d650ddab9042273e569ee4dc13e78d86c4488d83 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Thu, 08 Aug 2013 07:14:35 -0400
Subject: [PATCH] - Display configuration errors in website form.
---
interface/web/sites/templates/web_domain_advanced.htm | 9 ++++
interface/web/sites/templates/web_domain_ssl.htm | 9 ++++
server/lib/classes/db_mysql.inc.php | 9 ++++
interface/web/sites/lib/lang/de_web_domain.lng | 1
interface/web/sites/lib/lang/en_web_domain.lng | 1
interface/web/sites/web_domain_edit.php | 11 +++++
install/sql/incremental/upd_0055.sql | 1
interface/web/sites/templates/web_domain_stats.htm | 9 ++++
install/lib/installer_base.lib.php | 2
install/sql/ispconfig3.sql | 1
server/plugins-available/apache2_plugin.inc.php | 6 ++
interface/web/sites/templates/web_domain_backup.htm | 9 ++++
interface/web/sites/templates/web_domain_redirect.htm | 9 ++++
server/plugins-available/nginx_plugin.inc.php | 6 ++
interface/web/sites/templates/web_domain_edit.htm | 9 ++++
15 files changed, 89 insertions(+), 3 deletions(-)
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 0684b41..42ba3b0 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -400,7 +400,7 @@
$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
}
- $query = "GRANT SELECT, UPDATE(`status`) ON ".$value['db'].".`sys_datalog` TO '".$value['user']."'@'".$host."' ";
+ $query = "GRANT SELECT, UPDATE(`status`, `error`) ON ".$value['db'].".`sys_datalog` TO '".$value['user']."'@'".$host."' ";
if ($verbose){
echo $query ."\n";
}
diff --git a/install/sql/incremental/upd_0055.sql b/install/sql/incremental/upd_0055.sql
new file mode 100644
index 0000000..6f7a2e7
--- /dev/null
+++ b/install/sql/incremental/upd_0055.sql
@@ -0,0 +1 @@
+ALTER TABLE `sys_datalog` ADD `error` MEDIUMTEXT NULL DEFAULT NULL;
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 74c5841..6156a2e 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1425,6 +1425,7 @@
`user` varchar(255) NOT NULL default '',
`data` longtext NOT NULL,
`status` set('pending','ok','warning','error') NOT NULL default 'ok',
+ `error` mediumtext,
PRIMARY KEY (`datalog_id`),
KEY `server_id` (`server_id`,`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 5467c99..15bbcfd 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -119,4 +119,5 @@
$wb['rewrite_rules_txt'] = 'Rewrite Rules';
$wb['invalid_rewrite_rules_txt'] = 'Unzulässige Rewrite Rules';
$wb['allowed_rewrite_rule_directives_txt'] = 'Erlaubte Direktiven:';
+$wb['configuration_error_txt'] = "KONFIGURATIONSFEHLER";
?>
diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng
index f48953f..6f5647b 100644
--- a/interface/web/sites/lib/lang/en_web_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_domain.lng
@@ -119,4 +119,5 @@
$wb['rewrite_rules_txt'] = 'Rewrite Rules';
$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = "CONFIGURATION ERROR";
?>
\ No newline at end of file
diff --git a/interface/web/sites/templates/web_domain_advanced.htm b/interface/web/sites/templates/web_domain_advanced.htm
index 5df608a..2f5136e 100644
--- a/interface/web/sites/templates/web_domain_advanced.htm
+++ b/interface/web/sites/templates/web_domain_advanced.htm
@@ -1,6 +1,15 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
+<tmpl_if name="config_error_msg">
+<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
+ <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
+ <div>
+ <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div>
+ </div>
+</div>
+</tmpl_if>
+
<div class="panel panel_web_domain">
<div class="pnl_formsarea">
diff --git a/interface/web/sites/templates/web_domain_backup.htm b/interface/web/sites/templates/web_domain_backup.htm
index 3c78fe7..cfe4337 100644
--- a/interface/web/sites/templates/web_domain_backup.htm
+++ b/interface/web/sites/templates/web_domain_backup.htm
@@ -1,6 +1,15 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
+<tmpl_if name="config_error_msg">
+<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
+ <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
+ <div>
+ <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div>
+ </div>
+</div>
+</tmpl_if>
+
<div class="panel panel_web_domain">
<div class="pnl_formsarea">
diff --git a/interface/web/sites/templates/web_domain_edit.htm b/interface/web/sites/templates/web_domain_edit.htm
index 9a10623..e4689e4 100644
--- a/interface/web/sites/templates/web_domain_edit.htm
+++ b/interface/web/sites/templates/web_domain_edit.htm
@@ -1,6 +1,15 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
+<tmpl_if name="config_error_msg">
+<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
+ <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
+ <div>
+ <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div>
+ </div>
+</div>
+</tmpl_if>
+
<div class="panel panel_web_domain">
<div class="pnl_formsarea">
diff --git a/interface/web/sites/templates/web_domain_redirect.htm b/interface/web/sites/templates/web_domain_redirect.htm
index 35d3bdc..c0bd977 100644
--- a/interface/web/sites/templates/web_domain_redirect.htm
+++ b/interface/web/sites/templates/web_domain_redirect.htm
@@ -1,6 +1,15 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
+<tmpl_if name="config_error_msg">
+<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
+ <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
+ <div>
+ <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div>
+ </div>
+</div>
+</tmpl_if>
+
<div class="panel panel_web_domain">
<div class="pnl_formsarea">
diff --git a/interface/web/sites/templates/web_domain_ssl.htm b/interface/web/sites/templates/web_domain_ssl.htm
index 832d623..50d95d3 100644
--- a/interface/web/sites/templates/web_domain_ssl.htm
+++ b/interface/web/sites/templates/web_domain_ssl.htm
@@ -1,6 +1,15 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
+<tmpl_if name="config_error_msg">
+<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
+ <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
+ <div>
+ <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div>
+ </div>
+</div>
+</tmpl_if>
+
<div class="panel panel_web_domain">
<div class="pnl_formsarea">
diff --git a/interface/web/sites/templates/web_domain_stats.htm b/interface/web/sites/templates/web_domain_stats.htm
index f497f1b..769e088 100644
--- a/interface/web/sites/templates/web_domain_stats.htm
+++ b/interface/web/sites/templates/web_domain_stats.htm
@@ -1,6 +1,15 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
+<tmpl_if name="config_error_msg">
+<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
+ <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p>
+ <div>
+ <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div>
+ </div>
+</div>
+</tmpl_if>
+
<div class="panel panel_web_domain">
<div class="pnl_formsarea">
diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php
index 2a83485..2c67367 100644
--- a/interface/web/sites/web_domain_edit.php
+++ b/interface/web/sites/web_domain_edit.php
@@ -447,6 +447,17 @@
}
$app->tpl->setVar("domain_option",$domain_select);
}
+
+ // check for configuration errors in sys_datalog
+ if($this->id > 0) {
+ $datalog = $app->db->queryOneRecord("SELECT * FROM sys_datalog WHERE dbtable = 'web_domain' AND dbidx = 'domain_id:".$this->id."' ORDER BY tstamp DESC");
+ if(is_array($datalog) && !empty($datalog)){
+ if(trim($datalog['error']) != ''){
+ $app->tpl->setVar("config_error_msg",nl2br(htmlentities($datalog['error'])));
+ $app->tpl->setVar("config_error_tstamp",date($app->lng('conf_format_datetime'), $datalog['tstamp']));
+ }
+ }
+ }
parent::onShowEnd();
}
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index 2974da0..039b427 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -373,6 +373,15 @@
return true;
}
+
+ //** Deletes a record and saves the changes into the datalog
+ public function datalogError($errormsg) {
+ global $app;
+
+ $this->query("UPDATE sys_datalog set error = '".$this->quote($errormsg)."' WHERE datalog_id = ".$app->modules->current_datalog_id);
+
+ return true;
+ }
public function freeResult($query)
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 1a5252e..f7c7978 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -1493,6 +1493,7 @@
$app->log('Apache did not restart after the configuration change for website '.$data['new']['domain'].'. Reverting the configuration. Saved non-working config as '.$vhost_file.'.err',LOGLEVEL_WARN);
if(is_array($retval['output']) && !empty($retval['output'])){
$app->log('Reason for Apache restart failure: '.implode("\n", $retval['output']),LOGLEVEL_WARN);
+ $app->dbmaster->datalogError(implode("\n", $retval['output']));
} else {
// if no output is given, check again
$webserver_binary = '';
@@ -1526,7 +1527,10 @@
}
if($webserver_binary != ''){
exec($webserver_binary.' -t 2>&1', $tmp_output, $tmp_retval);
- if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)) $app->log('Reason for Apache restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN);
+ if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)){
+ $app->log('Reason for Apache restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN);
+ $app->dbmaster->datalogError(implode("\n", $tmp_output));
+ }
unset($tmp_output, $tmp_retval);
}
}
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index dc3c4df..181eedb 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -1633,10 +1633,14 @@
$app->log('nginx did not restart after the configuration change for website '.$data['new']['domain'].'. Reverting the configuration. Saved non-working config as '.$vhost_file.'.err',LOGLEVEL_WARN);
if(is_array($retval['output']) && !empty($retval['output'])){
$app->log('Reason for nginx restart failure: '.implode("\n", $retval['output']),LOGLEVEL_WARN);
+ $app->dbmaster->datalogError(implode("\n", $retval['output']));
} else {
// if no output is given, check again
exec('nginx -t 2>&1', $tmp_output, $tmp_retval);
- if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)) $app->log('Reason for nginx restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN);
+ if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)){
+ $app->log('Reason for nginx restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN);
+ $app->dbmaster->datalogError(implode("\n", $tmp_output));
+ }
unset($tmp_output, $tmp_retval);
}
$app->system->copy($vhost_file,$vhost_file.'.err');
--
Gitblit v1.9.1