From 6fc833c05bb6994fe5400a3b6c7f12430a734fe1 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Sat, 18 Sep 2010 15:19:37 -0400
Subject: [PATCH] Fixed syntax error in install/lib/installer_base.lib.php
---
server/plugins-available/apache2_plugin.inc.php | 60 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 2f106ef..8832d98 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -415,9 +415,9 @@
}
else {
exec("cp /usr/local/ispconfig/server/conf/index/standard_index.html_".substr(escapeshellcmd($conf["language"]),0,2)." ".escapeshellcmd($data["new"]["document_root"])."/web/index.html");
- exec("cp /usr/local/ispconfig/server/conf/index/favicon.ico ".escapeshellcmd($data["new"]["document_root"])."/web/");
- exec("cp /usr/local/ispconfig/server/conf/index/robots.txt ".escapeshellcmd($data["new"]["document_root"])."/web/");
- exec("cp /usr/local/ispconfig/server/conf/index/.htaccess ".escapeshellcmd($data["new"]["document_root"])."/web/");
+ if(is_file('/usr/local/ispconfig/server/conf/index/favicon.ico')) exec("cp /usr/local/ispconfig/server/conf/index/favicon.ico ".escapeshellcmd($data["new"]["document_root"])."/web/");
+ if(is_file('/usr/local/ispconfig/server/conf/index/robots.txt')) exec("cp /usr/local/ispconfig/server/conf/index/robots.txt ".escapeshellcmd($data["new"]["document_root"])."/web/");
+ if(is_file('/usr/local/ispconfig/server/conf/index/.htaccess')) exec("cp /usr/local/ispconfig/server/conf/index/.htaccess ".escapeshellcmd($data["new"]["document_root"])."/web/");
}
}
exec("chmod -R a+r ".escapeshellcmd($data["new"]["document_root"])."/web/");
@@ -489,7 +489,7 @@
$this->_exec("chmod 751 ".escapeshellcmd($data["new"]["document_root"])."/*");
$this->_exec("chmod 710 ".escapeshellcmd($data["new"]["document_root"]."/web"));
- // make temp direcory writable for the apache user and the website user
+ // make temp directory writable for the apache and website users
$this->_exec("chmod 777 ".escapeshellcmd($data["new"]["document_root"]."/tmp"));
$command = 'usermod';
@@ -534,7 +534,7 @@
$this->_exec("chmod 755 ".escapeshellcmd($data["new"]["document_root"]."/*"));
$this->_exec("chown root:root ".escapeshellcmd($data["new"]["document_root"]."/"));
- // make temp direcory writable for the apache user and the website user
+ // make temp directory writable for the apache and website users
$this->_exec("chmod 777 ".escapeshellcmd($data["new"]["document_root"]."/tmp"));
}
@@ -825,6 +825,10 @@
}
$vhost_file = escapeshellcmd($web_config["vhost_conf_dir"].'/'.$data["new"]["domain"].'.vhost');
+ //* Make a backup copy of vhost file
+ copy($vhost_file,$vhost_file.'~');
+
+ //* Write vhost file
file_put_contents($vhost_file,$tpl->grab());
$app->log("Writing the vhost file: $vhost_file",LOGLEVEL_DEBUG);
unset($tpl);
@@ -879,14 +883,36 @@
if($data["new"]["stats_type"] == 'awstats' && $data["new"]["type"] == "vhost") {
$this->awstats_update($data,$web_config);
}
+
+ if($web_config['check_apache_config'] == 'y') {
+ //* Test if apache starts with the new configuration file
+ $apache_online_status_before_restart = $this->_checkTcp('localhost',80);
+ $app->log("Apache status is: ".$apache_online_status_before_restart,LOGLEVEL_DEBUG);
-
- if($apache_chrooted) {
- $app->services->restartServiceDelayed('httpd','restart');
+ $app->services->restartService('httpd','restart');
+
+ //* Check if apache restarted successfully if it was online before
+ $apache_online_status_after_restart = $this->_checkTcp('localhost',80);
+ $app->log("Apache online status after restart is: ".$apache_online_status_after_restart,LOGLEVEL_DEBUG);
+ if($apache_online_status_before_restart && !$apache_online_status_after_restart) {
+ $app->log("Apache did not restart after the configuration change for website ".$data["new"]["domain"].' Reverting the configuration. Saved not working config as '.$vhost_file.'.err',LOGLEVEL_WARN);
+ copy($vhost_file,$vhost_file.'.err');
+ copy($vhost_file.'~',$vhost_file);
+ $app->services->restartService('httpd','restart');
+ }
} else {
- // request a httpd reload when all records have been processed
- $app->services->restartServiceDelayed('httpd','reload');
+ //* We do not check the apache config after changes (is faster)
+ if($apache_chrooted) {
+ $app->services->restartServiceDelayed('httpd','restart');
+ } else {
+ // request a httpd reload when all records have been processed
+ $app->services->restartServiceDelayed('httpd','reload');
+ }
}
+
+ // Remove the backup copy of the config file.
+ unlink($vhost_file.'~');
+
//* Unset action to clean it for next processed vhost.
$this->action = '';
@@ -1283,8 +1309,20 @@
$app->log("exec: ".$command,LOGLEVEL_DEBUG);
exec($command);
}
+
+ private function _checkTcp ($host,$port) {
+
+ $fp = @fsockopen ($host, $port, $errno, $errstr, 2);
+
+ if ($fp) {
+ fclose($fp);
+ return true;
+ } else {
+ return false;
+ }
+ }
} // end class
-?>
\ No newline at end of file
+?>
--
Gitblit v1.9.1