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:
@@ -10,8 +10,10 @@ package lkgateway
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"database/sql"
|
||||
"embed"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
@@ -85,6 +87,28 @@ func depoProcOrderText(sep string) string {
|
||||
return strings.Join(parts, sep)
|
||||
}
|
||||
|
||||
// depoProcsHash — отпечаток набора процедур, который bj установит (с учётом правки под клиента).
|
||||
func depoProcsHash(f FancyMSSQLSettings) string {
|
||||
h := sha256.New()
|
||||
for _, p := range depoProcInstallOrder {
|
||||
h.Write([]byte(p.Name + "\n" + strings.TrimSpace(depoProcEffective(f, p.Name)) + "\n"))
|
||||
}
|
||||
return hex.EncodeToString(h.Sum(nil))[:16]
|
||||
}
|
||||
|
||||
// depoProcsPending — обновление bj принесло процедуры DEPO, которые ещё не применены в базе: bj работает с
|
||||
// DEPO (подключение есть, обработка включена), а отпечаток установленного набора не совпадает со встроенным.
|
||||
func depoProcsPending() bool {
|
||||
if globalRC == nil {
|
||||
return false
|
||||
}
|
||||
f := globalRC.Snapshot().Fancy
|
||||
if strings.TrimSpace(f.Server) == "" || (!f.DepoJobRun && f.DepoJobMode == "") {
|
||||
return false
|
||||
}
|
||||
return f.DepoProcsApplied != depoProcsHash(f)
|
||||
}
|
||||
|
||||
// depoProcList — порядок процедур для шаблона (редактор текстов).
|
||||
func depoProcList() []struct{ Name, File string } { return depoProcInstallOrder }
|
||||
|
||||
@@ -315,6 +339,7 @@ func (h *setupHandlers) installFancyDepoProcs(w http.ResponseWriter, r *http.Req
|
||||
pmsg, pok := depoProcCheck(ctx, h.rc)
|
||||
s = h.rc.Snapshot().Fancy
|
||||
s.DepoProcCheck, s.DepoProcCheckOK, s.DepoProcCheckAt = pmsg, pok, time.Now()
|
||||
s.DepoProcsApplied, s.DepoProcsAppliedAt = depoProcsHash(s), time.Now() // применено — плашка обновления уходит
|
||||
_ = h.rc.UpdateFancy(s)
|
||||
setupFlash(w, r, "Процедуры DEPO: "+msg+". Проверка обработки: "+pmsg)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user