web_gui.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // package web_gui -- веб-сервер для графики
  2. package web_gui
  3. import (
  4. _ "embed"
  5. "net/http"
  6. "github.com/gofiber/fiber/v2"
  7. . "gitp78su.ipnodns.ru/svi/kern"
  8. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  9. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  10. . "wartank/app/lev0/types"
  11. "wartank/app/lev3/serv_web/web_gui/page_bot_add"
  12. "wartank/app/lev3/serv_web/web_gui/page_bot_list"
  13. "wartank/app/lev3/serv_web/web_gui/page_bot_show"
  14. "wartank/app/lev3/serv_web/web_gui/page_login"
  15. )
  16. // ВебГип -- веб-сервер для графики
  17. type ВебГуи struct {
  18. прилож ИПриложение
  19. лог ILogBuf
  20. }
  21. // НовВебГуи -- возвращает новый веб-сервер для графики
  22. func НовВебГуи(конт IKernelCtx) *ВебГуи {
  23. лог := NewLogBuf()
  24. Hassert(конт != nil, "НовВебГуи(): ИЯдроКонтекст==nil")
  25. сам := &ВебГуи{
  26. прилож: конт.Get("мод_сервер").Val().(ИПриложение),
  27. лог: лог,
  28. }
  29. файбер := конт.Get("fiberApp").Val().(*fiber.App)
  30. файбер.Get("/", сам.кукиПроверить, сам.индекс)
  31. _ = page_login.НовСтраницаЛогин(конт)
  32. _ = page_bot_list.НовСтраницаСписокБотов(конт)
  33. _ = page_bot_add.НовСтраницаБотовДобавить(конт)
  34. _ = page_bot_show.НовСтраницаБотПоказать(конт)
  35. return сам
  36. }
  37. //go:embed index.tmpl.html
  38. var стрГлавная string
  39. // Возвращает индексную страницу
  40. func (сам *ВебГуи) индекс(кнт *fiber.Ctx) error {
  41. сам.лог.Debug("ВебГуи.индекс()\n")
  42. кнт.Set("Content-type", "text/html; charset=utf8;-")
  43. кнт.Set("Cache-Control", "no-cache")
  44. _, _ = кнт.WriteString("\n\n")
  45. return кнт.SendString(стрГлавная)
  46. }
  47. // Проверка на куки
  48. func (сам *ВебГуи) кукиПроверить(кнт *fiber.Ctx) error {
  49. сам.лог.Debug("ВебГуи.кукиПроверить()\n")
  50. имя := кнт.Cookies("login")
  51. if имя != "svi" {
  52. return кнт.Redirect("/gui/login", http.StatusSeeOther)
  53. }
  54. return кнт.Next()
  55. }