public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH installer 0/3] raise minimum root password length to 8 characters
@ 2024-10-07  9:22 Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 1/3] proxinstall: " Christoph Heiss
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Christoph Heiss @ 2024-10-07  9:22 UTC (permalink / raw)
  To: pve-devel

This idea came to light while talking with Shannon about #5756 [0].

It is 2024, so raising the minimum length for the root password as
entered during the installation from 5 to 8 characters seems very
sensible. NIST also recommends a minimum length of 8 characters for
passwords [1].

In the GUI installer, we already recommend passwords of length 8 or
greater during the respective installation step.

See also the respective patches for PVE [2] and PBS [3].

[0] https://bugzilla.proxmox.com/show_bug.cgi?id=5756
[1] https://pages.nist.gov/800-63-4/sp800-63b.html#passwordver
[2] https://lore.proxmox.com/pve-devel/20241004133205.258755-1-s.sterz@proxmox.com/
[3] https://lore.proxmox.com/pbs-devel/20241004134054.263913-1-s.sterz@proxmox.com/

Christoph Heiss (3):
  proxinstall: raise minimum root password length to 8 characters
  tui: raise minimum root password length to 8 characters
  auto-installer: raise minimum root password length to 8 characters

 Proxmox/Makefile                                      |  1 +
 Proxmox/Sys.pm                                        |  6 ++++++
 proxinstall                                           |  8 ++++++--
 proxmox-auto-installer/src/utils.rs                   |  5 +++++
 .../tests/resources/parse_answer/disk_match.json      |  2 +-
 .../tests/resources/parse_answer/disk_match.toml      |  2 +-
 .../tests/resources/parse_answer/disk_match_all.json  |  2 +-
 .../tests/resources/parse_answer/disk_match_all.toml  |  2 +-
 .../tests/resources/parse_answer/disk_match_any.json  |  2 +-
 .../tests/resources/parse_answer/disk_match_any.toml  |  2 +-
 .../tests/resources/parse_answer/minimal.json         |  2 +-
 .../tests/resources/parse_answer/minimal.toml         |  2 +-
 .../tests/resources/parse_answer/nic_matching.json    |  2 +-
 .../tests/resources/parse_answer/nic_matching.toml    |  2 +-
 .../tests/resources/parse_answer/specific_nic.json    |  2 +-
 .../tests/resources/parse_answer/specific_nic.toml    |  2 +-
 .../tests/resources/parse_answer/zfs.json             |  2 +-
 .../tests/resources/parse_answer/zfs.toml             |  2 +-
 proxmox-installer-common/src/lib.rs                   |  3 +++
 proxmox-tui-installer/src/main.rs                     | 11 ++++++-----
 20 files changed, 41 insertions(+), 21 deletions(-)
 create mode 100644 Proxmox/Sys.pm

-- 
2.46.0



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH installer 1/3] proxinstall: raise minimum root password length to 8 characters
  2024-10-07  9:22 [pve-devel] [PATCH installer 0/3] raise minimum root password length to 8 characters Christoph Heiss
@ 2024-10-07  9:22 ` Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 2/3] tui: " Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 3/3] auto-installer: " Christoph Heiss
  2 siblings, 0 replies; 9+ messages in thread
From: Christoph Heiss @ 2024-10-07  9:22 UTC (permalink / raw)
  To: pve-devel

.. in accordance with current NIST recommendations [0].

It's 2024; so reasonable to expect an 8-character-password at the
minimum.

[0] https://pages.nist.gov/800-63-4/sp800-63b.html#passwordver

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
 Proxmox/Makefile | 1 +
 Proxmox/Sys.pm   | 6 ++++++
 proxinstall      | 8 ++++++--
 3 files changed, 13 insertions(+), 2 deletions(-)
 create mode 100644 Proxmox/Sys.pm

diff --git a/Proxmox/Makefile b/Proxmox/Makefile
index 035626b..edcabc1 100644
--- a/Proxmox/Makefile
+++ b/Proxmox/Makefile
@@ -12,6 +12,7 @@ PERL_MODULES=\
     Install/RunEnv.pm \
     Install/StorageConfig.pm \
     Log.pm \
+    Sys.pm \
     Sys/Block.pm \
     Sys/Command.pm \
     Sys/File.pm \
diff --git a/Proxmox/Sys.pm b/Proxmox/Sys.pm
new file mode 100644
index 0000000..41e5316
--- /dev/null
+++ b/Proxmox/Sys.pm
@@ -0,0 +1,6 @@
+package Proxmox::Sys;
+
+use strict;
+use warnings;
+
+our $ROOT_PASSWORD_MIN_LENGTH = 8;
diff --git a/proxinstall b/proxinstall
index 12f3eaa..a4ed20b 100755
--- a/proxinstall
+++ b/proxinstall
@@ -33,6 +33,7 @@ my $iso_env = Proxmox::Install::ISOEnv::get();
 use Proxmox::Install;
 use Proxmox::Install::Config;
 
+use Proxmox::Sys;
 use Proxmox::Sys::Block qw(get_cached_disks);
 use Proxmox::Sys::Command qw(syscmd);
 use Proxmox::Sys::File qw(file_read_all file_write_all);
@@ -720,8 +721,11 @@ sub create_password_view {
 	my $t1 = $pwe1->get_text;
 	my $t2 = $pwe2->get_text;
 
-	if (length ($t1) < 5) {
-	    Proxmox::UI::message("Password is too short.");
+	if (length ($t1) < $Proxmox::Sys::ROOT_PASSWORD_MIN_LENGTH) {
+	    Proxmox::UI::message(
+		"Password too short, must be at least " .
+		"$Proxmox::Sys::ROOT_PASSWORD_MIN_LENGTH characters long"
+	    );
 	    $pwe1->grab_focus();
 	    return;
 	}
-- 
2.46.0



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH installer 2/3] tui: raise minimum root password length to 8 characters
  2024-10-07  9:22 [pve-devel] [PATCH installer 0/3] raise minimum root password length to 8 characters Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 1/3] proxinstall: " Christoph Heiss
@ 2024-10-07  9:22 ` Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 3/3] auto-installer: " Christoph Heiss
  2 siblings, 0 replies; 9+ messages in thread
From: Christoph Heiss @ 2024-10-07  9:22 UTC (permalink / raw)
  To: pve-devel

.. in accordance with current NIST recommendations [0].

It's 2024; so reasonable to expect an 8-character-password at the
minimum.

[0] https://pages.nist.gov/800-63-4/sp800-63b.html#passwordver

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
 proxmox-installer-common/src/lib.rs |  3 +++
 proxmox-tui-installer/src/main.rs   | 11 ++++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/proxmox-installer-common/src/lib.rs b/proxmox-installer-common/src/lib.rs
index 850e825..70dffab 100644
--- a/proxmox-installer-common/src/lib.rs
+++ b/proxmox-installer-common/src/lib.rs
@@ -4,3 +4,6 @@ pub mod setup;
 pub mod utils;
 
 pub const RUNTIME_DIR: &str = "/run/proxmox-installer";
+
+/// Minimum length for the root password
+pub const ROOT_PASSWORD_MIN_LENGTH: usize = 8;
diff --git a/proxmox-tui-installer/src/main.rs b/proxmox-tui-installer/src/main.rs
index 3fb87a7..c5befce 100644
--- a/proxmox-tui-installer/src/main.rs
+++ b/proxmox-tui-installer/src/main.rs
@@ -22,6 +22,7 @@ use proxmox_installer_common::{
     options::{BootdiskOptions, NetworkOptions, TimezoneOptions},
     setup::{installer_setup, LocaleInfo, ProxmoxProduct, RuntimeInfo, SetupInfo},
     utils::Fqdn,
+    ROOT_PASSWORD_MIN_LENGTH,
 };
 
 mod setup;
@@ -452,14 +453,14 @@ fn password_dialog(siv: &mut Cursive) -> InstallerView {
                     Regex::new(r"^[\w\+\-\~]+(\.[\w\+\-\~]+)*@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$")
                         .unwrap();
 
-                if root_password.len() < 5 {
-                    Err("password too short, must be at least 5 characters long")
+                if root_password.len() < ROOT_PASSWORD_MIN_LENGTH {
+                    Err(format!("password too short, must be at least {ROOT_PASSWORD_MIN_LENGTH} characters long"))
                 } else if root_password != confirm_password {
-                    Err("passwords do not match")
+                    Err("passwords do not match".to_owned())
                 } else if email == "mail@example.invalid" {
-                    Err("invalid email address")
+                    Err("invalid email address".to_owned())
                 } else if !email_regex.is_match(&email) {
-                    Err("Email does not look like a valid address (user@domain.tld)")
+                    Err("Email does not look like a valid address (user@domain.tld)".to_owned())
                 } else {
                     Ok(PasswordOptions {
                         root_password,
-- 
2.46.0



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH installer 3/3] auto-installer: raise minimum root password length to 8 characters
  2024-10-07  9:22 [pve-devel] [PATCH installer 0/3] raise minimum root password length to 8 characters Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 1/3] proxinstall: " Christoph Heiss
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 2/3] tui: " Christoph Heiss
@ 2024-10-07  9:22 ` Christoph Heiss
  2024-10-07  9:49   ` Stefan Hanreich
  2 siblings, 1 reply; 9+ messages in thread
From: Christoph Heiss @ 2024-10-07  9:22 UTC (permalink / raw)
  To: pve-devel

.. in accordance with current NIST recommendations [0].

It's 2024; so reasonable to expect an 8-character-password at the
minimum.

[0] https://pages.nist.gov/800-63-4/sp800-63b.html#passwordver

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
 proxmox-auto-installer/src/utils.rs                          | 5 +++++
 .../tests/resources/parse_answer/disk_match.json             | 2 +-
 .../tests/resources/parse_answer/disk_match.toml             | 2 +-
 .../tests/resources/parse_answer/disk_match_all.json         | 2 +-
 .../tests/resources/parse_answer/disk_match_all.toml         | 2 +-
 .../tests/resources/parse_answer/disk_match_any.json         | 2 +-
 .../tests/resources/parse_answer/disk_match_any.toml         | 2 +-
 .../tests/resources/parse_answer/minimal.json                | 2 +-
 .../tests/resources/parse_answer/minimal.toml                | 2 +-
 .../tests/resources/parse_answer/nic_matching.json           | 2 +-
 .../tests/resources/parse_answer/nic_matching.toml           | 2 +-
 .../tests/resources/parse_answer/specific_nic.json           | 2 +-
 .../tests/resources/parse_answer/specific_nic.toml           | 2 +-
 proxmox-auto-installer/tests/resources/parse_answer/zfs.json | 2 +-
 proxmox-auto-installer/tests/resources/parse_answer/zfs.toml | 2 +-
 15 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs
index 45ad222..e0dd2ae 100644
--- a/proxmox-auto-installer/src/utils.rs
+++ b/proxmox-auto-installer/src/utils.rs
@@ -13,6 +13,7 @@ use proxmox_installer_common::{
     setup::{
         InstallConfig, InstallRootPassword, InstallZfsOption, LocaleInfo, RuntimeInfo, SetupInfo,
     },
+    ROOT_PASSWORD_MIN_LENGTH,
 };
 use serde::{Deserialize, Serialize};
 
@@ -309,6 +310,10 @@ fn verify_root_password_settings(answer: &Answer) -> Result<()> {
     } else if answer.global.root_password.is_none() && answer.global.root_password_hashed.is_none()
     {
         bail!("One of `global.root_password` or `global.root_password_hashed` must be set");
+    } else if answer.global.root_password.is_some()
+        && answer.global.root_password.as_ref().map(|s| s.len()) < Some(ROOT_PASSWORD_MIN_LENGTH)
+    {
+        bail!("`global.root_password` must be at least {ROOT_PASSWORD_MIN_LENGTH} characters long");
     } else {
         Ok(())
     }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json b/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json
index 6c8d6d9..a2f8b6f 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json
@@ -18,7 +18,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "eno1",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
   "zfs_opts": {
       "arc_max": 2048,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match.toml b/proxmox-auto-installer/tests/resources/parse_answer/disk_match.toml
index 68676ac..5177eb2 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-dhcp"
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json
index 2d2e94e..a6567c2 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json
@@ -15,7 +15,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "eno1",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
   "zfs_opts": {
       "arc_max": 2048,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.toml b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.toml
index f20a4fe..60daa54 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-dhcp"
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json
index 1f3b2eb..f9d29f7 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json
@@ -22,7 +22,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "eno1",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
   "zfs_opts": {
       "arc_max": 2048,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.toml b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.toml
index e1f33c9..6e45c5b 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-dhcp"
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/minimal.json b/proxmox-auto-installer/tests/resources/parse_answer/minimal.json
index 9fe9150..1db23e6 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/minimal.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/minimal.json
@@ -12,7 +12,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "eno1",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna"
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/minimal.toml b/proxmox-auto-installer/tests/resources/parse_answer/minimal.toml
index db8fec4..16f355c 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/minimal.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/minimal.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-dhcp"
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.json b/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.json
index 610060e..ba0a47f 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.json
@@ -12,7 +12,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "enp65s0f0",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna"
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.toml b/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.toml
index 087c37f..eb6130a 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/nic_matching.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-answer"
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json b/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json
index 5f456bb..fcf26fb 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json
@@ -12,7 +12,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "enp129s0f1np1",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna"
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.toml b/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.toml
index 60f7f14..4ea49bc 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-answer"
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/zfs.json b/proxmox-auto-installer/tests/resources/parse_answer/zfs.json
index 025dd8f..710b4d6 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/zfs.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/zfs.json
@@ -16,7 +16,7 @@
   "keymap": "de",
   "mailto": "mail@no.invalid",
   "mngmt_nic": "eno1",
-  "root_password": { "plain": "123456" },
+  "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
   "zfs_opts": {
       "arc_max": 2048,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/zfs.toml b/proxmox-auto-installer/tests/resources/parse_answer/zfs.toml
index 4d48998..369fd63 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/zfs.toml
+++ b/proxmox-auto-installer/tests/resources/parse_answer/zfs.toml
@@ -4,7 +4,7 @@ country = "at"
 fqdn = "pveauto.testinstall"
 mailto = "mail@no.invalid"
 timezone = "Europe/Vienna"
-root_password = "123456"
+root_password = "12345678"
 
 [network]
 source = "from-dhcp"
-- 
2.46.0



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [pve-devel] [PATCH installer 3/3] auto-installer: raise minimum root password length to 8 characters
  2024-10-07  9:22 ` [pve-devel] [PATCH installer 3/3] auto-installer: " Christoph Heiss
@ 2024-10-07  9:49   ` Stefan Hanreich
  2024-10-07  9:52     ` Christoph Heiss
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Hanreich @ 2024-10-07  9:49 UTC (permalink / raw)
  To: pve-devel



On 10/7/24 11:22, Christoph Heiss wrote:
> .. in accordance with current NIST recommendations [0].
> 
> It's 2024; so reasonable to expect an 8-character-password at the
> minimum.
> 
> [0] https://pages.nist.gov/800-63-4/sp800-63b.html#passwordver
> 
> Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
> ---
>  proxmox-auto-installer/src/utils.rs                          | 5 +++++
>  .../tests/resources/parse_answer/disk_match.json             | 2 +-
>  .../tests/resources/parse_answer/disk_match.toml             | 2 +-
>  .../tests/resources/parse_answer/disk_match_all.json         | 2 +-
>  .../tests/resources/parse_answer/disk_match_all.toml         | 2 +-
>  .../tests/resources/parse_answer/disk_match_any.json         | 2 +-
>  .../tests/resources/parse_answer/disk_match_any.toml         | 2 +-
>  .../tests/resources/parse_answer/minimal.json                | 2 +-
>  .../tests/resources/parse_answer/minimal.toml                | 2 +-
>  .../tests/resources/parse_answer/nic_matching.json           | 2 +-
>  .../tests/resources/parse_answer/nic_matching.toml           | 2 +-
>  .../tests/resources/parse_answer/specific_nic.json           | 2 +-
>  .../tests/resources/parse_answer/specific_nic.toml           | 2 +-
>  proxmox-auto-installer/tests/resources/parse_answer/zfs.json | 2 +-
>  proxmox-auto-installer/tests/resources/parse_answer/zfs.toml | 2 +-
>  15 files changed, 19 insertions(+), 14 deletions(-)
> 
> diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs
> index 45ad222..e0dd2ae 100644
> --- a/proxmox-auto-installer/src/utils.rs
> +++ b/proxmox-auto-installer/src/utils.rs
> @@ -13,6 +13,7 @@ use proxmox_installer_common::{
>      setup::{
>          InstallConfig, InstallRootPassword, InstallZfsOption, LocaleInfo, RuntimeInfo, SetupInfo,
>      },
> +    ROOT_PASSWORD_MIN_LENGTH,
>  };
>  use serde::{Deserialize, Serialize};
>  
> @@ -309,6 +310,10 @@ fn verify_root_password_settings(answer: &Answer) -> Result<()> {
>      } else if answer.global.root_password.is_none() && answer.global.root_password_hashed.is_none()
>      {
>          bail!("One of `global.root_password` or `global.root_password_hashed` must be set");
> +    } else if answer.global.root_password.is_some()
> +        && answer.global.root_password.as_ref().map(|s| s.len()) < Some(ROOT_PASSWORD_MIN_LENGTH)
> +    {
> +        bail!("`global.root_password` must be at least {ROOT_PASSWORD_MIN_LENGTH} characters long");
>      } else {
>          Ok(())
>      }

maybe match is better at this point?

Something like

match (answer.global.root_password, answer.global.root_password_hashed) {
  [..]
  (Some(password), _) if password.len() < ROOT_PASSWORD_MIN_LENGTH,
  [..]
}


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [pve-devel] [PATCH installer 3/3] auto-installer: raise minimum root password length to 8 characters
  2024-10-07  9:49   ` Stefan Hanreich
@ 2024-10-07  9:52     ` Christoph Heiss
  2024-10-07  9:55       ` Stefan Hanreich
  0 siblings, 1 reply; 9+ messages in thread
From: Christoph Heiss @ 2024-10-07  9:52 UTC (permalink / raw)
  To: Stefan Hanreich; +Cc: Proxmox VE development discussion

Thanks for the review!

On Mon, Oct 07, 2024 at 11:49:02AM GMT, Stefan Hanreich wrote:
> On 10/7/24 11:22, Christoph Heiss wrote:
[..]
> > @@ -309,6 +310,10 @@ fn verify_root_password_settings(answer: &Answer) -> Result<()> {
> >      } else if answer.global.root_password.is_none() && answer.global.root_password_hashed.is_none()
> >      {
> >          bail!("One of `global.root_password` or `global.root_password_hashed` must be set");
> > +    } else if answer.global.root_password.is_some()
> > +        && answer.global.root_password.as_ref().map(|s| s.len()) < Some(ROOT_PASSWORD_MIN_LENGTH)
> > +    {
> > +        bail!("`global.root_password` must be at least {ROOT_PASSWORD_MIN_LENGTH} characters long");
> >      } else {
> >          Ok(())
> >      }
>
> maybe match is better at this point?
>
> Something like
>
> match (answer.global.root_password, answer.global.root_password_hashed) {
>   [..]
>   (Some(password), _) if password.len() < ROOT_PASSWORD_MIN_LENGTH,
>   [..]
> }
>

I'll rework it a bit, match definitely seems like the better fit here!


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [pve-devel] [PATCH installer 3/3] auto-installer: raise minimum root password length to 8 characters
  2024-10-07  9:52     ` Christoph Heiss
@ 2024-10-07  9:55       ` Stefan Hanreich
  2024-10-07 10:02         ` Christoph Heiss
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Hanreich @ 2024-10-07  9:55 UTC (permalink / raw)
  To: Christoph Heiss; +Cc: Proxmox VE development discussion

On 10/7/24 11:52, Christoph Heiss wrote:
> Thanks for the review!
> 
> On Mon, Oct 07, 2024 at 11:49:02AM GMT, Stefan Hanreich wrote:
>> On 10/7/24 11:22, Christoph Heiss wrote:
> [..]
>>> @@ -309,6 +310,10 @@ fn verify_root_password_settings(answer: &Answer) -> Result<()> {
>>>      } else if answer.global.root_password.is_none() && answer.global.root_password_hashed.is_none()
>>>      {
>>>          bail!("One of `global.root_password` or `global.root_password_hashed` must be set");
>>> +    } else if answer.global.root_password.is_some()
>>> +        && answer.global.root_password.as_ref().map(|s| s.len()) < Some(ROOT_PASSWORD_MIN_LENGTH)
>>> +    {
>>> +        bail!("`global.root_password` must be at least {ROOT_PASSWORD_MIN_LENGTH} characters long");
>>>      } else {
>>>          Ok(())
>>>      }
>>
>> maybe match is better at this point?
>>
>> Something like
>>
>> match (answer.global.root_password, answer.global.root_password_hashed) {
>>   [..]
>>   (Some(password), _) if password.len() < ROOT_PASSWORD_MIN_LENGTH,
>>   [..]
>> }
>>
> 
> I'll rework it a bit, match definitely seems like the better fit here!

I also thought about suggesting an Enum here like

enum AnswerPassword {
  Raw(...)
  Hashed(...)
}

But that's probably a bit more involved and idk how it would work with
the answer file format, so hard for me to tell if feasible with the
current state of things


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [pve-devel] [PATCH installer 3/3] auto-installer: raise minimum root password length to 8 characters
  2024-10-07  9:55       ` Stefan Hanreich
@ 2024-10-07 10:02         ` Christoph Heiss
  2024-10-07 10:39           ` Stefan Hanreich
  0 siblings, 1 reply; 9+ messages in thread
From: Christoph Heiss @ 2024-10-07 10:02 UTC (permalink / raw)
  To: Stefan Hanreich; +Cc: Proxmox VE development discussion

On Mon, Oct 07, 2024 at 11:55:19AM GMT, Stefan Hanreich wrote:
> On 10/7/24 11:52, Christoph Heiss wrote:
> > Thanks for the review!
> >
> > On Mon, Oct 07, 2024 at 11:49:02AM GMT, Stefan Hanreich wrote:
> >> On 10/7/24 11:22, Christoph Heiss wrote:
> > [..]
> >>> @@ -309,6 +310,10 @@ fn verify_root_password_settings(answer: &Answer) -> Result<()> {
> >>>      } else if answer.global.root_password.is_none() && answer.global.root_password_hashed.is_none()
> >>>      {
> >>>          bail!("One of `global.root_password` or `global.root_password_hashed` must be set");
> >>> +    } else if answer.global.root_password.is_some()
> >>> +        && answer.global.root_password.as_ref().map(|s| s.len()) < Some(ROOT_PASSWORD_MIN_LENGTH)
> >>> +    {
> >>> +        bail!("`global.root_password` must be at least {ROOT_PASSWORD_MIN_LENGTH} characters long");
> >>>      } else {
> >>>          Ok(())
> >>>      }
> >>
> >> maybe match is better at this point?
> >>
> >> Something like
> >>
> >> match (answer.global.root_password, answer.global.root_password_hashed) {
> >>   [..]
> >>   (Some(password), _) if password.len() < ROOT_PASSWORD_MIN_LENGTH,
> >>   [..]
> >> }
> >>
> >
> > I'll rework it a bit, match definitely seems like the better fit here!
>
> I also thought about suggesting an Enum here like
>
> enum AnswerPassword {
>   Raw(...)
>   Hashed(...)
> }
>
> But that's probably a bit more involved and idk how it would work with
> the answer file format, so hard for me to tell if feasible with the
> current state of things

Sounds like a good idea tho. Shouldn't be that much work, other than
maybe a custom (small) de-/serializer for the answer file and config
output.


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [pve-devel] [PATCH installer 3/3] auto-installer: raise minimum root password length to 8 characters
  2024-10-07 10:02         ` Christoph Heiss
@ 2024-10-07 10:39           ` Stefan Hanreich
  0 siblings, 0 replies; 9+ messages in thread
From: Stefan Hanreich @ 2024-10-07 10:39 UTC (permalink / raw)
  To: Christoph Heiss; +Cc: Proxmox VE development discussion



On 10/7/24 12:02, Christoph Heiss wrote:
> Sounds like a good idea tho. Shouldn't be that much work, other than
> maybe a custom (small) de-/serializer for the answer file and config
> output.

Possibly even untagged and rename serde directive could suffice
(together with a FromStr impl maybe?)


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-10-07 10:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-10-07  9:22 [pve-devel] [PATCH installer 0/3] raise minimum root password length to 8 characters Christoph Heiss
2024-10-07  9:22 ` [pve-devel] [PATCH installer 1/3] proxinstall: " Christoph Heiss
2024-10-07  9:22 ` [pve-devel] [PATCH installer 2/3] tui: " Christoph Heiss
2024-10-07  9:22 ` [pve-devel] [PATCH installer 3/3] auto-installer: " Christoph Heiss
2024-10-07  9:49   ` Stefan Hanreich
2024-10-07  9:52     ` Christoph Heiss
2024-10-07  9:55       ` Stefan Hanreich
2024-10-07 10:02         ` Christoph Heiss
2024-10-07 10:39           ` Stefan Hanreich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal