// Command bj-quikexport — служба модуля «Экспорт биржевой информации» (modules/quikexport): // управление ARQA quikexport, обновляется независимо от ядра bj. // // Слушает только локальный адрес: раздел настроек показывает bj-server, который проверяет вход, // права и лицензию и передаёт запросы со служебным ключом. Привилегированные операции // (установка файлов в каталог экспортёра, служба, база) идут через root-воркер bj-keymedia-worker. // // bj-quikexport [-addr 127.0.0.1:8084] [-store /var/lib/bj/.bj/quik-export/settings.json] // [-setup /var/lib/bj/.bj/setup.json] [-key /var/lib/bj/.bj/module.key] // bj-quikexport -version package main import ( "flag" "fmt" "log" "net/http" "os" "time" "git.zetit.ru/zuevav/Bridge-and-Join-s/modules/quikexport" ) // version — версия модуля (go build -ldflags "-X main.version=…"). var version = "0.1.0" func main() { addr := flag.String("addr", "127.0.0.1:8084", "адрес службы (только локальный)") store := flag.String("store", "/var/lib/bj/.bj/quik-export/settings.json", "настройки модуля") setup := flag.String("setup", "/var/lib/bj/.bj/setup.json", "настройки bj (перенос раздела quik_export при первом запуске)") key := flag.String("key", "/var/lib/bj/.bj/module.key", "служебный ключ модулей (создаёт bj-server)") showVersion := flag.Bool("version", false, "показать версию") flag.Parse() if *showVersion { fmt.Println("bj-quikexport", version) return } srv, err := quikexport.New(quikexport.Config{StorePath: *store, SetupPath: *setup, KeyPath: *key, Version: version}) if err != nil { log.Fatalf("bj-quikexport: %v", err) } log.Printf("bj-quikexport %s: слушаю %s", version, *addr) // WriteTimeout не задаём: применение настроек ждёт root-воркер до нескольких минут. hs := &http.Server{Addr: *addr, Handler: srv.Handler(), ReadHeaderTimeout: 10 * time.Second} if err := hs.ListenAndServe(); err != nil { log.Printf("bj-quikexport: %v", err) os.Exit(1) } }