ftimme
2013-08-08 d650ddab9042273e569ee4dc13e78d86c4488d83
- Display configuration errors in website form.
1 files added
14 files modified
92 ■■■■■ changed files
install/lib/installer_base.lib.php 2 ●●● patch | view | raw | blame | history
install/sql/incremental/upd_0055.sql 1 ●●●● patch | view | raw | blame | history
install/sql/ispconfig3.sql 1 ●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/de_web_domain.lng 1 ●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/en_web_domain.lng 1 ●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_advanced.htm 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_backup.htm 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_edit.htm 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_redirect.htm 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_ssl.htm 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_stats.htm 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_domain_edit.php 11 ●●●●● patch | view | raw | blame | history
server/lib/classes/db_mysql.inc.php 9 ●●●●● patch | view | raw | blame | history
server/plugins-available/apache2_plugin.inc.php 6 ●●●● patch | view | raw | blame | history
server/plugins-available/nginx_plugin.inc.php 6 ●●●● patch | view | raw | blame | history
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";
            }
install/sql/incremental/upd_0055.sql
New file
@@ -0,0 +1 @@
ALTER TABLE `sys_datalog` ADD `error` MEDIUMTEXT NULL DEFAULT NULL;
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 ;
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";
?>
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";
?>
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'} :&nbsp;</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">
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'} :&nbsp;</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">
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'} :&nbsp;</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">
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'} :&nbsp;</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">
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'} :&nbsp;</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">
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'} :&nbsp;</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">
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();
    }
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) 
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);
                    }
                }
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');