НПР / УДС — отдельная служба bj-npr
Модуль вынесен в modules/npr + cmd/bj-npr (127.0.0.1:8083), обновляется независимо от ядра. Служба читает подключение из setup.json и принимает запросы только со служебным ключом модулей (/var/lib/bj/.bj/module.key, создаёт bj-server). Полные страницы отдаются фрагментом (X-BJ-Layout: page). bj-server хранит настройки и проверку подключения, проксирует /admin/npr после входа, прав и лицензии и встраивает страницы модуля в общий макет (admin.modulePage); если служба не отвечает — понятная страница. Unit bj-npr.service встроен в установщик, установщик включает службы установленных модулей; build-release.sh собирает bj-npr. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// Command bj-npr — служба модуля «НПР / УДС» (modules/npr), обновляется независимо от ядра bj.
|
||||
//
|
||||
// Слушает только локальный адрес: пользователи работают через bj-server, который проверяет вход,
|
||||
// права и лицензию и проксирует раздел /admin/npr со служебным ключом.
|
||||
//
|
||||
// bj-npr [-addr 127.0.0.1:8083] [-setup /var/lib/bj/.bj/setup.json] [-key /var/lib/bj/.bj/module.key]
|
||||
// bj-npr -version
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"git.zetit.ru/zuevav/Bridge-and-Join-s/modules/npr"
|
||||
)
|
||||
|
||||
// version — версия модуля (go build -ldflags "-X main.version=…").
|
||||
var version = "0.1.0"
|
||||
|
||||
func main() {
|
||||
addr := flag.String("addr", "127.0.0.1:8083", "адрес службы (только локальный)")
|
||||
setup := flag.String("setup", "/var/lib/bj/.bj/setup.json", "настройки bj (раздел npr)")
|
||||
key := flag.String("key", "/var/lib/bj/.bj/module.key", "служебный ключ модулей (создаёт bj-server)")
|
||||
showVersion := flag.Bool("version", false, "показать версию")
|
||||
flag.Parse()
|
||||
if *showVersion {
|
||||
fmt.Println("bj-npr", version)
|
||||
return
|
||||
}
|
||||
srv, err := npr.New(npr.Config{SetupPath: *setup, KeyPath: *key})
|
||||
if err != nil {
|
||||
log.Fatalf("bj-npr: %v", err)
|
||||
}
|
||||
log.Printf("bj-npr %s: слушаю %s", version, *addr)
|
||||
hs := &http.Server{Addr: *addr, Handler: srv.Handler(), ReadHeaderTimeout: 10 * time.Second}
|
||||
if err := hs.ListenAndServe(); err != nil {
|
||||
log.Printf("bj-npr: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user