阶段性提交

This commit is contained in:
GoEdgeLab
2020-08-21 21:09:42 +08:00
parent 8f22f2fda1
commit 2ba46b9162
161 changed files with 3520 additions and 219 deletions

View File

@@ -0,0 +1,203 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: model_node_ip_address.proto
package pb
import (
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
type NodeIPAddress struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
NodeId int64 `protobuf:"varint,2,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
Ip string `protobuf:"bytes,4,opt,name=ip,proto3" json:"ip,omitempty"`
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
State int64 `protobuf:"varint,6,opt,name=state,proto3" json:"state,omitempty"`
Order int64 `protobuf:"varint,7,opt,name=order,proto3" json:"order,omitempty"`
}
func (x *NodeIPAddress) Reset() {
*x = NodeIPAddress{}
if protoimpl.UnsafeEnabled {
mi := &file_model_node_ip_address_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NodeIPAddress) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NodeIPAddress) ProtoMessage() {}
func (x *NodeIPAddress) ProtoReflect() protoreflect.Message {
mi := &file_model_node_ip_address_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use NodeIPAddress.ProtoReflect.Descriptor instead.
func (*NodeIPAddress) Descriptor() ([]byte, []int) {
return file_model_node_ip_address_proto_rawDescGZIP(), []int{0}
}
func (x *NodeIPAddress) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *NodeIPAddress) GetNodeId() int64 {
if x != nil {
return x.NodeId
}
return 0
}
func (x *NodeIPAddress) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *NodeIPAddress) GetIp() string {
if x != nil {
return x.Ip
}
return ""
}
func (x *NodeIPAddress) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *NodeIPAddress) GetState() int64 {
if x != nil {
return x.State
}
return 0
}
func (x *NodeIPAddress) GetOrder() int64 {
if x != nil {
return x.Order
}
return 0
}
var File_model_node_ip_address_proto protoreflect.FileDescriptor
var file_model_node_ip_address_proto_rawDesc = []byte{
0x0a, 0x1b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x70, 0x5f,
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70,
0x62, 0x22, 0xa9, 0x01, 0x0a, 0x0d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12,
0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72,
0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_model_node_ip_address_proto_rawDescOnce sync.Once
file_model_node_ip_address_proto_rawDescData = file_model_node_ip_address_proto_rawDesc
)
func file_model_node_ip_address_proto_rawDescGZIP() []byte {
file_model_node_ip_address_proto_rawDescOnce.Do(func() {
file_model_node_ip_address_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_node_ip_address_proto_rawDescData)
})
return file_model_node_ip_address_proto_rawDescData
}
var file_model_node_ip_address_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_model_node_ip_address_proto_goTypes = []interface{}{
(*NodeIPAddress)(nil), // 0: pb.NodeIPAddress
}
var file_model_node_ip_address_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_model_node_ip_address_proto_init() }
func file_model_node_ip_address_proto_init() {
if File_model_node_ip_address_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_model_node_ip_address_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeIPAddress); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_model_node_ip_address_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_model_node_ip_address_proto_goTypes,
DependencyIndexes: file_model_node_ip_address_proto_depIdxs,
MessageInfos: file_model_node_ip_address_proto_msgTypes,
}.Build()
File_model_node_ip_address_proto = out.File
file_model_node_ip_address_proto_rawDesc = nil
file_model_node_ip_address_proto_goTypes = nil
file_model_node_ip_address_proto_depIdxs = nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,97 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "model_node_ip_address.proto";
service NodeIPAddressService {
// 创建IP地址
rpc createNodeIPAddress (CreateNodeIPAddressRequest) returns (CreateNodeIPAddressResponse);
// 修改IP地址
rpc updateNodeIPAddress (UpdateNodeIPAddressRequest) returns (UpdateNodeIPAddressResponse);
// 修改IP地址所属节点
rpc updateNodeIPAddressNodeId (UpdateNodeIPAddressNodeIdRequest) returns (UpdateNodeIPAddressNodeIdResponse);
// 禁用单个IP地址
rpc disableNodeIPAddress (DisableNodeIPAddressRequest) returns (DisableNodeIPAddressResponse);
// 禁用节点的所有IP地址
rpc disableAllIPAddressesWithNodeId (DisableAllIPAddressesWithNodeIdRequest) returns (DisableAllIPAddressesWithNodeIdResponse);
// 查找单个IP地址
rpc findEnabledNodeIPAddress (FindEnabledNodeIPAddressRequest) returns (FindEnabledNodeIPAddressResponse);
// 查找节点的所有地址
rpc findAllEnabledIPAddressesWithNodeId (FindAllEnabledIPAddressesWithNodeIdRequest) returns (FindAllEnabledIPAddressesWithNodeIdResponse);
}
// 创建IP地址
message CreateNodeIPAddressRequest {
int64 nodeId = 1;
string name = 2;
string ip = 3;
}
message CreateNodeIPAddressResponse {
int64 addressId = 1;
}
// 修改IP地址
message UpdateNodeIPAddressRequest {
int64 addressId = 1;
string name = 2;
string ip = 3;
}
message UpdateNodeIPAddressResponse {
}
// 修改IP地址所属节点
message UpdateNodeIPAddressNodeIdRequest {
int64 addressId = 1;
int64 nodeId = 2;
}
message UpdateNodeIPAddressNodeIdResponse {
}
// 禁用单个IP地址
message DisableNodeIPAddressRequest {
int64 addressId = 1;
}
message DisableNodeIPAddressResponse {
}
// 禁用节点的所有IP地址
message DisableAllIPAddressesWithNodeIdRequest {
int64 nodeId = 1;
}
message DisableAllIPAddressesWithNodeIdResponse {
}
// 查找单个IP地址
message FindEnabledNodeIPAddressRequest {
int64 addressId = 1;
}
message FindEnabledNodeIPAddressResponse {
NodeIPAddress ipAddress = 1;
}
// 查找节点的所有地址
message FindAllEnabledIPAddressesWithNodeIdRequest {
int64 nodeId = 1;
}
message FindAllEnabledIPAddressesWithNodeIdResponse {
repeated NodeIPAddress addresses = 1;
}

View File

@@ -17,12 +17,13 @@ import (
)
type RPCClient struct {
apiConfig *configs.APIConfig
adminClients []pb.AdminServiceClient
nodeClients []pb.NodeServiceClient
nodeGrantClients []pb.NodeGrantServiceClient
nodeClusterClients []pb.NodeClusterServiceClient
serverClients []pb.ServerServiceClient
apiConfig *configs.APIConfig
adminClients []pb.AdminServiceClient
nodeClients []pb.NodeServiceClient
nodeGrantClients []pb.NodeGrantServiceClient
nodeClusterClients []pb.NodeClusterServiceClient
nodeIPAddressClients []pb.NodeIPAddressServiceClient
serverClients []pb.ServerServiceClient
}
func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
@@ -34,6 +35,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
nodeClients := []pb.NodeServiceClient{}
nodeGrantClients := []pb.NodeGrantServiceClient{}
nodeClusterClients := []pb.NodeClusterServiceClient{}
nodeIPAddressClients := []pb.NodeIPAddressServiceClient{}
serverClients := []pb.ServerServiceClient{}
conns := []*grpc.ClientConn{}
@@ -54,16 +56,18 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
nodeClients = append(nodeClients, pb.NewNodeServiceClient(conn))
nodeGrantClients = append(nodeGrantClients, pb.NewNodeGrantServiceClient(conn))
nodeClusterClients = append(nodeClusterClients, pb.NewNodeClusterServiceClient(conn))
nodeIPAddressClients = append(nodeIPAddressClients, pb.NewNodeIPAddressServiceClient(conn))
serverClients = append(serverClients, pb.NewServerServiceClient(conn))
}
return &RPCClient{
apiConfig: apiConfig,
adminClients: adminClients,
nodeClients: nodeClients,
nodeGrantClients: nodeGrantClients,
nodeClusterClients: nodeClusterClients,
serverClients: serverClients,
apiConfig: apiConfig,
adminClients: adminClients,
nodeClients: nodeClients,
nodeGrantClients: nodeGrantClients,
nodeClusterClients: nodeClusterClients,
nodeIPAddressClients: nodeIPAddressClients,
serverClients: serverClients,
}, nil
}
@@ -95,6 +99,13 @@ func (this *RPCClient) NodeClusterRPC() pb.NodeClusterServiceClient {
return nil
}
func (this *RPCClient) NodeIPAddressRPC() pb.NodeIPAddressServiceClient {
if len(this.nodeIPAddressClients) > 0 {
return this.nodeIPAddressClients[rands.Int(0, len(this.nodeIPAddressClients)-1)]
}
return nil
}
func (this *RPCClient) ServerRPC() pb.ServerServiceClient {
if len(this.serverClients) > 0 {
return this.serverClients[rands.Int(0, len(this.serverClients)-1)]

View File

@@ -1,6 +1,7 @@
package nodes
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc/pb"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/iwind/TeaGo/actions"
@@ -38,11 +39,12 @@ func (this *CreateAction) RunGet(params struct{}) {
}
func (this *CreateAction) RunPost(params struct {
Name string
ClusterId int64
GrantId int64
SshHost string
SshPort int
Name string
IPAddresses string `alias:"ipAddresses"`
ClusterId int64
GrantId int64
SshHost string
SshPort int
Must *actions.Must
}) {
@@ -68,7 +70,7 @@ func (this *CreateAction) RunPost(params struct {
}
// 保存
_, err := this.RPC().NodeRPC().CreateNode(this.AdminContext(), &pb.CreateNodeRequest{
createResp, err := this.RPC().NodeRPC().CreateNode(this.AdminContext(), &pb.CreateNodeRequest{
Name: params.Name,
ClusterId: params.ClusterId,
Login: loginInfo,
@@ -77,6 +79,26 @@ func (this *CreateAction) RunPost(params struct {
this.ErrorPage(err)
return
}
nodeId := createResp.NodeId
// IP地址
ipAddresses := []maps.Map{}
err = json.Unmarshal([]byte(params.IPAddresses), &ipAddresses)
if err != nil {
this.ErrorPage(err)
return
}
for _, address := range ipAddresses {
addressId := address.GetInt64("id")
_, err = this.RPC().NodeIPAddressRPC().UpdateNodeIPAddressNodeId(this.AdminContext(), &pb.UpdateNodeIPAddressNodeIdRequest{
AddressId: addressId,
NodeId: nodeId,
})
if err != nil {
this.ErrorPage(err)
return
}
}
this.Success()
}

View File

@@ -0,0 +1,104 @@
package grants
import (
"github.com/TeaOSLab/EdgeAdmin/internal/rpc/pb"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/grants/grantutils"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
type UpdatePopupAction struct {
actionutils.ParentAction
}
func (this *UpdatePopupAction) Init() {
this.Nav("", "", "")
}
func (this *UpdatePopupAction) RunGet(params struct {
GrantId int64
}) {
this.Data["methods"] = grantutils.AllGrantMethods()
grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: params.GrantId})
if err != nil {
this.ErrorPage(err)
return
}
if grantResp.Grant == nil {
this.WriteString("找不到要操作的对象")
return
}
grant := grantResp.Grant
this.Data["grant"] = maps.Map{
"id": grant.Id,
"nodeId": grant.NodeId,
"method": grant.Method,
"name": grant.Name,
"username": grant.Username,
"password": grant.Password,
"description": grant.Description,
"privateKey": grant.PrivateKey,
}
this.Show()
}
func (this *UpdatePopupAction) RunPost(params struct {
GrantId int64
NodeId int64
Name string
Method string
Username string
Password string
PrivateKey string
Description string
Must *actions.Must
}) {
params.Must.
Field("name", params.Name).
Require("请输入名称")
switch params.Method {
case "user":
if len(params.Username) == 0 {
this.FailField("username", "请输入SSH登录用户名")
}
case "privateKey":
if len(params.PrivateKey) == 0 {
this.FailField("privateKey", "请输入RSA私钥")
}
default:
this.Fail("请选择正确的认证方式")
}
// 执行修改
_, err := this.RPC().NodeGrantRPC().UpdateNodeGrant(this.AdminContext(), &pb.UpdateNodeGrantRequest{
GrantId: params.GrantId,
Name: params.Name,
Method: params.Method,
Username: params.Username,
Password: params.Password,
PrivateKey: params.PrivateKey,
Description: params.Description,
NodeId: params.NodeId,
})
if err != nil {
this.ErrorPage(err)
return
}
// 返回信息
this.Data["grant"] = maps.Map{
"id": params.GrantId,
"name": params.Name,
"method": params.Method,
"methodName": grantutils.FindGrantMethodName(params.Method),
}
this.Success()
}

View File

@@ -14,7 +14,7 @@ func (this *Helper) BeforeAction(action *actions.ActionObject) {
selectedTabbar, _ := action.Data["mainTab"]
tabbar := actionutils.NewTabbar()
tabbar.Add("节点管理", "", "/nodes", "", selectedTabbar == "node")
tabbar.Add("认证管理", "", "/nodes/grants", "", selectedTabbar == "grant")
tabbar.Add("节点", "", "/nodes", "", selectedTabbar == "node")
tabbar.Add("认证", "", "/nodes/grants", "", selectedTabbar == "grant")
actionutils.SetTabbar(action, tabbar)
}

View File

@@ -46,6 +46,21 @@ func (this *IndexAction) RunGet(params struct{}) {
status.IsActive = time.Now().Unix()-status.UpdatedAt < 120 // 2分钟之内认为活跃
}
// IP
ipAddressesResp, err := this.RPC().NodeIPAddressRPC().FindAllEnabledIPAddressesWithNodeId(this.AdminContext(), &pb.FindAllEnabledIPAddressesWithNodeIdRequest{NodeId: node.Id})
if err != nil {
this.ErrorPage(err)
return
}
ipAddresses := []maps.Map{}
for _, addr := range ipAddressesResp.Addresses {
ipAddresses = append(ipAddresses, maps.Map{
"id": addr.Id,
"name": addr.Name,
"ip": addr.Ip,
})
}
nodeMaps = append(nodeMaps, maps.Map{
"id": node.Id,
"name": node.Name,
@@ -62,6 +77,7 @@ func (this *IndexAction) RunGet(params struct{}) {
"id": node.Cluster.Id,
"name": node.Cluster.Name,
},
"ipAddresses": ipAddresses,
})
}
this.Data["nodes"] = nodeMaps

View File

@@ -2,6 +2,7 @@ package nodes
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/grants"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/ipAddresses"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
@@ -18,6 +19,10 @@ func init() {
GetPost("/update", new(UpdateAction)).
Get("/node", new(NodeAction)).
// IP地址
GetPost("/ipAddresses/createPopup", new(ipAddresses.CreatePopupAction)).
GetPost("/ipAddresses/updatePopup", new(ipAddresses.UpdatePopupAction)).
// 授权管理
Get("/grants", new(grants.IndexAction)).
GetPost("/grants/create", new(grants.CreateAction)).
@@ -26,6 +31,7 @@ func init() {
Get("/grants/grant", new(grants.GrantAction)).
GetPost("/grants/selectPopup", new(grants.SelectPopupAction)).
GetPost("/grants/createPopup", new(grants.CreatePopupAction)).
GetPost("/grants/updatePopup", new(grants.UpdatePopupAction)).
EndAll()
})
}

View File

@@ -0,0 +1,50 @@
package ipAddresses
import (
"github.com/TeaOSLab/EdgeAdmin/internal/rpc/pb"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
type CreatePopupAction struct {
actionutils.ParentAction
}
func (this *CreatePopupAction) Init() {
this.Nav("", "", "")
}
func (this *CreatePopupAction) RunGet(params struct{}) {
this.Show()
}
func (this *CreatePopupAction) RunPost(params struct {
IP string `alias:"ip"`
Name string
Must *actions.Must
}) {
// TODO 严格校验IP地址
params.Must.
Field("ip", params.IP).
Require("请输入IP地址")
resp, err := this.RPC().NodeIPAddressRPC().CreateNodeIPAddress(this.AdminContext(), &pb.CreateNodeIPAddressRequest{
NodeId: 0,
Name: params.Name,
Ip: params.IP,
})
if err != nil {
this.ErrorPage(err)
return
}
this.Data["ipAddress"] = maps.Map{
"name": params.Name,
"ip": params.IP,
"id": resp.AddressId,
}
this.Success()
}

View File

@@ -0,0 +1,71 @@
package ipAddresses
import (
"github.com/TeaOSLab/EdgeAdmin/internal/rpc/pb"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
type UpdatePopupAction struct {
actionutils.ParentAction
}
func (this *UpdatePopupAction) Init() {
this.Nav("", "", "")
}
func (this *UpdatePopupAction) RunGet(params struct {
AddressId int64
}) {
addressResp, err := this.RPC().NodeIPAddressRPC().FindEnabledNodeIPAddress(this.AdminContext(), &pb.FindEnabledNodeIPAddressRequest{AddressId: params.AddressId})
if err != nil {
this.ErrorPage(err)
return
}
address := addressResp.IpAddress
if address == nil {
this.WriteString("找不到要修改的IP地址")
return
}
this.Data["address"] = maps.Map{
"id": address.Id,
"name": address.Name,
"ip": address.Ip,
}
this.Show()
}
func (this *UpdatePopupAction) RunPost(params struct {
AddressId int64
IP string `alias:"ip"`
Name string
Must *actions.Must
}) {
// TODO 严格校验IP地址
params.Must.
Field("ip", params.IP).
Require("请输入IP地址")
_, err := this.RPC().NodeIPAddressRPC().UpdateNodeIPAddress(this.AdminContext(), &pb.UpdateNodeIPAddressRequest{
AddressId: params.AddressId,
Name: params.Name,
Ip: params.IP,
})
if err != nil {
this.ErrorPage(err)
return
}
this.Data["ipAddress"] = maps.Map{
"name": params.Name,
"ip": params.IP,
"id": params.AddressId,
}
this.Success()
}

View File

@@ -40,6 +40,22 @@ func (this *NodeAction) RunGet(params struct {
}
}
// IP地址
ipAddressesResp, err := this.RPC().NodeIPAddressRPC().FindAllEnabledIPAddressesWithNodeId(this.AdminContext(), &pb.FindAllEnabledIPAddressesWithNodeIdRequest{NodeId: params.NodeId})
if err != nil {
this.ErrorPage(err)
return
}
ipAddressMaps := []maps.Map{}
for _, addr := range ipAddressesResp.Addresses {
ipAddressMaps = append(ipAddressMaps, maps.Map{
"id": addr.Id,
"name": addr.Name,
"ip": addr.Ip,
})
}
// 登录信息
var loginMap maps.Map = nil
if node.Login != nil {
loginParams := maps.Map{}
@@ -79,10 +95,11 @@ func (this *NodeAction) RunGet(params struct {
}
this.Data["node"] = maps.Map{
"id": node.Id,
"name": node.Name,
"cluster": clusterMap,
"login": loginMap,
"id": node.Id,
"name": node.Name,
"ipAddresses": ipAddressMaps,
"cluster": clusterMap,
"login": loginMap,
}
this.Show()

View File

@@ -41,6 +41,22 @@ func (this *UpdateAction) RunGet(params struct {
}
}
// IP地址
ipAddressesResp, err := this.RPC().NodeIPAddressRPC().FindAllEnabledIPAddressesWithNodeId(this.AdminContext(), &pb.FindAllEnabledIPAddressesWithNodeIdRequest{NodeId: params.NodeId})
if err != nil {
this.ErrorPage(err)
return
}
ipAddressMaps := []maps.Map{}
for _, addr := range ipAddressesResp.Addresses {
ipAddressMaps = append(ipAddressMaps, maps.Map{
"id": addr.Id,
"name": addr.Name,
"ip": addr.Ip,
})
}
// 登录信息
var loginMap maps.Map = nil
if node.Login != nil {
loginParams := maps.Map{}
@@ -80,10 +96,11 @@ func (this *UpdateAction) RunGet(params struct {
}
this.Data["node"] = maps.Map{
"id": node.Id,
"name": node.Name,
"cluster": clusterMap,
"login": loginMap,
"id": node.Id,
"name": node.Name,
"ipAddresses": ipAddressMaps,
"cluster": clusterMap,
"login": loginMap,
}
// 所有集群
@@ -108,13 +125,14 @@ func (this *UpdateAction) RunGet(params struct {
}
func (this *UpdateAction) RunPost(params struct {
LoginId int64
NodeId int64
Name string
ClusterId int64
GrantId int64
SshHost string
SshPort int
LoginId int64
NodeId int64
Name string
IPAddresses string `alias:"ipAddresses"`
ClusterId int64
GrantId int64
SshHost string
SshPort int
Must *actions.Must
}) {
@@ -155,5 +173,31 @@ func (this *UpdateAction) RunPost(params struct {
return
}
// 禁用老的IP地址
_, err = this.RPC().NodeIPAddressRPC().DisableAllIPAddressesWithNodeId(this.AdminContext(), &pb.DisableAllIPAddressesWithNodeIdRequest{NodeId: params.NodeId})
if err != nil {
this.ErrorPage(err)
return
}
// 添加新的IP地址
ipAddresses := []maps.Map{}
err = json.Unmarshal([]byte(params.IPAddresses), &ipAddresses)
if err != nil {
this.ErrorPage(err)
return
}
for _, address := range ipAddresses {
addressId := address.GetInt64("id")
_, err = this.RPC().NodeIPAddressRPC().UpdateNodeIPAddressNodeId(this.AdminContext(), &pb.UpdateNodeIPAddressNodeIdRequest{
AddressId: addressId,
NodeId: params.NodeId,
})
if err != nil {
this.ErrorPage(err)
return
}
}
this.Success()
}

View File

@@ -0,0 +1,24 @@
package components
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/iwind/TeaGo/actions"
)
type Helper struct {
}
func NewHelper() *Helper {
return &Helper{}
}
func (this *Helper) BeforeAction(action *actions.ActionObject) {
action.Data["teaMenu"] = "servers"
selectedTabbar, _ := action.Data["mainTab"]
tabbar := actionutils.NewTabbar()
tabbar.Add("服务", "", "/servers", "", selectedTabbar == "server")
tabbar.Add("组件", "", "/servers/components", "", selectedTabbar == "component")
actionutils.SetTabbar(action, tabbar)
}

View File

@@ -0,0 +1,18 @@
package components
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "component", "index")
}
func (this *IndexAction) RunGet(params struct{}) {
this.Show()
}

View File

@@ -0,0 +1,17 @@
package components
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(NewHelper()).
Prefix("/servers/components").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -18,6 +18,7 @@ func (this *Helper) BeforeAction(action *actions.ActionObject) {
selectedTabbar, _ := action.Data["mainTab"]
tabbar := actionutils.NewTabbar()
tabbar.Add("服务管理", "", "/servers", "", selectedTabbar == "server")
tabbar.Add("服务", "", "/servers", "", selectedTabbar == "server")
tabbar.Add("组件", "", "/servers/components", "", selectedTabbar == "component")
actionutils.SetTabbar(action, tabbar)
}

View File

@@ -8,6 +8,7 @@ type IndexAction struct {
func (this *IndexAction) Init() {
this.Nav("", "board", "")
this.SecondMenu("index")
}
func (this *IndexAction) RunGet(params struct{}) {

View File

@@ -8,6 +8,7 @@ type IndexAction struct {
func (this *IndexAction) Init() {
this.Nav("", "delete", "")
this.SecondMenu("index")
}
func (this *IndexAction) RunGet(params struct{}) {

View File

@@ -8,6 +8,7 @@ type IndexAction struct {
func (this *IndexAction) Init() {
this.Nav("", "log", "")
this.SecondMenu("index")
}
func (this *IndexAction) RunGet(params struct{}) {

View File

@@ -0,0 +1,22 @@
package access
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("access")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package access
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/access").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package accessLog
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("accessLog")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package accessLog
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/accessLog").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package cache
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("cache")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package cache
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/cache").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package charset
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("charset")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package charset
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/charset").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package gzip
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("gzip")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package gzip
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/gzip").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package headers
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("header")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package headers
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/headers").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -1,4 +1,4 @@
package server
package http
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
@@ -16,5 +16,7 @@ func (this *IndexAction) Init() {
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -1,4 +1,4 @@
package server
package http
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
@@ -11,7 +11,7 @@ func init() {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/http").
Prefix("/servers/server/settings/http").
Get("", new(IndexAction)).
EndAll()
})

View File

@@ -0,0 +1,20 @@
package https
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("https")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
this.Show()
}

View File

@@ -0,0 +1,18 @@
package https
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/https").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package locations
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("locations")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package locations
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/locations").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package pages
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("pages")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package pages
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/pages").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package reverseProxy
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("reverseProxy")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package reverseProxy
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/reverseProxy").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package stat
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("stat")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package stat
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/stat").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package tcp
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("tcp")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package tcp
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/tcp").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package udp
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("udp")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package udp
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/udp").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package unix
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("unix")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package unix
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/unix").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package waf
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("waf")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package waf
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/waf").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -0,0 +1,22 @@
package web
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "setting", "index")
this.SecondMenu("web")
}
func (this *IndexAction) RunGet(params struct {
ServerId int64
}) {
// TODO
this.Show()
}

View File

@@ -0,0 +1,18 @@
package web
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/iwind/TeaGo"
)
func init() {
TeaGo.BeforeStart(func(server *TeaGo.Server) {
server.
Helper(helpers.NewUserMustAuth()).
Helper(serverutils.NewServerHelper()).
Prefix("/servers/server/settings/web").
Get("", new(IndexAction)).
EndAll()
})
}

View File

@@ -8,6 +8,7 @@ type IndexAction struct {
func (this *IndexAction) Init() {
this.Nav("", "stat", "")
this.SecondMenu("index")
}
func (this *IndexAction) RunGet(params struct{}) {

View File

@@ -83,18 +83,52 @@ func (this *ServerHelper) createLeftMenu(action *actions.ActionObject) {
// 左侧操作子菜单
switch types.String(mainTab) {
case "board":
// TODO
action.Data["leftMenuItems"] = this.createBoardMenu(types.String(secondMenuItem), serverIdString, serverConfig)
case "log":
// TODO
action.Data["leftMenuItems"] = this.createLogMenu(types.String(secondMenuItem), serverIdString, serverConfig)
case "stat":
// TODO
action.Data["leftMenuItems"] = this.createStatMenu(types.String(secondMenuItem), serverIdString, serverConfig)
case "setting":
action.Data["leftMenuItems"] = this.createSettingsMenu(types.String(secondMenuItem), serverIdString, serverConfig)
case "delete":
// TODO
action.Data["leftMenuItems"] = this.createDeleteMenu(types.String(secondMenuItem), serverIdString, serverConfig)
}
}
// 看板菜单
func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "看板",
"url": "/servers/server/board?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
return menuItems
}
// 日志菜单
func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "实时",
"url": "/servers/server/log?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
return menuItems
}
// 统计菜单
func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "统计",
"url": "/servers/server/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
return menuItems
}
// 设置菜单
func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) (items []maps.Map) {
menuItems := []maps.Map{
{
@@ -108,105 +142,122 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
if serverConfig.IsHTTP() {
menuItems = append(menuItems, maps.Map{
"name": "HTTP",
"url": "/servers/server/http?serverId=" + serverIdString,
"url": "/servers/server/settings/http?serverId=" + serverIdString,
"isActive": secondMenuItem == "http",
})
menuItems = append(menuItems, maps.Map{
"name": "HTTPS",
"url": "/servers/server/https?serverId=" + serverIdString,
"url": "/servers/server/settings/https?serverId=" + serverIdString,
"isActive": secondMenuItem == "https",
})
menuItems = append(menuItems, maps.Map{
"name": "Web设置",
"url": "/servers/server/web?serverId=" + serverIdString,
"url": "/servers/server/settings/web?serverId=" + serverIdString,
"isActive": secondMenuItem == "web",
})
menuItems = append(menuItems, maps.Map{
"name": "字符集",
"url": "/servers/server/charset?serverId=" + serverIdString,
"isActive": secondMenuItem == "charset",
})
menuItems = append(menuItems, maps.Map{
"name": "访问日志",
"url": "/servers/server/accessLog?serverId=" + serverIdString,
"isActive": secondMenuItem == "accessLog",
})
menuItems = append(menuItems, maps.Map{
"name": "统计",
"url": "/servers/server/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "stat",
})
menuItems = append(menuItems, maps.Map{
"name": "Gzip压缩",
"url": "/servers/server/gzip?serverId=" + serverIdString,
"isActive": secondMenuItem == "gzip",
})
menuItems = append(menuItems, maps.Map{
"name": "特殊页面",
"url": "/servers/server/pages?serverId=" + serverIdString,
"isActive": secondMenuItem == "pages",
})
menuItems = append(menuItems, maps.Map{
"name": "HTTP Header",
"url": "/servers/server/headers?serverId=" + serverIdString,
"isActive": secondMenuItem == "header",
})
menuItems = append(menuItems, maps.Map{
"name": "反向代理",
"url": "/servers/server/reverseProxy?serverId=" + serverIdString,
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
})
menuItems = append(menuItems, maps.Map{
"name": "路径规则",
"url": "/servers/server/locations?serverId=" + serverIdString,
"url": "/servers/server/settings/locations?serverId=" + serverIdString,
"isActive": secondMenuItem == "locations",
})
menuItems = append(menuItems, maps.Map{
"name": "访问控制",
"url": "/servers/server/access?serverId=" + serverIdString,
"url": "/servers/server/settings/access?serverId=" + serverIdString,
"isActive": secondMenuItem == "access",
})
menuItems = append(menuItems, maps.Map{
"name": "WAF",
"url": "/servers/server/waf?serverId=" + serverIdString,
"url": "/servers/server/settings/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf",
})
menuItems = append(menuItems, maps.Map{
"name": "缓存",
"url": "/servers/server/cache?serverId=" + serverIdString,
"url": "/servers/server/settings/cache?serverId=" + serverIdString,
"isActive": secondMenuItem == "cache",
})
menuItems = append(menuItems, maps.Map{
"name": "-",
"url": "",
"isActive": false,
})
menuItems = append(menuItems, maps.Map{
"name": "字符集",
"url": "/servers/server/settings/charset?serverId=" + serverIdString,
"isActive": secondMenuItem == "charset",
})
menuItems = append(menuItems, maps.Map{
"name": "访问日志",
"url": "/servers/server/settings/accessLog?serverId=" + serverIdString,
"isActive": secondMenuItem == "accessLog",
})
menuItems = append(menuItems, maps.Map{
"name": "统计",
"url": "/servers/server/settings/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "stat",
})
menuItems = append(menuItems, maps.Map{
"name": "Gzip压缩",
"url": "/servers/server/settings/gzip?serverId=" + serverIdString,
"isActive": secondMenuItem == "gzip",
})
menuItems = append(menuItems, maps.Map{
"name": "特殊页面",
"url": "/servers/server/settings/pages?serverId=" + serverIdString,
"isActive": secondMenuItem == "pages",
})
menuItems = append(menuItems, maps.Map{
"name": "HTTP Header",
"url": "/servers/server/settings/headers?serverId=" + serverIdString,
"isActive": secondMenuItem == "header",
})
} else if serverConfig.IsTCP() {
menuItems = append(menuItems, maps.Map{
"name": "TCP",
"url": "/servers/server/tcp?serverId=" + serverIdString,
"url": "/servers/server/settings/tcp?serverId=" + serverIdString,
"isActive": secondMenuItem == "tcp",
})
} else if serverConfig.IsUnix() {
menuItems = append(menuItems, maps.Map{
"name": "Unix",
"url": "/servers/server/unix?serverId=" + serverIdString,
"url": "/servers/server/settings/unix?serverId=" + serverIdString,
"isActive": secondMenuItem == "unix",
})
} else if serverConfig.IsUDP() {
menuItems = append(menuItems, maps.Map{
"name": "UDP",
"url": "/servers/server/udp?serverId=" + serverIdString,
"url": "/servers/server/settings/udp?serverId=" + serverIdString,
"isActive": secondMenuItem == "udp",
})
}
return menuItems
}
// 删除菜单
func (this *ServerHelper) createDeleteMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "删除",
"url": "/servers/server/delete?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
return menuItems
}

View File

@@ -7,12 +7,29 @@ import (
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/logout"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/board"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/delete"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/log"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/access"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/accessLog"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/cache"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/charset"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/gzip"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/headers"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/http"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/https"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/pages"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/reverseProxy"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/stat"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/tcp"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/udp"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/unix"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/waf"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/web"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/stat"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/ui"