all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Shannon Sterz <s.sterz@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH datacenter-manager] ui: wizzard/edit remote: validate remote host and port
Date: Tue, 16 Dec 2025 16:37:36 +0100	[thread overview]
Message-ID: <20251216153736.363490-1-s.sterz@proxmox.com> (raw)

we did not validate these fields before, leading to situations where
users could enter a value with a schema here (such as "https://") that
lead to errors down the line.

Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
we might not want to call it a "Web UI URL" when editing a remote. a url
indicates that i should be able, for example, to copy the url from my
browser's address bar and paste it here. this isn't the case. we may
want to call it "<IP/Hostname>:Port" just like we do in the add dialog.

 lib/pdm-api-types/src/lib.rs          | 3 +++
 ui/src/remotes/edit_remote.rs         | 2 ++
 ui/src/remotes/wizard_page_connect.rs | 3 ++-
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/pdm-api-types/src/lib.rs b/lib/pdm-api-types/src/lib.rs
index 5daaa3f..d4cc7ef 100644
--- a/lib/pdm-api-types/src/lib.rs
+++ b/lib/pdm-api-types/src/lib.rs
@@ -137,6 +137,9 @@ pub const HOST_PORT_FORMAT: ApiStringFormat = ApiStringFormat::Pattern(&HOST_POR
 pub const HOST_OPTIONAL_PORT_FORMAT: ApiStringFormat =
     ApiStringFormat::Pattern(&HOST_OPTIONAL_PORT_REGEX);
 pub const HTTP_URL_FORMAT: ApiStringFormat = ApiStringFormat::Pattern(&HTTP_URL_REGEX);
+pub const HOST_OPTIONAL_PORT_SCHEMA: Schema = StringSchema::new("A host with an optional port.")
+    .format(&HOST_OPTIONAL_PORT_FORMAT)
+    .schema();

 pub const DAILY_DURATION_FORMAT: ApiStringFormat =
     ApiStringFormat::VerifyFn(|s| parse_daily_duration(s).map(drop));
diff --git a/ui/src/remotes/edit_remote.rs b/ui/src/remotes/edit_remote.rs
index 925d11a..1b6b580 100644
--- a/ui/src/remotes/edit_remote.rs
+++ b/ui/src/remotes/edit_remote.rs
@@ -1,6 +1,7 @@
 use std::rc::Rc;

 use anyhow::Error;
+use pdm_api_types::HOST_OPTIONAL_PORT_SCHEMA;
 use serde_json::Value;
 use yew::html::IntoEventCallback;
 use yew::virtual_dom::{VComp, VNode};
@@ -118,6 +119,7 @@ fn edit_remote_input_panel(_form_ctx: &FormContext, remote_id: &str) -> Html {
             tr!("Web UI URL"),
             Field::new()
                 .name("web-url")
+                .schema(&HOST_OPTIONAL_PORT_SCHEMA)
                 .placeholder(tr!("Use first endpoint.")),
         )
         .with_custom_child(
diff --git a/ui/src/remotes/wizard_page_connect.rs b/ui/src/remotes/wizard_page_connect.rs
index fb04f60..b850b5c 100644
--- a/ui/src/remotes/wizard_page_connect.rs
+++ b/ui/src/remotes/wizard_page_connect.rs
@@ -15,7 +15,7 @@ use pwt_macros::builder;
 use proxmox_yew_comp::{KVGrid, KVGridRow, SchemaValidation, WizardPageRenderInfo};

 use pdm_api_types::remotes::{RemoteType, TlsProbeOutcome};
-use pdm_api_types::CERT_FINGERPRINT_SHA256_SCHEMA;
+use pdm_api_types::{CERT_FINGERPRINT_SHA256_SCHEMA, HOST_OPTIONAL_PORT_SCHEMA};
 use proxmox_acme_api::CertificateInfo;

 #[derive(Clone, PartialEq, Properties)]
@@ -242,6 +242,7 @@ impl Component for PdmWizardPageConnect {
                 Field::new()
                     .name("hostname")
                     .placeholder(tr!("<IP/Hostname>:Port"))
+                    .schema(&HOST_OPTIONAL_PORT_SCHEMA)
                     .required(true),
             )
             .with_large_field(
--
2.47.3



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


                 reply	other threads:[~2025-12-16 15:36 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251216153736.363490-1-s.sterz@proxmox.com \
    --to=s.sterz@proxmox.com \
    --cc=pdm-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal