web_gui.go 2.9 KB

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