From 5757e1e46a8c1591dfb3cb20441cf1fa91e8b63b Mon Sep 17 00:00:00 2001 From: fontvielle Date: Wed, 21 Oct 2026 11:47:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B0=D0=BF=D0=BA=D0=B8=20=D1=88=D0=BB?= =?UTF-8?q?=D1=8E=D0=B7=D0=B0:=20=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B8=D1=80=D1=83=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=B8=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D1=81=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D1=83=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83?= =?UTF-8?q?=D0=B7=D0=BA=D0=B5=20(=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BF=D0=BA=D0=B8=20=D0=B5=D1=89=D1=91=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Раньше поле пароля было пустым с подсказкой «пусто — прежний», и оператору приходилось нажимать «Сгенерировать». Теперь при открытии страницы, если папки шлюза ещё не открыты по сети, bj сразу подставляет в поле новый надёжный пароль (genPw, 16 символов, crypto.getRandomValues) и показывает его. Оператор может оставить его или вписать свой. Если папки уже открыты — поле остаётся пустым (пустое = оставить прежний пароль при повторном сохранении). Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn --- deploy/release/component-versions.json | 24 +++++++++---------- .../lkgateway/web/templates/part_igate.html | 9 +++---- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/deploy/release/component-versions.json b/deploy/release/component-versions.json index ddfd1f0..c7dcc5f 100644 --- a/deploy/release/component-versions.json +++ b/deploy/release/component-versions.json @@ -1,27 +1,27 @@ { "bj-component-install": { - "fingerprint": "61cfd9db5bd1d70d74f6fde0f6c37d18747c8310197a9942abc7139dc3b86687", - "version": "2026.10.21.1" + "fingerprint": "c3a389928dd5c099e7fa4a15f5bdd3de43f3eec500b42517431f914646fd9c9e", + "version": "2026.10.21.2" }, "bj-installer": { - "fingerprint": "8598d4f35fc05d882596e8e4a599f44443cbfa3b0f6ea5c4de4ecbfadd5dab01", - "version": "2026.10.21.1" + "fingerprint": "1f4e11a07b96994ddb328db07df13e20c3c2df1d966c949adc53cceac01aa52e", + "version": "2026.10.21.2" }, "bj-lk": { - "fingerprint": "48a6cac59febba3392c854423b729f426383d86d35514578b5546786c8ab3355", - "version": "2026.10.13.1" + "fingerprint": "37bf4ba7d13bc3cfb52032dfb95851b9d5d702f1a2244e185a1b6a5b87a5cfc6", + "version": "2026.10.21.2" }, "bj-npr": { - "fingerprint": "357f7562645da12ec4689927f5599a2aa22996a34bd82b36f80ece26629ac036", - "version": "2026.10.13.1" + "fingerprint": "5b5301b0c18bfd001bdff3f3b35a9ff6ccccb4f24eb4b88b0334d34d1b63df81", + "version": "2026.10.21.2" }, "bj-quikexport": { - "fingerprint": "136cb4068888239e792d4eaedb973f430ce01542d124066fc914847a147c3549", - "version": "2026.10.13.1" + "fingerprint": "f7761571352f17173c10989f72a3a9686e58cfc0c0a78ae7299bacbe31d36df6", + "version": "2026.10.21.2" }, "bj-server": { - "fingerprint": "c0acd146bee349ef49b6743700430b8a3ecd6868037bad5e3d2a3ea9b5d4ca04", - "version": "2026.10.21.1" + "fingerprint": "4d5c02313064289f1fefb94d2f51c0a89da56fc2921ad0c46848783a92171ce2", + "version": "2026.10.21.2" }, "crypto-service.jar": { "fingerprint": "2c4fd536bc9b1c20c69a70e8dcd374a61847b263aeb2e474c45debb01fbd8233", diff --git a/internal/lkgateway/web/templates/part_igate.html b/internal/lkgateway/web/templates/part_igate.html index 57775e2..ba158aa 100644 --- a/internal/lkgateway/web/templates/part_igate.html +++ b/internal/lkgateway/web/templates/part_igate.html @@ -211,16 +211,17 @@ stl.querySelectorAll('[data-copy]').forEach(function(b){ b.onclick=function(){ (window.bjCopy||function(t){navigator.clipboard&&navigator.clipboard.writeText(t)})(b.dataset.copy); b.textContent='Скопировано ✓'; setTimeout(function(){b.textContent='Скопировать'},1500); }; }); } else stl.innerHTML='Сейчас закрыты. Выберите, как входить, отметьте «Открыть папки шлюза по сети» и сохраните — здесь появится адрес для проводника.'; f.enabled.checked=!!d.on; if(d.mode!=='domain' && d.user) f.user.value=d.user; + if(!d.on && !f.password.value){ f.password.type='text'; f.password.value=genPw(); + var pn=document.getElementById('ig-sh-pwnote'); if(pn) pn.textContent='Пароль создан автоматически — запишите его (или впишите свой). Его вводят в Windows при первом открытии папок; позже bj его не покажет.'; } sync(); } function load(){ return fetch('/admin/setup/igate/share',{cache:'no-store'}).then(function(r){return r.json()}).then(show).catch(function(){ stl.textContent='Состояние не получено.'; }); } f.addEventListener('change',function(e){ if(e.target.name==='mode') sync(); }); + function genPw(){ var cs='ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789', a=new Uint32Array(16), s=''; crypto.getRandomValues(a); for(var i=0;i<16;i++) s+=cs[a[i]%cs.length]; return s; } var genbtn=document.getElementById('ig-sh-gen'); if(genbtn) genbtn.addEventListener('click',function(){ - var cs='ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789', a=new Uint32Array(16), s=''; - crypto.getRandomValues(a); for(var i=0;i<16;i++) s+=cs[a[i]%cs.length]; - f.password.type='text'; f.password.value=s; f.password.focus(); f.password.select(); - o.innerHTML='Пароль создан — запишите его перед сохранением.'; + f.password.type='text'; f.password.value=genPw(); f.password.focus(); f.password.select(); + o.innerHTML='Новый пароль создан — запишите его перед сохранением.'; }); f.addEventListener('submit',function(e){ e.preventDefault(); var p=new URLSearchParams(), url='/admin/setup/igate/share', d=mode()==='domain';