diff --git a/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php b/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php index 2966cf214a..739c7cce58 100755 --- a/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -80,8 +80,15 @@ function cpu_pinning() { // Saving the generated configuration file. $userTmplDir = $dockerManPaths['templates-user']; if (!is_dir($userTmplDir)) mkdir($userTmplDir, 0777, true); + $sourceTemplate = _var($_POST,'sourceTemplate',false); + if ($sourceTemplate) $sourceTemplate = unscript(urldecode($sourceTemplate)); + $sourceUserTemplate = $sourceTemplate && basename($sourceTemplate)==$sourceTemplate && preg_match('/^my-[^\/\\\\]+\.xml$/', $sourceTemplate); + if ($sourceUserTemplate) { + $sourceTemplate = "$userTmplDir/$sourceTemplate"; + $sourceUserTemplate = is_file($sourceTemplate); + } if ($Name) { - $filename = sprintf('%s/my-%s.xml', $userTmplDir, $Name); + $filename = ($sourceUserTemplate && $existing === $Name) ? $sourceTemplate : $DockerTemplates->getUserTemplatePath($Name); if (is_file($filename)) { $oldXML = simplexml_load_file($filename); if ($oldXML->Icon != $_POST['contIcon']) { @@ -137,8 +144,9 @@ function cpu_pinning() { // force kill container if still running after 10 seconds removeContainer($existing,1); // remove old template - if (strtolower($filename) != strtolower("$userTmplDir/my-$existing.xml")) { - @unlink("$userTmplDir/my-$existing.xml"); + $oldFilename = $sourceUserTemplate ? $sourceTemplate : $DockerTemplates->getUserTemplatePath($existing); + if (strtolower($filename) != strtolower($oldFilename)) { + @unlink($oldFilename); } } // Extract real Entrypoint and Cmd from container for Tailscale @@ -898,6 +906,9 @@ function prepareCategory() {