diff --git a/libraries/classes/Controllers/Setup/MainController.php b/libraries/classes/Controllers/Setup/MainController.php new file mode 100644 index 0000000000..f765f1a7c6 --- /dev/null +++ b/libraries/classes/Controllers/Setup/MainController.php @@ -0,0 +1,80 @@ +getQueryParams(); + + $page = 'index'; + if (isset($params['page']) && in_array($params['page'], ['form', 'config', 'servers'], true)) { + $page = $params['page']; + } + + Core::noCacheHeader(); + + // Sent security-related headers + (new Header())->sendHttpHeaders(); + + if ($page === 'form') { + echo (new FormController($GLOBALS['ConfigFile'], new Template()))([ + 'formset' => $params['formset'] ?? null, + ]); + + return; + } + + if ($page === 'config') { + echo (new ConfigController($GLOBALS['ConfigFile'], new Template()))([ + 'formset' => $params['formset'] ?? null, + 'eol' => $params['eol'] ?? null, + ]); + + return; + } + + if ($page === 'servers') { + $controller = new ServersController($GLOBALS['ConfigFile'], new Template()); + if (isset($params['mode']) && $params['mode'] === 'remove' && $request->isPost()) { + $controller->destroy([ + 'id' => $params['id'] ?? null, + ]); + header('Location: index.php' . Url::getCommonRaw()); + + return; + } + + echo $controller->index([ + 'formset' => $params['formset'] ?? null, + 'mode' => $params['mode'] ?? null, + 'id' => $params['id'] ?? null, + ]); + + return; + } + + echo (new HomeController($GLOBALS['ConfigFile'], new Template()))([ + 'formset' => $params['formset'] ?? null, + 'version_check' => $params['version_check'] ?? null, + ]); + } +} diff --git a/libraries/classes/Controllers/Setup/ShowConfigController.php b/libraries/classes/Controllers/Setup/ShowConfigController.php new file mode 100644 index 0000000000..9b7d6b5400 --- /dev/null +++ b/libraries/classes/Controllers/Setup/ShowConfigController.php @@ -0,0 +1,57 @@ +save('Config'); + + $response = ResponseRenderer::getInstance(); + $response->disable(); + + /** @var mixed $eol */ + $eol = $request->getParsedBodyParam('eol'); + if ($eol !== null) { + $_SESSION['eol'] = $eol === 'unix' ? 'unix' : 'win'; + } + + /** @var mixed $submitClear */ + $submitClear = $request->getParsedBodyParam('submit_clear'); + if (is_string($submitClear) && $submitClear !== '') { + // Clear current config and return to main page + $GLOBALS['ConfigFile']->resetConfigData(); + // drop post data + $response->generateHeader303('index.php' . Url::getCommonRaw()); + + return; + } + + /** @var mixed $submitDownload */ + $submitDownload = $request->getParsedBodyParam('submit_download'); + if (is_string($submitDownload) && $submitDownload !== '') { + // Output generated config file + Core::downloadHeader('config.inc.php', 'text/plain'); + $response->disable(); + echo ConfigGenerator::getConfigFile($GLOBALS['ConfigFile']); + + return; + } + + // Show generated config file in a