* [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] 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] [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] 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
* [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
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