// package web_gui -- веб-сервер для графики package web_gui import ( _ "embed" "net/http" "github.com/gofiber/fiber/v2" . "gitp78su.ipnodns.ru/svi/kern" . "gitp78su.ipnodns.ru/svi/kern/kc/helpers" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" . "wartank/app/lev0/types" "wartank/app/lev3/serv_web/web_gui/page_bot_add" "wartank/app/lev3/serv_web/web_gui/page_bot_list" "wartank/app/lev3/serv_web/web_gui/page_bot_show" "wartank/app/lev3/serv_web/web_gui/page_login" ) // ВебГип -- веб-сервер для графики type ВебГуи struct { прилож ИПриложение лог ILogBuf } // НовВебГуи -- возвращает новый веб-сервер для графики func НовВебГуи(конт IKernelCtx) *ВебГуи { лог := NewLogBuf() Hassert(конт != nil, "НовВебГуи(): ИЯдроКонтекст==nil") сам := &ВебГуи{ прилож: конт.Get("мод_сервер").Val().(ИПриложение), лог: лог, } файбер := конт.Get("fiberApp").Val().(*fiber.App) файбер.Get("/", сам.кукиПроверить, сам.индекс) _ = page_login.НовСтраницаЛогин(конт) _ = page_bot_list.НовСтраницаСписокБотов(конт) _ = page_bot_add.НовСтраницаБотовДобавить(конт) _ = page_bot_show.НовСтраницаБотПоказать(конт) return сам } //go:embed index.tmpl.html var стрГлавная string // Возвращает индексную страницу func (сам *ВебГуи) индекс(кнт *fiber.Ctx) error { сам.лог.Debug("ВебГуи.индекс()\n") кнт.Set("Content-type", "text/html; charset=utf8;-") кнт.Set("Cache-Control", "no-cache") _, _ = кнт.WriteString("\n\n") return кнт.SendString(стрГлавная) } // Проверка на куки func (сам *ВебГуи) кукиПроверить(кнт *fiber.Ctx) error { сам.лог.Debug("ВебГуи.кукиПроверить()\n") имя := кнт.Cookies("login") if имя != "svi" { return кнт.Redirect("/gui/login", http.StatusSeeOther) } return кнт.Next() }