| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // package web_api -- веб-сервер для API
- package web_api
- import (
- "fmt"
- "log"
- "time"
- "github.com/gofiber/fiber/v2"
- "wartank/pkg/types"
- )
- // ВебАпи -- веб-сервер для API
- type ВебАпи struct {
- серв types.ИСервер
- файбер fiber.App
- }
- // НовВебАпи -- возвращает новый веб-сервер для API
- func НовВебАпи(вебСервер types.ИВебСервер) (*ВебАпи, error) {
- if вебСервер == nil {
- return nil, fmt.Errorf("НовВебАпи(): ИВебСервер==nil")
- }
- сам := &ВебАпи{
- серв: вебСервер.Сервер(),
- файбер: *вебСервер.Файбер(),
- }
- сам.файбер.Post("/api/login", сам.логин)
- сам.файбер.Post("/api/add_bot", сам.добавитьБота)
- return сам, nil
- }
- type AddBotRequest struct {
- Логин_ string `json:"login" form:"login_bot"`
- Пароль string `json:"password" form:"password_bot"`
- }
- // Запрос добавления нового бота на ботоферму
- func (сам *ВебАпи) добавитьБота(кнт *fiber.Ctx) error {
- запрос := &AddBotRequest{}
- if err := кнт.BodyParser(запрос); err != nil {
- return кнт.Render("add_bot", fiber.Map{
- "err": "ошибка в разборе формы",
- })
- }
- log.Printf("ВебАпи.добавитьБота(): : %#+v\n", запрос)
- if запрос.Логин_ == "" {
- return кнт.Render("add_bot", fiber.Map{
- "err": "пустой логин бота",
- })
- }
- if запрос.Пароль == "" {
- return кнт.Render("add_bot", fiber.Map{
- "err": "пустой пароль бота",
- })
- }
- сам.серв.ServBots().НовБот(запрос.Логин_, запрос.Пароль, true)
- return кнт.Redirect("/gui/list_bot")
- }
- type LoginRequest struct {
- Логин_ string `json:"login" form:"login"`
- Пароль_ string `json:"password" form:"password"`
- КонтрольноеСлово_ string `json:"control_word" form:"control_word"`
- }
- // Вызывается при попытке войти
- func (сам *ВебАпи) логин(кнт *fiber.Ctx) error {
- запрос := new(LoginRequest)
- if err := кнт.BodyParser(запрос); err != nil {
- return кнт.JSON(fiber.Map{
- "status": "ошибка в разборе формы",
- })
- }
- log.Printf("ВебАпи.логин(): : %#+v\n", *запрос)
- if запрос.Логин_ == "" || запрос.Пароль_ == "" {
- return кнт.JSON(fiber.Map{
- "status": "пустой логин/пароль",
- })
- }
- if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" {
- return кнт.JSON(fiber.Map{
- "status": "ошибка логина/пароля",
- })
- }
- кнт.Cookie(&fiber.Cookie{
- Name: "login",
- Value: "svi",
- Expires: time.Now().Add(24 * time.Hour),
- HTTPOnly: true,
- })
- return кнт.Redirect("/gui/list_bot")
- }
|