Menu="Dashboard:1"
Title="Apps"
Cond="(((pgrep('docker')!==false) || (pgrep('libvirtd')!==false)) && ($display['dashapps']!='none'))"
Markdown="false"
---
$allContainers = array();
if ((pgrep('docker')!==false) && (empty($display['dashapps']) || $display['dashapps'] == 'icons' || $display['dashapps'] == 'docker')) {
require_once '/usr/local/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php';
$DockerClient = new DockerClient();
$DockerUpdate = new DockerUpdate();
$DockerTemplates = new DockerTemplates();
$allContainers = $DockerClient->getDockerContainers();
if ( ! $allContainers) { $allContainers = array(); }
$arrDockerInfo = $DockerTemplates->getAllInfo();
}
$allVMs = array();
if ((pgrep('libvirtd')!==false) && (empty($display['dashapps']) || $display['dashapps'] == 'icons' || $display['dashapps'] == 'vms')) {
require_once '/usr/local/emhttp/plugins/dynamix.vm.manager/classes/libvirt.php';
require_once '/usr/local/emhttp/plugins/dynamix.vm.manager/classes/libvirt_helpers.php';
$doms = $lv->get_domains();
if (is_array($doms)) {
sort($doms);
$allVMs = $doms;
}
}
$contextMenus = array();
// Docker Apps
foreach ($allContainers as $ct) {
$name = $ct["Name"];
$info = $arrDockerInfo[$name];
$is_autostart = ( $info['autostart'] ) ? 'true' : 'false';
$updateStatus = $info['updated'];
$updateStatus = ($updateStatus == "true" or $updateStatus == "undef" ) ? 'true' : 'false';
$running = ($ct['Running']) ? 'true' : 'false';
$webGuiUrl = $info['url'];
$contextMenus[] = sprintf("addDockerContainerContext('%s', '%s', '%s', %s, %s, %s, '%s', '%s');", addslashes($ct['Name']), addslashes($ct['ImageId']), addslashes($info['template']), $running, $updateStatus, $is_autostart, addslashes($webGuiUrl), $ct["Id"] );
$shape = ($ct["Running"]) ? "play" : "square";
$status = ($ct["Running"]) ? "started" : "stopped";
$Icon = $info['icon'];
if ( $Icon == "#" ){
$Icon = "/plugins/dynamix.docker.manager/assets/images/question.png";
}
print "
";
}
// VM Apps
foreach ($allVMs as $name) {
$res = $lv->get_domain_by_name($name);
$uuid = libvirt_domain_get_uuid_string($res);
$dom = $lv->domain_get_info($res);
$id = $lv->domain_get_id($res);
$state = $lv->domain_state_translate($dom['state']);
switch ($state) {
case 'running':
$shape = 'play';
$status = 'started';
break;
case 'paused': //no break on purpose
case 'pmsuspended':
$shape = 'pause';
$status = 'paused';
break;
default:
$shape = 'square';
$status = 'stopped';
break;
}
$vncport = $lv->domain_get_vnc_port($res);
$vnc = '';
if ($vncport > 0) {
$wsport = $lv->domain_get_ws_port($res);
$vnc = '/plugins/dynamix.vm.manager/vnc.html?autoconnect=true&host=' . $eth0['IPADDR:0'] . '&port=' . $wsport;
} else {
$vncport = ($vncport < 0) ? "auto" : "";
}
$template = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@name');
if (empty($template)) {
$template = 'Custom';
}
$log = (is_file('/var/log/libvirt/qemu/' . $name . '.log') ? 'libvirt/qemu/' . $name . '.log' : '');
$contextMenus[] = sprintf("addVMContext('%s', '%s', '%s', '%s', '%s', '%s');", addslashes($name), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log));
// fallback icon for users that created VMs before metadata support was added
$vmicon = '/plugins/dynamix.vm.manager/templates/images/' . ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png');
$vmtemplateicon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon');
if (!empty($vmtemplateicon)) {
if (file_exists($vmtemplateicon)) {
$vmicon = $vmtemplateicon;
} else if (file_exists('/usr/local/emhttp/plugins/dynamix.vm.manager/templates/images/' . $vmtemplateicon)) {
$vmicon = '/plugins/dynamix.vm.manager/templates/images/' . $vmtemplateicon;
}
}
print "
";
}
?>
No apps available to show