diff --git a/emhttp/plugins/dynamix.apcupsd/include/UPSstatus.php b/emhttp/plugins/dynamix.apcupsd/include/UPSstatus.php
index 69ed7c9f8..0c8a7e56f 100644
--- a/emhttp/plugins/dynamix.apcupsd/include/UPSstatus.php
+++ b/emhttp/plugins/dynamix.apcupsd/include/UPSstatus.php
@@ -12,7 +12,8 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+
// add translations
$_SERVER['REQUEST_URI'] = 'settings';
require_once "$docroot/webGui/include/Translations.php";
diff --git a/emhttp/plugins/dynamix.docker.manager/include/ContainerManager.php b/emhttp/plugins/dynamix.docker.manager/include/ContainerManager.php
index eff069086..90f2f770a 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/ContainerManager.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/ContainerManager.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$user_prefs = $dockerManPaths['user-prefs'];
diff --git a/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php b/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
index 5ac8830c9..73a405ad2 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
-libxml_use_internal_errors(true);
-
require_once "$docroot/webGui/include/Helpers.php";
extract(parse_plugin_cfg('dynamix',true));
@@ -398,6 +396,7 @@ function addConfigPopup() {
// Start Dialog section
popup.dialog({
title: title,
+ height: 'auto',
width: 900,
resizable: false,
modal: true,
@@ -466,6 +465,7 @@ function editConfigPopup(num,disabled) {
popup.find(".switch-button-background").css("margin-top", "6px");
popup.dialog({
title: title,
+ height: 'auto',
width: 900,
resizable: false,
modal: true,
diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php
index 8fc260c18..fa5923f8e 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php
@@ -1,7 +1,7 @@
-libxml_use_internal_errors(true); # Suppress any warnings from xml errors.
-
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/Helpers.php";
require_once "$docroot/webGui/include/Wrappers.php";
@@ -56,8 +53,8 @@ if (file_exists($docker_cfgfile) && exec("grep -Pom1 '_{$port}(_[0-9]+)?=' $dock
exec("sed -ri 's/_(BR0|BOND0|ETH0)(_[0-9]+)?=/_{$port}\\2=/' $docker_cfgfile");
}
-$defaults = @parse_ini_file("$docroot/plugins/dynamix.docker.manager/default.cfg") ?: [];
-$dockercfg = array_replace_recursive($defaults, @parse_ini_file($docker_cfgfile) ?: []);
+$defaults = (array)@parse_ini_file("$docroot/plugins/dynamix.docker.manager/default.cfg");
+$dockercfg = array_replace_recursive($defaults, (array)@parse_ini_file($docker_cfgfile));
function var_split($item, $i=0) {
return array_pad(explode(' ',$item),$i+1,'')[$i];
diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php
index 0dc11bb93..400898dd6 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Helpers.php";
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
@@ -34,7 +33,7 @@ if (!$containers && !$images) {
}
if (file_exists($user_prefs)) {
- $prefs = @parse_ini_file($user_prefs) ?: [];
+ $prefs = (array)@parse_ini_file($user_prefs);
$sort = [];
foreach ($containers as $ct) $sort[] = array_search($ct['Name'],$prefs);
array_multisort($sort,SORT_NUMERIC,$containers);
@@ -46,7 +45,7 @@ $allInfo = $DockerTemplates->getAllInfo();
$docker = [];
$null = '0.0.0.0';
-$autostart = @file($autostart_file,FILE_IGNORE_NEW_LINES) ?: [];
+$autostart = (array)@file($autostart_file,FILE_IGNORE_NEW_LINES);
$names = array_map('var_split',$autostart);
function my_lang_time($text) {
diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerUpdate.php b/emhttp/plugins/dynamix.docker.manager/include/DockerUpdate.php
index 3b4647624..ee0233318 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/DockerUpdate.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/DockerUpdate.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$ncsi = exec("wget --spider --no-check-certificate -nv -T10 -t1 https://www.msftncsi.com/ncsi.txt 2>&1|grep -o 'OK'")=='OK';
diff --git a/emhttp/plugins/dynamix.docker.manager/include/Events.php b/emhttp/plugins/dynamix.docker.manager/include/Events.php
index 1ac064cbd..a16c1d418 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/Events.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/Events.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Secure.php";
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
diff --git a/emhttp/plugins/dynamix.docker.manager/include/UpdateConfig.php b/emhttp/plugins/dynamix.docker.manager/include/UpdateConfig.php
index 6c202dda9..413217eb6 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/UpdateConfig.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/UpdateConfig.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$autostart_file = $dockerManPaths['autostart-file'];
@@ -25,7 +25,7 @@ case 'autostart':
$container = urldecode(($_POST['container']));
$wait = $_POST['wait'];
$item = rtrim("$container $wait");
- $autostart = @file($autostart_file, FILE_IGNORE_NEW_LINES) ?: [];
+ $autostart = (array)@file($autostart_file, FILE_IGNORE_NEW_LINES);
$key = array_search($item, $autostart);
if ($_POST['auto']=='true') {
if ($key===false) $autostart[] = $item;
@@ -48,7 +48,7 @@ case 'wait':
$container = urldecode(($_POST['container']));
$wait = $_POST['wait'];
$item = rtrim("$container $wait");
- $autostart = file($autostart_file, FILE_IGNORE_NEW_LINES) ?: [];
+ $autostart = (array)@file($autostart_file, FILE_IGNORE_NEW_LINES);
$names = array_map('var_split', $autostart);
$autostart[array_search($container,$names)] = $item;
file_put_contents($autostart_file, implode("\n", $autostart)."\n");
diff --git a/emhttp/plugins/dynamix.docker.manager/include/UserPrefs.php b/emhttp/plugins/dynamix.docker.manager/include/UserPrefs.php
index cb3e091ee..a7de43532 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/UserPrefs.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/UserPrefs.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$autostart_file = $dockerManPaths['autostart-file'];
diff --git a/emhttp/plugins/dynamix.docker.manager/scripts/container_size b/emhttp/plugins/dynamix.docker.manager/scripts/container_size
index ee43b699b..cbc8b0a39 100755
--- a/emhttp/plugins/dynamix.docker.manager/scripts/container_size
+++ b/emhttp/plugins/dynamix.docker.manager/scripts/container_size
@@ -12,8 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
diff --git a/emhttp/plugins/dynamix.docker.manager/scripts/dockerupdate b/emhttp/plugins/dynamix.docker.manager/scripts/dockerupdate
index da6ae3e08..8f5482095 100755
--- a/emhttp/plugins/dynamix.docker.manager/scripts/dockerupdate
+++ b/emhttp/plugins/dynamix.docker.manager/scripts/dockerupdate
@@ -1,8 +1,8 @@
#!/usr/bin/php -q
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
extract(parse_plugin_cfg('dynamix', true));
@@ -45,7 +44,7 @@ if (!isset($check)) {
echo " Done.";
} else {
$notify = "$docroot/webGui/scripts/notify";
- $var = @parse_ini_file("/var/local/emhttp/var.ini") ?: [];
+ $var = (array)@parse_ini_file("/var/local/emhttp/var.ini");
$server = strtoupper(_var($var,'NAME','tower'));
$output = _var($notify,'docker_notify');
$info = $DockerTemplates->getAllInfo(true);
diff --git a/emhttp/plugins/dynamix.docker.manager/scripts/rebuild_container b/emhttp/plugins/dynamix.docker.manager/scripts/rebuild_container
index 533670ee8..55bc7205c 100755
--- a/emhttp/plugins/dynamix.docker.manager/scripts/rebuild_container
+++ b/emhttp/plugins/dynamix.docker.manager/scripts/rebuild_container
@@ -12,7 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$DockerClient = new DockerClient();
diff --git a/emhttp/plugins/dynamix.docker.manager/scripts/update_container b/emhttp/plugins/dynamix.docker.manager/scripts/update_container
index f37897abd..12588f0bb 100755
--- a/emhttp/plugins/dynamix.docker.manager/scripts/update_container
+++ b/emhttp/plugins/dynamix.docker.manager/scripts/update_container
@@ -12,8 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
diff --git a/emhttp/plugins/dynamix.my.servers/data/server-state.php b/emhttp/plugins/dynamix.my.servers/data/server-state.php
index 6ed4af1f9..9c2afa414 100644
--- a/emhttp/plugins/dynamix.my.servers/data/server-state.php
+++ b/emhttp/plugins/dynamix.my.servers/data/server-state.php
@@ -1,5 +1,5 @@
-
diff --git a/emhttp/plugins/dynamix.plugin.manager/include/Downgrade.php b/emhttp/plugins/dynamix.plugin.manager/include/Downgrade.php
index a3a92ba2a..9742e7bbc 100644
--- a/emhttp/plugins/dynamix.plugin.manager/include/Downgrade.php
+++ b/emhttp/plugins/dynamix.plugin.manager/include/Downgrade.php
@@ -11,8 +11,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/webGui/include/Secure.php";
diff --git a/emhttp/plugins/dynamix.plugin.manager/include/ShowChanges.php b/emhttp/plugins/dynamix.plugin.manager/include/ShowChanges.php
index 9a74a136c..3500f5e32 100644
--- a/emhttp/plugins/dynamix.plugin.manager/include/ShowChanges.php
+++ b/emhttp/plugins/dynamix.plugin.manager/include/ShowChanges.php
@@ -11,8 +11,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
diff --git a/emhttp/plugins/dynamix.plugin.manager/include/ShowPlugins.php b/emhttp/plugins/dynamix.plugin.manager/include/ShowPlugins.php
index 60a81355d..2d9b9bea5 100644
--- a/emhttp/plugins/dynamix.plugin.manager/include/ShowPlugins.php
+++ b/emhttp/plugins/dynamix.plugin.manager/include/ShowPlugins.php
@@ -11,8 +11,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Helpers.php";
require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/PluginAPI.php b/emhttp/plugins/dynamix.plugin.manager/scripts/PluginAPI.php
index 1915ab237..66b457448 100644
--- a/emhttp/plugins/dynamix.plugin.manager/scripts/PluginAPI.php
+++ b/emhttp/plugins/dynamix.plugin.manager/scripts/PluginAPI.php
@@ -10,12 +10,13 @@
* all copies or substantial portions of the Software.
*/
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
+require_once "$docroot/plugins/dynamix/include/Secure.php";
+
//add translations
$_SERVER['REQUEST_URI'] = "plugins";
require_once "$docroot/plugins/dynamix/include/Translations.php";
-require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
-require_once "$docroot/plugins/dynamix/include/Secure.php";
function download_url($url, $path = "") {
$ch = curl_init();
@@ -39,21 +40,17 @@ switch ($_POST['action']) {
case 'checkPlugin':
$options = $_POST['options'] ?? '';
$plugin = $options['plugin'] ?? '';
-
$name = unbundle($options['name'] ?? $plugin);
$file = "/boot/config/plugins/$plugin";
$file = realpath($file)==$file ? $file : "";
-
if ( ! $plugin || ! file_exists($file) ) {
echo json_encode(["updateAvailable"=>false]);
break;
}
-
exec("mkdir -p /tmp/plugins");
@unlink("/tmp/plugins/$plugin");
$url = plugin("pluginURL","/boot/config/plugins/$plugin");
download_url($url,"/tmp/plugins/$plugin");
-
$changes = plugin("changes","/tmp/plugins/$plugin");
$alerts = plugin("alert","/tmp/plugins/$plugin");
$version = plugin("version","/tmp/plugins/$plugin");
@@ -69,7 +66,6 @@ switch ($_POST['action']) {
} else {
@unlink('/tmp/plugins/my_alerts.txt');
}
-
$update = false;
if ( strcmp($version,$installedVersion) > 0 ) {
$unraid = parse_ini_file("/etc/unraid-version");
@@ -77,17 +73,14 @@ switch ($_POST['action']) {
}
$updateMessage = sprintf(_("%s: An update is available."),$name);
$linkMessage = sprintf(_("Click here to install version %s"),$version);
-
echo json_encode(["updateAvailable"=>$update, "version"=>$version, "min"=>$min, "alert"=>$alerts, "changes"=>$changes, "installedVersion"=>$installedVersion, "updateMessage"=>$updateMessage, "linkMessage"=>$linkMessage]);
break;
case 'addRebootNotice':
$message = htmlspecialchars(trim($_POST['message']));
- if ( ! $message ) break;
-
- $existing = @file("/tmp/reboot_notifications",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: [];
+ if (!$message) break;
+ $existing = (array)@file("/tmp/reboot_notifications",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$existing[] = $message;
-
file_put_contents("/tmp/reboot_notifications",implode("\n",array_unique($existing)));
break;
diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/checkall b/emhttp/plugins/dynamix.plugin.manager/scripts/checkall
index eee96871d..7c46a8ed5 100755
--- a/emhttp/plugins/dynamix.plugin.manager/scripts/checkall
+++ b/emhttp/plugins/dynamix.plugin.manager/scripts/checkall
@@ -12,8 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/languagecheck b/emhttp/plugins/dynamix.plugin.manager/scripts/languagecheck
index 6290cbe1e..93e8265fe 100755
--- a/emhttp/plugins/dynamix.plugin.manager/scripts/languagecheck
+++ b/emhttp/plugins/dynamix.plugin.manager/scripts/languagecheck
@@ -12,8 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
extract(parse_plugin_cfg('dynamix', true));
@@ -23,7 +22,7 @@ $_SERVER['REQUEST_URI'] = "scripts";
$login_locale = _var($display,'locale');
require_once "$docroot/webGui/include/Translations.php";
-$var = @parse_ini_file('/var/local/emhttp/var.ini') ?: [];
+$var = (array)@parse_ini_file('/var/local/emhttp/var.ini');
function apos($text) {
// So that "'" doesn't show up in email
diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/plugincheck b/emhttp/plugins/dynamix.plugin.manager/scripts/plugincheck
index 763b2915c..6eb1acec0 100755
--- a/emhttp/plugins/dynamix.plugin.manager/scripts/plugincheck
+++ b/emhttp/plugins/dynamix.plugin.manager/scripts/plugincheck
@@ -12,11 +12,9 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
-
extract(parse_plugin_cfg('dynamix',true));
// Multi-language support
@@ -24,7 +22,7 @@ $_SERVER['REQUEST_URI'] = "scripts";
$login_locale = _var($display,'locale');
require_once "$docroot/webGui/include/Translations.php";
-$var = @parse_ini_file('/var/local/emhttp/var.ini') ?: [];
+$var = (array)@parse_ini_file('/var/local/emhttp/var.ini');
function apos($text) {
// So that "'" doesn't show up in email
diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/showchanges b/emhttp/plugins/dynamix.plugin.manager/scripts/showchanges
index b64ba83d4..1f0ffbb7a 100755
--- a/emhttp/plugins/dynamix.plugin.manager/scripts/showchanges
+++ b/emhttp/plugins/dynamix.plugin.manager/scripts/showchanges
@@ -12,8 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/unraidcheck b/emhttp/plugins/dynamix.plugin.manager/scripts/unraidcheck
index 710c0e496..d4f87f0aa 100755
--- a/emhttp/plugins/dynamix.plugin.manager/scripts/unraidcheck
+++ b/emhttp/plugins/dynamix.plugin.manager/scripts/unraidcheck
@@ -12,8 +12,7 @@
*/
?>
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
@@ -24,7 +23,7 @@ if (!function_exists('_')) {
extract(parse_plugin_cfg('dynamix', true));
-$var = @parse_ini_file('/var/local/emhttp/var.ini') ?: [];
+$var = (array)@parse_ini_file('/var/local/emhttp/var.ini');
$script = "$docroot/webGui/scripts/notify";
$server = strtoupper(_var($var,'NAME','server'));
$output = _var($notify,'plugin');
diff --git a/emhttp/plugins/dynamix.vm.manager/VMMachines.page b/emhttp/plugins/dynamix.vm.manager/VMMachines.page
index acdee1332..0a145c53b 100644
--- a/emhttp/plugins/dynamix.vm.manager/VMMachines.page
+++ b/emhttp/plugins/dynamix.vm.manager/VMMachines.page
@@ -6,8 +6,8 @@ Markdown="false"
---
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
$cpus = cpu_list();
@@ -146,14 +146,10 @@ function getisoimageboth(uuid,dev,bus,file,dev2,bus2,file2){
var box = $("#dialogWindow");
box.html($("#templateISOboth").html());
box.find('#target').attr('value',file).fileTreeAttach(null,null,function(path){
- var bits = path.substr(1).split('/');
- var auto = bits.length>3 ? '' : share;
- box.find('#target').val(path+auto).change();
+ box.find('#target').val(path).change();
});
box.find('#target2').attr('value',file2).fileTreeAttach(null,null,function(path){
- var bits = path.substr(1).split('/');
- var auto = bits.length>3 ? '' : share;
- box.find('#target2').val(path+auto).change();
+ box.find('#target2').val(path).change();
});
box.dialog({
title: "_(Select ISOs for CDROMs)_",
@@ -183,9 +179,7 @@ function getisoimage(uuid,dev,bus,file){
var box = $("#dialogWindow");
box.html($("#templateISO").html());
box.find('#target').attr('value',file).fileTreeAttach(null,null,function(path){
- var bits = path.substr(1).split('/');
- var auto = bits.length>3 ? '' : share;
- box.find('#target').val(path+auto).change();
+ box.find('#target').val(path).change();
});
box.dialog({
title: "_(Select ISO)_",
@@ -217,6 +211,7 @@ function VMClone(uuid, name){
document.getElementById("Overwrite").checked = true;
box.dialog({
title: "_(VM Clone)_",
+ height: 'auto',
width: 600,
resizable: false,
modal: true,
@@ -263,6 +258,7 @@ function selectsnapshot(uuid, name ,snaps, opt, getlist,state){
document.getElementById("targetsnapfspc").checked = true;
box.dialog({
title: optiontext,
+ height: 'auto',
width: 600,
resizable: false,
modal: true,
@@ -335,6 +331,7 @@ function selectblock(uuid, name, snaps, opt, getlist, state){
}
box.dialog({
title: optiontext,
+ height: 'auto',
width: 600,
resizable: false,
modal: true,
diff --git a/emhttp/plugins/dynamix.vm.manager/VMTemplates.page b/emhttp/plugins/dynamix.vm.manager/VMTemplates.page
index 96b2d3819..c9d610bac 100644
--- a/emhttp/plugins/dynamix.vm.manager/VMTemplates.page
+++ b/emhttp/plugins/dynamix.vm.manager/VMTemplates.page
@@ -5,7 +5,8 @@ Markdown="false"
---
- $docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+ $docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
foreach($arrAllTemplates as $strName => $arrTemplate):
diff --git a/emhttp/plugins/dynamix.vm.manager/include/Fedora-virtio-isos.php b/emhttp/plugins/dynamix.vm.manager/include/Fedora-virtio-isos.php
index 7aaddf74d..cf53cb6ed 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/Fedora-virtio-isos.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/Fedora-virtio-isos.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+require_once "$docroot/plugins/dynamix/include/Helpers.php";
+require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
+
// add translations
$_SERVER['REQUEST_URI'] = 'vms';
require_once "$docroot/webGui/include/Translations.php";
-require_once "$docroot/plugins/dynamix/include/Helpers.php";
-require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
-
// get Fedora download archive
$fedora = '/var/tmp/fedora-virtio-isos';
$archive = 'https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio';
diff --git a/emhttp/plugins/dynamix.vm.manager/include/VMMachines.php b/emhttp/plugins/dynamix.vm.manager/include/VMMachines.php
index 1e4fea84c..ca365da83 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/VMMachines.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/VMMachines.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+require_once "$docroot/webGui/include/Helpers.php";
+require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
// add translations
$_SERVER['REQUEST_URI'] = 'vms';
require_once "$docroot/webGui/include/Translations.php";
-require_once "$docroot/webGui/include/Helpers.php";
-require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
$user_prefs = '/boot/config/plugins/dynamix.vm.manager/userprefs.cfg';
if (file_exists('/boot/config/plugins/dynamix.vm.manager/vmpreview')) $vmpreview = true ; else $vmpreview = false ;
@@ -28,7 +28,7 @@ if (empty($vms)) {
return;
}
if (file_exists($user_prefs)) {
- $prefs = @parse_ini_file($user_prefs) ?: [];
+ $prefs = (array)@parse_ini_file($user_prefs);
$sort = [];
foreach ($vms as $vm) $sort[] = array_search($vm,$prefs);
array_multisort($sort,SORT_NUMERIC,$vms);
@@ -185,7 +185,7 @@ foreach ($vms as $vm) {
$changemedia = "getisoimageboth(\"{$uuid}\",\"hda\",\"{$cdbus}\",\"{$cdfile}\",\"hdb\",\"{$cdbus2}\",\"{$cdfile2}\")";
$title = _('Select ISO image');
- $cdstr = $cdromcount." / 2";
+ $cdstr = $cdromcount." / 2";
echo "
";
echo "$image$vm "._($status)." $snapshotstcount | ";
echo "$desc | ";
@@ -248,7 +248,7 @@ foreach ($vms as $vm) {
$title = _('Insert CD');
$changemedia = "changemedia(\"{$uuid}\",\"{$dev}\",\"{$bus}\",\"--select\")";
$disk = _("No CD image inserted in to drive");
- echo "
| $disk | | $bus | $capacity | $allocation | $boot |
";
+ echo "| $disk | | $bus | $capacity | $allocation | $boot |
";
}
}
echo "";
diff --git a/emhttp/plugins/dynamix.vm.manager/include/VMManager.php b/emhttp/plugins/dynamix.vm.manager/include/VMManager.php
index a56278de2..435e537f2 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/VMManager.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/VMManager.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
$user_prefs = '/boot/config/plugins/dynamix.vm.manager/userprefs.cfg';
diff --git a/emhttp/plugins/dynamix.vm.manager/include/VMajax.php b/emhttp/plugins/dynamix.vm.manager/include/VMajax.php
index ed28dffe0..6ef653bad 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/VMajax.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/VMajax.php
@@ -1,7 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+require_once "$docroot/webGui/include/Helpers.php";
+require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
// add translations
$_SERVER['REQUEST_URI'] = 'vms';
require_once "$docroot/webGui/include/Translations.php";
-require_once "$docroot/webGui/include/Helpers.php";
-require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
function requireLibvirt() {
global $lv;
diff --git a/emhttp/plugins/dynamix.vm.manager/include/VMedit.php b/emhttp/plugins/dynamix.vm.manager/include/VMedit.php
index fbf2a5d8b..410fc53de 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/VMedit.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/VMedit.php
@@ -1,6 +1,7 @@
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+require_once "$docroot/webGui/include/Helpers.php";
+require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
+
// add translations
if (substr($_SERVER['REQUEST_URI'],0,4) != '/VMs') {
$_SERVER['REQUEST_URI'] = 'vms';
require_once "$docroot/webGui/include/Translations.php";
}
-require_once "$docroot/webGui/include/Helpers.php";
-require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
switch ($display['theme']) {
case 'gray' : $bgcolor = '#121510'; $border = '#606e7f'; $top = -44; break;
diff --git a/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php b/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php
index 337dd1480..d70c25445 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php
@@ -1,7 +1,7 @@
saveXML();
- */
+**/
+
class Array2XML {
private static $xml = null;
private static $encoding = 'UTF-8';
@@ -160,8 +161,7 @@ private static $encoding = 'UTF-8';
}
}
-
- $docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+ $docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt.php";
require_once "$docroot/webGui/include/Custom.php";
@@ -756,13 +756,13 @@ private static $encoding = 'UTF-8';
$arrWhitelistGPUClassIDregex = '/^(0001|03)/';
$arrWhitelistAudioClassIDregex = '/^(0403)/';
- # "System peripheral [0880]" "Global unichip corp. [1ac1]" "Coral Edge Tpu [089a]" -pff "Global unichip corp. [1ac1]" "Coral Edge Tpu [089a]"
+ # "System peripheral [0880]" "Global unichip corp. [1ac1]" "Coral Edge Tpu [089a]" -pff "Global unichip corp. [1ac1]" "Coral Edge Tpu [089a]"
# typeid productid
# file is csv typeid:productid
#
if (is_file("/boot/config/VMPCIOverride.cfg")) {
$arrWhiteListOverride = str_getcsv(file_get_contents("/boot/config/VMPCIOverride.cfg")) ;
- }
+ }
$arrWhiteListOverride[] = "0880:089a" ;
$arrValidPCIDevices = [];
@@ -1498,7 +1498,7 @@ private static $encoding = 'UTF-8';
*/
$uuid = $lv->domain_get_uuid($clone) ;
write("addLog\0".htmlspecialchars(_("Checking if clone exists")));
- if ($uuid) { $arrResponse = ['error' => _("Clone VM name already inuse")]; return false ;}
+ if ($uuid) { $arrResponse = ['error' => _("Clone VM name already inuse")]; return false ;}
#VM must be shutdown.
$res = $lv->get_domain_by_name($vm);
$dom = $lv->domain_get_info($res);
@@ -1518,18 +1518,18 @@ private static $encoding = 'UTF-8';
$pathinfo = pathinfo($file) ;
$capacity = $capacity + $disk["capacity"] ;
}
-
+
#Check free space.
write("addLog\0".htmlspecialchars("Checking for free space"));
$dirfree = disk_free_space($pathinfo["dirname"]) ;
- $sourcedir = trim(shell_exec("getfattr --absolute-names --only-values -n system.LOCATION ".escapeshellarg($pathinfo["dirname"])." 2>/dev/null"));
+ $sourcedir = trim(shell_exec("getfattr --absolute-names --only-values -n system.LOCATION ".escapeshellarg($pathinfo["dirname"])." 2>/dev/null"));
$repdir = str_replace('/mnt/user/', "/mnt/$sourcedir/", $pathinfo["dirname"]);
$repdirfree = disk_free_space($repdir) ;
$reflink = true ;
$capacity *= 1 ;
if ($free == "yes" && $repdirfree < $capacity) { $reflink = false ;}
- if ($free == "yes" && $dirfree < $capacity) { write("addLog\0".htmlspecialchars(_("Insufficent storage for clone"))); return false ;}
+ if ($free == "yes" && $dirfree < $capacity) { write("addLog\0".htmlspecialchars(_("Insufficent storage for clone"))); return false ;}
#Clone XML
$uuid = $lv->domain_get_uuid($vm) ;
@@ -1567,17 +1567,17 @@ private static $encoding = 'UTF-8';
chgrp($clonedir, 'users');
}
write("addLog\0".htmlspecialchars("Checking for image files"));
- if ($file_exists && $overwrite != "yes") { write("addLog\0".htmlspecialchars(_("New image file names exist and Overwrite is not allowed"))); return( false) ; }
+ if ($file_exists && $overwrite != "yes") { write("addLog\0".htmlspecialchars(_("New image file names exist and Overwrite is not allowed"))); return( false) ; }
#Create duplicate files.
foreach($file_clone as $diskid => $disk) {
$target = $disk['target'] ;
- $source = $disk['source'] ;
- if ($target == $source) { write("addLog\0".htmlspecialchars(_("New image file is same as old"))); return( false) ; }
- $sourcerealdisk = trim(shell_exec("getfattr --absolute-names --only-values -n system.LOCATION ".escapeshellarg($source)." 2>/dev/null"));
+ $source = $disk['source'] ;
+ if ($target == $source) { write("addLog\0".htmlspecialchars(_("New image file is same as old"))); return( false) ; }
+ $sourcerealdisk = trim(shell_exec("getfattr --absolute-names --only-values -n system.LOCATION ".escapeshellarg($source)." 2>/dev/null"));
$reptgt = str_replace('/mnt/user/', "/mnt/$sourcerealdisk/", $target);
$repsrc = str_replace('/mnt/user/', "/mnt/$sourcerealdisk/", $source);
-
+
$cmdstr = "cp --reflink=always '$repsrc' '$reptgt'" ;
if ($reflink == true) { $refcmd = $cmdstr ; } else {$refcmd = false; }
$cmdstr = "rsync -ahPIXS --out-format=%f --info=flist0,misc0,stats0,name1,progress2 '$source' '$target'" ;
@@ -1592,23 +1592,23 @@ private static $encoding = 'UTF-8';
file_put_contents("/tmp/clonexml" ,$xml) ;
$rtn = $lv->domain_define($xml) ;
return($rtn) ;
-
+
}
-
+
function compare_creationtime($a, $b) {
return strnatcmp($a['creationtime'], $b['creationtime']);
- }
+ }
function compare_creationtimelt($a, $b) {
return $a['creationtime'] < $b['creationtime'];
- }
+ }
function getvmsnapshots($vm) {
$snaps=array() ;
$dbpath = "/etc/libvirt/qemu/snapshot/$vm" ;
$snaps_json = file_get_contents($dbpath."/snapshots.db") ;
- $snaps = json_decode($snaps_json,true) ;
+ $snaps = json_decode($snaps_json,true) ;
if (is_array($snaps)) uasort($snaps,'compare_creationtime') ;
return $snaps ;
}
@@ -1618,7 +1618,7 @@ private static $encoding = 'UTF-8';
$dbpath = "/etc/libvirt/qemu/snapshot/$vm" ;
if (!is_dir($dbpath)) mkdir($dbpath) ;
$snaps_json = file_get_contents($dbpath."/snapshots.db") ;
- $snaps = json_decode($snaps_json,true) ;
+ $snaps = json_decode($snaps_json,true) ;
$snapshot_res=$lv->domain_snapshot_lookup_by_name($vm,$name) ;
$snapshot_xml=$lv->domain_snapshot_get_xml($snapshot_res) ;
$a = simplexml_load_string($snapshot_xml) ;
@@ -1639,10 +1639,10 @@ private static $encoding = 'UTF-8';
exec("qemu-img info --backing-chain -U '$file' | grep image:",$output) ;
foreach($output as $key => $line) {
$line=str_replace("image: ","",$line) ;
- $output[$key] = $line ;
+ $output[$key] = $line ;
}
- $snaps[$vmsnap]['backing'][$disk["device"]] = $output ;
+ $snaps[$vmsnap]['backing'][$disk["device"]] = $output ;
$rev = "r".$disk["device"] ;
$reversed = array_reverse($output) ;
$snaps[$vmsnap]['backing'][$rev] = $reversed ;
@@ -1655,7 +1655,7 @@ private static $encoding = 'UTF-8';
if (array_key_exists(0 , $b["disks"]["disk"])) $snaps[$vmsnap]["disks"]= $b["disks"]["disk"]; else $snaps[$vmsnap]["disks"][0]= $b["disks"]["disk"];
-
+
$value = json_encode($snaps,JSON_PRETTY_PRINT) ;
file_put_contents($dbpath."/snapshots.db",$value) ;
}
@@ -1665,7 +1665,7 @@ private static $encoding = 'UTF-8';
$dbpath = "/etc/libvirt/qemu/snapshot/$vm" ;
if (!is_dir($dbpath)) mkdir($dbpath) ;
$snaps_json = file_get_contents($dbpath."/snapshots.db") ;
- $snaps = json_decode($snaps_json,true) ;
+ $snaps = json_decode($snaps_json,true) ;
foreach($snaps as $vmsnap=>$snap)
$disks =$lv->get_disk_stats($vm) ;
@@ -1675,10 +1675,10 @@ private static $encoding = 'UTF-8';
exec("qemu-img info --backing-chain -U '$file' | grep image:",$output) ;
foreach($output as $key => $line) {
$line=str_replace("image: ","",$line) ;
- $output[$key] = $line ;
+ $output[$key] = $line ;
}
-
- $snaps[$vmsnap]['backing'][$disk["device"]] = $output ;
+
+ $snaps[$vmsnap]['backing'][$disk["device"]] = $output ;
$rev = "r".$disk["device"] ;
$reversed = array_reverse($output) ;
$snaps[$vmsnap]['backing'][$rev] = $reversed ;
@@ -1688,7 +1688,7 @@ private static $encoding = 'UTF-8';
$snaps[$vmsnap]["parent"]= $parendfileinfo["extension"];
$snaps[$vmsnap]["parent"] = str_replace("qcow2",'',$snaps[$vmsnap]["parent"]) ;
if (isset($parentfind[1]) && !isset($parentfind[2])) $snaps[$vmsnap]["parent"]="Base" ;
-
+
$value = json_encode($snaps,JSON_PRETTY_PRINT) ;
$res = $lv->get_domain_by_name($vm);
#if (!empty($lv->domain_get_ovmf($res))) $nvram = $lv->nvram_create_snapshot($lv->domain_get_uuid($vm),$name) ;
@@ -1697,12 +1697,12 @@ private static $encoding = 'UTF-8';
#Remove any NVRAMs that are no longer valid.
# Get uuid
$vmuuid = $lv->domain_get_uuid($vm) ;
- #Get list of files
- #$filepath = "/etc/libvirt/qemu/nvram/'.$uuid*" ; #$snapshotname"
- $filepath = "/etc/libvirt/qemu/nvram/$vmuuid*" ; #$snapshotname"
+ #Get list of files
+ #$filepath = "/etc/libvirt/qemu/nvram/'.$uuid*" ; #$snapshotname"
+ $filepath = "/etc/libvirt/qemu/nvram/$vmuuid*" ; #$snapshotname"
$nvram_files=glob($filepath) ;
foreach($nvram_files as $key => $nvram_file) {
- if ($nvram_file == "/etc/libvirt/qemu/nvram/$vmuuid"."_VARS-pure-efi.fd" || $nvram_file == "/etc/libvirt/qemu/nvram/$vmuuid"."_VARS-pure-efi-tpm.fd" ) unset($nvram_files[$key]) ;
+ if ($nvram_file == "/etc/libvirt/qemu/nvram/$vmuuid"."_VARS-pure-efi.fd" || $nvram_file == "/etc/libvirt/qemu/nvram/$vmuuid"."_VARS-pure-efi-tpm.fd" ) unset($nvram_files[$key]) ;
foreach ($snaps as $snapshotname => $snap) {
$tpmfilename = "/etc/libvirt/qemu/nvram/".$vmuuid.$snapshotname."_VARS-pure-efi-tpm.fd" ;
$nontpmfilename = "/etc/libvirt/qemu/nvram/".$vmuuid.$snapshotname."_VARS-pure-efi.fd" ;
@@ -1712,7 +1712,7 @@ private static $encoding = 'UTF-8';
}
foreach ($nvram_files as $nvram_file) unlink($nvram_file) ;
-
+
file_put_contents($dbpath."/snapshots.db",$value) ;
}
@@ -1720,7 +1720,7 @@ private static $encoding = 'UTF-8';
global $lv ;
$dbpath = "/etc/libvirt/qemu/snapshot/$vm" ;
$snaps_json = file_get_contents($dbpath."/snapshots.db") ;
- $snaps = json_decode($snaps_json,true) ;
+ $snaps = json_decode($snaps_json,true) ;
unset($snaps[$name]) ;
$value = json_encode($snaps,JSON_PRETTY_PRINT) ;
file_put_contents($dbpath."/snapshots.db",$value) ;
@@ -1730,19 +1730,19 @@ private static $encoding = 'UTF-8';
function vm_snapshot($vm,$snapshotname, $snapshotdesc, $free = "yes", $memorysnap = "yes") {
global $lv ;
-
+
#Get State
$res = $lv->get_domain_by_name($vm);
$dom = $lv->domain_get_info($res);
$state = $lv->domain_state_translate($dom['state']);
-
- #Get disks for --diskspec
+
+ #Get disks for --diskspec
$disks =$lv->get_disk_stats($vm) ;
$diskspec = "" ;
$capacity = 0 ;
if ($snapshotname == "--generate") $name= "S" . date("YmdHis") ; else $name=$snapshotname ;
if ($snapshotdesc != "") $snapshotdesc = " --description '$snapshotdesc'" ;
-
+
foreach($disks as $disk) {
$file = $disk["file"] ;
$pathinfo = pathinfo($file) ;
@@ -1754,38 +1754,38 @@ private static $encoding = 'UTF-8';
#get memory
$mem = $lv->domain_get_memory_stats($vm) ;
$memory = $mem[6] ;
-
+
if ($memorysnap = "yes") $memspec = ' --memspec "'.$pathinfo["dirname"].'/memory'.$name.'.mem",snapshot=external' ; else $memspec = "" ;
$cmdstr = "virsh snapshot-create-as '$vm' --name '$name' $snapshotdesc --atomic" ;
-
-
+
+
if ($state == "running") {
$cmdstr .= " --live ".$memspec.$diskspec ;
$capacity = $capacity + $memory ;
-
+
} else {
- $cmdstr .= " --disk-only ".$diskspec ;
+ $cmdstr .= " --disk-only ".$diskspec ;
}
-
+
#Check free space.
$dirfree = disk_free_space($pathinfo["dirname"]) ;
-
+
$capacity *= 1 ;
-
- if ($free == "yes" && $dirfree < $capacity) { $arrResponse = ['error' => _("Insufficent Storage for Snapshot")]; return $arrResponse ;}
-
+
+ if ($free == "yes" && $dirfree < $capacity) { $arrResponse = ['error' => _("Insufficent Storage for Snapshot")]; return $arrResponse ;}
+
#Copy nvram
if (!empty($lv->domain_get_ovmf($res))) $nvram = $lv->nvram_create_snapshot($lv->domain_get_uuid($vm),$name) ;
$xmlfile = $pathinfo["dirname"]."/".$name.".running" ;
file_put_contents("/tmp/xmltst", "$xmlfile" ) ;
if ($state == "running") exec("virsh dumpxml '$vm' > ".escapeshellarg($xmlfile),$outxml,$rtnxml) ;
-
+
$output= [] ;
$test = false ;
if ($test) exec($cmdstr." --print-xml 2>&1",$output,$return) ; else exec($cmdstr." 2>&1",$output,$return) ;
- if (strpos(" ".$output[0],"error") ) {
+ if (strpos(" ".$output[0],"error") ) {
$arrResponse = ['error' => substr($output[0],6) ] ;
} else {
$arrResponse = ['success' => true] ;
@@ -1803,8 +1803,8 @@ private static $encoding = 'UTF-8';
$disks =$lv->get_disk_stats($vm) ;
switch ($snapslist[$snap]['state']) {
- case "shutoff":
- case "running":
+ case "shutoff":
+ case "running":
#VM must be shutdown.
$res = $lv->get_domain_by_name($vm);
$dom = $lv->domain_get_info($res);
@@ -1817,7 +1817,7 @@ private static $encoding = 'UTF-8';
$xmlobj = custom::createArray('domain',$strXML) ;
# Process disks and update path.
- $disks=($snapslist[$snap]['disks']) ;
+ $disks=($snapslist[$snap]['disks']) ;
foreach ($disks as $disk) {
$diskname = $disk["@attributes"]["name"] ;
if ($diskname == "hda" || $diskname == "hdb") continue ;
@@ -1859,7 +1859,7 @@ private static $encoding = 'UTF-8';
$item++ ;
}
}
-
+
uasort($snapslist,'compare_creationtimelt') ;
foreach($snapslist as $s) {
$name = $s['name'] ;
@@ -1877,13 +1877,13 @@ private static $encoding = 'UTF-8';
# Restore Memory.
$makerun = true ;
- if ($makerun == true) exec("virsh restore ".escapeshellarg($memoryfile)) ;
- #exec("virsh restore $memoryfile") ;
- }
+ if ($makerun == true) exec("virsh restore ".escapeshellarg($memoryfile)) ;
+ #exec("virsh restore $memoryfile") ;
+ }
#Delete Metadata only.
- if ($actionmeta == "yes") {
+ if ($actionmeta == "yes") {
$ret = delete_snapshots_database("$vm","$name") ;
- }
+ }
if (is_file($memoryfile) && $action == "yes") unlink($memoryfile) ;
if (is_file($xmlfile) && $action == "yes") unlink($xmlfile) ;
if ($s['name'] == $snap) break ;
@@ -1891,11 +1891,11 @@ private static $encoding = 'UTF-8';
#if VM was started restart.
if ($state == 'running' && $snapslist[$snap]['state'] != "running") {
$arrResponse = $lv->domain_start($vm) ;
- }
-
+ }
+
if (!empty($lv->domain_get_ovmf($res))) $nvram = $lv->nvram_revert_snapshot($lv->domain_get_uuid($vm),$name) ;
break ;
-
+
}
$arrResponse = ['success' => true] ;
return($arrResponse) ;
@@ -1914,9 +1914,9 @@ private static $encoding = 'UTF-8';
exec("qemu-img info --backing-chain -U '$file' | grep image:",$output) ;
foreach($output as $key => $line) {
$line=str_replace("image: ","",$line) ;
- $output[$key] = $line ;
+ $output[$key] = $line ;
}
- $snaps[$vm][$disk["device"]] = $output ;
+ $snaps[$vm][$disk["device"]] = $output ;
$rev = "r".$disk["device"] ;
$reversed = array_reverse($output) ;
$snaps[$vm][$rev] = $reversed ;
@@ -1927,7 +1927,7 @@ private static $encoding = 'UTF-8';
}
$snapdisks= $snapslist[$snap]['disks'] ;
-
+
foreach ($snapdisks as $diskkey => $snapdisk) {
$diskname = $snapdisk["@attributes"]["name"] ;
if ($diskname == "hda" || $diskname == "hdb") continue ;
@@ -1940,7 +1940,7 @@ private static $encoding = 'UTF-8';
{
if (!isset($snaps[$vm]["r".$diskname][$item])) break ;
$newpath = $snaps[$vm]["r".$diskname][$item] ;
- if (is_file($path)) $data .= "$newpath
" ;
+ if (is_file($path)) $data .= "$newpath
" ;
$item++ ;
}
@@ -1958,7 +1958,7 @@ private static $encoding = 'UTF-8';
}
return($data) ;
}
-
+
function vm_snapremove($vm, $snap) {
global $lv ;
@@ -1973,10 +1973,10 @@ private static $encoding = 'UTF-8';
exec("qemu-img info --backing-chain -U $file | grep image:",$output) ;
foreach($output as $key => $line) {
$line=str_replace("image: ","",$line) ;
- $output[$key] = $line ;
+ $output[$key] = $line ;
}
- $snaps[$vm][$disk["device"]] = $output ;
+ $snaps[$vm][$disk["device"]] = $output ;
$rev = "r".$disk["device"] ;
$reversed = array_reverse($output) ;
$snaps[$vm][$rev] = $reversed ;
@@ -1988,7 +1988,7 @@ private static $encoding = 'UTF-8';
$xmlobj = custom::createArray('domain',$strXML) ;
# Process disks.
- $disks=($snapslist[$snap]['disks']) ;
+ $disks=($snapslist[$snap]['disks']) ;
foreach ($disks as $disk) {
$diskname = $disk["@attributes"]["name"] ;
if ($diskname == "hda" || $diskname == "hdb") continue ;
@@ -1999,30 +1999,30 @@ private static $encoding = 'UTF-8';
return ($data) ;
}
}
-
+
$disks=($snapslist[$snap]['disks']) ;
foreach ($disks as $disk) {
$diskname = $disk["@attributes"]["name"] ;
if ($diskname == "hda" || $diskname == "hdb") continue ;
$path = $disk["source"]["@attributes"]["file"] ;
if (is_file($path)) {
- if(!unlink("$path")) {
+ if(!unlink("$path")) {
$data = ["error" => "Unable to remove image file $path"] ;
return ($data) ;
- }
+ }
}
}
- # Delete NVRAM
+ # Delete NVRAM
if (!empty($lv->domain_get_ovmf($res))) $nvram = $lv->nvram_delete_snapshot($lv->domain_get_uuid($vm),$snap) ;
$ret = delete_snapshots_database("$vm","$snap") ;
-
+
if(!$ret)
$data = ["error" => "Unable to remove snap metadata $snap"] ;
else
$data = ["success => 'true"] ;
-
+
return($data) ;
}
@@ -2059,7 +2059,7 @@ OPTIONS
blockcommit Debian --path /mnt/user/domains/Debian/vdisk1.S20230513120410qcow2 --verbose --pivot --delete
*/
# Error if VM Not running.
-
+
$snapslist= getvmsnapshots($vm) ;
$disks =$lv->get_disk_stats($vm) ;
@@ -2069,7 +2069,7 @@ OPTIONS
if ($pivot == "yes") $cmdstr .= " --pivot " ;
if ($action == "yes") $cmdstr .= " --delete " ;
# Process disks and update path.
- $snapdisks=($snapslist[$snap]['disks']) ;
+ $snapdisks=($snapslist[$snap]['disks']) ;
if ($base != "--base" && $base != "") {
#get file name from snapshot.
$snapdisks=($snapslist[$base]['disks']) ;
@@ -2094,15 +2094,15 @@ OPTIONS
}
$error = execCommand_nchan($cmdstr,$path) ;
- if (!$error) {
+ if (!$error) {
$arrResponse = ['error' => "Process Failed"] ;
return($arrResponse) ;
} else {
$arrResponse = ['success' => true] ;
}
-
+
}
- # Delete NVRAM
+ # Delete NVRAM
#if (!empty($lv->domain_get_ovmf($res))) $nvram = $lv->nvram_delete_snapshot($lv->domain_get_uuid($vm),$snap) ;
refresh_snapshots_database($vm) ;
@@ -2149,9 +2149,9 @@ OPTIONS
exec("qemu-img info --backing-chain -U '$file' | grep image:",$output) ;
foreach($output as $key => $line) {
$line=str_replace("image: ","",$line) ;
- $output[$key] = $line ;
+ $output[$key] = $line ;
}
- $snaps[$vm][$disk["device"]] = $output ;
+ $snaps[$vm][$disk["device"]] = $output ;
$rev = "r".$disk["device"] ;
$reversed = array_reverse($output) ;
$snaps[$vm][$rev] = $reversed ;
@@ -2166,7 +2166,7 @@ OPTIONS
$cmdstr = "virsh blockpull '$vm' --path '$path' --verbose --pivot --delete" ;
$cmdstr = "virsh blockpull '$vm' --path '$path' --verbose --wait " ;
# Process disks and update path.
- $snapdisks=($snapslist[$snap]['disks']) ;
+ $snapdisks=($snapslist[$snap]['disks']) ;
if ($base != "--base" && $base != "") {
#get file name from snapshot.
$snapdisks=($snapslist[$base]['disks']) ;
@@ -2183,8 +2183,8 @@ OPTIONS
$error = execCommand_nchan($cmdstr,$path) ;
-
- if (!$error) {
+
+ if (!$error) {
$arrResponse = ['error' => "Process Failed" ] ;
return($arrResponse) ;
} else {
@@ -2195,7 +2195,7 @@ OPTIONS
}
refresh_snapshots_database($vm) ;
- $ret = $ret = delete_snapshots_database("$vm","$snap") ;
+ $ret = $ret = delete_snapshots_database("$vm","$snap") ;
if($ret)
$data = ["error" => "Unable to remove snap metadata $snap"] ;
else
@@ -2241,6 +2241,6 @@ OPTIONS
*/
}
-
+
?>
diff --git a/emhttp/plugins/dynamix.vm.manager/scripts/VMAjaxCall.php b/emhttp/plugins/dynamix.vm.manager/scripts/VMAjaxCall.php
index 73c4fef67..a5659426d 100755
--- a/emhttp/plugins/dynamix.vm.manager/scripts/VMAjaxCall.php
+++ b/emhttp/plugins/dynamix.vm.manager/scripts/VMAjaxCall.php
@@ -1,6 +1,7 @@
#!/usr/bin/php -q
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
+require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
+require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
// add translations
$_SERVER['REQUEST_URI'] = '';
$login_locale = _var($display,'locale');
-require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
require_once "$docroot/webGui/include/Translations.php";
-require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
+
function write(...$messages){
- $com = curl_init();
- curl_setopt_array($com,[
- CURLOPT_URL => 'http://localhost/pub/vmaction?buffer_length=1',
- CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
- CURLOPT_POST => 1,
- CURLOPT_RETURNTRANSFER => true
- ]);
- foreach ($messages as $message) {
- curl_setopt($com, CURLOPT_POSTFIELDS, $message);
- curl_exec($com);
- }
- curl_close($com);
+ $com = curl_init();
+ curl_setopt_array($com,[
+ CURLOPT_URL => 'http://localhost/pub/vmaction?buffer_length=1',
+ CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
+ CURLOPT_POST => 1,
+ CURLOPT_RETURNTRANSFER => true
+ ]);
+ foreach ($messages as $message) {
+ curl_setopt($com, CURLOPT_POSTFIELDS, $message);
+ curl_exec($com);
+ }
+ curl_close($com);
}
function execCommand_nchan($command,$idx) {
- $waitID = mt_rand();
- [$cmd,$args] = explode(' ',$command,2);
- write("","addLog\0","show_Wait\0$waitID");
- write("addLog\0
") ;
- #write("addToID\0$idx\0 $action") ;
- $proc = popen("$command 2>&1",'r');
- while ($out = fgets($proc)) {
- $out = preg_replace("%[\t\n\x0B\f\r]+%", '',$out);
- if (substr($out,0,1) == "B") { ;
- write("progress\0$idx\0".htmlspecialchars(substr($out,strrpos($out,"Block Pull")))) ;
- } else echo write("addToID\0$idx\0 ".htmlspecialchars($out));
- }
- $retval = pclose($proc);
- $out = $retval ? _('The command failed').'.' : _('The command finished successfully').'!';
- write("stop_Wait\0$waitID","addLog\0
$out");
- return $retval===0;
+ $waitID = mt_rand();
+ [$cmd,$args] = explode(' ',$command,2);
+ write("","addLog\0","show_Wait\0$waitID");
+ write("addLog\0
") ;
+ #write("addToID\0$idx\0 $action") ;
+ $proc = popen("$command 2>&1",'r');
+ while ($out = fgets($proc)) {
+ $out = preg_replace("%[\t\n\x0B\f\r]+%", '',$out);
+ if (substr($out,0,1) == "B") { ;
+ write("progress\0$idx\0".htmlspecialchars(substr($out,strrpos($out,"Block Pull")))) ;
+ } else echo write("addToID\0$idx\0 ".htmlspecialchars($out));
+ }
+ $retval = pclose($proc);
+ $out = $retval ? _('The command failed').'.' : _('The command finished successfully').'!';
+ write("stop_Wait\0$waitID","addLog\0
$out");
+ return $retval===0;
}
#{action:"snap-", uuid:uuid , snapshotname:target , remove:remove, free:free ,removemeta:removemeta ,keep:keep, desc:desc}
@@ -65,10 +66,10 @@ $style[] = "legend{font-size:1.1rem!important;font-weight:bold}";
$style[] = "";
foreach (explode('&', $url) as $chunk) {
- $param = explode("=", $chunk);
- if ($param) {
- ${urldecode($param[0])} = urldecode($param[1]) ;
- }
+ $param = explode("=", $chunk);
+ if ($param) {
+ ${urldecode($param[0])} = urldecode($param[1]) ;
+ }
}
$id = 1 ;
write(implode($style)."");
@@ -78,24 +79,23 @@ write("addLog\0".htmlspecialchars("VMName $name "));
write("addLog\0".htmlspecialchars("SNAP $snapshotname "));
write("addLog\0".htmlspecialchars("Base $targetbase "));
if ($action == "commit") {
- write("addLog\0".htmlspecialchars("Top $targettop "));
- write("addLog\0".htmlspecialchars("Pivot $targetpivot "));
- write("addLog\0".htmlspecialchars("Delete $targetdelete "));
+ write("addLog\0".htmlspecialchars("Top $targettop "));
+ write("addLog\0".htmlspecialchars("Pivot $targetpivot "));
+ write("addLog\0".htmlspecialchars("Delete $targetdelete "));
}
switch ($action) {
- case "commit":
- vm_blockcommit($name,$snapshotname,$path,$targetbase,$targettop,$targetpivot,$targetdelete) ;
- break ;
- case "copy":
- vm_blockcopy($name,$snapshotname,$path,$targetbase,$targettop,$pivot,' ') ;
- break;
- case "pull":
- vm_blockpull($name,$snapshotname,$path,$targetbase,$targettop,$pivot,' ') ;
- break ;
-
- }
+case "commit":
+ vm_blockcommit($name,$snapshotname,$path,$targetbase,$targettop,$targetpivot,$targetdelete) ;
+ break ;
+case "copy":
+ vm_blockcopy($name,$snapshotname,$path,$targetbase,$targettop,$pivot,' ') ;
+ break;
+case "pull":
+ vm_blockpull($name,$snapshotname,$path,$targetbase,$targettop,$pivot,' ') ;
+ break ;
+}
#execCommand_nchan("ls /") ;
write("stop_Wait\0$waitID") ;
write('_DONE_','');
-?>
\ No newline at end of file
+?>
diff --git a/emhttp/plugins/dynamix.vm.manager/scripts/VMClone.php b/emhttp/plugins/dynamix.vm.manager/scripts/VMClone.php
index 2c33227f7..2cdd7a319 100755
--- a/emhttp/plugins/dynamix.vm.manager/scripts/VMClone.php
+++ b/emhttp/plugins/dynamix.vm.manager/scripts/VMClone.php
@@ -1,6 +1,7 @@
#!/usr/bin/php -q
-$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
-
-require_once "$docroot/webGui/include/Wrappers.php";
+$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
+require_once "$docroot/webGui/include/Helpers.php";
+require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
+require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
// add translations
$_SERVER['REQUEST_URI'] = '';
$login_locale = _var($display,'locale');
-require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
require_once "$docroot/webGui/include/Translations.php";
-require_once "$docroot/plugins/dynamix.vm.manager/include/libvirt_helpers.php";
-require_once "$docroot/webGui/include/Helpers.php";
-function write(...$messages){
- $com = curl_init();
- curl_setopt_array($com,[
- CURLOPT_URL => 'http://localhost/pub/vmaction?buffer_length=1',
- CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
- CURLOPT_POST => 1,
- CURLOPT_RETURNTRANSFER => true
- ]);
- foreach ($messages as $message) {
- curl_setopt($com, CURLOPT_POSTFIELDS, $message);
- curl_exec($com);
- }
- curl_close($com);
- }
- function execCommand_nchan_clone($command,$idx,$refcmd=false) {
- $waitID = mt_rand();
- if ($refcmd) {
- [$cmd,$args] = explode(' ',$refcmd,2);
- write("","addLog\0","show_Wait\0$waitID");
- $rtn = exec("$refcmd 2>&1", $output,$return) ;
- if ($return == 0) $reflinkok = true ; else {
- $reflinkok = false ;
- write("addLog\0
{$output[0]}");
- }
- $out = $return ? _('The command failed revert to rsync')."." : _('The command finished successfully').'!';
- write("stop_Wait\0$waitID","addLog\0
$out");
- }
- if ($reflinkok) {
- return true ;
- } else {
- $waitID = mt_rand();
- [$cmd,$args] = explode(' ',$command,2);
- write("","addLog\0","show_Wait\0$waitID");
-
- write("addToID\0$idx\0Cloning VM: ") ;
- $proc = popen("$command 2>&1 &",'r');
- while ($out = fread($proc,100)) {
- $out = preg_replace("%[\t\n\x0B\f\r]+%", '',$out);
- $out = trim($out) ;
- $values = explode(' ',$out) ;
- $string = _("Data copied: ").$values[0].' '._(" Percentage: ").$values[1].' '._(" Transfer Rate: ").$values[2].' '._(" Time remaining: ").$values[4].$values[5] ;
- write("progress\0$idx\0".htmlspecialchars($string)) ;
- if ($out) $stringsave=$string ;
- }
- $retval = pclose($proc);
- write("progress\0$idx\0".htmlspecialchars($stringsave)) ;
- $out = $retval ? _('The command failed').'.' : _('The command finished successfully').'!';
- write("stop_Wait\0$waitID","addLog\0
$out");
- return $retval===0;
+function write(...$messages) {
+ $com = curl_init();
+ curl_setopt_array($com,[
+ CURLOPT_URL => 'http://localhost/pub/vmaction?buffer_length=1',
+ CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
+ CURLOPT_POST => 1,
+ CURLOPT_RETURNTRANSFER => true
+ ]);
+ foreach ($messages as $message) {
+ curl_setopt($com, CURLOPT_POSTFIELDS, $message);
+ curl_exec($com);
+ }
+ curl_close($com);
+}
+
+function execCommand_nchan_clone($command,$idx,$refcmd=false) {
+ $waitID = mt_rand();
+ if ($refcmd) {
+ [$cmd,$args] = explode(' ',$refcmd,2);
+ write("","addLog\0","show_Wait\0$waitID");
+ $rtn = exec("$refcmd 2>&1", $output,$return) ;
+ if ($return == 0) $reflinkok = true ; else {
+ $reflinkok = false ;
+ write("addLog\0
{$output[0]}");
+ }
+ $out = $return ? _('The command failed revert to rsync')."." : _('The command finished successfully').'!';
+ write("stop_Wait\0$waitID","addLog\0
$out");
+ }
+ if ($reflinkok) {
+ return true ;
+ } else {
+ $waitID = mt_rand();
+ [$cmd,$args] = explode(' ',$command,2);
+ write("","addLog\0","show_Wait\0$waitID");
+ write("addToID\0$idx\0Cloning VM: ") ;
+ $proc = popen("$command 2>&1 &",'r');
+ while ($out = fread($proc,100)) {
+ $out = preg_replace("%[\t\n\x0B\f\r]+%", '',$out);
+ $out = trim($out);
+ $values = explode(' ',$out);
+ $string = _("Data copied: ").$values[0].' '._(" Percentage: ").$values[1].' '._(" Transfer Rate: ").$values[2].' '._(" Time remaining: ").$values[4].$values[5];
+ write("progress\0$idx\0".htmlspecialchars($string));
+ if ($out) $stringsave=$string;
+ }
+ $retval = pclose($proc);
+ write("progress\0$idx\0".htmlspecialchars($stringsave));
+ $out = $retval ? _('The command failed').'.' : _('The command finished successfully').'!';
+ write("stop_Wait\0$waitID","addLog\0
$out");
+ return $retval===0;
}
}
@@ -86,10 +85,10 @@ $style[] = "legend{font-size:1.1rem!important;font-weight:bold}";
$style[] = "";
foreach (explode('&', $url) as $chunk) {
- $param = explode("=", $chunk);
- if ($param) {
- ${urldecode($param[0])} = urldecode($param[1]) ;
- }
+ $param = explode("=", $chunk);
+ if ($param) {
+ ${urldecode($param[0])} = urldecode($param[1]) ;
+ }
}
$id = 1 ;
write(implode($style)."");
@@ -99,10 +98,10 @@ write("","addLog\0