diff --git a/emhttp/plugins/dynamix.docker.manager/AddContainer.page b/emhttp/plugins/dynamix.docker.manager/AddContainer.page old mode 100644 new mode 100755 index e0d6efbbe..6a4b65895 --- a/emhttp/plugins/dynamix.docker.manager/AddContainer.page +++ b/emhttp/plugins/dynamix.docker.manager/AddContainer.page @@ -1,6 +1,7 @@ Title="Add Container" Cond="(pgrep('dockerd')!==false)" Markdown="false" +Eval="true" --- lang="" class="getThemeHtmlClass() ?>"> @@ -143,16 +144,23 @@ if (count($pages)) { ' . parse_text($button['text'])); - } + foreach ($buttonPages as $button) { + annotate($button['file']); + includePageStylesheets($button); + $evalContent = '?>' . parse_text($button['text']); + $evalFile = $button['file']; + if ( filter_var($button['Eval']??false, FILTER_VALIDATE_BOOLEAN) ) { + eval($evalContent); + } else { + include "$docroot/webGui/include/DefaultPageLayout/evalContent.php"; + } + } + -foreach ($pages as $page) { - annotate($page['file']); - includePageStylesheets($page); -} + foreach ($pages as $page) { + annotate($page['file']); + includePageStylesheets($page); + } ?> @@ -169,4 +177,4 @@ foreach ($pages as $page) { - \ No newline at end of file + diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php old mode 100644 new mode 100755 index aa01fee64..71a720e98 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php @@ -46,7 +46,13 @@ if (isset($page['text'])) { $skipIndexIncrement = true; annotate($page['file']); - eval('?>'.generateContent($page)); + $evalContent = '?>'.generateContent($page); + $evalFile = $page['file']; + if ( filter_var($page['Eval']??false, FILTER_VALIDATE_BOOLEAN) ) { + eval($evalContent); + } else { + include "$docroot/webGui/include/DefaultPageLayout/evalContent.php"; + } } continue; } @@ -63,7 +69,15 @@ > - '.generateContent($page)); ?> + '.generateContent($page); + $evalFile = $page['file']; + if ( filter_var($page['Eval']??false, FILTER_VALIDATE_BOOLEAN) ) { + eval($evalContent); + } else { + include "$docroot/webGui/include/DefaultPageLayout/evalContent.php"; + } + ?> - '.generateContent($page)); ?> + '.generateContent($page); + $evalFile = $page['file']; + if ( filter_var($page['Eval']??false, FILTER_VALIDATE_BOOLEAN) ) { + eval($evalContent); + } else { + include "$docroot/webGui/include/DefaultPageLayout/evalContent.php"; + } + ?> diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout/evalContent.php b/emhttp/plugins/dynamix/include/DefaultPageLayout/evalContent.php new file mode 100755 index 000000000..733243c8d --- /dev/null +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout/evalContent.php @@ -0,0 +1,47 @@ +getSeverity() : 'N/A'; + error_log("Error evaluating content in $evalFile (severity: $severity): ".$e->getMessage()."\nStack trace:\n".$e->getTraceAsString()); + ob_clean(); + $errorMessage = "Error evaluating content in $evalFile: ".$e->getMessage(); + echo ""; + ob_end_flush(); +} +?> \ No newline at end of file diff --git a/emhttp/plugins/dynamix/include/PageBuilder.php b/emhttp/plugins/dynamix/include/PageBuilder.php old mode 100644 new mode 100755 index 2f2a82ac6..32cb0b68a --- a/emhttp/plugins/dynamix/include/PageBuilder.php +++ b/emhttp/plugins/dynamix/include/PageBuilder.php @@ -18,7 +18,11 @@ function get_ini_key($key,$default) { $x = strpos($key, '['); $var = $x>0 ? substr($key,1,$x-1) : substr($key,1); global $$var; - eval("\$var=$key;"); + try { + eval("\$var=$key;"); + } catch (Throwable $e) { + return $default; + } return $var ?: $default; } @@ -44,10 +48,14 @@ function build_pages($pattern) { function page_enabled(&$page) { - global $var,$disks,$devs,$users,$shares,$sec,$sec_nfs,$name,$display,$pool_devices; - $enabled = true; - if (isset($page['Cond'])) eval("\$enabled={$page['Cond']};"); - return $enabled; + global $docroot,$var,$disks,$devs,$users,$shares,$sec,$sec_nfs,$name,$display,$pool_devices; + $enabled = $evalSuccess = true; + if (isset($page['Cond'])) { + $evalContent= "\$enabled={$page['Cond']};"; + $evalFile = $page['file']; + include "$docroot/webGui/include/DefaultPageLayout/evalContent.php"; + } + return ($enabled && $evalSuccess); } function find_pages($item) {