diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml index 6f783ca..9dae285 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.75 + image: naeel/fission-console:v1.3.76 imagePullPolicy: Always ports: - containerPort: 8090 diff --git a/console/ui/index.html b/console/ui/index.html index 45c597b..004818d 100644 --- a/console/ui/index.html +++ b/console/ui/index.html @@ -102,7 +102,7 @@
NUBES
FISSION CONSOLE
-
v1.3.75
+
v1.3.76
@@ -510,7 +510,7 @@
- v1.3.75 + v1.3.76
diff --git a/console/ui/js/functions.js b/console/ui/js/functions.js index 411b7d5..faffffa 100644 --- a/console/ui/js/functions.js +++ b/console/ui/js/functions.js @@ -250,6 +250,11 @@ async function submitEdit() { var isTfFn = /^tf-/.test(name); if (!isTfFn) { var envVars = collectEnvVars('e'); + // Проверка формата ключей + var invalidKeys = envVars.map(function(ev) { return ev.name; }).filter(function(k) { return !ENV_KEY_RE.test(k); }); + if (invalidKeys.length > 0) { + throw new Error('Недопустимые имена переменных: ' + invalidKeys.join(', ') + ' (только латиница, цифры, _, не с цифры)'); + } // Проверка на дубли ключей var keys = envVars.map(function(ev) { return ev.name; }); var dupes = keys.filter(function(k, i) { return keys.indexOf(k) !== i; }); @@ -318,7 +323,7 @@ function makeEnvVarRow(prefix, key, val, readOnly, idx) { row.dataset.envIdx = idx; var kInput = document.createElement('input'); - kInput.placeholder = 'KEY'; + kInput.placeholder = 'KEY (A-Z, a-z, 0-9, _)'; kInput.value = key; kInput.disabled = readOnly; kInput.style.cssText = 'flex:1; font-size:12px; font-family:monospace;'; @@ -354,7 +359,9 @@ function makeEnvVarRow(prefix, key, val, readOnly, idx) { return row; } -// highlightDupeKeys подсвечивает красным все поля KEY с одинаковыми именами +var ENV_KEY_RE = /^[A-Za-z_][A-Za-z0-9_]*$/; + +// highlightDupeKeys подсвечивает красным все поля KEY с одинаковыми именами или невалидным именем function highlightDupeKeys(prefix) { var list = document.getElementById(prefix + '-envvars-list'); if (!list) return; @@ -363,8 +370,9 @@ function highlightDupeKeys(prefix) { inputs.forEach(function(inp) { var k = inp.value.trim(); var isDupe = k !== '' && keys.filter(function(x) { return x === k; }).length > 1; - inp.style.outline = isDupe ? '2px solid #f44' : ''; - inp.title = isDupe ? 'Дублирующийся ключ!' : ''; + var isInvalid = k !== '' && !ENV_KEY_RE.test(k); + inp.style.outline = (isDupe || isInvalid) ? '2px solid #f44' : ''; + inp.title = isDupe ? 'Дублирующийся ключ!' : isInvalid ? 'Только латиница, цифры и _. Не начинается с цифры.' : ''; }); }