From ea476acce466535853bc2b646f047432ee2fb731 Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Fri, 27 May 2016 05:44:32 -0400 Subject: [PATCH] add optional arrays for service-name to function system->getinitcommand and also a parameter to check if the current service exists (mandatory if you use an array) --- server/plugins-available/mail_plugin_dkim.inc.php | 21 +++++---------------- server/lib/classes/system.inc.php | 31 +++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 2c36c38..93cd524 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1856,23 +1856,46 @@ } - function getinitcommand($servicename, $action, $init_script_directory = ''){ + function _getinitcommand($servicename, $action, $init_script_directory = '', $check_service) { global $conf; // upstart if(is_executable('/sbin/initctl')){ exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']); if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action; } + // systemd if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ - return 'systemctl '.$action.' '.$servicename.'.service'; + if ($check_service) { + exec("systemctl is-enabled ".$servicename." 2>&1", $out, $ret_val); + } + if ($ret_val == 0 || !$check_service) { + return 'systemctl '.$action.' '.$servicename.'.service'; + } } + // sysvinit if($init_script_directory == '') $init_script_directory = $conf['init_scripts']; if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1); - return $init_script_directory.'/'.$servicename.' '.$action; + if($check_service && is_executable($init_script_directory.'/'.$servicename)) { + return $init_script_directory.'/'.$servicename.' '.$action; + } + if (!$check_service) { + return $init_script_directory.'/'.$servicename.' '.$action; + } } - + + function getinitcommand($servicename, $action, $init_script_directory = '', $check_service=false) { + if (is_array($servicename)) { + foreach($servicename as $service) { + $out = $this->_getinitcommand($service, $action, $init_script_directory, true); + if ($out != '') return $out; + } + } else { + return $this->_getinitcommand($servicename, $action, $init_script_directory, $check_service); + } + } + function getapacheversion($get_minor = false) { global $app; diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index 25f1871..0b840db 100755 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -171,22 +171,11 @@ * This function restarts amavis */ function restart_amavis() { - global $app, $conf; - $pos_init=array( - $conf['init_scripts'].'/amavis', - $conf['init_scripts'].'/amavisd' - ); - $initfile=''; - foreach($pos_init as $init) { - if (is_executable($init)) { - $initfile=$init; - break; - } - } - if ( $initfile == '' ) $initfile = 'service amavis'; - $app->log('Restarting amavis: '.$initfile.'.', LOGLEVEL_DEBUG); - exec(escapeshellarg($initfile).' restart', $output); - foreach($output as $logline) $app->log($logline, LOGLEVEL_DEBUG); + global $app; + $initcommand = $app->system->getinitcommand(array('amavis', 'amavisd'), 'restart'); + $app->log('Restarting amavis: '.$initcommand.'.', LOGLEVEL_DEBUG); + exec($initcommand, $output); + foreach($output as $logline) $app->log($logline, LOGLEVEL_DEBUG); } /** -- Gitblit v1.9.1