Fixes an issue where pasting an OCI image reference with a additional prefix (for example docker://registry.fedoraproject.org/fedora:latest) into the reference field caused the tag parser to split the string incorrectly. With this patch the tag is only moved when a valid OCI reference is entered.
Signed-off-by: Filip Schauer <[email protected]> --- www/manager6/storage/TemplateView.js | 30 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/www/manager6/storage/TemplateView.js b/www/manager6/storage/TemplateView.js index d570efb4..6ce6d1f6 100644 --- a/www/manager6/storage/TemplateView.js +++ b/www/manager6/storage/TemplateView.js @@ -201,15 +201,31 @@ Ext.define('PVE.storage.OciRegistryPull', { let view = me.getView(); let tagField = view.down('[name=tag]'); tagField.setComboItems([]); + let matches = me.parseReference(value); + if (matches) { + let ref = matches[0]; + let tag = matches[1]; + + if (tag) { + field.setValue(ref); + tagField.setValue(tag); + tagField.focus(); + } else { + tagField.clearValue(); + } + } + }, - let parts = value.split(':'); - if (parts.length > 1) { - field.setValue(parts[0]); - tagField.setValue(parts[1]); - tagField.focus(); - } else { - tagField.clearValue(); + parseReference: function (value) { + const re = + /^((?:(?:[a-zA-Z\d]|[a-zA-Z\d][a-zA-Z\d-]*[a-zA-Z\d])(?:\.(?:[a-zA-Z\d]|[a-zA-Z\d][a-zA-Z\d-]*[a-zA-Z\d]))*(?::\d+)?\/)?[a-z\d]+(?:(?:[._]|__|[-]*)[a-z\d]+)*(?:\/[a-z\d]+(?:(?:[._]|__|[-]*)[a-z\d]+)*)*)(:(\w[\w.-]{0,127}))?$/; + let matches = value.match(re); + if (matches) { + let ref = matches[1]; + let tag = matches[3]; + return [ref, tag]; } + return undefined; }, queryTags: function (field) { -- 2.47.3 _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
