diff --git a/install/install.php b/install/install.php
index 0a58398e..b0bded86 100644
--- a/install/install.php
+++ b/install/install.php
@@ -26,6 +26,8 @@
use Froxlor\UI\Panel\UI;
use Froxlor\Install\Install;
+require dirname(__DIR__) . '/lib/functions.php';
+
// define default theme for configurehint, etc.
$_deftheme = 'Froxlor';
@@ -62,7 +64,5 @@ require dirname(__DIR__) . '/lib/tables.inc.php';
UI::initTwig(true);
UI::sendHeaders();
-require dirname(__DIR__) . '/lib/functions.php';
-
$installer = new Install();
$installer->handle();
diff --git a/lib/Froxlor/Install/Install.php b/lib/Froxlor/Install/Install.php
index 588434f3..d9c4fc52 100644
--- a/lib/Froxlor/Install/Install.php
+++ b/lib/Froxlor/Install/Install.php
@@ -35,6 +35,7 @@ use Froxlor\Validate\Validate;
class Install
{
public $currentStep;
+ public $extendedView;
public $maxSteps;
public $phpVersion;
public $formfield;
@@ -76,6 +77,7 @@ class Install
// set actual step
$this->currentStep = Request::get('step', 0);
+ $this->extendedView = Request::get('extended', 0);
$this->maxSteps = count($this->formfield['install']['sections']);
// set actual php version and extensions
@@ -112,13 +114,14 @@ class Install
'setup' => [
'step' => $this->currentStep,
],
- 'preflight' => $this->checkExtensions(),
+ 'preflight' => $this->checkRequirements(),
'page' => [
'title' => 'Database',
'description' => 'Test',
],
'section' => $this->formfield['install']['sections']['step' . $this->currentStep] ?? [],
'error' => $error ?? null,
+ 'extended' => $this->extendedView,
]);
// output view
@@ -171,8 +174,18 @@ class Install
/**
* @return array
*/
- private function checkExtensions(): array
+ private function checkRequirements(): array
{
+ // check whether we can read the userdata file
+ if (!@touch(dirname(__DIR__, 2).'/.~writecheck' )) {
+ // get possible owner
+ $posixusername = posix_getpwuid(posix_getuid())['name'];
+ $posixgroup = posix_getgrgid(posix_getgid())['name'];
+ $this->criticals['wrong_ownership'] = ['user' => $posixusername, 'group' => $posixgroup];
+ } else {
+ @unlink(dirname(__DIR__, 2).'/.~writecheck');
+ }
+
// check for required extensions
foreach ($this->requiredExtensions as $requiredExtension) {
if (in_array($requiredExtension, $this->loadedExtensions)) {
diff --git a/lib/formfields/install/formfield.install.php b/lib/formfields/install/formfield.install.php
index ee2fdc76..5e650aa0 100644
--- a/lib/formfields/install/formfield.install.php
+++ b/lib/formfields/install/formfield.install.php
@@ -149,12 +149,18 @@ return [
'select_var' => $this->supportedOS,
'selected' => $guessedDistribution
],
- 'serverip' => [
- 'label' => lng('serversettings.ipaddress.title'),
- 'placeholder' => lng('serversettings.ipaddress.title'),
+ 'serveripv4' => [
+ 'label' => lng('install.system.ipv4'),
+ 'placeholder' => lng('install.system.ipv4'),
'type' => 'text',
- 'mandatory' => true,
- 'value' => old('serverip', $_SERVER['SERVER_ADDR'] ?? null, 'installation'),
+ 'value' => old('serveripv4', filter_var($_SERVER['SERVER_ADDR'] ?? "", FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? ($_SERVER['SERVER_ADDR'] ?? "") : "", 'installation'),
+
+ ],
+ 'serveripv6' => [
+ 'label' => lng('install.system.ipv6'),
+ 'placeholder' => lng('install.system.ipv6'),
+ 'type' => 'text',
+ 'value' => old('serveripv6', filter_var($_SERVER['SERVER_ADDR'] ?? "", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ? ($_SERVER['SERVER_ADDR'] ?? "") : "", 'installation'),
],
'servername' => [
'label' => lng('install.system.servername'),
@@ -189,6 +195,7 @@ return [
'type' => 'text',
'mandatory' => true,
'value' => old('httpuser', posix_getpwuid(posix_getuid())['name'] ?? '', 'installation'),
+ 'advanced' => true,
],
'httpgroup' => [
'label' => lng('admin.webserver_group'),
@@ -196,6 +203,7 @@ return [
'type' => 'text',
'mandatory' => true,
'value' => old('httpgroup', posix_getgrgid(posix_getgid())['name'] ?? '', 'installation'),
+ 'advanced' => true,
],
'activate_newsfeed' => [
'label' => lng('install.system.activate_newsfeed'),
diff --git a/lng/en.lng.php b/lng/en.lng.php
index 9c738ddb..24443e84 100644
--- a/lng/en.lng.php
+++ b/lng/en.lng.php
@@ -2489,6 +2489,8 @@ Yours sincerely, your administrator',
'top' => 'System setup',
'title' => 'Details about your server',
'description' => 'Set your environment as well as server relevant data and options here to let froxlor know about your system. These values are crucial for the system configuration and operating.',
+ 'ipv4' => 'Primary IPv4 address (if applicable)',
+ 'ipv6' => 'Primary IPv6 address (if applicable)',
'servername' => 'Server name (FQDN, no ip-address)',
'phpbackend' => 'PHP backend',
'activate_newsfeed' => 'Enable the official newsfeed
(https://inside.froxlor.org/news/)',
diff --git a/templates/Froxlor/form/formfields.html.twig b/templates/Froxlor/form/formfields.html.twig
index 8aba63b2..198d7b93 100644
--- a/templates/Froxlor/form/formfields.html.twig
+++ b/templates/Froxlor/form/formfields.html.twig
@@ -63,17 +63,19 @@
{# installation specific format #}
{% macro field(id, field, norow = true, nohide = false, em = false) %}
- {% if field.type != 'checkbox' %}
-