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 ? 'Только латиница, цифры и _. Не начинается с цифры.' : '';
});
}