181 lines
4.3 KiB
Go
181 lines
4.3 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"strconv"
|
|
|
|
"next-terminal/server/common/maps"
|
|
"next-terminal/server/dto"
|
|
"next-terminal/server/model"
|
|
"next-terminal/server/repository"
|
|
"next-terminal/server/utils"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
type WebsiteApi struct{}
|
|
|
|
func (api WebsiteApi) AllEndpoint(c echo.Context) error {
|
|
items, err := repository.WebsiteRepository.FindAll(context.TODO())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return Success(c, items)
|
|
}
|
|
|
|
func (api WebsiteApi) PagingEndpoint(c echo.Context) error {
|
|
pageIndex, _ := strconv.Atoi(c.QueryParam("pageIndex"))
|
|
pageSize, _ := strconv.Atoi(c.QueryParam("pageSize"))
|
|
keyword := c.QueryParam("keyword")
|
|
|
|
items, total, err := repository.WebsiteRepository.Find(context.TODO(), pageIndex, pageSize, keyword)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return Success(c, maps.Map{
|
|
"total": total,
|
|
"items": items,
|
|
})
|
|
}
|
|
|
|
func serializeJSON(v interface{}) string {
|
|
if v == nil {
|
|
return ""
|
|
}
|
|
switch val := v.(type) {
|
|
case string:
|
|
return val
|
|
case []interface{}, map[string]interface{}:
|
|
bytes, err := json.Marshal(val)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return string(bytes)
|
|
default:
|
|
bytes, err := json.Marshal(val)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return string(bytes)
|
|
}
|
|
}
|
|
|
|
func (api WebsiteApi) CreateEndpoint(c echo.Context) error {
|
|
var req dto.WebsiteDTO
|
|
if err := c.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
|
|
item := &model.Website{
|
|
ID: utils.UUID(),
|
|
Name: req.Name,
|
|
Enabled: req.Enabled,
|
|
TargetUrl: req.TargetUrl,
|
|
TargetHost: req.TargetHost,
|
|
TargetPort: req.TargetPort,
|
|
Domain: req.Domain,
|
|
AsciiDomain: req.AsciiDomain,
|
|
Entrance: req.Entrance,
|
|
Description: req.Description,
|
|
Status: req.Status,
|
|
StatusText: req.StatusText,
|
|
GatewayType: req.GatewayType,
|
|
GatewayId: req.GatewayId,
|
|
BasicAuth: serializeJSON(req.BasicAuth),
|
|
Headers: serializeJSON(req.Headers),
|
|
Cert: serializeJSON(req.Cert),
|
|
Public: serializeJSON(req.Public),
|
|
TempAllow: serializeJSON(req.TempAllow),
|
|
GroupId: req.GroupId,
|
|
Sort: req.Sort,
|
|
}
|
|
|
|
if err := repository.WebsiteRepository.Create(context.TODO(), item); err != nil {
|
|
return err
|
|
}
|
|
return Success(c, "")
|
|
}
|
|
|
|
func (api WebsiteApi) UpdateEndpoint(c echo.Context) error {
|
|
id := c.Param("id")
|
|
var req dto.WebsiteDTO
|
|
if err := c.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
|
|
item := &model.Website{
|
|
ID: id,
|
|
Name: req.Name,
|
|
Enabled: req.Enabled,
|
|
TargetUrl: req.TargetUrl,
|
|
TargetHost: req.TargetHost,
|
|
TargetPort: req.TargetPort,
|
|
Domain: req.Domain,
|
|
AsciiDomain: req.AsciiDomain,
|
|
Entrance: req.Entrance,
|
|
Description: req.Description,
|
|
Status: req.Status,
|
|
StatusText: req.StatusText,
|
|
GatewayType: req.GatewayType,
|
|
GatewayId: req.GatewayId,
|
|
BasicAuth: serializeJSON(req.BasicAuth),
|
|
Headers: serializeJSON(req.Headers),
|
|
Cert: serializeJSON(req.Cert),
|
|
Public: serializeJSON(req.Public),
|
|
TempAllow: serializeJSON(req.TempAllow),
|
|
GroupId: req.GroupId,
|
|
Sort: req.Sort,
|
|
}
|
|
|
|
if err := repository.WebsiteRepository.UpdateById(context.TODO(), item, id); err != nil {
|
|
return err
|
|
}
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) DeleteEndpoint(c echo.Context) error {
|
|
id := c.Param("id")
|
|
if err := repository.WebsiteRepository.DeleteById(context.TODO(), id); err != nil {
|
|
return err
|
|
}
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) GetEndpoint(c echo.Context) error {
|
|
id := c.Param("id")
|
|
item, err := repository.WebsiteRepository.FindById(context.TODO(), id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return Success(c, item)
|
|
}
|
|
|
|
func (api WebsiteApi) GroupsGetEndpoint(c echo.Context) error {
|
|
return Success(c, []interface{}{})
|
|
}
|
|
|
|
func (api WebsiteApi) GroupsSetEndpoint(c echo.Context) error {
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) GroupsDeleteEndpoint(c echo.Context) error {
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) ChangeGroupEndpoint(c echo.Context) error {
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) ChangeGatewayEndpoint(c echo.Context) error {
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) SortEndpoint(c echo.Context) error {
|
|
return Success(c, nil)
|
|
}
|
|
|
|
func (api WebsiteApi) FaviconEndpoint(c echo.Context) error {
|
|
return Success(c, "")
|
|
}
|