- Display configuration errors in website form.
1 files added
14 files modified
| | |
| | | $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"; |
| | | } |
New file |
| | |
| | | ALTER TABLE `sys_datalog` ADD `error` MEDIUMTEXT NULL DEFAULT NULL; |
| | |
| | | `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 ; |
| | |
| | | $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"; |
| | | ?> |
| | |
| | | $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"; |
| | | ?> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | } |
| | | $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(); |
| | | } |
| | |
| | | |
| | | 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) |
| | |
| | | $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 = ''; |
| | |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | |
| | | $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'); |