From 64596657c9a74a403d30df586fef18dd188de93d Mon Sep 17 00:00:00 2001 From: Mathias Kurz Date: Fri, 12 Jul 2024 16:10:15 +0200 Subject: [PATCH] ui: signature external links formatting improvement --- ui/app/components/Signature/components/field/Field.js | 2 +- ui/app/components/Signature/utils.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ui/app/components/Signature/components/field/Field.js b/ui/app/components/Signature/components/field/Field.js index 9c45e2260..f515a471b 100644 --- a/ui/app/components/Signature/components/field/Field.js +++ b/ui/app/components/Signature/components/field/Field.js @@ -26,7 +26,7 @@ const getField = field => { switch (field.label.toLowerCase()) { case 'url': return ( - + {field.value} ); diff --git a/ui/app/components/Signature/utils.js b/ui/app/components/Signature/utils.js index 8e12b046b..6b75ed050 100644 --- a/ui/app/components/Signature/utils.js +++ b/ui/app/components/Signature/utils.js @@ -106,6 +106,15 @@ const getSignatureMetadata = rule => { return [...metadata, { label: 'created at', value: rule.created || 'unknown' }, { label: 'updated at', value: rule.updated || 'unknown' }]; }; +const formatReference = (value, label) => { + const trimmedValue = value.trim(); + const cleanValue = trimmedValue.endsWith(';)') ? trimmedValue.slice(0, -2) : trimmedValue; + if (value.startsWith('http://')) return cleanValue; + if (value.startsWith('https://')) return cleanValue; + if (label.toLowerCase() === 'url') return `https://${cleanValue}`; + return cleanValue; +}; + const getSignatureReferences = raw => raw .split('; ') @@ -113,7 +122,7 @@ const getSignatureReferences = raw => .filter(data => data.startsWith('reference:')) .map(data => data.slice(10)) .map(data => data.split(',')) - .map(([label, value]) => ({ label, value })); + .map(([label, value]) => ({ label, value: formatReference(value, label) })); export function decodeUnicodeEscapeSequence(str) { return str.replace(/\\u[\dA-F]{4}/gi, function (match) {