From fca80de995d41456f7aad37a28c5ebb8d63692bc Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Thu, 2 Jun 2022 20:33:27 +0200 Subject: [PATCH] fixes to install (mostly CLI) Signed-off-by: Michael Kaufmann --- lib/Froxlor/Cli/InstallCommand.php | 25 +++++++++++++++++-------- lib/Froxlor/Install/Install.php | 4 ++-- lib/Froxlor/Install/Install/Core.php | 1 + 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/Froxlor/Cli/InstallCommand.php b/lib/Froxlor/Cli/InstallCommand.php index ab394148..be1415a5 100644 --- a/lib/Froxlor/Cli/InstallCommand.php +++ b/lib/Froxlor/Cli/InstallCommand.php @@ -57,6 +57,8 @@ final class InstallCommand extends Command return self::INVALID; } + session_start(); + require __DIR__ . '/install.functions.php'; $this->io = new SymfonyStyle($input, $output); @@ -133,6 +135,12 @@ final class InstallCommand extends Command $this->io->note($section['description']); foreach ($section['fields'] as $fieldname => $fielddata) { if ($extended == false && isset($fielddata['advanced']) && $fielddata['advanced'] == true) { + if ($fieldname == 'httpuser' || $fieldname == 'httpgroup') { + // overwrite posix_getgrgid(posix_getgid())['name'] as it would result in 'root' + $this->formfielddata[$fieldname] = 'www-data'; + } else { + $this->formfielddata[$fieldname] = $fielddata['value']; + } continue; } $fielddata['value'] = $this->formfielddata[$fieldname] ?? ($fielddata['value'] ?? null); @@ -160,23 +168,24 @@ final class InstallCommand extends Command try { if ($step == 1) { -// $inst->checkDatabase($this->formfielddata); + $inst->checkDatabase($this->formfielddata); } elseif ($step == 2) { -// $inst->checkAdminUser($this->formfielddata); + $inst->checkAdminUser($this->formfielddata); } elseif ($step == 3) { -// $inst->checkSystem($this->formfielddata); + $inst->checkSystem($this->formfielddata); } - } - catch (Exception $e) { + } catch (Exception $e) { $this->io->error($e->getMessage()); return $this->showStep($step, $extended); } + if ($step == 3) { + // do actual install with data from $this->formfielddata + $core = new Core($this->formfielddata); + $core->doInstall(); + } return $this->showStep(++$step, $extended); break; case 4: - // do actual install with data from $this->formfielddata -// $core = new Core($this->formfielddata); -// $core->doInstall(); $section = $inst->formfield['install']['sections']['step' . $step] ?? []; $this->io->section($section['title']); $this->io->note($section['description']); diff --git a/lib/Froxlor/Install/Install.php b/lib/Froxlor/Install/Install.php index 1f52156e..a0f224dd 100644 --- a/lib/Froxlor/Install/Install.php +++ b/lib/Froxlor/Install/Install.php @@ -298,9 +298,9 @@ class Install if (empty($serveripv4) && empty($serveripv6)) { throw new Exception(lng('install.errors.nov4andnov6ip')); - } elseif (!Validate::validate_ip2($serveripv4, true, '', false, true) || IPTools::is_ipv6($serveripv4)) { + } elseif (!empty($serveripv4) && (!Validate::validate_ip2($serveripv4, true, '', false, true) || IPTools::is_ipv6($serveripv4))) { throw new Exception(lng('error.invalidip', [$serveripv4])); - } elseif (!Validate::validate_ip2($serveripv6, true, '', false, true) || IPTools::is_ipv6($serveripv6) == false) { + } elseif (!empty($serveripv6) && (!Validate::validate_ip2($serveripv6, true, '', false, true) || IPTools::is_ipv6($serveripv6) == false)) { throw new Exception(lng('error.invalidip', [$serveripv6])); } elseif (!Validate::validateDomain($servername) && !Validate::validateLocalHostname($servername)) { throw new Exception(lng('install.errors.servernameneedstobevalid')); diff --git a/lib/Froxlor/Install/Install/Core.php b/lib/Froxlor/Install/Install/Core.php index effcfee4..9d65f55e 100644 --- a/lib/Froxlor/Install/Install/Core.php +++ b/lib/Froxlor/Install/Install/Core.php @@ -497,6 +497,7 @@ class Core `ssl` = :ssl "); $nvh = $this->validatedData['webserver'] == 'apache2' ? '1' : '0'; + $defaultip = false; if (!empty($this->validatedData['serveripv6'])) { $stmt->execute([ 'nvh' => $nvh,