From 2ebadd76247dd1d985ad099edd6ca61fd0a8ea97 Mon Sep 17 00:00:00 2001 From: jwarnier <jwarnier@ispconfig3> Date: Fri, 17 Sep 2010 20:30:15 -0400 Subject: [PATCH] improve maildirmake and remove yet other execs --- 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