ftimme
2013-07-16 9cdf9d9ee39bade1b6c242ca4fb458a1de2c76a7
- Display/email reason for service restart/reload failure (if init script doesn't suppress error messages).
5 files modified
32 ■■■■■ changed files
server/lib/classes/services.inc.php 2 ●●● patch | view | raw | blame | history
server/mods-available/dns_module.inc.php 8 ●●●●● patch | view | raw | blame | history
server/mods-available/web_module.inc.php 8 ●●●●● patch | view | raw | blame | history
server/plugins-available/apache2_plugin.inc.php 7 ●●●●● patch | view | raw | blame | history
server/plugins-available/nginx_plugin.inc.php 7 ●●●●● patch | view | raw | blame | history
server/lib/classes/services.inc.php
@@ -58,7 +58,7 @@
            return call_user_func(array($app->loaded_modules[$module_name],$function_name),$action);
        } else {
            $app->log("Unable to restart $service_name. Service not registered.",LOGLEVEL_WARNING);
            return 0;
            return array('output' => '', 'retval' => 0);
        }
        
    }
server/mods-available/dns_module.inc.php
@@ -128,10 +128,11 @@
            $daemon = 'named';
        }
        
        $retval = array('output' => '', 'retval' => 0);
        if($action == 'restart') {
            exec($conf['init_scripts'] . '/' . $daemon . ' restart', $output, $retval);
            exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']);
        } else {
            exec($conf['init_scripts'] . '/' . $daemon . ' reload', $output, $retval);
            exec($conf['init_scripts'] . '/' . $daemon . ' reload', $retval['output'], $retval['retval']);
        }
        return $retval;
    }
@@ -177,7 +178,8 @@
            $daemon = 'pdns';
        }
        exec($conf['init_scripts'] . '/' . $daemon . ' restart', $output, $retval);
        $retval = array('output' => '', 'retval' => 0);
        exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']);
//     unset $tmps;
        return $retval;
server/mods-available/web_module.inc.php
@@ -210,10 +210,11 @@
                }
        }
        $retval = array('output' => '', 'retval' => 0);
        if($action == 'restart') {
            exec($conf['init_scripts'] . '/' . $daemon . ' restart', $output, $retval);
            exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']);
        } else {
            exec($conf['init_scripts'] . '/' . $daemon . ' reload', $output, $retval);
            exec($conf['init_scripts'] . '/' . $daemon . ' reload', $retval['output'], $retval['retval']);
        }
        return $retval;
    }
@@ -229,7 +230,8 @@
        
        if(!$init_script) $init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script'];
        
        exec($init_script.' '.$action, $output, $retval);
        $retval = array('output' => '', 'retval' => 0);
        exec($init_script.' '.$action, $retval['output'], $retval['retval']);
        return $retval;
    }
server/plugins-available/apache2_plugin.inc.php
@@ -1476,8 +1476,8 @@
            $apache_online_status_before_restart = $this->_checkTcp('localhost',80);
            $app->log('Apache status is: '.$apache_online_status_before_restart,LOGLEVEL_DEBUG);
            $retval = $app->services->restartService('httpd','restart'); // $retval is 0 on success and > 0 on failure
            $app->log('Apache restart return value is: '.$retval,LOGLEVEL_DEBUG);
            $retval = $app->services->restartService('httpd','restart'); // $retval['retval'] is 0 on success and > 0 on failure
            $app->log('Apache restart return value is: '.$retval['retval'],LOGLEVEL_DEBUG);
            
            // wait a few seconds, before we test the apache status again
            $apache_online_status_after_restart = false;
@@ -1489,9 +1489,10 @@
            }
            //* Check if apache restarted successfully if it was online before
            $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 || $retval > 0) {
            if($apache_online_status_before_restart && !$apache_online_status_after_restart || $retval['retval'] > 0) {
                $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);
                $app->system->copy($vhost_file,$vhost_file.'.err');
                if(is_array($retval['output']) && !empty($retval['output'])) $app->log('Reason for Apache restart failure: '.implode("\n", $retval['output']),LOGLEVEL_WARN);
                if(is_file($vhost_file.'~')) {
                    //* Copy back the last backup file
                    $app->system->copy($vhost_file.'~',$vhost_file);
server/plugins-available/nginx_plugin.inc.php
@@ -1526,8 +1526,8 @@
            $nginx_online_status_before_restart = $this->_checkTcp('localhost',80);
            $app->log('nginx status is: '.$nginx_online_status_before_restart,LOGLEVEL_DEBUG);
            $retval = $app->services->restartService('httpd','restart'); // $retval is 0 on success and > 0 on failure
            $app->log('nginx restart return value is: '.$retval,LOGLEVEL_DEBUG);
            $retval = $app->services->restartService('httpd','restart'); // $retval['retval'] is 0 on success and > 0 on failure
            $app->log('nginx restart return value is: '.$retval['retval'],LOGLEVEL_DEBUG);
            
            // wait a few seconds, before we test the apache status again
            sleep(2);
@@ -1535,9 +1535,10 @@
            //* Check if nginx restarted successfully if it was online before
            $nginx_online_status_after_restart = $this->_checkTcp('localhost',80);
            $app->log('nginx online status after restart is: '.$nginx_online_status_after_restart,LOGLEVEL_DEBUG);
            if($nginx_online_status_before_restart && !$nginx_online_status_after_restart || $retval > 0) {
            if($nginx_online_status_before_restart && !$nginx_online_status_after_restart || $retval['retval'] > 0) {
                $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);
                $app->system->copy($vhost_file,$vhost_file.'.err');
                if(is_array($retval['output']) && !empty($retval['output'])) $app->log('Reason for nginx restart failure: '.implode("\n", $retval['output']),LOGLEVEL_WARN);
                if(is_file($vhost_file.'~')) {
                    //* Copy back the last backup file
                    $app->system->copy($vhost_file.'~',$vhost_file);