1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package v2
- import (
- "fmt"
- "net/http"
- "github.com/IceWhaleTech/CasaOS-Common/utils"
- "github.com/IceWhaleTech/CasaOS/codegen"
- "github.com/IceWhaleTech/CasaOS/common"
- "github.com/IceWhaleTech/CasaOS/pkg/utils/httper"
- "github.com/labstack/echo/v4"
- "github.com/tidwall/gjson"
- )
- func (s *CasaOS) SetZerotierNetworkStatus(ctx echo.Context, networkId string) error {
- ip := `,"via":"10.147.19.0"`
- m := make(map[string]string)
- ctx.Bind(&m)
- status := m["status"]
- if status == "online" {
- ip = ``
- }
- body := `{
- "routes": [
- {
- "target": "10.147.20.0/24"` + ip + `
- }
- ]
- }`
- res, err := httper.ZTPost("/controller/network/"+networkId, body)
- if err != nil {
- fmt.Println(err)
- return ctx.JSON(http.StatusInternalServerError, codegen.BaseResponse{Message: utils.Ptr(err.Error())})
- }
- info := codegen.GetZTInfoOK{}
- via := gjson.GetBytes(res, "routes.0.via").Str
- info.Id = utils.Ptr(gjson.GetBytes(res, "id").Str)
- info.Name = utils.Ptr(gjson.GetBytes(res, "name").Str)
- if len(via) == 0 {
- info.Status = utils.Ptr("online")
- } else {
- info.Status = utils.Ptr("offline")
- }
- return ctx.JSON(http.StatusOK, info)
- }
- func (s *CasaOS) GetZerotierInfo(ctx echo.Context) error {
- info := codegen.GetZTInfoOK{}
- respBody, err := httper.ZTGet("/controller/network")
- if err != nil {
- return ctx.JSON(http.StatusInternalServerError, codegen.BaseResponse{Message: utils.Ptr(err.Error())})
- }
- networkNames := gjson.ParseBytes(respBody).Array()
- for _, v := range networkNames {
- res, err := httper.ZTGet("/controller/network/" + v.Str)
- if err != nil {
- fmt.Println(err)
- return ctx.JSON(http.StatusInternalServerError, codegen.BaseResponse{Message: utils.Ptr(err.Error())})
- }
- name := gjson.GetBytes(res, "name").Str
- if name == common.RANW_NAME {
- via := gjson.GetBytes(res, "routes.0.via").Str
- info.Id = utils.Ptr(gjson.GetBytes(res, "id").Str)
- info.Name = &name
- if len(via) == 0 {
- info.Status = utils.Ptr("online")
- } else {
- info.Status = utils.Ptr("offline")
- }
- break
- }
- }
- return ctx.JSON(http.StatusOK, info)
- }
|