From 6effa94facff36d4dd19dc20a42e754cb9a11d68 Mon Sep 17 00:00:00 2001 From: Andrew Z Date: Sat, 21 Sep 2019 20:54:49 -0400 Subject: [PATCH 1/5] dockerMan: Redownload icon if url changesa --- .../include/CreateDocker.php | 21 ++++++++++++++++++- .../include/DockerClient.php | 6 +++--- .../include/DockerContainers.php | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php index 1ff118f8b..75777dc52 100644 --- a/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -85,6 +85,17 @@ if (isset($_POST['contName'])) { if (!is_dir($userTmplDir)) mkdir($userTmplDir, 0777, true); if ($Name) { $filename = sprintf('%s/my-%s.xml', $userTmplDir, $Name); + if ( is_file($filename) ) { + $oldXML = simplexml_load_file($filename); + if ($oldXML->Icon != $_POST['contIcon']) { + if (! strpos($Repository,":")) { + $Repository .= ":latest"; + } + $iconPath = $DockerTemplates->getIcon($Repository); + @unlink("$docroot/$iconPath"); + @unlink("{$dockerManPaths['images']}/".basename($iconPath)); + } + } file_put_contents($filename, $postXML); } // Run dry @@ -137,7 +148,15 @@ if (isset($_POST['contName'])) { } if ($startContainer) $cmd = str_replace('/docker create ', '/docker run -d ', $cmd); execCommand($cmd); - echo '

'; + if ( $newIcon ) { + if (! strpos($Repository,":")) { + $Repository .= ":latest"; + } + $iconPath = $DockerTemplates->getIcon($Repository); + @unlink("$docroot/$iconPath"); + @unlink("{$dockerManPaths['images']}/".basename($iconPath)); + } + echo '

'; goto END; } diff --git a/plugins/dynamix.docker.manager/include/DockerClient.php b/plugins/dynamix.docker.manager/include/DockerClient.php index 6de31fc64..cd37ff49a 100644 --- a/plugins/dynamix.docker.manager/include/DockerClient.php +++ b/plugins/dynamix.docker.manager/include/DockerClient.php @@ -23,7 +23,7 @@ $dockerManPaths = [ 'template-repos' => "/boot/config/plugins/dockerMan/template-repos", 'templates-user' => "/boot/config/plugins/dockerMan/templates-user", 'templates-usb' => "/boot/config/plugins/dockerMan/templates", - 'images-usb' => "/boot/config/plugins/dockerMan/images", + 'images' => "/var/lib/docker/unraid/images", 'user-prefs' => "/boot/config/plugins/dockerMan/userprefs.cfg", 'plugin' => "$docroot/plugins/dynamix.docker.manager", 'images-ram' => "$docroot/state/plugins/dynamix.docker.manager/images", @@ -305,7 +305,7 @@ class DockerTemplates { $name = preg_replace("%\/|\\\%", '-', $matches[1][0]); $version = $matches[2][0]; $iconRAM = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images-ram'], $name, $version, 'icon'); - $iconUSB = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images-usb'], $name, $version, 'icon'); + $iconUSB = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images'], $name, $version, 'icon'); if (!is_dir(dirname($iconRAM))) mkdir(dirname($iconRAM), 0755, true); if (!is_dir(dirname($iconUSB))) mkdir(dirname($iconUSB), 0755, true); if (!is_file($iconRAM)) { @@ -747,7 +747,7 @@ class DockerClient { if (isset($info[$name])) { if (isset($info[$name]['icon'])) { $iconRAM = $docroot.$info[$name]['icon']; - $iconUSB = str_replace($dockerManPaths['images-ram'], $dockerManPaths['images-usb'], $iconRAM); + $iconUSB = str_replace($dockerManPaths['images-ram'], $dockerManPaths['images'], $iconRAM); if ($cache>=1 && is_file($iconRAM)) unlink($iconRAM); if ($cache==2 && $code===true && is_file($iconUSB)) unlink($iconUSB); } diff --git a/plugins/dynamix.docker.manager/include/DockerContainers.php b/plugins/dynamix.docker.manager/include/DockerContainers.php index 009caca54..6008adcc4 100644 --- a/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -65,7 +65,7 @@ foreach ($containers as $ct) { $color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text'); $update = $updateStatus=='false' ? 'blue-text' : ''; $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; - $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); + $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); $wait = var_split($autostart[array_search($name,$names)],1); $ports = []; foreach ($ct['Ports'] as $port) { From 9abe0b66c8be5a6bd0c1256a5575f2adef2a68c3 Mon Sep 17 00:00:00 2001 From: Andrew Z Date: Sat, 21 Sep 2019 21:00:56 -0400 Subject: [PATCH 2/5] Do not cache docker icon on dashboard --- plugins/dynamix/include/DashboardApps.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/dynamix/include/DashboardApps.php b/plugins/dynamix/include/DashboardApps.php index cf462a5f0..74a320c05 100644 --- a/plugins/dynamix/include/DashboardApps.php +++ b/plugins/dynamix/include/DashboardApps.php @@ -51,7 +51,7 @@ if ($_POST['docker'] && ($display=='icons' || $display=='docker')) { $color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text'); $update = $updateStatus=='false' ? 'blue-text' : ''; $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; - $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); + $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); echo "$image$name
$status
"; } $none = count($containers) ? "No running docker containers" : "No docker containers defined"; From 64dc296cceef248edcee22e57f9f0486e5d18c18 Mon Sep 17 00:00:00 2001 From: Andrew Z Date: Sat, 21 Sep 2019 21:09:12 -0400 Subject: [PATCH 3/5] Remove duplicated code --- .../include/CreateDocker.php | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php index 75777dc52..ed39d68da 100644 --- a/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -85,17 +85,17 @@ if (isset($_POST['contName'])) { if (!is_dir($userTmplDir)) mkdir($userTmplDir, 0777, true); if ($Name) { $filename = sprintf('%s/my-%s.xml', $userTmplDir, $Name); - if ( is_file($filename) ) { - $oldXML = simplexml_load_file($filename); - if ($oldXML->Icon != $_POST['contIcon']) { - if (! strpos($Repository,":")) { - $Repository .= ":latest"; - } - $iconPath = $DockerTemplates->getIcon($Repository); - @unlink("$docroot/$iconPath"); - @unlink("{$dockerManPaths['images']}/".basename($iconPath)); - } - } + if ( is_file($filename) ) { + $oldXML = simplexml_load_file($filename); + if ($oldXML->Icon != $_POST['contIcon']) { + if (! strpos($Repository,":")) { + $Repository .= ":latest"; + } + $iconPath = $DockerTemplates->getIcon($Repository); + @unlink("$docroot/$iconPath"); + @unlink("{$dockerManPaths['images']}/".basename($iconPath)); + } + } file_put_contents($filename, $postXML); } // Run dry @@ -148,14 +148,7 @@ if (isset($_POST['contName'])) { } if ($startContainer) $cmd = str_replace('/docker create ', '/docker run -d ', $cmd); execCommand($cmd); - if ( $newIcon ) { - if (! strpos($Repository,":")) { - $Repository .= ":latest"; - } - $iconPath = $DockerTemplates->getIcon($Repository); - @unlink("$docroot/$iconPath"); - @unlink("{$dockerManPaths['images']}/".basename($iconPath)); - } + echo '

'; goto END; } @@ -390,11 +383,11 @@ button[type=button]{margin:0 20px 0 0} } return newConfig.prop('outerHTML'); } - + function escapeQuote(string) { return string.replace(new RegExp('"','g'),"""); } - + function makeAllocations(container,current) { var html = []; for (var i=0,ct; ct=container[i]; i++) { From 41bd904d893bf9d40be518bfd2a36973cc65fdff Mon Sep 17 00:00:00 2001 From: Andrew Z Date: Sun, 22 Sep 2019 09:47:17 -0400 Subject: [PATCH 4/5] Avoid double slashes --- plugins/dynamix.docker.manager/include/DockerContainers.php | 2 +- plugins/dynamix/include/DashboardApps.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/dynamix.docker.manager/include/DockerContainers.php b/plugins/dynamix.docker.manager/include/DockerContainers.php index 6008adcc4..3741416b6 100644 --- a/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -65,7 +65,7 @@ foreach ($containers as $ct) { $color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text'); $update = $updateStatus=='false' ? 'blue-text' : ''; $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; - $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); + $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); $wait = var_split($autostart[array_search($name,$names)],1); $ports = []; foreach ($ct['Ports'] as $port) { diff --git a/plugins/dynamix/include/DashboardApps.php b/plugins/dynamix/include/DashboardApps.php index 74a320c05..a652e9705 100644 --- a/plugins/dynamix/include/DashboardApps.php +++ b/plugins/dynamix/include/DashboardApps.php @@ -51,7 +51,7 @@ if ($_POST['docker'] && ($display=='icons' || $display=='docker')) { $color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text'); $update = $updateStatus=='false' ? 'blue-text' : ''; $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; - $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); + $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); echo "$image$name
$status
"; } $none = count($containers) ? "No running docker containers" : "No docker containers defined"; From 4c4ab3717d2b47c3f0542c59c10b2d08d0495271 Mon Sep 17 00:00:00 2001 From: Andrew Z Date: Sun, 22 Sep 2019 10:16:35 -0400 Subject: [PATCH 5/5] Avoid unnecessary download if docker.img recreated --- .../dynamix.docker.manager/include/DockerClient.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/dynamix.docker.manager/include/DockerClient.php b/plugins/dynamix.docker.manager/include/DockerClient.php index cd37ff49a..4c224ba7e 100644 --- a/plugins/dynamix.docker.manager/include/DockerClient.php +++ b/plugins/dynamix.docker.manager/include/DockerClient.php @@ -305,12 +305,15 @@ class DockerTemplates { $name = preg_replace("%\/|\\\%", '-', $matches[1][0]); $version = $matches[2][0]; $iconRAM = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images-ram'], $name, $version, 'icon'); - $iconUSB = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images'], $name, $version, 'icon'); + $icon = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images'], $name, $version, 'icon'); if (!is_dir(dirname($iconRAM))) mkdir(dirname($iconRAM), 0755, true); - if (!is_dir(dirname($iconUSB))) mkdir(dirname($iconUSB), 0755, true); + if (!is_dir(dirname($icon))) mkdir(dirname($icon), 0755, true); if (!is_file($iconRAM)) { - if (!is_file($iconUSB)) $this->download_url($imgUrl, $iconUSB); - @copy($iconUSB, $iconRAM); + if (!is_file($icon)) $this->download_url($imgUrl, $icon); + @copy($icon, $iconRAM); + } + if ( !is_file($icon) && is_file($iconRAM) ) { + @copy($iconRAM,$icon); } return (is_file($iconRAM)) ? str_replace($docroot, '', $iconRAM) : ''; }