90 lines
1.8 KiB
Go
90 lines
1.8 KiB
Go
package jd
|
|
|
|
import "fmt"
|
|
|
|
type EdgeInfo struct {
|
|
Mac string
|
|
City string
|
|
Network string
|
|
}
|
|
|
|
func GatewayConfigSet(version int, macaddr string, edges []EdgeInfo) error {
|
|
if version < 0 {
|
|
return fmt.Errorf("版本号不能小于 0")
|
|
}
|
|
if macaddr == "" {
|
|
return fmt.Errorf("macaddr 不能为空")
|
|
}
|
|
if len(edges) > 250 {
|
|
return fmt.Errorf("边缘节点数量不能超过 250")
|
|
}
|
|
|
|
rules := make([]GateConfigSetReqRule, len(edges))
|
|
for i, edge := range edges {
|
|
rules[i] = GateConfigSetReqRule{
|
|
Enable: true,
|
|
Edge: []string{edge.Mac},
|
|
Network: []string{edge.Network},
|
|
Cityhash: edge.City, // 每个 edge 的城市应当相同
|
|
}
|
|
}
|
|
|
|
req := GatewayConfigSetReq{
|
|
Macaddr: macaddr,
|
|
Config: GateConfigSetReqConfig{
|
|
Id: version,
|
|
Rules: rules,
|
|
},
|
|
}
|
|
|
|
if _, err := Post("/gateway/config/set", req); err != nil {
|
|
return fmt.Errorf("设置网关配置失败: %v", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func GatewayConfigClear(macaddr string) error {
|
|
if macaddr == "" {
|
|
return fmt.Errorf("macaddr 不能为空")
|
|
}
|
|
|
|
req := GatewayConfigSetReq{
|
|
Macaddr: macaddr,
|
|
Config: GateConfigSetReqConfig{
|
|
Id: 1,
|
|
Rules: []GateConfigSetReqRule{
|
|
{
|
|
Enable: false,
|
|
Edge: []string{"", "", "", ""},
|
|
Network: []string{},
|
|
Cityhash: "",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
if _, err := Post("/gateway/config/set", req); err != nil {
|
|
return fmt.Errorf("设置网关配置失败: %v", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type GatewayConfigSetReq struct {
|
|
Macaddr string `json:"macaddr"`
|
|
Config GateConfigSetReqConfig `json:"config"`
|
|
}
|
|
|
|
type GateConfigSetReqConfig struct {
|
|
Id int `json:"id"`
|
|
Rules []GateConfigSetReqRule `json:"rules"`
|
|
}
|
|
|
|
type GateConfigSetReqRule struct {
|
|
Enable bool `json:"enable"`
|
|
Edge []string `json:"edge"`
|
|
Network []string `json:"network"`
|
|
Cityhash string `json:"cityhash"`
|
|
}
|