From 85fdccecd22aca573cc0095acef2621980509e62 Mon Sep 17 00:00:00 2001 From: SimonFair <39065407+SimonFair@users.noreply.github.com> Date: Sat, 2 Mar 2024 17:14:48 +0000 Subject: [PATCH] Fix for services not running. --- emhttp/plugins/dynamix/include/WOL.php | 50 +++++++++++++++----------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/emhttp/plugins/dynamix/include/WOL.php b/emhttp/plugins/dynamix/include/WOL.php index fe1c9bf86..da0b7b8ce 100644 --- a/emhttp/plugins/dynamix/include/WOL.php +++ b/emhttp/plugins/dynamix/include/WOL.php @@ -30,29 +30,37 @@ function macbyte($val) { return dechex($val); } +$libvirtd_running = is_file('/var/run/libvirt/libvirtd.pid') ; +$dockerd_running = is_file('/var/run/dockerd.pid'); +$lxc_ls_exist = is_file('/usr/bin/lxc-ls'); + $arrEntries = []; -$vms = $lv->get_domains() ?:[]; -sort($vms,SORT_NATURAL); -foreach($vms as $vm){ - $arrEntries['VM'][$vm]['interfaces'] = $lv->get_nic_info($vm); - $arrEntries['VM'][$vm]['name'] = $vm; +if ($libvirtd_running) { + $vms = $lv->get_domains() ?:[]; + sort($vms,SORT_NATURAL); + foreach($vms as $vm){ + $arrEntries['VM'][$vm]['interfaces'] = $lv->get_nic_info($vm); + $arrEntries['VM'][$vm]['name'] = $vm; + } } - -$DockerClient = new DockerClient(); -$containers = $DockerClient->getDockerJSON("/containers/json?all=1"); -foreach($containers as $ct) - $arrEntries['Docker'][substr($ct["Names"][0],1)] = [ - 'interfaces' => ['0 '=> ['mac' => isset($ct["NetworkSettings"]["Networks"]["bridge"]["MacAddress"]) ? $ct["NetworkSettings"]["Networks"]["bridge"]["MacAddress"] : ""]], - 'name' => substr($ct["Names"][0],1), - ]; - -$lxc = explode("\n",shell_exec("lxc-ls -1")) ; -$lxcpath = trim(shell_exec("lxc-config lxc.lxcpath")); -foreach ($lxc as $lxcname) { - if ($lxcname == "") continue; - $value = explode("=",shell_exec("cat $lxcpath/$lxcname/config | grep 'hwaddr'")); - $arrEntries['LXC'][$lxcname]['interfaces'][0]['mac'] = trim($value[1]); - $arrEntries['LXC'][$lxcname]['name'] = $lxcname; +if ($dockerd_running) { + $DockerClient = new DockerClient(); + $containers = $DockerClient->getDockerJSON("/containers/json?all=1"); + foreach($containers as $ct) + $arrEntries['Docker'][substr($ct["Names"][0],1)] = [ + 'interfaces' => ['0 '=> ['mac' => isset($ct["NetworkSettings"]["Networks"]["bridge"]["MacAddress"]) ? $ct["NetworkSettings"]["Networks"]["bridge"]["MacAddress"] : ""]], + 'name' => substr($ct["Names"][0],1), + ]; +} +if ($lxc_ls_exist) { + $lxc = explode("\n",shell_exec("lxc-ls -1")) ; + $lxcpath = trim(shell_exec("lxc-config lxc.lxcpath")); + foreach ($lxc as $lxcname) { + if ($lxcname == "") continue; + $value = explode("=",shell_exec("cat $lxcpath/$lxcname/config | grep 'hwaddr'")); + $arrEntries['LXC'][$lxcname]['interfaces'][0]['mac'] = trim($value[1]); + $arrEntries['LXC'][$lxcname]['name'] = $lxcname; + } } if (is_file("/boot/config/wol.json")) $user_mac = json_decode(file_get_contents("/boot/config/wol.json"),true); else $user_mac = [];