use panel.password_min_length setting for Froxlor.generatePassword() default length parameter; allow '::1' as valid mysql localhost value; wrapper to clean output for cli installation

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2023-12-16 20:20:58 +01:00
parent 55a2ae3801
commit 43eff78088
4 changed files with 15 additions and 8 deletions

View File

@@ -259,14 +259,15 @@ class Froxlor extends ApiCommand
* returns a random password based on froxlor settings for min-length, included characters, etc. * returns a random password based on froxlor settings for min-length, included characters, etc.
* *
* @param int $length * @param int $length
* optional length of password, defaults to 10 * optional length of password, defaults to 0 (panel.password_min_length)
* *
* @access admin, customer * @access admin, customer
* @return string * @return string
* @throws Exception
*/ */
public function generatePassword() public function generatePassword(): string
{ {
$length = $this->getParam('length', true, 10); $length = $this->getParam('length', true, 0);
return $this->response(Crypt::generatePassword($length)); return $this->response(Crypt::generatePassword($length));
} }

View File

@@ -211,7 +211,7 @@ final class InstallCommand extends Command
$ask_field = false; $ask_field = false;
} }
$fielddata['value'] = $this->formfielddata[$fieldname] ?? ($fielddata['value'] ?? null); $fielddata['value'] = $this->formfielddata[$fieldname] ?? ($fielddata['value'] ?? null);
$fielddata['label'] = strip_tags(str_replace("<br>", " ", $fielddata['label'])); $fielddata['label'] = $this->cliTextFormat($fielddata['label'], " ");
if ($ask_field) { if ($ask_field) {
if ($fielddata['type'] == 'password') { if ($fielddata['type'] == 'password') {
$this->formfielddata[$fieldname] = $this->io->askHidden($fielddata['label'], function ($value) use ($fielddata) { $this->formfielddata[$fieldname] = $this->io->askHidden($fielddata['label'], function ($value) use ($fielddata) {
@@ -267,7 +267,7 @@ final class InstallCommand extends Command
case 4: case 4:
$section = $inst->formfield['install']['sections']['step' . $step] ?? []; $section = $inst->formfield['install']['sections']['step' . $step] ?? [];
$this->io->section($section['title']); $this->io->section($section['title']);
$this->io->note($section['description']); $this->io->note($this->cliTextFormat($section['description']));
$cmdfield = $section['fields']['system']; $cmdfield = $section['fields']['system'];
$this->io->success([ $this->io->success([
$cmdfield['label'], $cmdfield['label'],
@@ -320,7 +320,7 @@ final class InstallCommand extends Command
$fieldval = '******'; $fieldval = '******';
} elseif ($field['type'] == 'select') { } elseif ($field['type'] == 'select') {
$fieldval = implode("|", array_keys($field['select_var'])); $fieldval = implode("|", array_keys($field['select_var']));
} else if ($field['type'] == 'checkbox') { } elseif ($field['type'] == 'checkbox') {
$fieldval = "1|0"; $fieldval = "1|0";
} else { } else {
$fieldval = "?"; $fieldval = "?";
@@ -348,4 +348,10 @@ final class InstallCommand extends Command
curl_close($ch); curl_close($ch);
fclose($fp); fclose($fp);
} }
private function cliTextFormat(string $text, string $nl_char = "\n"): string
{
$text = str_replace(['<br>', '<br/>', '<br />'], [$nl_char, $nl_char, $nl_char], $text);
return strip_tags($text);
}
} }

View File

@@ -47,7 +47,7 @@ class TrafficCron extends FroxlorCron
public static function run() public static function run()
{ {
self::runFork([self::class, 'handle']); self::runFork([self::class, 'handle'], [true]);
} }
public static function handle() public static function handle()

View File

@@ -176,7 +176,7 @@ class Validate
} }
// special case where localhost ip is allowed (mysql-access-hosts for example) // special case where localhost ip is allowed (mysql-access-hosts for example)
if ($allow_localhost && $ip == '127.0.0.1') { if ($allow_localhost && ($ip == '127.0.0.1' || $ip == '::1')) {
return $ip . $cidr; return $ip . $cidr;
} }