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