HTTPS: http:// перебрасывается на https://; имя сервера — с проверкой DNS; скрипты DEPO при обновлении

Порт HTTPS принимает и http://: 308 на https:// того же имени и порта
(было «Client sent an HTTP request to an HTTPS server»).

Доменное имя сервера сохраняется, только если оно есть в DNS и указывает
на этот сервер; иначе — что добавить/исправить (запись A → IP сервера).
Сообщение об успехе — с адресом https://имя:порт/ и честно про
самоподписанный сертификат.

Обновление bj с новыми процедурами DEPO: отпечаток установленного набора
(depo_procs_applied) не совпадает со встроенным — на главной и в
настройках плашка «требуются повышенные права на базу данных» с вводом
логина/пароля администратора SQL (не сохраняются) и «Применить скрипты».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-22 13:22:34 +03:00
parent b652baba63
commit 1952f020a1
10 changed files with 222 additions and 18 deletions
@@ -1,4 +1,5 @@
{{define "content"}}
{{template "depoProcsBanner" .}}
{{/* ===== Оператор-дашборд (Apple-стиль): приветствие → статус → плитки задач → сводка ===== */}}
<div class="hero">
@@ -1,4 +1,5 @@
{{define "content"}}
{{template "depoProcsBanner" .}}
<script>if(/^#(sec-)?(tests|units)$/.test(location.hash)) location.replace('/admin/status#diag');</script>
{{if .Flash}}<div style="padding:12px 16px;background:var(--ok-weak);background:var(--ok-weak);border-radius:8px;margin-bottom:16px">{{.Flash}}</div>{{end}}
@@ -939,7 +940,7 @@
<input id="set-hostnames" name="hostnames" value="{{range $i, $n := .Settings.HTTPS.Hostnames}}{{if $i}} {{end}}{{$n}}{{end}}" placeholder="например, m2m.corp.example.ru (несколько — через пробел)" style="min-width:320px;flex:1">
<button type="submit" class="btn">Сохранить</button>
</div>
<p class="muted" style="font-size:12.5px;margin:4px 0 0">bj впишет имя в свой сертификат — интерфейс будет открываться по нему без предупреждения о несовпадении имени. DNS-запись заводит администратор сети.</p>
<p class="muted" style="font-size:12.5px;margin:4px 0 0">Сначала администратор сети заводит в DNS запись A на этот сервер ({{range $i, $ip := serverIPs}}{{if $i}}, {{end}}{{$ip}}{{end}}); bj проверит, что имя находится и указывает сюда, и впишет его в сертификат. Адрес bj — <code>https://имя:{{httpsPort}}/</code>.</p>
</form>
<details style="margin-top:8px"><summary style="cursor:pointer;color:var(--accent)">Сертификат организации</summary>
<form method="post" action="/admin/setup/https/cert" enctype="multipart/form-data" style="display:grid;gap:8px;max-width:520px;margin-top:8px">
@@ -1,3 +1,14 @@
{{define "depoProcsBanner"}}{{if and (can "settings") depoProcsPending}}<div class="card" id="depo-procs-pending" style="border-color:var(--warn);background:var(--warn-weak)">
<h2 style="margin:0 0 6px">Обновление bj требует применить скрипты в базе DEPO</h2>
<p style="margin:0 0 8px">В этой версии bj обновлены процедуры обработки M2M в DEPO ({{depoProcOrder}}). Для их установки нужны <b>повышенные права на базу данных</b>: введите логин и пароль администратора SQL (sysadmin, обычно sa). Они используются один раз и не сохраняются.</p>
<form method="post" action="/admin/setup/fancy/depo-procs/install" style="display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end" onsubmit="return confirm('Применить обновлённые процедуры в базе DEPO? CREATE OR ALTER — данные не меняются.')">
<input type="hidden" name="section" value="sec-fancy-depo-procs">
<label style="display:flex;flex-direction:column;gap:3px">Логин администратора SQL<input type="text" name="admin_user" autocomplete="off" placeholder="sa" required></label>
<label style="display:flex;flex-direction:column;gap:3px">Пароль<input type="password" name="admin_password" autocomplete="new-password" required></label>
<button type="submit" class="btn">Применить скрипты</button>
<a href="/admin/setup/fancy/depo-procs/script.sql" class="muted" style="font-size:12.5px">или скачать скрипт для администратора БД</a>
</form>
</div>{{end}}{{end}}
{{define "layout"}}<!DOCTYPE html>
<html lang="ru" data-theme="light">
<head>
@@ -116,7 +116,7 @@
<div class="card" id="sec-fancy-depo-procs">
<h2><span class="dot {{if .Settings.Fancy.DepoProcCheckOK}}ok{{else}}warn{{end}}"></span>Процедуры обработки bj2depo</h2>
<p class="muted">Процедуры <code>FTV_M2M_PROCESS_*</code> и <code>FTV_M2M_JOB</code> встроены в bj. Сначала «Проверить возможности» (ничего не меняет), затем «Установить» — bj выполнит их в базе DEPO в порядке WIRING&rarr;OPERATION&rarr;EVENTS&rarr;CREATE&rarr;JOB и выдаст логину bj право запуска.</p>
<p class="muted">Процедуры <code>FTV_M2M_*</code> встроены в bj. Сначала «Проверить возможности» (ничего не меняет), затем «Установить» — bj выполнит их в базе DEPO в порядке {{depoProcOrder}} и выдаст логину bj право запуска.</p>
<form method="post" style="display:grid;gap:10px;max-width:720px">
<input type="hidden" name="section" value="sec-fancy-depo-procs">
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px">