web_gui.go 2.1 KB

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