// Команда bj-lk — Личный кабинет клиента (modules/lk), отдельный модуль, обновляется независимо. // // Ставится на любой веб-сервер клиента. Сам к базам данных НЕ подключается — // работает только с bj-server по HTTP API с ключом доступа. Клиент входит по // логину/паролю, видит свои бумаги и подаёт заявку на перевод другому брокеру. // // Настройка — через переменные окружения (служба: /etc/bj/lk.env) или флаги: // // BJ_URL адрес bj-server (напр. https://bj.example.ru) // BJ_KEY ключ доступа модуля (выдаётся в админке bj-server) // LISTEN адрес прослушивания (по умолчанию :8081) // LK_TITLE название кабинета в шапке (по умолчанию «Личный кабинет») package main import ( "flag" "fmt" "log" "net/http" "os" "time" "git.zetit.ru/zuevav/Bridge-and-Join-s/modules/lk" ) // version — версия модуля (go build -ldflags "-X main.version=…"). var version = "0.1.0" func main() { cfg := lk.Config{BJURL: os.Getenv("BJ_URL"), BJKey: os.Getenv("BJ_KEY"), Title: os.Getenv("LK_TITLE")} listen := os.Getenv("LISTEN") flag.StringVar(&cfg.BJURL, "bj-url", cfg.BJURL, "адрес bj-server (https://...)") flag.StringVar(&cfg.BJKey, "bj-key", cfg.BJKey, "ключ доступа модуля") flag.StringVar(&listen, "listen", listen, "адрес прослушивания (:8081)") flag.StringVar(&cfg.Title, "title", cfg.Title, "заголовок кабинета") showVersion := flag.Bool("version", false, "показать версию") flag.Parse() if *showVersion { fmt.Println("bj-lk", version) return } if listen == "" { listen = ":8081" } srv, err := lk.New(cfg) if err != nil { log.Fatalf("bj-lk: %v", err) } if !srv.Configured() { log.Printf("bj-lk: не заданы BJ_URL и BJ_KEY — кабинет показывает страницу настройки (см. /etc/bj/lk.env)") } log.Printf("bj-lk %s (Личный кабинет) слушает %s, bj-server: %s", version, listen, cfg.BJURL) hs := &http.Server{Addr: listen, Handler: srv.Handler(), ReadHeaderTimeout: 5 * time.Second} if err := hs.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatal(err) } }