public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH widget-toolkit/proxmox-backup] improve ipv6/ports for remotes gui
@ 2020-10-01  7:57 Dominik Csapak
  2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes Dominik Csapak
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Dominik Csapak @ 2020-10-01  7:57 UTC (permalink / raw)
  To: pbs-devel

by using regex to parse out the port and only show it optionally

widget-toolkit:

Dominik Csapak (2):
  Utils: improve matching groups of ip/host regexes
  Toolkit: add HostPort vtype

 src/Toolkit.js | 8 ++++++++
 src/Utils.js   | 8 ++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

proxmox-backup:

Dominik Csapak (2):
  ui: RemoteView: improve host columns
  ui: RemoteEdit: remove port field and parse it from host field

 www/config/RemoteView.js | 11 +++++---
 www/window/RemoteEdit.js | 58 ++++++++++++++++++++++++++++++++++------
 2 files changed, 57 insertions(+), 12 deletions(-)

-- 
2.20.1





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

* [pbs-devel] [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes
  2020-10-01  7:57 [pbs-devel] [PATCH widget-toolkit/proxmox-backup] improve ipv6/ports for remotes gui Dominik Csapak
@ 2020-10-01  7:57 ` Dominik Csapak
  2020-10-01  8:10   ` [pbs-devel] applied: " Dietmar Maurer
  2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 2/2] Toolkit: add HostPort vtype Dominik Csapak
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Dominik Csapak @ 2020-10-01  7:57 UTC (permalink / raw)
  To: pbs-devel

we only ever want to match the whole hostname/ip, never just some part of it
and we do not want to have the ':' as part of the port

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/Utils.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/Utils.js b/src/Utils.js
index 8595cce..232c97c 100644
--- a/src/Utils.js
+++ b/src/Utils.js
@@ -873,12 +873,12 @@ utilities: {
 	me.IP64_match = new RegExp("^(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + ")$");
 	me.IP64_cidr_match = new RegExp("^(?:" + IPV6_REGEXP + "/" + IPV6_CIDR_MASK + ")|(?:" + IPV4_REGEXP + "/" + IPV4_CIDR_MASK + ")$");
 
-	let DnsName_REGEXP = "(?:(([a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)\\.)*([A-Za-z0-9]([A-Za-z0-9\\-]*[A-Za-z0-9])?))";
+	let DnsName_REGEXP = "(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?)\\.)*(?:[A-Za-z0-9](?:[A-Za-z0-9\\-]*[A-Za-z0-9])?))";
 	me.DnsName_match = new RegExp("^" + DnsName_REGEXP + "$");
 
-	me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(:\\d+)?$");
-	me.HostPortBrackets_match = new RegExp("^\\[(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](:\\d+)?$");
-	me.IP6_dotnotation_match = new RegExp("^" + IPV6_REGEXP + "(\\.\\d+)?$");
+	me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(?::(\\d+))?$");
+	me.HostPortBrackets_match = new RegExp("^\\[(" + IPV6_REGEXP + "|" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](?::(\\d+))?$");
+	me.IP6_dotnotation_match = new RegExp("^(" + IPV6_REGEXP + ")(?:\\.(\\d+))?$");
 	me.Vlan_match = /^vlan(\\d+)/;
 	me.VlanInterface_match = /(\\w+)\\.(\\d+)/;
     },
-- 
2.20.1





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

* [pbs-devel] [PATCH widget-toolkit 2/2] Toolkit: add HostPort vtype
  2020-10-01  7:57 [pbs-devel] [PATCH widget-toolkit/proxmox-backup] improve ipv6/ports for remotes gui Dominik Csapak
  2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes Dominik Csapak
@ 2020-10-01  7:57 ` Dominik Csapak
  2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 1/2] ui: RemoteView: improve host columns Dominik Csapak
  2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: RemoteEdit: remove port field and parse it from host field Dominik Csapak
  3 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2020-10-01  7:57 UTC (permalink / raw)
  To: pbs-devel

for easy checking textfield for a single host:port

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/Toolkit.js | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/Toolkit.js b/src/Toolkit.js
index d528ea7..f706036 100644
--- a/src/Toolkit.js
+++ b/src/Toolkit.js
@@ -147,6 +147,14 @@ Ext.apply(Ext.form.field.VTypes, {
     },
     DnsOrIpText: gettext('Not a valid DNS name or IP address.'),
 
+    HostPort: function(v) {
+	return Proxmox.Utils.HostPort_match.test(v) ||
+		Proxmox.Utils.HostPortBrackets_match.test(v) ||
+		Proxmox.Utils.IP6_dotnotation_match.test(v);
+    },
+
+    HostPortText: gettext('Not a valid hosts'),
+
     HostList: function(v) {
 	let list = v.split(/[ ,;]+/);
 	let i;
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 1/2] ui: RemoteView: improve host columns
  2020-10-01  7:57 [pbs-devel] [PATCH widget-toolkit/proxmox-backup] improve ipv6/ports for remotes gui Dominik Csapak
  2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes Dominik Csapak
  2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 2/2] Toolkit: add HostPort vtype Dominik Csapak
@ 2020-10-01  7:57 ` Dominik Csapak
  2020-10-01  8:12   ` [pbs-devel] applied: " Dietmar Maurer
  2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: RemoteEdit: remove port field and parse it from host field Dominik Csapak
  3 siblings, 1 reply; 7+ messages in thread
From: Dominik Csapak @ 2020-10-01  7:57 UTC (permalink / raw)
  To: pbs-devel

do not show the default (8007) port
and only add brackets [] to ipv6 addresses if there is a port

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/config/RemoteView.js | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/www/config/RemoteView.js b/www/config/RemoteView.js
index 96788fc7..98f72bb5 100644
--- a/www/config/RemoteView.js
+++ b/www/config/RemoteView.js
@@ -4,12 +4,15 @@ Ext.define('pmx-remotes', {
 	{
 	    name: 'server',
 	    calculate: function(data) {
-		let host = data.host || "localhost";
+		let txt = data.host || "localhost";
 		let port = data.port || "8007";
-		if (Proxmox.Utils.IP64_match.test(host)) {
-		    host = `[${host}]`;
+		if (port.toString() !== "8007") {
+		    if (Proxmox.Utils.IP6_match.test(txt)) {
+			txt = `[${txt}]`;
+		    }
+		    txt += `:${port}`;
 		}
-		return `${host}:${port}`;
+		return txt;
 	    }
 	}
     ],
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 2/2] ui: RemoteEdit: remove port field and parse it from host field
  2020-10-01  7:57 [pbs-devel] [PATCH widget-toolkit/proxmox-backup] improve ipv6/ports for remotes gui Dominik Csapak
                   ` (2 preceding siblings ...)
  2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 1/2] ui: RemoteView: improve host columns Dominik Csapak
@ 2020-10-01  7:57 ` Dominik Csapak
  3 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2020-10-01  7:57 UTC (permalink / raw)
  To: pbs-devel

use our hostport regexes to parse out a potential port from the host field
and send it individually

this makes for a simpler and cleaner ui

this additionally checks the field for valid input before sending it to
the backend

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/window/RemoteEdit.js | 58 ++++++++++++++++++++++++++++++++++------
 1 file changed, 50 insertions(+), 8 deletions(-)

diff --git a/www/window/RemoteEdit.js b/www/window/RemoteEdit.js
index 7d0ea546..bf5c11fc 100644
--- a/www/window/RemoteEdit.js
+++ b/www/window/RemoteEdit.js
@@ -45,18 +45,45 @@ Ext.define('PBS.window.RemoteEdit', {
 	    {
 		xtype: 'proxmoxtextfield',
 		allowBlank: false,
-		name: 'host',
+		name: 'hostport',
+		submitValue: false,
+		vtype: 'HostPort',
 		fieldLabel: gettext('Host'),
+		listeners: {
+		    change: function(field, newvalue) {
+			let host = newvalue;
+			let port;
+
+			let match = Proxmox.Utils.HostPort_match.exec(newvalue);
+			if (match === null) {
+			    match = Proxmox.Utils.HostPortBrackets_match.exec(newvalue);
+			    if (match === null) {
+				match = Proxmox.Utils.IP6_dotnotation_match.exec(newvalue);
+			    }
+			}
+
+			if (match !== null) {
+			    host = match[1];
+			    if (match[2] !== undefined) {
+				port = match[2];
+			    }
+			}
+
+			field.up('inputpanel').down('field[name=host]').setValue(host);
+			field.up('inputpanel').down('field[name=port]').setValue(port);
+		    }
+		}
 	    },
 	    {
-		xtype: 'proxmoxintegerfield',
-		allowBlank: true,
-		minValue: 1,
-		maxValue: 2**16,
-		name: 'port',
-		emptyText: 8007,
+		xtype: 'proxmoxtextfield',
+		hidden: true,
+		name: 'host',
+	    },
+	    {
+		xtype: 'proxmoxtextfield',
+		hidden: true,
 		deleteEmpty: true,
-		fieldLabel: gettext('Port'),
+		name: 'port',
 	    },
 	],
 
@@ -95,6 +122,21 @@ Ext.define('PBS.window.RemoteEdit', {
 	],
     },
 
+    setValues: function(values) {
+	let me = this;
+
+	let host = values.host;
+	if (values.port !== undefined) {
+	    if (Proxmox.Utils.IP6_match.test(host)) {
+		host = `[${host}]`;
+	    }
+	    host += `:${values.port}`;
+	}
+	values.hostport = host;
+
+	return me.callParent([values]);
+    },
+
     getValues: function() {
 	let me = this;
 	let values = me.callParent(arguments);
-- 
2.20.1





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

* [pbs-devel] applied: [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes
  2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes Dominik Csapak
@ 2020-10-01  8:10   ` Dietmar Maurer
  0 siblings, 0 replies; 7+ messages in thread
From: Dietmar Maurer @ 2020-10-01  8:10 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied both patches




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

* [pbs-devel] applied: [PATCH proxmox-backup 1/2] ui: RemoteView: improve host columns
  2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 1/2] ui: RemoteView: improve host columns Dominik Csapak
@ 2020-10-01  8:12   ` Dietmar Maurer
  0 siblings, 0 replies; 7+ messages in thread
From: Dietmar Maurer @ 2020-10-01  8:12 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied both patches




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

end of thread, other threads:[~2020-10-01  8:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-01  7:57 [pbs-devel] [PATCH widget-toolkit/proxmox-backup] improve ipv6/ports for remotes gui Dominik Csapak
2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 1/2] Utils: improve matching groups of ip/host regexes Dominik Csapak
2020-10-01  8:10   ` [pbs-devel] applied: " Dietmar Maurer
2020-10-01  7:57 ` [pbs-devel] [PATCH widget-toolkit 2/2] Toolkit: add HostPort vtype Dominik Csapak
2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 1/2] ui: RemoteView: improve host columns Dominik Csapak
2020-10-01  8:12   ` [pbs-devel] applied: " Dietmar Maurer
2020-10-01  7:57 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: RemoteEdit: remove port field and parse it from host field Dominik Csapak

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