diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml
index 03fb133..b0a4418 100644
--- a/console/deploy/console.yaml
+++ b/console/deploy/console.yaml
@@ -55,7 +55,7 @@ spec:
serviceAccountName: fission-console
containers:
- name: console
- image: naeel/fission-console:v1.3.68
+ image: naeel/fission-console:v1.3.69
imagePullPolicy: Always
ports:
- containerPort: 8090
diff --git a/console/ui/index.html b/console/ui/index.html
index 22a5c30..88cc3b4 100644
--- a/console/ui/index.html
+++ b/console/ui/index.html
@@ -102,7 +102,7 @@
NUBES
FISSION CONSOLE
- v1.3.68
+ v1.3.69
@@ -485,7 +485,7 @@
- v1.3.68
+ v1.3.69
diff --git a/console/ui/js/modals.js b/console/ui/js/modals.js
index f3e28b4..8f1ae35 100644
--- a/console/ui/js/modals.js
+++ b/console/ui/js/modals.js
@@ -193,11 +193,11 @@ function openInfo(name, btn) {
return;
}
- // copyBtn — кнопка копирования конкретного значения в буфер.
+ // copyBtn — кнопка копирования конкретного значения через data-атрибут (безопасно для любых символов).
function copyBtn(val) {
if (!val || val === '-') return '';
- var safe = val.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
- return ' ';
+ var encoded = val.replace(/&/g, '&').replace(/"/g, '"');
+ return ' ';
}
// Строки без кнопки копирования (только отображение).
@@ -221,7 +221,8 @@ function openInfo(name, btn) {
var curlFull = 'curl -H "X-Auth-Token: ' + token + '" -X ' + method + ' "' + externalUrl + '"';
// В отображении скрываем токен — показываем только метод и URL.
var curlDisplay = 'curl ... -X ' + method + ' "' + externalUrl + '"';
- var curlSafe = curlFull.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
+ // Храним полную команду в data-атрибуте (HTML-encode), читаем через dataset — безопасно для любых символов.
+ var curlAttr = curlFull.replace(/&/g, '&').replace(/"/g, '"');
var html = [
'' + labelTd('Имя') + withCopy(info.name) + '
',
@@ -238,7 +239,7 @@ function openInfo(name, btn) {
'' + labelTd('curl') +
'| ' +
h(curlDisplay) +
- ' ' +
+ ' ' +
' |
',
].join('');