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/lib/classes/system.inc.php | 31 +++++++++++++++++++++++++++---- 1 files changed, 27 insertions(+), 4 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; -- Gitblit v1.9.1