Compare commits

...

22 Commits

Author SHA1 Message Date
刘祥超
5ae86305f9 域名记录增加停用/启用 2021-07-20 19:03:56 +08:00
刘祥超
f83be52482 增加API令牌相关API 2021-07-20 17:15:51 +08:00
刘祥超
a241b9a9df 在各个地方支持IPv6 2021-07-20 10:55:52 +08:00
刘祥超
b9e01b7738 Dashboard增加指标图表 2021-07-19 17:58:09 +08:00
刘祥超
587cd4484a 实现公用的统计指标 2021-07-19 15:22:49 +08:00
刘祥超
8fd93ffbbe 修改一处文字 2021-07-19 14:28:56 +08:00
刘祥超
616b855d61 将WAF模板中的cc修改为cc2 2021-07-19 11:01:43 +08:00
刘祥超
3a12813da3 WAF增加多个动作 2021-07-18 16:26:45 +08:00
刘祥超
66f04de8c1 WAF支持更多动作 2021-07-14 22:46:31 +08:00
刘祥超
b4c72dc8f4 修复绑定的IP名单无法生效的Bug 2021-07-13 15:50:02 +08:00
刘祥超
4e84c7b376 优化看板 2021-07-13 15:49:34 +08:00
刘祥超
50d8a575a6 实现数据看板--WAF 2021-07-12 16:57:06 +08:00
刘祥超
499ec2306c 管理界面可以切换风格 2021-07-12 10:21:45 +08:00
刘祥超
aa150a1ae1 实现数据看板-DNS 2021-07-11 21:43:59 +08:00
刘祥超
0ad1782d42 实现数据看板--用户 2021-07-11 18:06:07 +08:00
刘祥超
4ceac4d9c9 节点看板增加缓存目录用量 2021-07-08 19:43:20 +08:00
刘祥超
30f8bfe703 实现服务看板(企业版) 2021-07-07 19:55:52 +08:00
刘祥超
be9bde507a 实现集群看板 2021-07-05 11:37:10 +08:00
刘祥超
53ee50fa38 指标增加一些易读的名称等信息 2021-07-03 18:05:45 +08:00
刘祥超
8cde433c37 实现基本的图表管理 2021-07-03 15:45:16 +08:00
刘祥超
fe88c581c7 指标数据增加占比数据 2021-07-01 10:39:19 +08:00
刘祥超
32cb66db4c 实现基础的统计指标 2021-06-30 20:50:17 +08:00
96 changed files with 13626 additions and 1935 deletions

5
go.mod
View File

@@ -6,7 +6,10 @@ require (
github.com/cespare/xxhash/v2 v2.1.1
github.com/go-yaml/yaml v2.1.0+incompatible
github.com/golang/protobuf v1.4.2
github.com/iwind/TeaGo v0.0.0-20210411134150-ddf57e240c2f
github.com/iwind/TeaGo v0.0.0-20210628135026-38575a4ab060
github.com/json-iterator/go v1.1.11 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
google.golang.org/grpc v1.32.0
google.golang.org/protobuf v1.25.0
gopkg.in/yaml.v2 v2.4.0 // indirect

8
go.sum
View File

@@ -46,13 +46,21 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/iwind/TeaGo v0.0.0-20210411134150-ddf57e240c2f h1:r2O8PONj/KiuZjJHVHn7KlCePUIjNtgAmvLfgRafQ8o=
github.com/iwind/TeaGo v0.0.0-20210411134150-ddf57e240c2f/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc=
github.com/iwind/TeaGo v0.0.0-20210628135026-38575a4ab060 h1:qdLtK4PDXxk2vMKkTWl5Fl9xqYuRCukzWAgJbLHdfOo=
github.com/iwind/TeaGo v0.0.0-20210628135026-38575a4ab060/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=

View File

@@ -24,3 +24,17 @@ func IP2Long(ip string) uint64 {
}
return uint64(binary.BigEndian.Uint32(s.To4()))
}
// QuoteIP 为IPv6加上括号
func QuoteIP(ip string) string {
if len(ip) == 0 {
return ip
}
if !strings.Contains(ip, ":") {
return ip
}
if ip[0] != '[' {
return "[" + ip + "]"
}
return ip
}

View File

@@ -19,6 +19,7 @@ var sharedNodeConfig *NodeConfig = nil
type NodeConfig struct {
Id int64 `yaml:"id" json:"id"`
NodeId string `yaml:"nodeId" json:"nodeId"`
Secret string `yaml:"secret" json:"secret"`
IsOn bool `yaml:"isOn" json:"isOn"`
Servers []*serverconfigs.ServerConfig `yaml:"servers" json:"servers"`
Version int64 `yaml:"version" json:"version"`
@@ -42,7 +43,11 @@ type NodeConfig struct {
paddedId string
// firewall
firewallPolicies []*firewallconfigs.HTTPFirewallPolicy
// metrics
hasHTTPConnectionMetrics bool
}
// SharedNodeConfig 取得当前节点配置单例
@@ -144,11 +149,15 @@ func (this *NodeConfig) Init() error {
}
// metric items
this.hasHTTPConnectionMetrics = false
for _, item := range this.MetricItems {
err := item.Init()
if err != nil {
return err
}
if item.IsOn && item.HasHTTPConnectionValue() {
this.hasHTTPConnectionMetrics = true
}
}
return nil
@@ -202,6 +211,11 @@ func (this *NodeConfig) PaddedId() string {
return this.paddedId
}
// HasHTTPConnectionMetrics 是否含有HTTP连接数的指标
func (this *NodeConfig) HasHTTPConnectionMetrics() bool {
return this.hasHTTPConnectionMetrics
}
// 搜索WAF策略
func (this *NodeConfig) lookupWeb(web *serverconfigs.HTTPWebConfig) {
if web == nil || !web.IsOn {

View File

@@ -25,6 +25,9 @@ type NodeStatus struct {
Load15m float64 `json:"load15m"`
ConnectionCount int `json:"connectionCount"` // 连接数
TrafficInBytes uint64 `json:"trafficInBytes"`
TrafficOutBytes uint64 `json:"trafficOutBytes"`
CacheTotalDiskSize int64 `json:"cacheTotalDiskSize"`
CacheTotalMemorySize int64 `json:"cacheTotalMemorySize"`

View File

@@ -8,13 +8,16 @@ import "encoding/json"
type NodeValueItem = string
const (
NodeValueItemCPU NodeValueItem = "cpu" // CPU
NodeValueItemMemory NodeValueItem = "memory" // 内存
NodeValueItemLoad NodeValueItem = "load" // 负载
NodeValueItemTrafficIn NodeValueItem = "trafficIn" // 上行流量
NodeValueItemTrafficOut NodeValueItem = "trafficOut" // 下行流量
NodeValueItemConnections NodeValueItem = "connections" // 连接数
NodeValueItemDisk NodeValueItem = "disk" // 磁盘
NodeValueItemCPU NodeValueItem = "cpu" // CPU
NodeValueItemMemory NodeValueItem = "memory" // 内存
NodeValueItemLoad NodeValueItem = "load" // 负载
NodeValueItemTrafficIn NodeValueItem = "trafficIn" // 上行流量
NodeValueItemTrafficOut NodeValueItem = "trafficOut" // 下行流量
NodeValueItemConnections NodeValueItem = "connections" // 连接数
NodeValueItemRequests NodeValueItem = "requests" // 请求访问量
NodeValueItemAttackRequests NodeValueItem = "attackRequests" // 攻击请求访问量
NodeValueItemDisk NodeValueItem = "disk" // 磁盘
NodeValueItemCacheDir NodeValueItem = "cacheDir" // 缓存目录
)
type nodeValueItemDefinition struct {
@@ -109,6 +112,28 @@ var nodeValueItemDefinitions = []*nodeValueItemDefinition{
},
},
},
{
Code: NodeValueItemRequests,
Name: "请求数",
Params: []*nodeValueItemParamDefinition{
{
Code: "total",
Name: "总数",
Description: "请求总数",
},
},
},
{
Code: NodeValueItemAttackRequests,
Name: "攻击请求数",
Params: []*nodeValueItemParamDefinition{
{
Code: "total",
Name: "总数",
Description: "攻击请求总数",
},
},
},
{
Code: NodeValueItemDisk,
Name: "硬盘空间",

View File

@@ -7,16 +7,17 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/ipconfigs"
"github.com/iwind/TeaGo/maps"
)
var SharedHTTPFirewallPolicyDAO = new(HTTPFirewallPolicyDAO)
// WAF策略相关
// HTTPFirewallPolicyDAO WAF策略相关
type HTTPFirewallPolicyDAO struct {
BaseDAO
}
// 查找WAF策略基本信息
// FindEnabledHTTPFirewallPolicy 查找WAF策略基本信息
func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicy(ctx context.Context, policyId int64) (*pb.HTTPFirewallPolicy, error) {
resp, err := this.RPC().HTTPFirewallPolicyRPC().FindEnabledHTTPFirewallPolicy(ctx, &pb.FindEnabledHTTPFirewallPolicyRequest{HttpFirewallPolicyId: policyId})
if err != nil {
@@ -25,7 +26,7 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicy(ctx context.Con
return resp.HttpFirewallPolicy, nil
}
// 查找WAF策略配置
// FindEnabledHTTPFirewallPolicyConfig 查找WAF策略配置
func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicyConfig(ctx context.Context, policyId int64) (*firewallconfigs.HTTPFirewallPolicy, error) {
resp, err := this.RPC().HTTPFirewallPolicyRPC().FindEnabledHTTPFirewallPolicyConfig(ctx, &pb.FindEnabledHTTPFirewallPolicyConfigRequest{HttpFirewallPolicyId: policyId})
if err != nil {
@@ -42,7 +43,7 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicyConfig(ctx conte
return firewallPolicy, nil
}
// 查找WAF的Inbound
// FindEnabledHTTPFirewallPolicyInboundConfig 查找WAF的Inbound
func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicyInboundConfig(ctx context.Context, policyId int64) (*firewallconfigs.HTTPFirewallInboundConfig, error) {
config, err := this.FindEnabledHTTPFirewallPolicyConfig(ctx, policyId)
if err != nil {
@@ -54,7 +55,7 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicyInboundConfig(ct
return config.Inbound, nil
}
// 根据类型查找WAF的IP名单
// FindEnabledPolicyIPListIdWithType 根据类型查找WAF的IP名单
func (this *HTTPFirewallPolicyDAO) FindEnabledPolicyIPListIdWithType(ctx context.Context, policyId int64, listType ipconfigs.IPListType) (int64, error) {
switch listType {
case ipconfigs.IPListTypeWhite:
@@ -66,7 +67,7 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledPolicyIPListIdWithType(ctx context
}
}
// 查找WAF的白名单
// FindEnabledPolicyWhiteIPListId 查找WAF的白名单
func (this *HTTPFirewallPolicyDAO) FindEnabledPolicyWhiteIPListId(ctx context.Context, policyId int64) (int64, error) {
config, err := this.FindEnabledHTTPFirewallPolicyConfig(ctx, policyId)
if err != nil {
@@ -110,7 +111,7 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledPolicyWhiteIPListId(ctx context.Co
return config.Inbound.AllowListRef.ListId, nil
}
// 查找WAF的黑名单
// FindEnabledPolicyBlackIPListId 查找WAF的黑名单
func (this *HTTPFirewallPolicyDAO) FindEnabledPolicyBlackIPListId(ctx context.Context, policyId int64) (int64, error) {
config, err := this.FindEnabledHTTPFirewallPolicyConfig(ctx, policyId)
if err != nil {
@@ -154,7 +155,7 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledPolicyBlackIPListId(ctx context.Co
return config.Inbound.DenyListRef.ListId, nil
}
// 根据服务Id查找WAF策略
// FindEnabledHTTPFirewallPolicyWithServerId 根据服务Id查找WAF策略
func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicyWithServerId(ctx context.Context, serverId int64) (*pb.HTTPFirewallPolicy, error) {
serverResp, err := this.RPC().ServerRPC().FindEnabledServer(ctx, &pb.FindEnabledServerRequest{ServerId: serverId})
if err != nil {
@@ -180,3 +181,72 @@ func (this *HTTPFirewallPolicyDAO) FindEnabledHTTPFirewallPolicyWithServerId(ctx
}
return SharedHTTPFirewallPolicyDAO.FindEnabledHTTPFirewallPolicy(ctx, cluster.HttpFirewallPolicyId)
}
// FindHTTPFirewallActionConfigs 查找动作相关信息
func (this *HTTPFirewallPolicyDAO) FindHTTPFirewallActionConfigs(ctx context.Context, actions []*firewallconfigs.HTTPFirewallActionConfig) ([]maps.Map, error) {
var actionConfigs = []maps.Map{}
for _, action := range actions {
def := firewallconfigs.FindActionDefinition(action.Code)
if def == nil {
continue
}
if action.Options == nil {
action.Options = maps.Map{}
}
switch action.Code {
case firewallconfigs.HTTPFirewallActionRecordIP:
listId := action.Options.GetInt64("ipListId")
listResp, err := this.RPC().IPListRPC().FindEnabledIPList(ctx, &pb.FindEnabledIPListRequest{IpListId: listId})
if err != nil {
return nil, err
}
if listResp.IpList != nil {
action.Options["ipListName"] = listResp.IpList.Name
} else {
action.Options["ipListName"] = action.Options.GetString("ipListName") + "(已删除)"
}
case firewallconfigs.HTTPFirewallActionGoGroup:
groupId := action.Options.GetInt64("groupId")
groupResp, err := this.RPC().HTTPFirewallRuleGroupRPC().FindEnabledHTTPFirewallRuleGroup(ctx, &pb.FindEnabledHTTPFirewallRuleGroupRequest{FirewallRuleGroupId: groupId})
if err != nil {
return nil, err
}
if groupResp.FirewallRuleGroup != nil {
action.Options["groupName"] = groupResp.FirewallRuleGroup.Name
} else {
action.Options["groupName"] = action.Options.GetString("groupName") + "(已删除)"
}
case firewallconfigs.HTTPFirewallActionGoSet:
groupId := action.Options.GetInt64("groupId")
groupResp, err := this.RPC().HTTPFirewallRuleGroupRPC().FindEnabledHTTPFirewallRuleGroup(ctx, &pb.FindEnabledHTTPFirewallRuleGroupRequest{FirewallRuleGroupId: groupId})
if err != nil {
return nil, err
}
if groupResp.FirewallRuleGroup != nil {
action.Options["groupName"] = groupResp.FirewallRuleGroup.Name
} else {
action.Options["groupName"] = action.Options.GetString("groupName") + "(已删除)"
}
setId := action.Options.GetInt64("setId")
setResp, err := this.RPC().HTTPFirewallRuleSetRPC().FindEnabledHTTPFirewallRuleSet(ctx, &pb.FindEnabledHTTPFirewallRuleSetRequest{FirewallRuleSetId: setId})
if err != nil {
return nil, err
}
if setResp.FirewallRuleSet != nil {
action.Options["setName"] = setResp.FirewallRuleSet.Name
} else {
action.Options["setName"] = action.Options.GetString("setName") + "(已删除)"
}
}
actionConfigs = append(actionConfigs, maps.Map{
"name": def.Name,
"code": def.Code,
"category": def.Category,
"options": action.Options,
})
}
return actionConfigs, nil
}

View File

@@ -15,7 +15,7 @@ type IPListDAO struct {
BaseDAO
}
// 查找服务的允许IP列表
// FindAllowIPListIdWithServerId 查找服务的允许IP列表
func (this *IPListDAO) FindAllowIPListIdWithServerId(ctx context.Context, serverId int64) (int64, error) {
webConfig, err := SharedHTTPWebDAO.FindWebConfigWithServerId(ctx, serverId)
if err != nil {
@@ -30,7 +30,7 @@ func (this *IPListDAO) FindAllowIPListIdWithServerId(ctx context.Context, server
return webConfig.FirewallPolicy.Inbound.AllowListRef.ListId, nil
}
// 查找服务的禁止IP列表
// FindDenyIPListIdWithServerId 查找服务的禁止IP列表
func (this *IPListDAO) FindDenyIPListIdWithServerId(ctx context.Context, serverId int64) (int64, error) {
webConfig, err := SharedHTTPWebDAO.FindWebConfigWithServerId(ctx, serverId)
if err != nil {
@@ -45,7 +45,7 @@ func (this *IPListDAO) FindDenyIPListIdWithServerId(ctx context.Context, serverI
return webConfig.FirewallPolicy.Inbound.DenyListRef.ListId, nil
}
// 为服务创建IP名单
// CreateIPListForServerId 为服务创建IP名单
func (this *IPListDAO) CreateIPListForServerId(ctx context.Context, serverId int64, listType string) (int64, error) {
webConfig, err := SharedHTTPWebDAO.FindWebConfigWithServerId(ctx, serverId)
if err != nil {

View File

@@ -34,6 +34,7 @@ type AdminModuleList struct {
IsSuper bool `protobuf:"varint,2,opt,name=isSuper,proto3" json:"isSuper,omitempty"`
Modules []*AdminModule `protobuf:"bytes,3,rep,name=Modules,proto3" json:"Modules,omitempty"`
Fullname string `protobuf:"bytes,4,opt,name=fullname,proto3" json:"fullname,omitempty"`
Theme string `protobuf:"bytes,5,opt,name=theme,proto3" json:"theme,omitempty"`
}
func (x *AdminModuleList) Reset() {
@@ -96,6 +97,13 @@ func (x *AdminModuleList) GetFullname() string {
return ""
}
func (x *AdminModuleList) GetTheme() string {
if x != nil {
return x.Theme
}
return ""
}
var File_models_model_admin_list_proto protoreflect.FileDescriptor
var file_models_model_admin_list_proto_rawDesc = []byte{
@@ -103,7 +111,7 @@ var file_models_model_admin_list_proto_rawDesc = []byte{
0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x02, 0x70, 0x62, 0x1a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65,
0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x6f,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2, 0x01, 0x0a, 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x6d, 0x69,
0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x61, 0x64, 0x6d, 0x69, 0x6e,
0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x18, 0x02, 0x20,
@@ -112,8 +120,9 @@ var file_models_model_admin_list_proto_rawDesc = []byte{
0x70, 0x62, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e,
0x61, 0x6d, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -0,0 +1,176 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_api_token.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
// API令牌
type APIToken struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
NodeId string `protobuf:"bytes,2,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
Secret string `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"`
Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
}
func (x *APIToken) Reset() {
*x = APIToken{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_api_token_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *APIToken) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*APIToken) ProtoMessage() {}
func (x *APIToken) ProtoReflect() protoreflect.Message {
mi := &file_models_model_api_token_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 APIToken.ProtoReflect.Descriptor instead.
func (*APIToken) Descriptor() ([]byte, []int) {
return file_models_model_api_token_proto_rawDescGZIP(), []int{0}
}
func (x *APIToken) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *APIToken) GetNodeId() string {
if x != nil {
return x.NodeId
}
return ""
}
func (x *APIToken) GetSecret() string {
if x != nil {
return x.Secret
}
return ""
}
func (x *APIToken) GetRole() string {
if x != nil {
return x.Role
}
return ""
}
var File_models_model_api_token_proto protoreflect.FileDescriptor
var file_models_model_api_token_proto_rawDesc = []byte{
0x0a, 0x1c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61,
0x70, 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02,
0x70, 0x62, 0x22, 0x5e, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x09, 0x52, 0x06,
0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f,
0x6c, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_models_model_api_token_proto_rawDescOnce sync.Once
file_models_model_api_token_proto_rawDescData = file_models_model_api_token_proto_rawDesc
)
func file_models_model_api_token_proto_rawDescGZIP() []byte {
file_models_model_api_token_proto_rawDescOnce.Do(func() {
file_models_model_api_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_api_token_proto_rawDescData)
})
return file_models_model_api_token_proto_rawDescData
}
var file_models_model_api_token_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_api_token_proto_goTypes = []interface{}{
(*APIToken)(nil), // 0: pb.APIToken
}
var file_models_model_api_token_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_models_model_api_token_proto_init() }
func file_models_model_api_token_proto_init() {
if File_models_model_api_token_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_api_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*APIToken); 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_models_model_api_token_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_api_token_proto_goTypes,
DependencyIndexes: file_models_model_api_token_proto_depIdxs,
MessageInfos: file_models_model_api_token_proto_msgTypes,
}.Build()
File_models_model_api_token_proto = out.File
file_models_model_api_token_proto_rawDesc = nil
file_models_model_api_token_proto_goTypes = nil
file_models_model_api_token_proto_depIdxs = nil
}

View File

@@ -78,10 +78,12 @@ type HTTPAccessLog struct {
// 扩展
Attrs map[string]string `protobuf:"bytes,43,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// WAF相关
FirewallPolicyId int64 `protobuf:"varint,44,opt,name=firewallPolicyId,proto3" json:"firewallPolicyId,omitempty"`
FirewallRuleGroupId int64 `protobuf:"varint,45,opt,name=firewallRuleGroupId,proto3" json:"firewallRuleGroupId,omitempty"`
FirewallRuleSetId int64 `protobuf:"varint,46,opt,name=firewallRuleSetId,proto3" json:"firewallRuleSetId,omitempty"`
FirewallRuleId int64 `protobuf:"varint,47,opt,name=firewallRuleId,proto3" json:"firewallRuleId,omitempty"`
FirewallPolicyId int64 `protobuf:"varint,44,opt,name=firewallPolicyId,proto3" json:"firewallPolicyId,omitempty"`
FirewallRuleGroupId int64 `protobuf:"varint,45,opt,name=firewallRuleGroupId,proto3" json:"firewallRuleGroupId,omitempty"`
FirewallRuleSetId int64 `protobuf:"varint,46,opt,name=firewallRuleSetId,proto3" json:"firewallRuleSetId,omitempty"`
FirewallRuleId int64 `protobuf:"varint,47,opt,name=firewallRuleId,proto3" json:"firewallRuleId,omitempty"`
FirewallActions []string `protobuf:"bytes,49,rep,name=firewallActions,proto3" json:"firewallActions,omitempty"`
Tags []string `protobuf:"bytes,50,rep,name=tags,proto3" json:"tags,omitempty"`
}
func (x *HTTPAccessLog) Reset() {
@@ -445,6 +447,20 @@ func (x *HTTPAccessLog) GetFirewallRuleId() int64 {
return 0
}
func (x *HTTPAccessLog) GetFirewallActions() []string {
if x != nil {
return x.FirewallActions
}
return nil
}
func (x *HTTPAccessLog) GetTags() []string {
if x != nil {
return x.Tags
}
return nil
}
type Strings struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -497,7 +513,7 @@ var File_models_model_http_access_log_proto protoreflect.FileDescriptor
var file_models_model_http_access_log_proto_rawDesc = []byte{
0x0a, 0x22, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x68,
0x74, 0x74, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xdf, 0x0e, 0x0a, 0x0d, 0x48, 0x54, 0x54,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x9d, 0x0f, 0x0a, 0x0d, 0x48, 0x54, 0x54,
0x50, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x30, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76,
@@ -599,26 +615,30 @@ var file_models_model_http_access_log_proto_rawDesc = []byte{
0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x2f, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x49,
0x64, 0x1a, 0x4a, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a,
0x0b, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x64, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74,
0x61, 0x67, 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a,
0x4a, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43,
0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38,
0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64,
0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74,
0x72, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x21, 0x0a, 0x07, 0x53, 0x74,
0x72, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x21, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e,
0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -1,159 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_message_node_value.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 NodeValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ValueJSON []byte `protobuf:"bytes,1,opt,name=valueJSON,proto3" json:"valueJSON,omitempty"`
CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
}
func (x *NodeValue) Reset() {
*x = NodeValue{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_message_node_value_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NodeValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NodeValue) ProtoMessage() {}
func (x *NodeValue) ProtoReflect() protoreflect.Message {
mi := &file_models_model_message_node_value_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 NodeValue.ProtoReflect.Descriptor instead.
func (*NodeValue) Descriptor() ([]byte, []int) {
return file_models_model_message_node_value_proto_rawDescGZIP(), []int{0}
}
func (x *NodeValue) GetValueJSON() []byte {
if x != nil {
return x.ValueJSON
}
return nil
}
func (x *NodeValue) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
var File_models_model_message_node_value_proto protoreflect.FileDescriptor
var file_models_model_message_node_value_proto_rawDesc = []byte{
0x0a, 0x25, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x47, 0x0a, 0x09, 0x4e,
0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x64, 0x41, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_message_node_value_proto_rawDescOnce sync.Once
file_models_model_message_node_value_proto_rawDescData = file_models_model_message_node_value_proto_rawDesc
)
func file_models_model_message_node_value_proto_rawDescGZIP() []byte {
file_models_model_message_node_value_proto_rawDescOnce.Do(func() {
file_models_model_message_node_value_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_message_node_value_proto_rawDescData)
})
return file_models_model_message_node_value_proto_rawDescData
}
var file_models_model_message_node_value_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_message_node_value_proto_goTypes = []interface{}{
(*NodeValue)(nil), // 0: pb.NodeValue
}
var file_models_model_message_node_value_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_models_model_message_node_value_proto_init() }
func file_models_model_message_node_value_proto_init() {
if File_models_model_message_node_value_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_message_node_value_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeValue); 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_models_model_message_node_value_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_message_node_value_proto_goTypes,
DependencyIndexes: file_models_model_message_node_value_proto_depIdxs,
MessageInfos: file_models_model_message_node_value_proto_msgTypes,
}.Build()
File_models_model_message_node_value_proto = out.File
file_models_model_message_node_value_proto_rawDesc = nil
file_models_model_message_node_value_proto_goTypes = nil
file_models_model_message_node_value_proto_depIdxs = nil
}

View File

@@ -0,0 +1,221 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_metric_chart.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 MetricChart struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
WidthDiv int32 `protobuf:"varint,4,opt,name=widthDiv,proto3" json:"widthDiv,omitempty"`
ParamsJSON []byte `protobuf:"bytes,5,opt,name=paramsJSON,proto3" json:"paramsJSON,omitempty"`
IsOn bool `protobuf:"varint,6,opt,name=isOn,proto3" json:"isOn,omitempty"`
MaxItems int32 `protobuf:"varint,7,opt,name=maxItems,proto3" json:"maxItems,omitempty"`
MetricItem *MetricItem `protobuf:"bytes,30,opt,name=metricItem,proto3" json:"metricItem,omitempty"`
}
func (x *MetricChart) Reset() {
*x = MetricChart{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_metric_chart_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MetricChart) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetricChart) ProtoMessage() {}
func (x *MetricChart) ProtoReflect() protoreflect.Message {
mi := &file_models_model_metric_chart_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 MetricChart.ProtoReflect.Descriptor instead.
func (*MetricChart) Descriptor() ([]byte, []int) {
return file_models_model_metric_chart_proto_rawDescGZIP(), []int{0}
}
func (x *MetricChart) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *MetricChart) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *MetricChart) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *MetricChart) GetWidthDiv() int32 {
if x != nil {
return x.WidthDiv
}
return 0
}
func (x *MetricChart) GetParamsJSON() []byte {
if x != nil {
return x.ParamsJSON
}
return nil
}
func (x *MetricChart) GetIsOn() bool {
if x != nil {
return x.IsOn
}
return false
}
func (x *MetricChart) GetMaxItems() int32 {
if x != nil {
return x.MaxItems
}
return 0
}
func (x *MetricChart) GetMetricItem() *MetricItem {
if x != nil {
return x.MetricItem
}
return nil
}
var File_models_model_metric_chart_proto protoreflect.FileDescriptor
var file_models_model_metric_chart_proto_rawDesc = []byte{
0x0a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x1e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x43, 0x68, 0x61, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a,
0x08, 0x77, 0x69, 0x64, 0x74, 0x68, 0x44, 0x69, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
0x08, 0x77, 0x69, 0x64, 0x74, 0x68, 0x44, 0x69, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f,
0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1a, 0x0a,
0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x6d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_metric_chart_proto_rawDescOnce sync.Once
file_models_model_metric_chart_proto_rawDescData = file_models_model_metric_chart_proto_rawDesc
)
func file_models_model_metric_chart_proto_rawDescGZIP() []byte {
file_models_model_metric_chart_proto_rawDescOnce.Do(func() {
file_models_model_metric_chart_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_metric_chart_proto_rawDescData)
})
return file_models_model_metric_chart_proto_rawDescData
}
var file_models_model_metric_chart_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_metric_chart_proto_goTypes = []interface{}{
(*MetricChart)(nil), // 0: pb.MetricChart
(*MetricItem)(nil), // 1: pb.MetricItem
}
var file_models_model_metric_chart_proto_depIdxs = []int32{
1, // 0: pb.MetricChart.metricItem:type_name -> pb.MetricItem
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_models_model_metric_chart_proto_init() }
func file_models_model_metric_chart_proto_init() {
if File_models_model_metric_chart_proto != nil {
return
}
file_models_model_metric_item_proto_init()
if !protoimpl.UnsafeEnabled {
file_models_model_metric_chart_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetricChart); 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_models_model_metric_chart_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_metric_chart_proto_goTypes,
DependencyIndexes: file_models_model_metric_chart_proto_depIdxs,
MessageInfos: file_models_model_metric_chart_proto_msgTypes,
}.Build()
File_models_model_metric_chart_proto = out.File
file_models_model_metric_chart_proto_rawDesc = nil
file_models_model_metric_chart_proto_goTypes = nil
file_models_model_metric_chart_proto_depIdxs = nil
}

View File

@@ -40,6 +40,7 @@ type MetricItem struct {
Period int32 `protobuf:"varint,7,opt,name=period,proto3" json:"period,omitempty"`
PeriodUnit string `protobuf:"bytes,8,opt,name=periodUnit,proto3" json:"periodUnit,omitempty"`
Value string `protobuf:"bytes,10,opt,name=value,proto3" json:"value,omitempty"`
IsPublic bool `protobuf:"varint,11,opt,name=isPublic,proto3" json:"isPublic,omitempty"`
}
func (x *MetricItem) Reset() {
@@ -137,12 +138,19 @@ func (x *MetricItem) GetValue() string {
return ""
}
func (x *MetricItem) GetIsPublic() bool {
if x != nil {
return x.IsPublic
}
return false
}
var File_models_model_metric_item_proto protoreflect.FileDescriptor
var file_models_model_metric_item_proto_rawDesc = []byte{
0x0a, 0x1e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x12, 0x02, 0x70, 0x62, 0x22, 0xd6, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x12, 0x02, 0x70, 0x62, 0x22, 0xf2, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
@@ -155,8 +163,10 @@ var file_models_model_metric_item_proto_rawDesc = []byte{
0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f,
0x64, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72,
0x69, 0x6f, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a,
0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52,
0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -0,0 +1,370 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_metric_stat.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 MetricStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
ServerId int64 `protobuf:"varint,3,opt,name=serverId,proto3" json:"serverId,omitempty"`
ItemId int64 `protobuf:"varint,4,opt,name=itemId,proto3" json:"itemId,omitempty"`
Keys []string `protobuf:"bytes,5,rep,name=keys,proto3" json:"keys,omitempty"`
Value float32 `protobuf:"fixed32,6,opt,name=value,proto3" json:"value,omitempty"`
Time string `protobuf:"bytes,7,opt,name=time,proto3" json:"time,omitempty"`
Version int32 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty"`
NodeCluster *NodeCluster `protobuf:"bytes,30,opt,name=nodeCluster,proto3" json:"nodeCluster,omitempty"`
Node *Node `protobuf:"bytes,31,opt,name=node,proto3" json:"node,omitempty"`
Server *Server `protobuf:"bytes,32,opt,name=server,proto3" json:"server,omitempty"`
SumCount int64 `protobuf:"varint,40,opt,name=sumCount,proto3" json:"sumCount,omitempty"`
SumTotal float32 `protobuf:"fixed32,41,opt,name=sumTotal,proto3" json:"sumTotal,omitempty"`
}
func (x *MetricStat) Reset() {
*x = MetricStat{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_metric_stat_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MetricStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetricStat) ProtoMessage() {}
func (x *MetricStat) ProtoReflect() protoreflect.Message {
mi := &file_models_model_metric_stat_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 MetricStat.ProtoReflect.Descriptor instead.
func (*MetricStat) Descriptor() ([]byte, []int) {
return file_models_model_metric_stat_proto_rawDescGZIP(), []int{0}
}
func (x *MetricStat) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *MetricStat) GetHash() string {
if x != nil {
return x.Hash
}
return ""
}
func (x *MetricStat) GetServerId() int64 {
if x != nil {
return x.ServerId
}
return 0
}
func (x *MetricStat) GetItemId() int64 {
if x != nil {
return x.ItemId
}
return 0
}
func (x *MetricStat) GetKeys() []string {
if x != nil {
return x.Keys
}
return nil
}
func (x *MetricStat) GetValue() float32 {
if x != nil {
return x.Value
}
return 0
}
func (x *MetricStat) GetTime() string {
if x != nil {
return x.Time
}
return ""
}
func (x *MetricStat) GetVersion() int32 {
if x != nil {
return x.Version
}
return 0
}
func (x *MetricStat) GetNodeCluster() *NodeCluster {
if x != nil {
return x.NodeCluster
}
return nil
}
func (x *MetricStat) GetNode() *Node {
if x != nil {
return x.Node
}
return nil
}
func (x *MetricStat) GetServer() *Server {
if x != nil {
return x.Server
}
return nil
}
func (x *MetricStat) GetSumCount() int64 {
if x != nil {
return x.SumCount
}
return 0
}
func (x *MetricStat) GetSumTotal() float32 {
if x != nil {
return x.SumTotal
}
return 0
}
// 需要上传的统计数据
type UploadingMetricStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
Keys []string `protobuf:"bytes,3,rep,name=keys,proto3" json:"keys,omitempty"`
Value float32 `protobuf:"fixed32,4,opt,name=value,proto3" json:"value,omitempty"`
}
func (x *UploadingMetricStat) Reset() {
*x = UploadingMetricStat{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_metric_stat_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UploadingMetricStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UploadingMetricStat) ProtoMessage() {}
func (x *UploadingMetricStat) ProtoReflect() protoreflect.Message {
mi := &file_models_model_metric_stat_proto_msgTypes[1]
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 UploadingMetricStat.ProtoReflect.Descriptor instead.
func (*UploadingMetricStat) Descriptor() ([]byte, []int) {
return file_models_model_metric_stat_proto_rawDescGZIP(), []int{1}
}
func (x *UploadingMetricStat) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *UploadingMetricStat) GetHash() string {
if x != nil {
return x.Hash
}
return ""
}
func (x *UploadingMetricStat) GetKeys() []string {
if x != nil {
return x.Keys
}
return nil
}
func (x *UploadingMetricStat) GetValue() float32 {
if x != nil {
return x.Value
}
return 0
}
var File_models_model_metric_stat_proto protoreflect.FileDescriptor
var file_models_model_metric_stat_proto_rawDesc = []byte{
0x0a, 0x1e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x12, 0x02, 0x70, 0x62, 0x1a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64,
0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72,
0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x02, 0x0a, 0x0a, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08,
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d,
0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
0x6b, 0x65, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20,
0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69,
0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x18,
0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65,
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0b,
0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x04, 0x6e,
0x6f, 0x64, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e,
0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x65, 0x72,
0x76, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1a, 0x0a,
0x08, 0x73, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x03, 0x52,
0x08, 0x73, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x6d,
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x73, 0x75, 0x6d,
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x63, 0x0a, 0x13, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69,
0x6e, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68,
0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
0x6b, 0x65, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_metric_stat_proto_rawDescOnce sync.Once
file_models_model_metric_stat_proto_rawDescData = file_models_model_metric_stat_proto_rawDesc
)
func file_models_model_metric_stat_proto_rawDescGZIP() []byte {
file_models_model_metric_stat_proto_rawDescOnce.Do(func() {
file_models_model_metric_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_metric_stat_proto_rawDescData)
})
return file_models_model_metric_stat_proto_rawDescData
}
var file_models_model_metric_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_models_model_metric_stat_proto_goTypes = []interface{}{
(*MetricStat)(nil), // 0: pb.MetricStat
(*UploadingMetricStat)(nil), // 1: pb.UploadingMetricStat
(*NodeCluster)(nil), // 2: pb.NodeCluster
(*Node)(nil), // 3: pb.Node
(*Server)(nil), // 4: pb.Server
}
var file_models_model_metric_stat_proto_depIdxs = []int32{
2, // 0: pb.MetricStat.nodeCluster:type_name -> pb.NodeCluster
3, // 1: pb.MetricStat.node:type_name -> pb.Node
4, // 2: pb.MetricStat.server:type_name -> pb.Server
3, // [3:3] is the sub-list for method output_type
3, // [3:3] is the sub-list for method input_type
3, // [3:3] is the sub-list for extension type_name
3, // [3:3] is the sub-list for extension extendee
0, // [0:3] is the sub-list for field type_name
}
func init() { file_models_model_metric_stat_proto_init() }
func file_models_model_metric_stat_proto_init() {
if File_models_model_metric_stat_proto != nil {
return
}
file_models_model_node_cluster_proto_init()
file_models_model_node_proto_init()
file_models_model_server_proto_init()
if !protoimpl.UnsafeEnabled {
file_models_model_metric_stat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetricStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_models_model_metric_stat_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UploadingMetricStat); 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_models_model_metric_stat_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_metric_stat_proto_goTypes,
DependencyIndexes: file_models_model_metric_stat_proto_depIdxs,
MessageInfos: file_models_model_metric_stat_proto_msgTypes,
}.Build()
File_models_model_metric_stat_proto = out.File
file_models_model_metric_stat_proto_rawDesc = nil
file_models_model_metric_stat_proto_goTypes = nil
file_models_model_metric_stat_proto_depIdxs = nil
}

View File

@@ -0,0 +1,158 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_node_value.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 NodeValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ValueJSON []byte `protobuf:"bytes,1,opt,name=valueJSON,proto3" json:"valueJSON,omitempty"`
CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
}
func (x *NodeValue) Reset() {
*x = NodeValue{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_node_value_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NodeValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NodeValue) ProtoMessage() {}
func (x *NodeValue) ProtoReflect() protoreflect.Message {
mi := &file_models_model_node_value_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 NodeValue.ProtoReflect.Descriptor instead.
func (*NodeValue) Descriptor() ([]byte, []int) {
return file_models_model_node_value_proto_rawDescGZIP(), []int{0}
}
func (x *NodeValue) GetValueJSON() []byte {
if x != nil {
return x.ValueJSON
}
return nil
}
func (x *NodeValue) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
var File_models_model_node_value_proto protoreflect.FileDescriptor
var file_models_model_node_value_proto_rawDesc = []byte{
0x0a, 0x1d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e,
0x6f, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x02, 0x70, 0x62, 0x22, 0x47, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c,
0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_node_value_proto_rawDescOnce sync.Once
file_models_model_node_value_proto_rawDescData = file_models_model_node_value_proto_rawDesc
)
func file_models_model_node_value_proto_rawDescGZIP() []byte {
file_models_model_node_value_proto_rawDescOnce.Do(func() {
file_models_model_node_value_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_node_value_proto_rawDescData)
})
return file_models_model_node_value_proto_rawDescData
}
var file_models_model_node_value_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_node_value_proto_goTypes = []interface{}{
(*NodeValue)(nil), // 0: pb.NodeValue
}
var file_models_model_node_value_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_models_model_node_value_proto_init() }
func file_models_model_node_value_proto_init() {
if File_models_model_node_value_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_node_value_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NodeValue); 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_models_model_node_value_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_node_value_proto_goTypes,
DependencyIndexes: file_models_model_node_value_proto_depIdxs,
MessageInfos: file_models_model_node_value_proto_msgTypes,
}.Build()
File_models_model_node_value_proto = out.File
file_models_model_node_value_proto_rawDesc = nil
file_models_model_node_value_proto_goTypes = nil
file_models_model_node_value_proto_depIdxs = nil
}

View File

@@ -0,0 +1,208 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_ns_record_hourly_stat.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 NSRecordHourlyStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NsClusterId int64 `protobuf:"varint,1,opt,name=nsClusterId,proto3" json:"nsClusterId,omitempty"`
NsNodeId int64 `protobuf:"varint,2,opt,name=nsNodeId,proto3" json:"nsNodeId,omitempty"`
NsDomainId int64 `protobuf:"varint,3,opt,name=nsDomainId,proto3" json:"nsDomainId,omitempty"`
NsRecordId int64 `protobuf:"varint,4,opt,name=nsRecordId,proto3" json:"nsRecordId,omitempty"`
Bytes int64 `protobuf:"varint,5,opt,name=bytes,proto3" json:"bytes,omitempty"`
CountRequests int64 `protobuf:"varint,6,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
CreatedAt int64 `protobuf:"varint,7,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
}
func (x *NSRecordHourlyStat) Reset() {
*x = NSRecordHourlyStat{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_ns_record_hourly_stat_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NSRecordHourlyStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NSRecordHourlyStat) ProtoMessage() {}
func (x *NSRecordHourlyStat) ProtoReflect() protoreflect.Message {
mi := &file_models_model_ns_record_hourly_stat_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 NSRecordHourlyStat.ProtoReflect.Descriptor instead.
func (*NSRecordHourlyStat) Descriptor() ([]byte, []int) {
return file_models_model_ns_record_hourly_stat_proto_rawDescGZIP(), []int{0}
}
func (x *NSRecordHourlyStat) GetNsClusterId() int64 {
if x != nil {
return x.NsClusterId
}
return 0
}
func (x *NSRecordHourlyStat) GetNsNodeId() int64 {
if x != nil {
return x.NsNodeId
}
return 0
}
func (x *NSRecordHourlyStat) GetNsDomainId() int64 {
if x != nil {
return x.NsDomainId
}
return 0
}
func (x *NSRecordHourlyStat) GetNsRecordId() int64 {
if x != nil {
return x.NsRecordId
}
return 0
}
func (x *NSRecordHourlyStat) GetBytes() int64 {
if x != nil {
return x.Bytes
}
return 0
}
func (x *NSRecordHourlyStat) GetCountRequests() int64 {
if x != nil {
return x.CountRequests
}
return 0
}
func (x *NSRecordHourlyStat) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
var File_models_model_ns_record_hourly_stat_proto protoreflect.FileDescriptor
var file_models_model_ns_record_hourly_stat_proto_rawDesc = []byte{
0x0a, 0x28, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e,
0x73, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f,
0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xec,
0x01, 0x0a, 0x12, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x6f, 0x75, 0x72, 0x6c,
0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6e, 0x73, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x73, 0x4e, 0x6f, 0x64,
0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x73, 0x4e, 0x6f, 0x64,
0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69,
0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49,
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12,
0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_ns_record_hourly_stat_proto_rawDescOnce sync.Once
file_models_model_ns_record_hourly_stat_proto_rawDescData = file_models_model_ns_record_hourly_stat_proto_rawDesc
)
func file_models_model_ns_record_hourly_stat_proto_rawDescGZIP() []byte {
file_models_model_ns_record_hourly_stat_proto_rawDescOnce.Do(func() {
file_models_model_ns_record_hourly_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_ns_record_hourly_stat_proto_rawDescData)
})
return file_models_model_ns_record_hourly_stat_proto_rawDescData
}
var file_models_model_ns_record_hourly_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_ns_record_hourly_stat_proto_goTypes = []interface{}{
(*NSRecordHourlyStat)(nil), // 0: pb.NSRecordHourlyStat
}
var file_models_model_ns_record_hourly_stat_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_models_model_ns_record_hourly_stat_proto_init() }
func file_models_model_ns_record_hourly_stat_proto_init() {
if File_models_model_ns_record_hourly_stat_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_ns_record_hourly_stat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NSRecordHourlyStat); 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_models_model_ns_record_hourly_stat_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_ns_record_hourly_stat_proto_goTypes,
DependencyIndexes: file_models_model_ns_record_hourly_stat_proto_depIdxs,
MessageInfos: file_models_model_ns_record_hourly_stat_proto_msgTypes,
}.Build()
File_models_model_ns_record_hourly_stat_proto = out.File
file_models_model_ns_record_hourly_stat_proto_rawDesc = nil
file_models_model_ns_record_hourly_stat_proto_goTypes = nil
file_models_model_ns_record_hourly_stat_proto_depIdxs = nil
}

View File

@@ -38,6 +38,8 @@ type ServerDailyStat struct {
CountRequests int64 `protobuf:"varint,6,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
CountCachedRequests int64 `protobuf:"varint,7,opt,name=countCachedRequests,proto3" json:"countCachedRequests,omitempty"`
CreatedAt int64 `protobuf:"varint,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
CountAttackRequests int64 `protobuf:"varint,8,opt,name=countAttackRequests,proto3" json:"countAttackRequests,omitempty"`
AttackBytes int64 `protobuf:"varint,9,opt,name=attackBytes,proto3" json:"attackBytes,omitempty"`
}
func (x *ServerDailyStat) Reset() {
@@ -121,12 +123,26 @@ func (x *ServerDailyStat) GetCreatedAt() int64 {
return 0
}
func (x *ServerDailyStat) GetCountAttackRequests() int64 {
if x != nil {
return x.CountAttackRequests
}
return 0
}
func (x *ServerDailyStat) GetAttackBytes() int64 {
if x != nil {
return x.AttackBytes
}
return 0
}
var File_models_model_server_daily_stat_proto protoreflect.FileDescriptor
var file_models_model_server_daily_stat_proto_rawDesc = []byte{
0x0a, 0x24, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73,
0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xf7, 0x01, 0x0a, 0x0f, 0x53,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xcb, 0x02, 0x0a, 0x0f, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a,
0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65,
@@ -142,8 +158,13 @@ var file_models_model_server_daily_stat_proto_rawDesc = []byte{
0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x64, 0x41, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x74, 0x74,
0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b,
0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x61, 0x74, 0x74,
0x61, 0x63, 0x6b, 0x42, 0x79, 0x74, 0x65, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -0,0 +1,167 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_server_stat_board.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 ServerStatBoard struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
IsOn bool `protobuf:"varint,3,opt,name=isOn,proto3" json:"isOn,omitempty"`
}
func (x *ServerStatBoard) Reset() {
*x = ServerStatBoard{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_server_stat_board_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServerStatBoard) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServerStatBoard) ProtoMessage() {}
func (x *ServerStatBoard) ProtoReflect() protoreflect.Message {
mi := &file_models_model_server_stat_board_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 ServerStatBoard.ProtoReflect.Descriptor instead.
func (*ServerStatBoard) Descriptor() ([]byte, []int) {
return file_models_model_server_stat_board_proto_rawDescGZIP(), []int{0}
}
func (x *ServerStatBoard) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *ServerStatBoard) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ServerStatBoard) GetIsOn() bool {
if x != nil {
return x.IsOn
}
return false
}
var File_models_model_server_stat_board_proto protoreflect.FileDescriptor
var file_models_model_server_stat_board_proto_rawDesc = []byte{
0x0a, 0x24, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73,
0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x49, 0x0a, 0x0f, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
0x04, 0x69, 0x73, 0x4f, 0x6e, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_server_stat_board_proto_rawDescOnce sync.Once
file_models_model_server_stat_board_proto_rawDescData = file_models_model_server_stat_board_proto_rawDesc
)
func file_models_model_server_stat_board_proto_rawDescGZIP() []byte {
file_models_model_server_stat_board_proto_rawDescOnce.Do(func() {
file_models_model_server_stat_board_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_server_stat_board_proto_rawDescData)
})
return file_models_model_server_stat_board_proto_rawDescData
}
var file_models_model_server_stat_board_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_server_stat_board_proto_goTypes = []interface{}{
(*ServerStatBoard)(nil), // 0: pb.ServerStatBoard
}
var file_models_model_server_stat_board_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_models_model_server_stat_board_proto_init() }
func file_models_model_server_stat_board_proto_init() {
if File_models_model_server_stat_board_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_server_stat_board_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServerStatBoard); 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_models_model_server_stat_board_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_server_stat_board_proto_goTypes,
DependencyIndexes: file_models_model_server_stat_board_proto_depIdxs,
MessageInfos: file_models_model_server_stat_board_proto_msgTypes,
}.Build()
File_models_model_server_stat_board_proto = out.File
file_models_model_server_stat_board_proto_rawDesc = nil
file_models_model_server_stat_board_proto_goTypes = nil
file_models_model_server_stat_board_proto_depIdxs = nil
}

View File

@@ -0,0 +1,165 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: models/model_server_stat_board_chart.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 ServerStatBoardChart struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
MetricChart *MetricChart `protobuf:"bytes,30,opt,name=metricChart,proto3" json:"metricChart,omitempty"`
}
func (x *ServerStatBoardChart) Reset() {
*x = ServerStatBoardChart{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_server_stat_board_chart_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServerStatBoardChart) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServerStatBoardChart) ProtoMessage() {}
func (x *ServerStatBoardChart) ProtoReflect() protoreflect.Message {
mi := &file_models_model_server_stat_board_chart_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 ServerStatBoardChart.ProtoReflect.Descriptor instead.
func (*ServerStatBoardChart) Descriptor() ([]byte, []int) {
return file_models_model_server_stat_board_chart_proto_rawDescGZIP(), []int{0}
}
func (x *ServerStatBoardChart) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *ServerStatBoardChart) GetMetricChart() *MetricChart {
if x != nil {
return x.MetricChart
}
return nil
}
var File_models_model_server_stat_board_chart_proto protoreflect.FileDescriptor
var file_models_model_server_stat_board_chart_proto_rawDesc = []byte{
0x0a, 0x2a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73,
0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64,
0x5f, 0x63, 0x68, 0x61, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62,
0x1a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x22, 0x59, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x6d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x43, 0x68, 0x61, 0x72, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52,
0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x68, 0x61, 0x72, 0x74, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_server_stat_board_chart_proto_rawDescOnce sync.Once
file_models_model_server_stat_board_chart_proto_rawDescData = file_models_model_server_stat_board_chart_proto_rawDesc
)
func file_models_model_server_stat_board_chart_proto_rawDescGZIP() []byte {
file_models_model_server_stat_board_chart_proto_rawDescOnce.Do(func() {
file_models_model_server_stat_board_chart_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_server_stat_board_chart_proto_rawDescData)
})
return file_models_model_server_stat_board_chart_proto_rawDescData
}
var file_models_model_server_stat_board_chart_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_server_stat_board_chart_proto_goTypes = []interface{}{
(*ServerStatBoardChart)(nil), // 0: pb.ServerStatBoardChart
(*MetricChart)(nil), // 1: pb.MetricChart
}
var file_models_model_server_stat_board_chart_proto_depIdxs = []int32{
1, // 0: pb.ServerStatBoardChart.metricChart:type_name -> pb.MetricChart
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_models_model_server_stat_board_chart_proto_init() }
func file_models_model_server_stat_board_chart_proto_init() {
if File_models_model_server_stat_board_chart_proto != nil {
return
}
file_models_model_metric_chart_proto_init()
if !protoimpl.UnsafeEnabled {
file_models_model_server_stat_board_chart_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServerStatBoardChart); 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_models_model_server_stat_board_chart_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_server_stat_board_chart_proto_goTypes,
DependencyIndexes: file_models_model_server_stat_board_chart_proto_depIdxs,
MessageInfos: file_models_model_server_stat_board_chart_proto_msgTypes,
}.Build()
File_models_model_server_stat_board_chart_proto = out.File
file_models_model_server_stat_board_chart_proto_rawDesc = nil
file_models_model_server_stat_board_chart_proto_goTypes = nil
file_models_model_server_stat_board_chart_proto_depIdxs = nil
}

View File

@@ -112,6 +112,54 @@ func (x *RPCCountResponse) GetCount() int64 {
return 0
}
// 是否存在
type RPCExists struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"`
}
func (x *RPCExists) Reset() {
*x = RPCExists{}
if protoimpl.UnsafeEnabled {
mi := &file_models_rpc_messages_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RPCExists) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RPCExists) ProtoMessage() {}
func (x *RPCExists) ProtoReflect() protoreflect.Message {
mi := &file_models_rpc_messages_proto_msgTypes[2]
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 RPCExists.ProtoReflect.Descriptor instead.
func (*RPCExists) Descriptor() ([]byte, []int) {
return file_models_rpc_messages_proto_rawDescGZIP(), []int{2}
}
func (x *RPCExists) GetExists() bool {
if x != nil {
return x.Exists
}
return false
}
var File_models_rpc_messages_proto protoreflect.FileDescriptor
var file_models_rpc_messages_proto_rawDesc = []byte{
@@ -120,8 +168,10 @@ var file_models_rpc_messages_proto_rawDesc = []byte{
0x0c, 0x0a, 0x0a, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x28, 0x0a,
0x10, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x23, 0x0a, 0x09, 0x52, 0x50, 0x43, 0x45, 0x78,
0x69, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -136,10 +186,11 @@ func file_models_rpc_messages_proto_rawDescGZIP() []byte {
return file_models_rpc_messages_proto_rawDescData
}
var file_models_rpc_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_models_rpc_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_models_rpc_messages_proto_goTypes = []interface{}{
(*RPCSuccess)(nil), // 0: pb.RPCSuccess
(*RPCCountResponse)(nil), // 1: pb.RPCCountResponse
(*RPCExists)(nil), // 2: pb.RPCExists
}
var file_models_rpc_messages_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
@@ -179,6 +230,18 @@ func file_models_rpc_messages_proto_init() {
return nil
}
}
file_models_rpc_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RPCExists); 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{
@@ -186,7 +249,7 @@ func file_models_rpc_messages_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_models_rpc_messages_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumMessages: 3,
NumExtensions: 0,
NumServices: 0,
},

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,314 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: service_api_token.proto
package pb
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
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
// 获取API令牌
type FindAllEnabledAPITokensRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
}
func (x *FindAllEnabledAPITokensRequest) Reset() {
*x = FindAllEnabledAPITokensRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_api_token_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllEnabledAPITokensRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllEnabledAPITokensRequest) ProtoMessage() {}
func (x *FindAllEnabledAPITokensRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_api_token_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 FindAllEnabledAPITokensRequest.ProtoReflect.Descriptor instead.
func (*FindAllEnabledAPITokensRequest) Descriptor() ([]byte, []int) {
return file_service_api_token_proto_rawDescGZIP(), []int{0}
}
func (x *FindAllEnabledAPITokensRequest) GetRole() string {
if x != nil {
return x.Role
}
return ""
}
type FindAllEnabledAPITokensResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ApiTokens []*APIToken `protobuf:"bytes,1,rep,name=apiTokens,proto3" json:"apiTokens,omitempty"`
}
func (x *FindAllEnabledAPITokensResponse) Reset() {
*x = FindAllEnabledAPITokensResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_api_token_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllEnabledAPITokensResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllEnabledAPITokensResponse) ProtoMessage() {}
func (x *FindAllEnabledAPITokensResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_api_token_proto_msgTypes[1]
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 FindAllEnabledAPITokensResponse.ProtoReflect.Descriptor instead.
func (*FindAllEnabledAPITokensResponse) Descriptor() ([]byte, []int) {
return file_service_api_token_proto_rawDescGZIP(), []int{1}
}
func (x *FindAllEnabledAPITokensResponse) GetApiTokens() []*APIToken {
if x != nil {
return x.ApiTokens
}
return nil
}
var File_service_api_token_proto protoreflect.FileDescriptor
var file_service_api_token_proto_rawDesc = []byte{
0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x1c, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x70, 0x69, 0x5f,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x34, 0x0a, 0x1e, 0x46,
0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c,
0x65, 0x22, 0x4d, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x50, 0x49,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x09, 0x61, 0x70, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73,
0x32, 0x75, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x22,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_api_token_proto_rawDescOnce sync.Once
file_service_api_token_proto_rawDescData = file_service_api_token_proto_rawDesc
)
func file_service_api_token_proto_rawDescGZIP() []byte {
file_service_api_token_proto_rawDescOnce.Do(func() {
file_service_api_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_api_token_proto_rawDescData)
})
return file_service_api_token_proto_rawDescData
}
var file_service_api_token_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_service_api_token_proto_goTypes = []interface{}{
(*FindAllEnabledAPITokensRequest)(nil), // 0: pb.FindAllEnabledAPITokensRequest
(*FindAllEnabledAPITokensResponse)(nil), // 1: pb.FindAllEnabledAPITokensResponse
(*APIToken)(nil), // 2: pb.APIToken
}
var file_service_api_token_proto_depIdxs = []int32{
2, // 0: pb.FindAllEnabledAPITokensResponse.apiTokens:type_name -> pb.APIToken
0, // 1: pb.APITokenService.findAllEnabledAPITokens:input_type -> pb.FindAllEnabledAPITokensRequest
1, // 2: pb.APITokenService.findAllEnabledAPITokens:output_type -> pb.FindAllEnabledAPITokensResponse
2, // [2:3] is the sub-list for method output_type
1, // [1:2] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_service_api_token_proto_init() }
func file_service_api_token_proto_init() {
if File_service_api_token_proto != nil {
return
}
file_models_model_api_token_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_api_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllEnabledAPITokensRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_api_token_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllEnabledAPITokensResponse); 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_service_api_token_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_api_token_proto_goTypes,
DependencyIndexes: file_service_api_token_proto_depIdxs,
MessageInfos: file_service_api_token_proto_msgTypes,
}.Build()
File_service_api_token_proto = out.File
file_service_api_token_proto_rawDesc = nil
file_service_api_token_proto_goTypes = nil
file_service_api_token_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// APITokenServiceClient is the client API for APITokenService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type APITokenServiceClient interface {
// 获取API令牌
FindAllEnabledAPITokens(ctx context.Context, in *FindAllEnabledAPITokensRequest, opts ...grpc.CallOption) (*FindAllEnabledAPITokensResponse, error)
}
type aPITokenServiceClient struct {
cc grpc.ClientConnInterface
}
func NewAPITokenServiceClient(cc grpc.ClientConnInterface) APITokenServiceClient {
return &aPITokenServiceClient{cc}
}
func (c *aPITokenServiceClient) FindAllEnabledAPITokens(ctx context.Context, in *FindAllEnabledAPITokensRequest, opts ...grpc.CallOption) (*FindAllEnabledAPITokensResponse, error) {
out := new(FindAllEnabledAPITokensResponse)
err := c.cc.Invoke(ctx, "/pb.APITokenService/findAllEnabledAPITokens", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// APITokenServiceServer is the server API for APITokenService service.
type APITokenServiceServer interface {
// 获取API令牌
FindAllEnabledAPITokens(context.Context, *FindAllEnabledAPITokensRequest) (*FindAllEnabledAPITokensResponse, error)
}
// UnimplementedAPITokenServiceServer can be embedded to have forward compatible implementations.
type UnimplementedAPITokenServiceServer struct {
}
func (*UnimplementedAPITokenServiceServer) FindAllEnabledAPITokens(context.Context, *FindAllEnabledAPITokensRequest) (*FindAllEnabledAPITokensResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllEnabledAPITokens not implemented")
}
func RegisterAPITokenServiceServer(s *grpc.Server, srv APITokenServiceServer) {
s.RegisterService(&_APITokenService_serviceDesc, srv)
}
func _APITokenService_FindAllEnabledAPITokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindAllEnabledAPITokensRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(APITokenServiceServer).FindAllEnabledAPITokens(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.APITokenService/FindAllEnabledAPITokens",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(APITokenServiceServer).FindAllEnabledAPITokens(ctx, req.(*FindAllEnabledAPITokensRequest))
}
return interceptor(ctx, in, info, handler)
}
var _APITokenService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.APITokenService",
HandlerType: (*APITokenServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "findAllEnabledAPITokens",
Handler: _APITokenService_FindAllEnabledAPITokens_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_api_token.proto",
}

View File

@@ -0,0 +1,802 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: service_firewall.proto
package pb
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
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 ComposeFirewallGlobalBoardRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ComposeFirewallGlobalBoardRequest) Reset() {
*x = ComposeFirewallGlobalBoardRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_firewall_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeFirewallGlobalBoardRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeFirewallGlobalBoardRequest) ProtoMessage() {}
func (x *ComposeFirewallGlobalBoardRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_firewall_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 ComposeFirewallGlobalBoardRequest.ProtoReflect.Descriptor instead.
func (*ComposeFirewallGlobalBoardRequest) Descriptor() ([]byte, []int) {
return file_service_firewall_proto_rawDescGZIP(), []int{0}
}
type ComposeFirewallGlobalBoardResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CountDailyLogs int64 `protobuf:"varint,1,opt,name=countDailyLogs,proto3" json:"countDailyLogs,omitempty"`
CountDailyBlocks int64 `protobuf:"varint,2,opt,name=countDailyBlocks,proto3" json:"countDailyBlocks,omitempty"`
CountDailyCaptcha int64 `protobuf:"varint,3,opt,name=countDailyCaptcha,proto3" json:"countDailyCaptcha,omitempty"`
CountWeeklyBlocks int64 `protobuf:"varint,4,opt,name=countWeeklyBlocks,proto3" json:"countWeeklyBlocks,omitempty"`
HttpFirewallRuleGroups []*ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat `protobuf:"bytes,30,rep,name=httpFirewallRuleGroups,proto3" json:"httpFirewallRuleGroups,omitempty"`
DailyStats []*ComposeFirewallGlobalBoardResponse_DailyStat `protobuf:"bytes,31,rep,name=dailyStats,proto3" json:"dailyStats,omitempty"`
HourlyStats []*ComposeFirewallGlobalBoardResponse_HourlyStat `protobuf:"bytes,32,rep,name=hourlyStats,proto3" json:"hourlyStats,omitempty"`
}
func (x *ComposeFirewallGlobalBoardResponse) Reset() {
*x = ComposeFirewallGlobalBoardResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_firewall_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeFirewallGlobalBoardResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeFirewallGlobalBoardResponse) ProtoMessage() {}
func (x *ComposeFirewallGlobalBoardResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_firewall_proto_msgTypes[1]
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 ComposeFirewallGlobalBoardResponse.ProtoReflect.Descriptor instead.
func (*ComposeFirewallGlobalBoardResponse) Descriptor() ([]byte, []int) {
return file_service_firewall_proto_rawDescGZIP(), []int{1}
}
func (x *ComposeFirewallGlobalBoardResponse) GetCountDailyLogs() int64 {
if x != nil {
return x.CountDailyLogs
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse) GetCountDailyBlocks() int64 {
if x != nil {
return x.CountDailyBlocks
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse) GetCountDailyCaptcha() int64 {
if x != nil {
return x.CountDailyCaptcha
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse) GetCountWeeklyBlocks() int64 {
if x != nil {
return x.CountWeeklyBlocks
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse) GetHttpFirewallRuleGroups() []*ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat {
if x != nil {
return x.HttpFirewallRuleGroups
}
return nil
}
func (x *ComposeFirewallGlobalBoardResponse) GetDailyStats() []*ComposeFirewallGlobalBoardResponse_DailyStat {
if x != nil {
return x.DailyStats
}
return nil
}
func (x *ComposeFirewallGlobalBoardResponse) GetHourlyStats() []*ComposeFirewallGlobalBoardResponse_HourlyStat {
if x != nil {
return x.HourlyStats
}
return nil
}
// 发送告警(notify)消息
type NotifyHTTPFirewallEventRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerId int64 `protobuf:"varint,1,opt,name=serverId,proto3" json:"serverId,omitempty"`
HttpFirewallPolicyId int64 `protobuf:"varint,2,opt,name=httpFirewallPolicyId,proto3" json:"httpFirewallPolicyId,omitempty"`
HttpFirewallRuleGroupId int64 `protobuf:"varint,3,opt,name=httpFirewallRuleGroupId,proto3" json:"httpFirewallRuleGroupId,omitempty"`
HttpFirewallRuleSetId int64 `protobuf:"varint,4,opt,name=httpFirewallRuleSetId,proto3" json:"httpFirewallRuleSetId,omitempty"`
CreatedAt int64 `protobuf:"varint,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
}
func (x *NotifyHTTPFirewallEventRequest) Reset() {
*x = NotifyHTTPFirewallEventRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_firewall_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NotifyHTTPFirewallEventRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NotifyHTTPFirewallEventRequest) ProtoMessage() {}
func (x *NotifyHTTPFirewallEventRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_firewall_proto_msgTypes[2]
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 NotifyHTTPFirewallEventRequest.ProtoReflect.Descriptor instead.
func (*NotifyHTTPFirewallEventRequest) Descriptor() ([]byte, []int) {
return file_service_firewall_proto_rawDescGZIP(), []int{2}
}
func (x *NotifyHTTPFirewallEventRequest) GetServerId() int64 {
if x != nil {
return x.ServerId
}
return 0
}
func (x *NotifyHTTPFirewallEventRequest) GetHttpFirewallPolicyId() int64 {
if x != nil {
return x.HttpFirewallPolicyId
}
return 0
}
func (x *NotifyHTTPFirewallEventRequest) GetHttpFirewallRuleGroupId() int64 {
if x != nil {
return x.HttpFirewallRuleGroupId
}
return 0
}
func (x *NotifyHTTPFirewallEventRequest) GetHttpFirewallRuleSetId() int64 {
if x != nil {
return x.HttpFirewallRuleSetId
}
return 0
}
func (x *NotifyHTTPFirewallEventRequest) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
type ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HttpFirewallRuleGroup *HTTPFirewallRuleGroup `protobuf:"bytes,1,opt,name=httpFirewallRuleGroup,proto3" json:"httpFirewallRuleGroup,omitempty"`
Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
}
func (x *ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) Reset() {
*x = ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_firewall_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) ProtoMessage() {}
func (x *ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) ProtoReflect() protoreflect.Message {
mi := &file_service_firewall_proto_msgTypes[3]
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 ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat.ProtoReflect.Descriptor instead.
func (*ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) Descriptor() ([]byte, []int) {
return file_service_firewall_proto_rawDescGZIP(), []int{1, 0}
}
func (x *ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) GetHttpFirewallRuleGroup() *HTTPFirewallRuleGroup {
if x != nil {
return x.HttpFirewallRuleGroup
}
return nil
}
func (x *ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat) GetCount() int64 {
if x != nil {
return x.Count
}
return 0
}
type ComposeFirewallGlobalBoardResponse_HourlyStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Hour string `protobuf:"bytes,1,opt,name=hour,proto3" json:"hour,omitempty"`
CountLogs int64 `protobuf:"varint,2,opt,name=countLogs,proto3" json:"countLogs,omitempty"`
CountCaptcha int64 `protobuf:"varint,3,opt,name=countCaptcha,proto3" json:"countCaptcha,omitempty"`
CountBlocks int64 `protobuf:"varint,4,opt,name=countBlocks,proto3" json:"countBlocks,omitempty"`
}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) Reset() {
*x = ComposeFirewallGlobalBoardResponse_HourlyStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_firewall_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeFirewallGlobalBoardResponse_HourlyStat) ProtoMessage() {}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) ProtoReflect() protoreflect.Message {
mi := &file_service_firewall_proto_msgTypes[4]
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 ComposeFirewallGlobalBoardResponse_HourlyStat.ProtoReflect.Descriptor instead.
func (*ComposeFirewallGlobalBoardResponse_HourlyStat) Descriptor() ([]byte, []int) {
return file_service_firewall_proto_rawDescGZIP(), []int{1, 1}
}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) GetHour() string {
if x != nil {
return x.Hour
}
return ""
}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) GetCountLogs() int64 {
if x != nil {
return x.CountLogs
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) GetCountCaptcha() int64 {
if x != nil {
return x.CountCaptcha
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse_HourlyStat) GetCountBlocks() int64 {
if x != nil {
return x.CountBlocks
}
return 0
}
type ComposeFirewallGlobalBoardResponse_DailyStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Day string `protobuf:"bytes,1,opt,name=day,proto3" json:"day,omitempty"`
CountLogs int64 `protobuf:"varint,2,opt,name=countLogs,proto3" json:"countLogs,omitempty"`
CountCaptcha int64 `protobuf:"varint,3,opt,name=countCaptcha,proto3" json:"countCaptcha,omitempty"`
CountBlocks int64 `protobuf:"varint,4,opt,name=countBlocks,proto3" json:"countBlocks,omitempty"`
}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) Reset() {
*x = ComposeFirewallGlobalBoardResponse_DailyStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_firewall_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeFirewallGlobalBoardResponse_DailyStat) ProtoMessage() {}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) ProtoReflect() protoreflect.Message {
mi := &file_service_firewall_proto_msgTypes[5]
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 ComposeFirewallGlobalBoardResponse_DailyStat.ProtoReflect.Descriptor instead.
func (*ComposeFirewallGlobalBoardResponse_DailyStat) Descriptor() ([]byte, []int) {
return file_service_firewall_proto_rawDescGZIP(), []int{1, 2}
}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) GetDay() string {
if x != nil {
return x.Day
}
return ""
}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) GetCountLogs() int64 {
if x != nil {
return x.CountLogs
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) GetCountCaptcha() int64 {
if x != nil {
return x.CountCaptcha
}
return 0
}
func (x *ComposeFirewallGlobalBoardResponse_DailyStat) GetCountBlocks() int64 {
if x != nil {
return x.CountBlocks
}
return 0
}
var File_service_firewall_proto protoreflect.FileDescriptor
var file_service_firewall_proto_rawDesc = []byte{
0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x19, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0x23, 0x0a, 0x21, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61,
0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x85, 0x07, 0x0a, 0x22, 0x43, 0x6f,
0x6d, 0x70, 0x6f, 0x73, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f,
0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x4c, 0x6f,
0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44,
0x61, 0x69, 0x6c, 0x79, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x6c,
0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x69,
0x6c, 0x79, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x43, 0x61, 0x70, 0x74, 0x63,
0x68, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x6c,
0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73,
0x12, 0x78, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x40, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74,
0x61, 0x74, 0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x64, 0x61,
0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30,
0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x52, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0b,
0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x31, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72,
0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79,
0x53, 0x74, 0x61, 0x74, 0x52, 0x0b, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x73, 0x1a, 0x82, 0x01, 0x0a, 0x19, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x12,
0x4f, 0x0a, 0x15, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52,
0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x15, 0x68, 0x74, 0x74, 0x70, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x84, 0x01, 0x0a, 0x0a, 0x48, 0x6f, 0x75, 0x72, 0x6c,
0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x1a, 0x81, 0x01,
0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64,
0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x1c, 0x0a,
0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12,
0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
0x73, 0x22, 0xfe, 0x01, 0x0a, 0x1e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64,
0x12, 0x32, 0x0a, 0x14, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14,
0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x17, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x34,
0x0a, 0x15, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75,
0x6c, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x68,
0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53,
0x65, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x41, 0x74, 0x32, 0xcd, 0x01, 0x0a, 0x0f, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62,
0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x17, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x22,
0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65,
0x73, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_service_firewall_proto_rawDescOnce sync.Once
file_service_firewall_proto_rawDescData = file_service_firewall_proto_rawDesc
)
func file_service_firewall_proto_rawDescGZIP() []byte {
file_service_firewall_proto_rawDescOnce.Do(func() {
file_service_firewall_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_firewall_proto_rawDescData)
})
return file_service_firewall_proto_rawDescData
}
var file_service_firewall_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_service_firewall_proto_goTypes = []interface{}{
(*ComposeFirewallGlobalBoardRequest)(nil), // 0: pb.ComposeFirewallGlobalBoardRequest
(*ComposeFirewallGlobalBoardResponse)(nil), // 1: pb.ComposeFirewallGlobalBoardResponse
(*NotifyHTTPFirewallEventRequest)(nil), // 2: pb.NotifyHTTPFirewallEventRequest
(*ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat)(nil), // 3: pb.ComposeFirewallGlobalBoardResponse.HTTPFirewallRuleGroupStat
(*ComposeFirewallGlobalBoardResponse_HourlyStat)(nil), // 4: pb.ComposeFirewallGlobalBoardResponse.HourlyStat
(*ComposeFirewallGlobalBoardResponse_DailyStat)(nil), // 5: pb.ComposeFirewallGlobalBoardResponse.DailyStat
(*HTTPFirewallRuleGroup)(nil), // 6: pb.HTTPFirewallRuleGroup
(*RPCSuccess)(nil), // 7: pb.RPCSuccess
}
var file_service_firewall_proto_depIdxs = []int32{
3, // 0: pb.ComposeFirewallGlobalBoardResponse.httpFirewallRuleGroups:type_name -> pb.ComposeFirewallGlobalBoardResponse.HTTPFirewallRuleGroupStat
5, // 1: pb.ComposeFirewallGlobalBoardResponse.dailyStats:type_name -> pb.ComposeFirewallGlobalBoardResponse.DailyStat
4, // 2: pb.ComposeFirewallGlobalBoardResponse.hourlyStats:type_name -> pb.ComposeFirewallGlobalBoardResponse.HourlyStat
6, // 3: pb.ComposeFirewallGlobalBoardResponse.HTTPFirewallRuleGroupStat.httpFirewallRuleGroup:type_name -> pb.HTTPFirewallRuleGroup
0, // 4: pb.FirewallService.composeFirewallGlobalBoard:input_type -> pb.ComposeFirewallGlobalBoardRequest
2, // 5: pb.FirewallService.notifyHTTPFirewallEvent:input_type -> pb.NotifyHTTPFirewallEventRequest
1, // 6: pb.FirewallService.composeFirewallGlobalBoard:output_type -> pb.ComposeFirewallGlobalBoardResponse
7, // 7: pb.FirewallService.notifyHTTPFirewallEvent:output_type -> pb.RPCSuccess
6, // [6:8] is the sub-list for method output_type
4, // [4:6] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_service_firewall_proto_init() }
func file_service_firewall_proto_init() {
if File_service_firewall_proto != nil {
return
}
file_models_rpc_messages_proto_init()
file_models_model_http_firewall_rule_group_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_firewall_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeFirewallGlobalBoardRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_firewall_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeFirewallGlobalBoardResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_firewall_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NotifyHTTPFirewallEventRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_firewall_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeFirewallGlobalBoardResponse_HTTPFirewallRuleGroupStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_firewall_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeFirewallGlobalBoardResponse_HourlyStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_firewall_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeFirewallGlobalBoardResponse_DailyStat); 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_service_firewall_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_firewall_proto_goTypes,
DependencyIndexes: file_service_firewall_proto_depIdxs,
MessageInfos: file_service_firewall_proto_msgTypes,
}.Build()
File_service_firewall_proto = out.File
file_service_firewall_proto_rawDesc = nil
file_service_firewall_proto_goTypes = nil
file_service_firewall_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// FirewallServiceClient is the client API for FirewallService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type FirewallServiceClient interface {
// 组合看板数据
ComposeFirewallGlobalBoard(ctx context.Context, in *ComposeFirewallGlobalBoardRequest, opts ...grpc.CallOption) (*ComposeFirewallGlobalBoardResponse, error)
// 发送告警(notify)消息
NotifyHTTPFirewallEvent(ctx context.Context, in *NotifyHTTPFirewallEventRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
}
type firewallServiceClient struct {
cc grpc.ClientConnInterface
}
func NewFirewallServiceClient(cc grpc.ClientConnInterface) FirewallServiceClient {
return &firewallServiceClient{cc}
}
func (c *firewallServiceClient) ComposeFirewallGlobalBoard(ctx context.Context, in *ComposeFirewallGlobalBoardRequest, opts ...grpc.CallOption) (*ComposeFirewallGlobalBoardResponse, error) {
out := new(ComposeFirewallGlobalBoardResponse)
err := c.cc.Invoke(ctx, "/pb.FirewallService/composeFirewallGlobalBoard", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *firewallServiceClient) NotifyHTTPFirewallEvent(ctx context.Context, in *NotifyHTTPFirewallEventRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, "/pb.FirewallService/notifyHTTPFirewallEvent", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// FirewallServiceServer is the server API for FirewallService service.
type FirewallServiceServer interface {
// 组合看板数据
ComposeFirewallGlobalBoard(context.Context, *ComposeFirewallGlobalBoardRequest) (*ComposeFirewallGlobalBoardResponse, error)
// 发送告警(notify)消息
NotifyHTTPFirewallEvent(context.Context, *NotifyHTTPFirewallEventRequest) (*RPCSuccess, error)
}
// UnimplementedFirewallServiceServer can be embedded to have forward compatible implementations.
type UnimplementedFirewallServiceServer struct {
}
func (*UnimplementedFirewallServiceServer) ComposeFirewallGlobalBoard(context.Context, *ComposeFirewallGlobalBoardRequest) (*ComposeFirewallGlobalBoardResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ComposeFirewallGlobalBoard not implemented")
}
func (*UnimplementedFirewallServiceServer) NotifyHTTPFirewallEvent(context.Context, *NotifyHTTPFirewallEventRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method NotifyHTTPFirewallEvent not implemented")
}
func RegisterFirewallServiceServer(s *grpc.Server, srv FirewallServiceServer) {
s.RegisterService(&_FirewallService_serviceDesc, srv)
}
func _FirewallService_ComposeFirewallGlobalBoard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ComposeFirewallGlobalBoardRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FirewallServiceServer).ComposeFirewallGlobalBoard(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.FirewallService/ComposeFirewallGlobalBoard",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FirewallServiceServer).ComposeFirewallGlobalBoard(ctx, req.(*ComposeFirewallGlobalBoardRequest))
}
return interceptor(ctx, in, info, handler)
}
func _FirewallService_NotifyHTTPFirewallEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(NotifyHTTPFirewallEventRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FirewallServiceServer).NotifyHTTPFirewallEvent(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.FirewallService/NotifyHTTPFirewallEvent",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FirewallServiceServer).NotifyHTTPFirewallEvent(ctx, req.(*NotifyHTTPFirewallEventRequest))
}
return interceptor(ctx, in, info, handler)
}
var _FirewallService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.FirewallService",
HandlerType: (*FirewallServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "composeFirewallGlobalBoard",
Handler: _FirewallService_ComposeFirewallGlobalBoard_Handler,
},
{
MethodName: "notifyHTTPFirewallEvent",
Handler: _FirewallService_NotifyHTTPFirewallEvent_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_firewall.proto",
}

File diff suppressed because it is too large Load Diff

View File

@@ -42,6 +42,7 @@ type CreateMetricItemRequest struct {
Period int32 `protobuf:"varint,5,opt,name=period,proto3" json:"period,omitempty"`
PeriodUnit string `protobuf:"bytes,6,opt,name=periodUnit,proto3" json:"periodUnit,omitempty"`
Value string `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"`
IsPublic bool `protobuf:"varint,8,opt,name=isPublic,proto3" json:"isPublic,omitempty"`
}
func (x *CreateMetricItemRequest) Reset() {
@@ -125,6 +126,13 @@ func (x *CreateMetricItemRequest) GetValue() string {
return ""
}
func (x *CreateMetricItemRequest) GetIsPublic() bool {
if x != nil {
return x.IsPublic
}
return false
}
type CreateMetricItemResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -185,6 +193,7 @@ type UpdateMetricItemRequest struct {
PeriodUnit string `protobuf:"bytes,5,opt,name=periodUnit,proto3" json:"periodUnit,omitempty"`
Value string `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"`
IsOn bool `protobuf:"varint,7,opt,name=isOn,proto3" json:"isOn,omitempty"`
IsPublic bool `protobuf:"varint,8,opt,name=isPublic,proto3" json:"isPublic,omitempty"`
}
func (x *UpdateMetricItemRequest) Reset() {
@@ -268,6 +277,13 @@ func (x *UpdateMetricItemRequest) GetIsOn() bool {
return false
}
func (x *UpdateMetricItemRequest) GetIsPublic() bool {
if x != nil {
return x.IsPublic
}
return false
}
// 查找单个指标信息
type FindEnabledMetricItemRequest struct {
state protoimpl.MessageState
@@ -578,7 +594,7 @@ var file_service_metric_item_proto_rawDesc = []byte{
0x1e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x19, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x01, 0x0a, 0x17, 0x43,
0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x01, 0x0a, 0x17, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61,
@@ -590,86 +606,90 @@ var file_service_metric_item_proto_rawDesc = []byte{
0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x55, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69,
0x6f, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3e, 0x0a, 0x18,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xc7, 0x01, 0x0a,
0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
0x6b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04,
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a,
0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x22, 0x42, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x1d, 0x46, 0x69,
0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52,
0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x3f, 0x0a, 0x21, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x67, 0x0a, 0x1d,
0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a,
0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,
0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70,
0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0b, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3d, 0x0a, 0x17, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x3e, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xe3, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x32, 0xfe, 0x03, 0x0a, 0x11, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d,
0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e,
0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5c,
0x0a, 0x15, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x1a,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x45,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73,
0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69,
0x6f, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65,
0x72, 0x69, 0x6f, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73,
0x4f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x08,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x42,
0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22,
0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x49, 0x64, 0x22, 0x4f, 0x0a, 0x1d, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x74, 0x65, 0x6d, 0x22, 0x3f, 0x0a, 0x21, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70,
0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52,
0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x22, 0x67, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x52, 0x0a,
0x1e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x30, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x73, 0x22, 0x3d, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64,
0x32, 0xfe, 0x03, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53,
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5c, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12,
0x20, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x1a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52,
0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x5f, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70,
0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x3f, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73,
0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (

View File

@@ -0,0 +1,616 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: service_metric_stat.proto
package pb
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
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 UploadMetricStatsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerId int64 `protobuf:"varint,1,opt,name=serverId,proto3" json:"serverId,omitempty"`
Time string `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
Total float32 `protobuf:"fixed32,4,opt,name=total,proto3" json:"total,omitempty"`
Version int32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
ItemId int64 `protobuf:"varint,6,opt,name=itemId,proto3" json:"itemId,omitempty"`
MetricStats []*UploadingMetricStat `protobuf:"bytes,7,rep,name=metricStats,proto3" json:"metricStats,omitempty"`
}
func (x *UploadMetricStatsRequest) Reset() {
*x = UploadMetricStatsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_metric_stat_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UploadMetricStatsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UploadMetricStatsRequest) ProtoMessage() {}
func (x *UploadMetricStatsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_metric_stat_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 UploadMetricStatsRequest.ProtoReflect.Descriptor instead.
func (*UploadMetricStatsRequest) Descriptor() ([]byte, []int) {
return file_service_metric_stat_proto_rawDescGZIP(), []int{0}
}
func (x *UploadMetricStatsRequest) GetServerId() int64 {
if x != nil {
return x.ServerId
}
return 0
}
func (x *UploadMetricStatsRequest) GetTime() string {
if x != nil {
return x.Time
}
return ""
}
func (x *UploadMetricStatsRequest) GetCount() int64 {
if x != nil {
return x.Count
}
return 0
}
func (x *UploadMetricStatsRequest) GetTotal() float32 {
if x != nil {
return x.Total
}
return 0
}
func (x *UploadMetricStatsRequest) GetVersion() int32 {
if x != nil {
return x.Version
}
return 0
}
func (x *UploadMetricStatsRequest) GetItemId() int64 {
if x != nil {
return x.ItemId
}
return 0
}
func (x *UploadMetricStatsRequest) GetMetricStats() []*UploadingMetricStat {
if x != nil {
return x.MetricStats
}
return nil
}
// 计算指标数据数量
type CountMetricStatsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MetricItemId int64 `protobuf:"varint,1,opt,name=metricItemId,proto3" json:"metricItemId,omitempty"`
}
func (x *CountMetricStatsRequest) Reset() {
*x = CountMetricStatsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_metric_stat_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CountMetricStatsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CountMetricStatsRequest) ProtoMessage() {}
func (x *CountMetricStatsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_metric_stat_proto_msgTypes[1]
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 CountMetricStatsRequest.ProtoReflect.Descriptor instead.
func (*CountMetricStatsRequest) Descriptor() ([]byte, []int) {
return file_service_metric_stat_proto_rawDescGZIP(), []int{1}
}
func (x *CountMetricStatsRequest) GetMetricItemId() int64 {
if x != nil {
return x.MetricItemId
}
return 0
}
// 读取单页指标数据
type ListMetricStatsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MetricItemId int64 `protobuf:"varint,1,opt,name=metricItemId,proto3" json:"metricItemId,omitempty"`
Offset int64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"`
Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
}
func (x *ListMetricStatsRequest) Reset() {
*x = ListMetricStatsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_metric_stat_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListMetricStatsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListMetricStatsRequest) ProtoMessage() {}
func (x *ListMetricStatsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_metric_stat_proto_msgTypes[2]
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 ListMetricStatsRequest.ProtoReflect.Descriptor instead.
func (*ListMetricStatsRequest) Descriptor() ([]byte, []int) {
return file_service_metric_stat_proto_rawDescGZIP(), []int{2}
}
func (x *ListMetricStatsRequest) GetMetricItemId() int64 {
if x != nil {
return x.MetricItemId
}
return 0
}
func (x *ListMetricStatsRequest) GetOffset() int64 {
if x != nil {
return x.Offset
}
return 0
}
func (x *ListMetricStatsRequest) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
type ListMetricStatsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MetricStats []*MetricStat `protobuf:"bytes,1,rep,name=metricStats,proto3" json:"metricStats,omitempty"`
}
func (x *ListMetricStatsResponse) Reset() {
*x = ListMetricStatsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_metric_stat_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListMetricStatsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListMetricStatsResponse) ProtoMessage() {}
func (x *ListMetricStatsResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_metric_stat_proto_msgTypes[3]
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 ListMetricStatsResponse.ProtoReflect.Descriptor instead.
func (*ListMetricStatsResponse) Descriptor() ([]byte, []int) {
return file_service_metric_stat_proto_rawDescGZIP(), []int{3}
}
func (x *ListMetricStatsResponse) GetMetricStats() []*MetricStat {
if x != nil {
return x.MetricStats
}
return nil
}
var File_service_metric_stat_proto protoreflect.FileDescriptor
var file_service_metric_stat_proto_rawDesc = []byte{
0x0a, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a,
0x1e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x19, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe3, 0x01, 0x0a, 0x18, 0x55,
0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a,
0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a,
0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69,
0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53,
0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53,
0x74, 0x61, 0x74, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73,
0x22, 0x3d, 0x0a, 0x17, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53,
0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22,
0x68, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61,
0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f,
0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x4c, 0x69, 0x73,
0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74,
0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x32, 0xe9, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x53, 0x74, 0x61, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x11,
0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74,
0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
0x45, 0x0a, 0x10, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74,
0x61, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_service_metric_stat_proto_rawDescOnce sync.Once
file_service_metric_stat_proto_rawDescData = file_service_metric_stat_proto_rawDesc
)
func file_service_metric_stat_proto_rawDescGZIP() []byte {
file_service_metric_stat_proto_rawDescOnce.Do(func() {
file_service_metric_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_metric_stat_proto_rawDescData)
})
return file_service_metric_stat_proto_rawDescData
}
var file_service_metric_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_service_metric_stat_proto_goTypes = []interface{}{
(*UploadMetricStatsRequest)(nil), // 0: pb.UploadMetricStatsRequest
(*CountMetricStatsRequest)(nil), // 1: pb.CountMetricStatsRequest
(*ListMetricStatsRequest)(nil), // 2: pb.ListMetricStatsRequest
(*ListMetricStatsResponse)(nil), // 3: pb.ListMetricStatsResponse
(*UploadingMetricStat)(nil), // 4: pb.UploadingMetricStat
(*MetricStat)(nil), // 5: pb.MetricStat
(*RPCSuccess)(nil), // 6: pb.RPCSuccess
(*RPCCountResponse)(nil), // 7: pb.RPCCountResponse
}
var file_service_metric_stat_proto_depIdxs = []int32{
4, // 0: pb.UploadMetricStatsRequest.metricStats:type_name -> pb.UploadingMetricStat
5, // 1: pb.ListMetricStatsResponse.metricStats:type_name -> pb.MetricStat
0, // 2: pb.MetricStatService.uploadMetricStats:input_type -> pb.UploadMetricStatsRequest
1, // 3: pb.MetricStatService.countMetricStats:input_type -> pb.CountMetricStatsRequest
2, // 4: pb.MetricStatService.listMetricStats:input_type -> pb.ListMetricStatsRequest
6, // 5: pb.MetricStatService.uploadMetricStats:output_type -> pb.RPCSuccess
7, // 6: pb.MetricStatService.countMetricStats:output_type -> pb.RPCCountResponse
3, // 7: pb.MetricStatService.listMetricStats:output_type -> pb.ListMetricStatsResponse
5, // [5:8] is the sub-list for method output_type
2, // [2:5] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_service_metric_stat_proto_init() }
func file_service_metric_stat_proto_init() {
if File_service_metric_stat_proto != nil {
return
}
file_models_model_metric_stat_proto_init()
file_models_rpc_messages_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_metric_stat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UploadMetricStatsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_metric_stat_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CountMetricStatsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_metric_stat_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListMetricStatsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_metric_stat_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListMetricStatsResponse); 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_service_metric_stat_proto_rawDesc,
NumEnums: 0,
NumMessages: 4,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_metric_stat_proto_goTypes,
DependencyIndexes: file_service_metric_stat_proto_depIdxs,
MessageInfos: file_service_metric_stat_proto_msgTypes,
}.Build()
File_service_metric_stat_proto = out.File
file_service_metric_stat_proto_rawDesc = nil
file_service_metric_stat_proto_goTypes = nil
file_service_metric_stat_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// MetricStatServiceClient is the client API for MetricStatService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type MetricStatServiceClient interface {
// 上传统计数据
UploadMetricStats(ctx context.Context, in *UploadMetricStatsRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 计算指标数据数量
CountMetricStats(ctx context.Context, in *CountMetricStatsRequest, opts ...grpc.CallOption) (*RPCCountResponse, error)
// 读取单页指标数据
ListMetricStats(ctx context.Context, in *ListMetricStatsRequest, opts ...grpc.CallOption) (*ListMetricStatsResponse, error)
}
type metricStatServiceClient struct {
cc grpc.ClientConnInterface
}
func NewMetricStatServiceClient(cc grpc.ClientConnInterface) MetricStatServiceClient {
return &metricStatServiceClient{cc}
}
func (c *metricStatServiceClient) UploadMetricStats(ctx context.Context, in *UploadMetricStatsRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, "/pb.MetricStatService/uploadMetricStats", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *metricStatServiceClient) CountMetricStats(ctx context.Context, in *CountMetricStatsRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) {
out := new(RPCCountResponse)
err := c.cc.Invoke(ctx, "/pb.MetricStatService/countMetricStats", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *metricStatServiceClient) ListMetricStats(ctx context.Context, in *ListMetricStatsRequest, opts ...grpc.CallOption) (*ListMetricStatsResponse, error) {
out := new(ListMetricStatsResponse)
err := c.cc.Invoke(ctx, "/pb.MetricStatService/listMetricStats", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MetricStatServiceServer is the server API for MetricStatService service.
type MetricStatServiceServer interface {
// 上传统计数据
UploadMetricStats(context.Context, *UploadMetricStatsRequest) (*RPCSuccess, error)
// 计算指标数据数量
CountMetricStats(context.Context, *CountMetricStatsRequest) (*RPCCountResponse, error)
// 读取单页指标数据
ListMetricStats(context.Context, *ListMetricStatsRequest) (*ListMetricStatsResponse, error)
}
// UnimplementedMetricStatServiceServer can be embedded to have forward compatible implementations.
type UnimplementedMetricStatServiceServer struct {
}
func (*UnimplementedMetricStatServiceServer) UploadMetricStats(context.Context, *UploadMetricStatsRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UploadMetricStats not implemented")
}
func (*UnimplementedMetricStatServiceServer) CountMetricStats(context.Context, *CountMetricStatsRequest) (*RPCCountResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CountMetricStats not implemented")
}
func (*UnimplementedMetricStatServiceServer) ListMetricStats(context.Context, *ListMetricStatsRequest) (*ListMetricStatsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListMetricStats not implemented")
}
func RegisterMetricStatServiceServer(s *grpc.Server, srv MetricStatServiceServer) {
s.RegisterService(&_MetricStatService_serviceDesc, srv)
}
func _MetricStatService_UploadMetricStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UploadMetricStatsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MetricStatServiceServer).UploadMetricStats(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.MetricStatService/UploadMetricStats",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MetricStatServiceServer).UploadMetricStats(ctx, req.(*UploadMetricStatsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _MetricStatService_CountMetricStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CountMetricStatsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MetricStatServiceServer).CountMetricStats(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.MetricStatService/CountMetricStats",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MetricStatServiceServer).CountMetricStats(ctx, req.(*CountMetricStatsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _MetricStatService_ListMetricStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListMetricStatsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MetricStatServiceServer).ListMetricStats(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.MetricStatService/ListMetricStats",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MetricStatServiceServer).ListMetricStats(ctx, req.(*ListMetricStatsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _MetricStatService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.MetricStatService",
HandlerType: (*MetricStatServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "uploadMetricStats",
Handler: _MetricStatService_UploadMetricStats_Handler,
},
{
MethodName: "countMetricStats",
Handler: _MetricStatService_CountMetricStats_Handler,
},
{
MethodName: "listMetricStats",
Handler: _MetricStatService_ListMetricStats_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_metric_stat.proto",
}

File diff suppressed because it is too large Load Diff

View File

@@ -147,7 +147,8 @@ type FindAllNodeClusterMetricItemsRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NodeClusterId int64 `protobuf:"varint,1,opt,name=nodeClusterId,proto3" json:"nodeClusterId,omitempty"`
NodeClusterId int64 `protobuf:"varint,1,opt,name=nodeClusterId,proto3" json:"nodeClusterId,omitempty"`
Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"`
}
func (x *FindAllNodeClusterMetricItemsRequest) Reset() {
@@ -189,6 +190,13 @@ func (x *FindAllNodeClusterMetricItemsRequest) GetNodeClusterId() int64 {
return 0
}
func (x *FindAllNodeClusterMetricItemsRequest) GetCategory() string {
if x != nil {
return x.Category
}
return ""
}
type FindAllNodeClusterMetricItemsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -236,6 +244,157 @@ func (x *FindAllNodeClusterMetricItemsResponse) GetMetricItems() []*MetricItem {
return nil
}
// 检查是否已添加某个指标
type ExistsNodeClusterMetricItemRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NodeClusterId int64 `protobuf:"varint,1,opt,name=nodeClusterId,proto3" json:"nodeClusterId,omitempty"`
MetricItemId int64 `protobuf:"varint,2,opt,name=metricItemId,proto3" json:"metricItemId,omitempty"`
}
func (x *ExistsNodeClusterMetricItemRequest) Reset() {
*x = ExistsNodeClusterMetricItemRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_node_cluster_metric_item_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExistsNodeClusterMetricItemRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExistsNodeClusterMetricItemRequest) ProtoMessage() {}
func (x *ExistsNodeClusterMetricItemRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_node_cluster_metric_item_proto_msgTypes[4]
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 ExistsNodeClusterMetricItemRequest.ProtoReflect.Descriptor instead.
func (*ExistsNodeClusterMetricItemRequest) Descriptor() ([]byte, []int) {
return file_service_node_cluster_metric_item_proto_rawDescGZIP(), []int{4}
}
func (x *ExistsNodeClusterMetricItemRequest) GetNodeClusterId() int64 {
if x != nil {
return x.NodeClusterId
}
return 0
}
func (x *ExistsNodeClusterMetricItemRequest) GetMetricItemId() int64 {
if x != nil {
return x.MetricItemId
}
return 0
}
// 查找使用指标的集群
type FindAllNodeClustersWithMetricItemIdRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MetricItemId int64 `protobuf:"varint,1,opt,name=metricItemId,proto3" json:"metricItemId,omitempty"`
}
func (x *FindAllNodeClustersWithMetricItemIdRequest) Reset() {
*x = FindAllNodeClustersWithMetricItemIdRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_node_cluster_metric_item_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllNodeClustersWithMetricItemIdRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllNodeClustersWithMetricItemIdRequest) ProtoMessage() {}
func (x *FindAllNodeClustersWithMetricItemIdRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_node_cluster_metric_item_proto_msgTypes[5]
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 FindAllNodeClustersWithMetricItemIdRequest.ProtoReflect.Descriptor instead.
func (*FindAllNodeClustersWithMetricItemIdRequest) Descriptor() ([]byte, []int) {
return file_service_node_cluster_metric_item_proto_rawDescGZIP(), []int{5}
}
func (x *FindAllNodeClustersWithMetricItemIdRequest) GetMetricItemId() int64 {
if x != nil {
return x.MetricItemId
}
return 0
}
type FindAllNodeClustersWithMetricItemIdResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NodeClusters []*NodeCluster `protobuf:"bytes,1,rep,name=nodeClusters,proto3" json:"nodeClusters,omitempty"`
}
func (x *FindAllNodeClustersWithMetricItemIdResponse) Reset() {
*x = FindAllNodeClustersWithMetricItemIdResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_node_cluster_metric_item_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllNodeClustersWithMetricItemIdResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllNodeClustersWithMetricItemIdResponse) ProtoMessage() {}
func (x *FindAllNodeClustersWithMetricItemIdResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_node_cluster_metric_item_proto_msgTypes[6]
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 FindAllNodeClustersWithMetricItemIdResponse.ProtoReflect.Descriptor instead.
func (*FindAllNodeClustersWithMetricItemIdResponse) Descriptor() ([]byte, []int) {
return file_service_node_cluster_metric_item_proto_rawDescGZIP(), []int{6}
}
func (x *FindAllNodeClustersWithMetricItemIdResponse) GetNodeClusters() []*NodeCluster {
if x != nil {
return x.NodeClusters
}
return nil
}
var File_service_node_cluster_metric_item_proto protoreflect.FileDescriptor
var file_service_node_cluster_metric_item_proto_rawDesc = []byte{
@@ -245,53 +404,89 @@ var file_service_node_cluster_metric_item_proto_rawDesc = []byte{
0x64, 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x74, 0x65,
0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6e, 0x0a, 0x22, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a,
0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x6f, 0x0a, 0x23, 0x44, 0x69, 0x73, 0x61, 0x62,
0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6e, 0x0a, 0x22, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24,
0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x24, 0x46, 0x69, 0x6e, 0x64,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x6f, 0x0a, 0x23, 0x44, 0x69, 0x73, 0x61,
0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x68, 0x0a, 0x24, 0x46, 0x69, 0x6e,
0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67,
0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67,
0x6f, 0x72, 0x79, 0x22, 0x59, 0x0a, 0x25, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f,
0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0b,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6e,
0x0a, 0x22, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64,
0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x50,
0x0a, 0x2a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
0x74, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64,
0x22, 0x62, 0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x33, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x73, 0x32, 0xa3, 0x04, 0x0a, 0x1c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4e,
0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x57, 0x0a, 0x1c,
0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x2e, 0x70,
0x62, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x25, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c,
0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x30, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x73, 0x32, 0xc4, 0x02, 0x0a, 0x1c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x12, 0x55, 0x0a, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65,
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65,
0x6d, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64,
0x1a, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64,
0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52,
0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x57, 0x0a, 0x1c, 0x64, 0x69, 0x73,
0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x44,
0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x1b, 0x65,
0x78, 0x69, 0x73, 0x74, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e,
0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65,
0x73, 0x73, 0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64,
0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74,
0x65, 0x6d, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x78, 0x69, 0x73, 0x74,
0x73, 0x12, 0x86, 0x01, 0x0a, 0x23, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64,
0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -306,28 +501,38 @@ func file_service_node_cluster_metric_item_proto_rawDescGZIP() []byte {
return file_service_node_cluster_metric_item_proto_rawDescData
}
var file_service_node_cluster_metric_item_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_service_node_cluster_metric_item_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_service_node_cluster_metric_item_proto_goTypes = []interface{}{
(*EnableNodeClusterMetricItemRequest)(nil), // 0: pb.EnableNodeClusterMetricItemRequest
(*DisableNodeClusterMetricItemRequest)(nil), // 1: pb.DisableNodeClusterMetricItemRequest
(*FindAllNodeClusterMetricItemsRequest)(nil), // 2: pb.FindAllNodeClusterMetricItemsRequest
(*FindAllNodeClusterMetricItemsResponse)(nil), // 3: pb.FindAllNodeClusterMetricItemsResponse
(*MetricItem)(nil), // 4: pb.MetricItem
(*RPCSuccess)(nil), // 5: pb.RPCSuccess
(*EnableNodeClusterMetricItemRequest)(nil), // 0: pb.EnableNodeClusterMetricItemRequest
(*DisableNodeClusterMetricItemRequest)(nil), // 1: pb.DisableNodeClusterMetricItemRequest
(*FindAllNodeClusterMetricItemsRequest)(nil), // 2: pb.FindAllNodeClusterMetricItemsRequest
(*FindAllNodeClusterMetricItemsResponse)(nil), // 3: pb.FindAllNodeClusterMetricItemsResponse
(*ExistsNodeClusterMetricItemRequest)(nil), // 4: pb.ExistsNodeClusterMetricItemRequest
(*FindAllNodeClustersWithMetricItemIdRequest)(nil), // 5: pb.FindAllNodeClustersWithMetricItemIdRequest
(*FindAllNodeClustersWithMetricItemIdResponse)(nil), // 6: pb.FindAllNodeClustersWithMetricItemIdResponse
(*MetricItem)(nil), // 7: pb.MetricItem
(*NodeCluster)(nil), // 8: pb.NodeCluster
(*RPCSuccess)(nil), // 9: pb.RPCSuccess
(*RPCExists)(nil), // 10: pb.RPCExists
}
var file_service_node_cluster_metric_item_proto_depIdxs = []int32{
4, // 0: pb.FindAllNodeClusterMetricItemsResponse.metricItems:type_name -> pb.MetricItem
0, // 1: pb.NodeClusterMetricItemService.enableNodeClusterMetricItem:input_type -> pb.EnableNodeClusterMetricItemRequest
1, // 2: pb.NodeClusterMetricItemService.disableNodeClusterMetricItem:input_type -> pb.DisableNodeClusterMetricItemRequest
2, // 3: pb.NodeClusterMetricItemService.findAllNodeClusterMetricItems:input_type -> pb.FindAllNodeClusterMetricItemsRequest
5, // 4: pb.NodeClusterMetricItemService.enableNodeClusterMetricItem:output_type -> pb.RPCSuccess
5, // 5: pb.NodeClusterMetricItemService.disableNodeClusterMetricItem:output_type -> pb.RPCSuccess
3, // 6: pb.NodeClusterMetricItemService.findAllNodeClusterMetricItems:output_type -> pb.FindAllNodeClusterMetricItemsResponse
4, // [4:7] is the sub-list for method output_type
1, // [1:4] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
7, // 0: pb.FindAllNodeClusterMetricItemsResponse.metricItems:type_name -> pb.MetricItem
8, // 1: pb.FindAllNodeClustersWithMetricItemIdResponse.nodeClusters:type_name -> pb.NodeCluster
0, // 2: pb.NodeClusterMetricItemService.enableNodeClusterMetricItem:input_type -> pb.EnableNodeClusterMetricItemRequest
1, // 3: pb.NodeClusterMetricItemService.disableNodeClusterMetricItem:input_type -> pb.DisableNodeClusterMetricItemRequest
2, // 4: pb.NodeClusterMetricItemService.findAllNodeClusterMetricItems:input_type -> pb.FindAllNodeClusterMetricItemsRequest
4, // 5: pb.NodeClusterMetricItemService.existsNodeClusterMetricItem:input_type -> pb.ExistsNodeClusterMetricItemRequest
5, // 6: pb.NodeClusterMetricItemService.findAllNodeClustersWithMetricItemId:input_type -> pb.FindAllNodeClustersWithMetricItemIdRequest
9, // 7: pb.NodeClusterMetricItemService.enableNodeClusterMetricItem:output_type -> pb.RPCSuccess
9, // 8: pb.NodeClusterMetricItemService.disableNodeClusterMetricItem:output_type -> pb.RPCSuccess
3, // 9: pb.NodeClusterMetricItemService.findAllNodeClusterMetricItems:output_type -> pb.FindAllNodeClusterMetricItemsResponse
10, // 10: pb.NodeClusterMetricItemService.existsNodeClusterMetricItem:output_type -> pb.RPCExists
6, // 11: pb.NodeClusterMetricItemService.findAllNodeClustersWithMetricItemId:output_type -> pb.FindAllNodeClustersWithMetricItemIdResponse
7, // [7:12] is the sub-list for method output_type
2, // [2:7] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_service_node_cluster_metric_item_proto_init() }
@@ -337,6 +542,7 @@ func file_service_node_cluster_metric_item_proto_init() {
}
file_models_rpc_messages_proto_init()
file_models_model_metric_item_proto_init()
file_models_model_node_cluster_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_node_cluster_metric_item_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EnableNodeClusterMetricItemRequest); i {
@@ -386,6 +592,42 @@ func file_service_node_cluster_metric_item_proto_init() {
return nil
}
}
file_service_node_cluster_metric_item_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExistsNodeClusterMetricItemRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_node_cluster_metric_item_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllNodeClustersWithMetricItemIdRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_node_cluster_metric_item_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllNodeClustersWithMetricItemIdResponse); 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{
@@ -393,7 +635,7 @@ func file_service_node_cluster_metric_item_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_node_cluster_metric_item_proto_rawDesc,
NumEnums: 0,
NumMessages: 4,
NumMessages: 7,
NumExtensions: 0,
NumServices: 1,
},
@@ -425,6 +667,10 @@ type NodeClusterMetricItemServiceClient interface {
DisableNodeClusterMetricItem(ctx context.Context, in *DisableNodeClusterMetricItemRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 查找集群中所有指标
FindAllNodeClusterMetricItems(ctx context.Context, in *FindAllNodeClusterMetricItemsRequest, opts ...grpc.CallOption) (*FindAllNodeClusterMetricItemsResponse, error)
// 检查是否已添加某个指标
ExistsNodeClusterMetricItem(ctx context.Context, in *ExistsNodeClusterMetricItemRequest, opts ...grpc.CallOption) (*RPCExists, error)
// 查找使用指标的集群
FindAllNodeClustersWithMetricItemId(ctx context.Context, in *FindAllNodeClustersWithMetricItemIdRequest, opts ...grpc.CallOption) (*FindAllNodeClustersWithMetricItemIdResponse, error)
}
type nodeClusterMetricItemServiceClient struct {
@@ -462,6 +708,24 @@ func (c *nodeClusterMetricItemServiceClient) FindAllNodeClusterMetricItems(ctx c
return out, nil
}
func (c *nodeClusterMetricItemServiceClient) ExistsNodeClusterMetricItem(ctx context.Context, in *ExistsNodeClusterMetricItemRequest, opts ...grpc.CallOption) (*RPCExists, error) {
out := new(RPCExists)
err := c.cc.Invoke(ctx, "/pb.NodeClusterMetricItemService/existsNodeClusterMetricItem", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *nodeClusterMetricItemServiceClient) FindAllNodeClustersWithMetricItemId(ctx context.Context, in *FindAllNodeClustersWithMetricItemIdRequest, opts ...grpc.CallOption) (*FindAllNodeClustersWithMetricItemIdResponse, error) {
out := new(FindAllNodeClustersWithMetricItemIdResponse)
err := c.cc.Invoke(ctx, "/pb.NodeClusterMetricItemService/findAllNodeClustersWithMetricItemId", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// NodeClusterMetricItemServiceServer is the server API for NodeClusterMetricItemService service.
type NodeClusterMetricItemServiceServer interface {
// 启用某个指标
@@ -470,6 +734,10 @@ type NodeClusterMetricItemServiceServer interface {
DisableNodeClusterMetricItem(context.Context, *DisableNodeClusterMetricItemRequest) (*RPCSuccess, error)
// 查找集群中所有指标
FindAllNodeClusterMetricItems(context.Context, *FindAllNodeClusterMetricItemsRequest) (*FindAllNodeClusterMetricItemsResponse, error)
// 检查是否已添加某个指标
ExistsNodeClusterMetricItem(context.Context, *ExistsNodeClusterMetricItemRequest) (*RPCExists, error)
// 查找使用指标的集群
FindAllNodeClustersWithMetricItemId(context.Context, *FindAllNodeClustersWithMetricItemIdRequest) (*FindAllNodeClustersWithMetricItemIdResponse, error)
}
// UnimplementedNodeClusterMetricItemServiceServer can be embedded to have forward compatible implementations.
@@ -485,6 +753,12 @@ func (*UnimplementedNodeClusterMetricItemServiceServer) DisableNodeClusterMetric
func (*UnimplementedNodeClusterMetricItemServiceServer) FindAllNodeClusterMetricItems(context.Context, *FindAllNodeClusterMetricItemsRequest) (*FindAllNodeClusterMetricItemsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllNodeClusterMetricItems not implemented")
}
func (*UnimplementedNodeClusterMetricItemServiceServer) ExistsNodeClusterMetricItem(context.Context, *ExistsNodeClusterMetricItemRequest) (*RPCExists, error) {
return nil, status.Errorf(codes.Unimplemented, "method ExistsNodeClusterMetricItem not implemented")
}
func (*UnimplementedNodeClusterMetricItemServiceServer) FindAllNodeClustersWithMetricItemId(context.Context, *FindAllNodeClustersWithMetricItemIdRequest) (*FindAllNodeClustersWithMetricItemIdResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllNodeClustersWithMetricItemId not implemented")
}
func RegisterNodeClusterMetricItemServiceServer(s *grpc.Server, srv NodeClusterMetricItemServiceServer) {
s.RegisterService(&_NodeClusterMetricItemService_serviceDesc, srv)
@@ -544,6 +818,42 @@ func _NodeClusterMetricItemService_FindAllNodeClusterMetricItems_Handler(srv int
return interceptor(ctx, in, info, handler)
}
func _NodeClusterMetricItemService_ExistsNodeClusterMetricItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ExistsNodeClusterMetricItemRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NodeClusterMetricItemServiceServer).ExistsNodeClusterMetricItem(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.NodeClusterMetricItemService/ExistsNodeClusterMetricItem",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeClusterMetricItemServiceServer).ExistsNodeClusterMetricItem(ctx, req.(*ExistsNodeClusterMetricItemRequest))
}
return interceptor(ctx, in, info, handler)
}
func _NodeClusterMetricItemService_FindAllNodeClustersWithMetricItemId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindAllNodeClustersWithMetricItemIdRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NodeClusterMetricItemServiceServer).FindAllNodeClustersWithMetricItemId(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.NodeClusterMetricItemService/FindAllNodeClustersWithMetricItemId",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeClusterMetricItemServiceServer).FindAllNodeClustersWithMetricItemId(ctx, req.(*FindAllNodeClustersWithMetricItemIdRequest))
}
return interceptor(ctx, in, info, handler)
}
var _NodeClusterMetricItemService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.NodeClusterMetricItemService",
HandlerType: (*NodeClusterMetricItemServiceServer)(nil),
@@ -560,6 +870,14 @@ var _NodeClusterMetricItemService_serviceDesc = grpc.ServiceDesc{
MethodName: "findAllNodeClusterMetricItems",
Handler: _NodeClusterMetricItemService_FindAllNodeClusterMetricItems_Handler,
},
{
MethodName: "existsNodeClusterMetricItem",
Handler: _NodeClusterMetricItemService_ExistsNodeClusterMetricItem_Handler,
},
{
MethodName: "findAllNodeClustersWithMetricItemId",
Handler: _NodeClusterMetricItemService_FindAllNodeClustersWithMetricItemId_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_node_cluster_metric_item.proto",

View File

@@ -218,38 +218,38 @@ var file_service_node_value_proto_rawDesc = []byte{
0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x19,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x22, 0x68, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74,
0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1c,
0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6d, 0x0a, 0x15, 0x4c, 0x69,
0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 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, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69,
0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x47, 0x0a, 0x16, 0x4c, 0x69, 0x73,
0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64,
0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x73, 0x32, 0x9a, 0x01, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53,
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x6f,
0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64,
0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42,
0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x68, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a,
0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x41, 0x74, 0x22, 0x6d, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72,
0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 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, 0x69, 0x74, 0x65, 0x6d, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x72,
0x61, 0x6e, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67,
0x65, 0x22, 0x47, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x0a, 0x6e,
0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a,
0x6e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x32, 0x9a, 0x01, 0x0a, 0x10, 0x4e,
0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
0x3d, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f,
0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e,
0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x47,
0x0a, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -291,7 +291,7 @@ func file_service_node_value_proto_init() {
return
}
file_models_rpc_messages_proto_init()
file_models_model_message_node_value_proto_init()
file_models_model_node_value_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_node_value_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateNodeValueRequest); i {

796
pkg/rpc/pb/service_ns.pb.go Normal file
View File

@@ -0,0 +1,796 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: service_ns.proto
package pb
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
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 ComposeNSBoardRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ComposeNSBoardRequest) Reset() {
*x = ComposeNSBoardRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeNSBoardRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeNSBoardRequest) ProtoMessage() {}
func (x *ComposeNSBoardRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_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 ComposeNSBoardRequest.ProtoReflect.Descriptor instead.
func (*ComposeNSBoardRequest) Descriptor() ([]byte, []int) {
return file_service_ns_proto_rawDescGZIP(), []int{0}
}
type ComposeNSBoardResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CountNSDomains int64 `protobuf:"varint,1,opt,name=countNSDomains,proto3" json:"countNSDomains,omitempty"`
CountNSRecords int64 `protobuf:"varint,2,opt,name=countNSRecords,proto3" json:"countNSRecords,omitempty"`
CountNSClusters int64 `protobuf:"varint,3,opt,name=countNSClusters,proto3" json:"countNSClusters,omitempty"`
CountNSNodes int64 `protobuf:"varint,4,opt,name=countNSNodes,proto3" json:"countNSNodes,omitempty"`
CountOfflineNSNodes int64 `protobuf:"varint,5,opt,name=countOfflineNSNodes,proto3" json:"countOfflineNSNodes,omitempty"`
DailyTrafficStats []*ComposeNSBoardResponse_DailyTrafficStat `protobuf:"bytes,30,rep,name=dailyTrafficStats,proto3" json:"dailyTrafficStats,omitempty"`
HourlyTrafficStats []*ComposeNSBoardResponse_HourlyTrafficStat `protobuf:"bytes,31,rep,name=hourlyTrafficStats,proto3" json:"hourlyTrafficStats,omitempty"`
TopNSNodeStats []*ComposeNSBoardResponse_NodeStat `protobuf:"bytes,32,rep,name=topNSNodeStats,proto3" json:"topNSNodeStats,omitempty"`
TopNSDomainStats []*ComposeNSBoardResponse_DomainStat `protobuf:"bytes,33,rep,name=topNSDomainStats,proto3" json:"topNSDomainStats,omitempty"`
CpuNodeValues []*NodeValue `protobuf:"bytes,34,rep,name=cpuNodeValues,proto3" json:"cpuNodeValues,omitempty"`
MemoryNodeValues []*NodeValue `protobuf:"bytes,35,rep,name=memoryNodeValues,proto3" json:"memoryNodeValues,omitempty"`
LoadNodeValues []*NodeValue `protobuf:"bytes,36,rep,name=loadNodeValues,proto3" json:"loadNodeValues,omitempty"`
}
func (x *ComposeNSBoardResponse) Reset() {
*x = ComposeNSBoardResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeNSBoardResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeNSBoardResponse) ProtoMessage() {}
func (x *ComposeNSBoardResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_proto_msgTypes[1]
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 ComposeNSBoardResponse.ProtoReflect.Descriptor instead.
func (*ComposeNSBoardResponse) Descriptor() ([]byte, []int) {
return file_service_ns_proto_rawDescGZIP(), []int{1}
}
func (x *ComposeNSBoardResponse) GetCountNSDomains() int64 {
if x != nil {
return x.CountNSDomains
}
return 0
}
func (x *ComposeNSBoardResponse) GetCountNSRecords() int64 {
if x != nil {
return x.CountNSRecords
}
return 0
}
func (x *ComposeNSBoardResponse) GetCountNSClusters() int64 {
if x != nil {
return x.CountNSClusters
}
return 0
}
func (x *ComposeNSBoardResponse) GetCountNSNodes() int64 {
if x != nil {
return x.CountNSNodes
}
return 0
}
func (x *ComposeNSBoardResponse) GetCountOfflineNSNodes() int64 {
if x != nil {
return x.CountOfflineNSNodes
}
return 0
}
func (x *ComposeNSBoardResponse) GetDailyTrafficStats() []*ComposeNSBoardResponse_DailyTrafficStat {
if x != nil {
return x.DailyTrafficStats
}
return nil
}
func (x *ComposeNSBoardResponse) GetHourlyTrafficStats() []*ComposeNSBoardResponse_HourlyTrafficStat {
if x != nil {
return x.HourlyTrafficStats
}
return nil
}
func (x *ComposeNSBoardResponse) GetTopNSNodeStats() []*ComposeNSBoardResponse_NodeStat {
if x != nil {
return x.TopNSNodeStats
}
return nil
}
func (x *ComposeNSBoardResponse) GetTopNSDomainStats() []*ComposeNSBoardResponse_DomainStat {
if x != nil {
return x.TopNSDomainStats
}
return nil
}
func (x *ComposeNSBoardResponse) GetCpuNodeValues() []*NodeValue {
if x != nil {
return x.CpuNodeValues
}
return nil
}
func (x *ComposeNSBoardResponse) GetMemoryNodeValues() []*NodeValue {
if x != nil {
return x.MemoryNodeValues
}
return nil
}
func (x *ComposeNSBoardResponse) GetLoadNodeValues() []*NodeValue {
if x != nil {
return x.LoadNodeValues
}
return nil
}
type ComposeNSBoardResponse_DailyTrafficStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Day string `protobuf:"bytes,1,opt,name=day,proto3" json:"day,omitempty"`
Bytes int64 `protobuf:"varint,2,opt,name=bytes,proto3" json:"bytes,omitempty"`
CountRequests int64 `protobuf:"varint,3,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
}
func (x *ComposeNSBoardResponse_DailyTrafficStat) Reset() {
*x = ComposeNSBoardResponse_DailyTrafficStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeNSBoardResponse_DailyTrafficStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeNSBoardResponse_DailyTrafficStat) ProtoMessage() {}
func (x *ComposeNSBoardResponse_DailyTrafficStat) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_proto_msgTypes[2]
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 ComposeNSBoardResponse_DailyTrafficStat.ProtoReflect.Descriptor instead.
func (*ComposeNSBoardResponse_DailyTrafficStat) Descriptor() ([]byte, []int) {
return file_service_ns_proto_rawDescGZIP(), []int{1, 0}
}
func (x *ComposeNSBoardResponse_DailyTrafficStat) GetDay() string {
if x != nil {
return x.Day
}
return ""
}
func (x *ComposeNSBoardResponse_DailyTrafficStat) GetBytes() int64 {
if x != nil {
return x.Bytes
}
return 0
}
func (x *ComposeNSBoardResponse_DailyTrafficStat) GetCountRequests() int64 {
if x != nil {
return x.CountRequests
}
return 0
}
type ComposeNSBoardResponse_HourlyTrafficStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Hour string `protobuf:"bytes,1,opt,name=hour,proto3" json:"hour,omitempty"`
Bytes int64 `protobuf:"varint,2,opt,name=bytes,proto3" json:"bytes,omitempty"`
CountRequests int64 `protobuf:"varint,3,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
}
func (x *ComposeNSBoardResponse_HourlyTrafficStat) Reset() {
*x = ComposeNSBoardResponse_HourlyTrafficStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeNSBoardResponse_HourlyTrafficStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeNSBoardResponse_HourlyTrafficStat) ProtoMessage() {}
func (x *ComposeNSBoardResponse_HourlyTrafficStat) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_proto_msgTypes[3]
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 ComposeNSBoardResponse_HourlyTrafficStat.ProtoReflect.Descriptor instead.
func (*ComposeNSBoardResponse_HourlyTrafficStat) Descriptor() ([]byte, []int) {
return file_service_ns_proto_rawDescGZIP(), []int{1, 1}
}
func (x *ComposeNSBoardResponse_HourlyTrafficStat) GetHour() string {
if x != nil {
return x.Hour
}
return ""
}
func (x *ComposeNSBoardResponse_HourlyTrafficStat) GetBytes() int64 {
if x != nil {
return x.Bytes
}
return 0
}
func (x *ComposeNSBoardResponse_HourlyTrafficStat) GetCountRequests() int64 {
if x != nil {
return x.CountRequests
}
return 0
}
type ComposeNSBoardResponse_NodeStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NsClusterId int64 `protobuf:"varint,1,opt,name=nsClusterId,proto3" json:"nsClusterId,omitempty"`
NsNodeId int64 `protobuf:"varint,2,opt,name=nsNodeId,proto3" json:"nsNodeId,omitempty"`
NsNodeName string `protobuf:"bytes,3,opt,name=nsNodeName,proto3" json:"nsNodeName,omitempty"`
CountRequests int64 `protobuf:"varint,4,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
Bytes int64 `protobuf:"varint,5,opt,name=bytes,proto3" json:"bytes,omitempty"`
}
func (x *ComposeNSBoardResponse_NodeStat) Reset() {
*x = ComposeNSBoardResponse_NodeStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeNSBoardResponse_NodeStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeNSBoardResponse_NodeStat) ProtoMessage() {}
func (x *ComposeNSBoardResponse_NodeStat) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_proto_msgTypes[4]
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 ComposeNSBoardResponse_NodeStat.ProtoReflect.Descriptor instead.
func (*ComposeNSBoardResponse_NodeStat) Descriptor() ([]byte, []int) {
return file_service_ns_proto_rawDescGZIP(), []int{1, 2}
}
func (x *ComposeNSBoardResponse_NodeStat) GetNsClusterId() int64 {
if x != nil {
return x.NsClusterId
}
return 0
}
func (x *ComposeNSBoardResponse_NodeStat) GetNsNodeId() int64 {
if x != nil {
return x.NsNodeId
}
return 0
}
func (x *ComposeNSBoardResponse_NodeStat) GetNsNodeName() string {
if x != nil {
return x.NsNodeName
}
return ""
}
func (x *ComposeNSBoardResponse_NodeStat) GetCountRequests() int64 {
if x != nil {
return x.CountRequests
}
return 0
}
func (x *ComposeNSBoardResponse_NodeStat) GetBytes() int64 {
if x != nil {
return x.Bytes
}
return 0
}
type ComposeNSBoardResponse_DomainStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NsDomainId int64 `protobuf:"varint,1,opt,name=nsDomainId,proto3" json:"nsDomainId,omitempty"`
NsDomainName string `protobuf:"bytes,2,opt,name=nsDomainName,proto3" json:"nsDomainName,omitempty"`
CountRequests int64 `protobuf:"varint,3,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
Bytes int64 `protobuf:"varint,4,opt,name=bytes,proto3" json:"bytes,omitempty"`
}
func (x *ComposeNSBoardResponse_DomainStat) Reset() {
*x = ComposeNSBoardResponse_DomainStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComposeNSBoardResponse_DomainStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComposeNSBoardResponse_DomainStat) ProtoMessage() {}
func (x *ComposeNSBoardResponse_DomainStat) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_proto_msgTypes[5]
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 ComposeNSBoardResponse_DomainStat.ProtoReflect.Descriptor instead.
func (*ComposeNSBoardResponse_DomainStat) Descriptor() ([]byte, []int) {
return file_service_ns_proto_rawDescGZIP(), []int{1, 3}
}
func (x *ComposeNSBoardResponse_DomainStat) GetNsDomainId() int64 {
if x != nil {
return x.NsDomainId
}
return 0
}
func (x *ComposeNSBoardResponse_DomainStat) GetNsDomainName() string {
if x != nil {
return x.NsDomainName
}
return ""
}
func (x *ComposeNSBoardResponse_DomainStat) GetCountRequests() int64 {
if x != nil {
return x.CountRequests
}
return 0
}
func (x *ComposeNSBoardResponse_DomainStat) GetBytes() int64 {
if x != nil {
return x.Bytes
}
return 0
}
var File_service_ns_proto protoreflect.FileDescriptor
var file_service_ns_proto_rawDesc = []byte{
0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x1d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x17, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65,
0x4e, 0x53, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xe5,
0x09, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4e, 0x53, 0x42, 0x6f, 0x61, 0x72,
0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x4e, 0x53, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x53, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
0x73, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x4e, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x53, 0x4e, 0x6f,
0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x4e, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05,
0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x6c, 0x69,
0x6e, 0x65, 0x4e, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x11, 0x64, 0x61, 0x69,
0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1e,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
0x65, 0x4e, 0x53, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61,
0x74, 0x52, 0x11, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53,
0x74, 0x61, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x12, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x54, 0x72,
0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x2c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4e, 0x53, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x75,
0x72, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x52, 0x12,
0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61,
0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x4e, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x53,
0x74, 0x61, 0x74, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x2e,
0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4e, 0x53, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52,
0x0e, 0x74, 0x6f, 0x70, 0x4e, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
0x51, 0x0a, 0x10, 0x74, 0x6f, 0x70, 0x4e, 0x53, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4e, 0x53, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x52, 0x10, 0x74, 0x6f, 0x70, 0x4e, 0x53, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e,
0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4e, 0x6f, 0x64,
0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
0x79, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e,
0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x4e,
0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x10, 0x44, 0x61, 0x69,
0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x12, 0x10, 0x0a,
0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12,
0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x11, 0x48,
0x6f, 0x75, 0x72, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74,
0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x68, 0x6f, 0x75, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
0x1a, 0xa4, 0x01, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a,
0x0b, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0b, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12,
0x1a, 0x0a, 0x08, 0x6e, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x08, 0x6e, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e,
0x73, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0a, 0x6e, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x0a, 0x44, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x44, 0x6f,
0x6d, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x73,
0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x32, 0x54, 0x0a, 0x09, 0x4e, 0x53, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4e, 0x53,
0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
0x73, 0x65, 0x4e, 0x53, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x4e, 0x53, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_ns_proto_rawDescOnce sync.Once
file_service_ns_proto_rawDescData = file_service_ns_proto_rawDesc
)
func file_service_ns_proto_rawDescGZIP() []byte {
file_service_ns_proto_rawDescOnce.Do(func() {
file_service_ns_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_ns_proto_rawDescData)
})
return file_service_ns_proto_rawDescData
}
var file_service_ns_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_service_ns_proto_goTypes = []interface{}{
(*ComposeNSBoardRequest)(nil), // 0: pb.ComposeNSBoardRequest
(*ComposeNSBoardResponse)(nil), // 1: pb.ComposeNSBoardResponse
(*ComposeNSBoardResponse_DailyTrafficStat)(nil), // 2: pb.ComposeNSBoardResponse.DailyTrafficStat
(*ComposeNSBoardResponse_HourlyTrafficStat)(nil), // 3: pb.ComposeNSBoardResponse.HourlyTrafficStat
(*ComposeNSBoardResponse_NodeStat)(nil), // 4: pb.ComposeNSBoardResponse.NodeStat
(*ComposeNSBoardResponse_DomainStat)(nil), // 5: pb.ComposeNSBoardResponse.DomainStat
(*NodeValue)(nil), // 6: pb.NodeValue
}
var file_service_ns_proto_depIdxs = []int32{
2, // 0: pb.ComposeNSBoardResponse.dailyTrafficStats:type_name -> pb.ComposeNSBoardResponse.DailyTrafficStat
3, // 1: pb.ComposeNSBoardResponse.hourlyTrafficStats:type_name -> pb.ComposeNSBoardResponse.HourlyTrafficStat
4, // 2: pb.ComposeNSBoardResponse.topNSNodeStats:type_name -> pb.ComposeNSBoardResponse.NodeStat
5, // 3: pb.ComposeNSBoardResponse.topNSDomainStats:type_name -> pb.ComposeNSBoardResponse.DomainStat
6, // 4: pb.ComposeNSBoardResponse.cpuNodeValues:type_name -> pb.NodeValue
6, // 5: pb.ComposeNSBoardResponse.memoryNodeValues:type_name -> pb.NodeValue
6, // 6: pb.ComposeNSBoardResponse.loadNodeValues:type_name -> pb.NodeValue
0, // 7: pb.NSService.composeNSBoard:input_type -> pb.ComposeNSBoardRequest
1, // 8: pb.NSService.composeNSBoard:output_type -> pb.ComposeNSBoardResponse
8, // [8:9] is the sub-list for method output_type
7, // [7:8] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
}
func init() { file_service_ns_proto_init() }
func file_service_ns_proto_init() {
if File_service_ns_proto != nil {
return
}
file_models_model_node_value_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_ns_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeNSBoardRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_ns_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeNSBoardResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_ns_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeNSBoardResponse_DailyTrafficStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_ns_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeNSBoardResponse_HourlyTrafficStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_ns_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeNSBoardResponse_NodeStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_ns_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeNSBoardResponse_DomainStat); 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_service_ns_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_ns_proto_goTypes,
DependencyIndexes: file_service_ns_proto_depIdxs,
MessageInfos: file_service_ns_proto_msgTypes,
}.Build()
File_service_ns_proto = out.File
file_service_ns_proto_rawDesc = nil
file_service_ns_proto_goTypes = nil
file_service_ns_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// NSServiceClient is the client API for NSService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type NSServiceClient interface {
// 组合看板数据
ComposeNSBoard(ctx context.Context, in *ComposeNSBoardRequest, opts ...grpc.CallOption) (*ComposeNSBoardResponse, error)
}
type nSServiceClient struct {
cc grpc.ClientConnInterface
}
func NewNSServiceClient(cc grpc.ClientConnInterface) NSServiceClient {
return &nSServiceClient{cc}
}
func (c *nSServiceClient) ComposeNSBoard(ctx context.Context, in *ComposeNSBoardRequest, opts ...grpc.CallOption) (*ComposeNSBoardResponse, error) {
out := new(ComposeNSBoardResponse)
err := c.cc.Invoke(ctx, "/pb.NSService/composeNSBoard", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// NSServiceServer is the server API for NSService service.
type NSServiceServer interface {
// 组合看板数据
ComposeNSBoard(context.Context, *ComposeNSBoardRequest) (*ComposeNSBoardResponse, error)
}
// UnimplementedNSServiceServer can be embedded to have forward compatible implementations.
type UnimplementedNSServiceServer struct {
}
func (*UnimplementedNSServiceServer) ComposeNSBoard(context.Context, *ComposeNSBoardRequest) (*ComposeNSBoardResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ComposeNSBoard not implemented")
}
func RegisterNSServiceServer(s *grpc.Server, srv NSServiceServer) {
s.RegisterService(&_NSService_serviceDesc, srv)
}
func _NSService_ComposeNSBoard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ComposeNSBoardRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NSServiceServer).ComposeNSBoard(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.NSService/ComposeNSBoard",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NSServiceServer).ComposeNSBoard(ctx, req.(*ComposeNSBoardRequest))
}
return interceptor(ctx, in, info, handler)
}
var _NSService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.NSService",
HandlerType: (*NSServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "composeNSBoard",
Handler: _NSService_ComposeNSBoard_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_ns.proto",
}

View File

@@ -185,6 +185,7 @@ type UpdateNSRecordRequest struct {
Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
Ttl int32 `protobuf:"varint,6,opt,name=ttl,proto3" json:"ttl,omitempty"`
NsRouteIds []int64 `protobuf:"varint,7,rep,packed,name=nsRouteIds,proto3" json:"nsRouteIds,omitempty"`
IsOn bool `protobuf:"varint,8,opt,name=isOn,proto3" json:"isOn,omitempty"`
}
func (x *UpdateNSRecordRequest) Reset() {
@@ -268,6 +269,13 @@ func (x *UpdateNSRecordRequest) GetNsRouteIds() []int64 {
return nil
}
func (x *UpdateNSRecordRequest) GetIsOn() bool {
if x != nil {
return x.IsOn
}
return false
}
// 删除记录
type DeleteNSRecordRequest struct {
state protoimpl.MessageState
@@ -745,7 +753,7 @@ var file_service_ns_record_proto_rawDesc = []byte{
0x64, 0x73, 0x22, 0x38, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x22, 0xc9, 0x01, 0x0a,
0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x22, 0xdd, 0x01, 0x0a,
0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65,
@@ -758,11 +766,21 @@ var file_service_ns_record_proto_rawDesc = []byte{
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x06, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x6f,
0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73,
0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x37, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49,
0x64, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e,
0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e,
0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x22, 0x37, 0x0a, 0x15,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x49, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41,
0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x44,
0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e,
0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a,
0x09, 0x6e, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
0x52, 0x09, 0x6e, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6b,
0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65,
0x79, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69,
0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d,
@@ -771,79 +789,70 @@ var file_service_ns_record_proto_rawDesc = []byte{
0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x73,
0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f,
0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72,
0x64, 0x22, 0xb5, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65,
0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x73, 0x52, 0x6f, 0x75, 0x74,
0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f,
0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20,
0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4a, 0x0a, 0x1c, 0x4c, 0x69, 0x73,
0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x09, 0x6e, 0x73, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70,
0x62, 0x2e, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x09, 0x6e, 0x73, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x1a, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x1b, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x52, 0x08, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x50, 0x0a, 0x20,
0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x66, 0x74,
0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69,
0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4f,
0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x41,
0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x09, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x53, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x52, 0x09, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x32,
0xc8, 0x04, 0x0a, 0x0f, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x19,
0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52,
0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x64, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62,
0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53,
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x18, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a,
0x14, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x66, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12,
0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4a, 0x0a,
0x1c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a,
0x09, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x09,
0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x1a, 0x46, 0x69, 0x6e,
0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x73, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x73, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x1b, 0x46, 0x69, 0x6e, 0x64, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x53,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x22, 0x50, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12,
0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69,
0x7a, 0x65, 0x22, 0x4f, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x09, 0x6e, 0x73, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e,
0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x09, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x73, 0x32, 0xc8, 0x04, 0x0a, 0x0f, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x68, 0x0a, 0x19, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e,
0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x53,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a,
0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12,
0x19, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x53, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e,
0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x18, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62,
0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x59, 0x0a, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x2e,
0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x13,
0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06,
0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -0,0 +1,255 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: service_ns_record_hourly_stat.proto
package pb
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
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 UploadNSRecordHourlyStatsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Stats []*NSRecordHourlyStat `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"`
}
func (x *UploadNSRecordHourlyStatsRequest) Reset() {
*x = UploadNSRecordHourlyStatsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_ns_record_hourly_stat_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UploadNSRecordHourlyStatsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UploadNSRecordHourlyStatsRequest) ProtoMessage() {}
func (x *UploadNSRecordHourlyStatsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_ns_record_hourly_stat_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 UploadNSRecordHourlyStatsRequest.ProtoReflect.Descriptor instead.
func (*UploadNSRecordHourlyStatsRequest) Descriptor() ([]byte, []int) {
return file_service_ns_record_hourly_stat_proto_rawDescGZIP(), []int{0}
}
func (x *UploadNSRecordHourlyStatsRequest) GetStats() []*NSRecordHourlyStat {
if x != nil {
return x.Stats
}
return nil
}
var File_service_ns_record_hourly_stat_proto protoreflect.FileDescriptor
var file_service_ns_record_hourly_stat_proto_rawDesc = []byte{
0x0a, 0x23, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x28, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f,
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x50,
0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48,
0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
0x32, 0x6e, 0x0a, 0x19, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x6f, 0x75, 0x72,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a,
0x19, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48,
0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x6f,
0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_ns_record_hourly_stat_proto_rawDescOnce sync.Once
file_service_ns_record_hourly_stat_proto_rawDescData = file_service_ns_record_hourly_stat_proto_rawDesc
)
func file_service_ns_record_hourly_stat_proto_rawDescGZIP() []byte {
file_service_ns_record_hourly_stat_proto_rawDescOnce.Do(func() {
file_service_ns_record_hourly_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_ns_record_hourly_stat_proto_rawDescData)
})
return file_service_ns_record_hourly_stat_proto_rawDescData
}
var file_service_ns_record_hourly_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_service_ns_record_hourly_stat_proto_goTypes = []interface{}{
(*UploadNSRecordHourlyStatsRequest)(nil), // 0: pb.UploadNSRecordHourlyStatsRequest
(*NSRecordHourlyStat)(nil), // 1: pb.NSRecordHourlyStat
(*RPCSuccess)(nil), // 2: pb.RPCSuccess
}
var file_service_ns_record_hourly_stat_proto_depIdxs = []int32{
1, // 0: pb.UploadNSRecordHourlyStatsRequest.stats:type_name -> pb.NSRecordHourlyStat
0, // 1: pb.NSRecordHourlyStatService.uploadNSRecordHourlyStats:input_type -> pb.UploadNSRecordHourlyStatsRequest
2, // 2: pb.NSRecordHourlyStatService.uploadNSRecordHourlyStats:output_type -> pb.RPCSuccess
2, // [2:3] is the sub-list for method output_type
1, // [1:2] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_service_ns_record_hourly_stat_proto_init() }
func file_service_ns_record_hourly_stat_proto_init() {
if File_service_ns_record_hourly_stat_proto != nil {
return
}
file_models_model_ns_record_hourly_stat_proto_init()
file_models_rpc_messages_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_ns_record_hourly_stat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UploadNSRecordHourlyStatsRequest); 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_service_ns_record_hourly_stat_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_ns_record_hourly_stat_proto_goTypes,
DependencyIndexes: file_service_ns_record_hourly_stat_proto_depIdxs,
MessageInfos: file_service_ns_record_hourly_stat_proto_msgTypes,
}.Build()
File_service_ns_record_hourly_stat_proto = out.File
file_service_ns_record_hourly_stat_proto_rawDesc = nil
file_service_ns_record_hourly_stat_proto_goTypes = nil
file_service_ns_record_hourly_stat_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// NSRecordHourlyStatServiceClient is the client API for NSRecordHourlyStatService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type NSRecordHourlyStatServiceClient interface {
// 上传统计
UploadNSRecordHourlyStats(ctx context.Context, in *UploadNSRecordHourlyStatsRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
}
type nSRecordHourlyStatServiceClient struct {
cc grpc.ClientConnInterface
}
func NewNSRecordHourlyStatServiceClient(cc grpc.ClientConnInterface) NSRecordHourlyStatServiceClient {
return &nSRecordHourlyStatServiceClient{cc}
}
func (c *nSRecordHourlyStatServiceClient) UploadNSRecordHourlyStats(ctx context.Context, in *UploadNSRecordHourlyStatsRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, "/pb.NSRecordHourlyStatService/uploadNSRecordHourlyStats", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// NSRecordHourlyStatServiceServer is the server API for NSRecordHourlyStatService service.
type NSRecordHourlyStatServiceServer interface {
// 上传统计
UploadNSRecordHourlyStats(context.Context, *UploadNSRecordHourlyStatsRequest) (*RPCSuccess, error)
}
// UnimplementedNSRecordHourlyStatServiceServer can be embedded to have forward compatible implementations.
type UnimplementedNSRecordHourlyStatServiceServer struct {
}
func (*UnimplementedNSRecordHourlyStatServiceServer) UploadNSRecordHourlyStats(context.Context, *UploadNSRecordHourlyStatsRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UploadNSRecordHourlyStats not implemented")
}
func RegisterNSRecordHourlyStatServiceServer(s *grpc.Server, srv NSRecordHourlyStatServiceServer) {
s.RegisterService(&_NSRecordHourlyStatService_serviceDesc, srv)
}
func _NSRecordHourlyStatService_UploadNSRecordHourlyStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UploadNSRecordHourlyStatsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NSRecordHourlyStatServiceServer).UploadNSRecordHourlyStats(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.NSRecordHourlyStatService/UploadNSRecordHourlyStats",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NSRecordHourlyStatServiceServer).UploadNSRecordHourlyStats(ctx, req.(*UploadNSRecordHourlyStatsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _NSRecordHourlyStatService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.NSRecordHourlyStatService",
HandlerType: (*NSRecordHourlyStatServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "uploadNSRecordHourlyStats",
Handler: _NSRecordHourlyStatService_UploadNSRecordHourlyStats_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_ns_record_hourly_stat.proto",
}

View File

@@ -35,7 +35,8 @@ type UploadServerDailyStatsRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Stats []*ServerDailyStat `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"`
Stats []*ServerDailyStat `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"`
DomainStats []*UploadServerDailyStatsRequest_DomainStat `protobuf:"bytes,2,rep,name=domainStats,proto3" json:"domainStats,omitempty"`
}
func (x *UploadServerDailyStatsRequest) Reset() {
@@ -77,6 +78,13 @@ func (x *UploadServerDailyStatsRequest) GetStats() []*ServerDailyStat {
return nil
}
func (x *UploadServerDailyStatsRequest) GetDomainStats() []*UploadServerDailyStatsRequest_DomainStat {
if x != nil {
return x.DomainStats
}
return nil
}
// 按小时读取统计数据
type FindLatestServerHourlyStatsRequest struct {
state protoimpl.MessageState
@@ -386,6 +394,117 @@ func (x *FindLatestServerDailyStatsResponse) GetStats() []*FindLatestServerDaily
return nil
}
type UploadServerDailyStatsRequest_DomainStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerId int64 `protobuf:"varint,1,opt,name=serverId,proto3" json:"serverId,omitempty"`
Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
Bytes int64 `protobuf:"varint,3,opt,name=bytes,proto3" json:"bytes,omitempty"`
CachedBytes int64 `protobuf:"varint,4,opt,name=cachedBytes,proto3" json:"cachedBytes,omitempty"`
CountRequests int64 `protobuf:"varint,5,opt,name=countRequests,proto3" json:"countRequests,omitempty"`
CountCachedRequests int64 `protobuf:"varint,6,opt,name=countCachedRequests,proto3" json:"countCachedRequests,omitempty"`
CountAttackRequests int64 `protobuf:"varint,8,opt,name=countAttackRequests,proto3" json:"countAttackRequests,omitempty"`
AttackBytes int64 `protobuf:"varint,9,opt,name=attackBytes,proto3" json:"attackBytes,omitempty"`
CreatedAt int64 `protobuf:"varint,7,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
}
func (x *UploadServerDailyStatsRequest_DomainStat) Reset() {
*x = UploadServerDailyStatsRequest_DomainStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_daily_stat_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UploadServerDailyStatsRequest_DomainStat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UploadServerDailyStatsRequest_DomainStat) ProtoMessage() {}
func (x *UploadServerDailyStatsRequest_DomainStat) ProtoReflect() protoreflect.Message {
mi := &file_service_server_daily_stat_proto_msgTypes[7]
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 UploadServerDailyStatsRequest_DomainStat.ProtoReflect.Descriptor instead.
func (*UploadServerDailyStatsRequest_DomainStat) Descriptor() ([]byte, []int) {
return file_service_server_daily_stat_proto_rawDescGZIP(), []int{0, 0}
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetServerId() int64 {
if x != nil {
return x.ServerId
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetDomain() string {
if x != nil {
return x.Domain
}
return ""
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetBytes() int64 {
if x != nil {
return x.Bytes
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetCachedBytes() int64 {
if x != nil {
return x.CachedBytes
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetCountRequests() int64 {
if x != nil {
return x.CountRequests
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetCountCachedRequests() int64 {
if x != nil {
return x.CountCachedRequests
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetCountAttackRequests() int64 {
if x != nil {
return x.CountAttackRequests
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetAttackBytes() int64 {
if x != nil {
return x.AttackBytes
}
return 0
}
func (x *UploadServerDailyStatsRequest_DomainStat) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
type FindLatestServerHourlyStatsResponse_HourlyStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -401,7 +520,7 @@ type FindLatestServerHourlyStatsResponse_HourlyStat struct {
func (x *FindLatestServerHourlyStatsResponse_HourlyStat) Reset() {
*x = FindLatestServerHourlyStatsResponse_HourlyStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_daily_stat_proto_msgTypes[7]
mi := &file_service_server_daily_stat_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -414,7 +533,7 @@ func (x *FindLatestServerHourlyStatsResponse_HourlyStat) String() string {
func (*FindLatestServerHourlyStatsResponse_HourlyStat) ProtoMessage() {}
func (x *FindLatestServerHourlyStatsResponse_HourlyStat) ProtoReflect() protoreflect.Message {
mi := &file_service_server_daily_stat_proto_msgTypes[7]
mi := &file_service_server_daily_stat_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -480,7 +599,7 @@ type FindLatestServerMinutelyStatsResponse_MinutelyStat struct {
func (x *FindLatestServerMinutelyStatsResponse_MinutelyStat) Reset() {
*x = FindLatestServerMinutelyStatsResponse_MinutelyStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_daily_stat_proto_msgTypes[8]
mi := &file_service_server_daily_stat_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -493,7 +612,7 @@ func (x *FindLatestServerMinutelyStatsResponse_MinutelyStat) String() string {
func (*FindLatestServerMinutelyStatsResponse_MinutelyStat) ProtoMessage() {}
func (x *FindLatestServerMinutelyStatsResponse_MinutelyStat) ProtoReflect() protoreflect.Message {
mi := &file_service_server_daily_stat_proto_msgTypes[8]
mi := &file_service_server_daily_stat_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -559,7 +678,7 @@ type FindLatestServerDailyStatsResponse_DailyStat struct {
func (x *FindLatestServerDailyStatsResponse_DailyStat) Reset() {
*x = FindLatestServerDailyStatsResponse_DailyStat{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_daily_stat_proto_msgTypes[9]
mi := &file_service_server_daily_stat_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -572,7 +691,7 @@ func (x *FindLatestServerDailyStatsResponse_DailyStat) String() string {
func (*FindLatestServerDailyStatsResponse_DailyStat) ProtoMessage() {}
func (x *FindLatestServerDailyStatsResponse_DailyStat) ProtoReflect() protoreflect.Message {
mi := &file_service_server_daily_stat_proto_msgTypes[9]
mi := &file_service_server_daily_stat_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -632,112 +751,138 @@ var file_service_server_daily_stat_proto_rawDesc = []byte{
0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x69, 0x6c, 0x79,
0x5f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x6d, 0x6f, 0x64,
0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x1d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61,
0x74, 0x73, 0x22, 0x56, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76,
0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76,
0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x22, 0xa2, 0x02, 0x0a, 0x23, 0x46,
0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48,
0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x32, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73,
0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61,
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x75, 0x72, 0x6c,
0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xb0, 0x01, 0x0a,
0x0a, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68,
0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12,
0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42,
0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68,
0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x0a,
0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22,
0x5c, 0x0a, 0x24, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x22, 0xae, 0x02,
0x0a, 0x25, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdf, 0x03, 0x0a, 0x1d, 0x55, 0x70, 0x6c, 0x6f, 0x61,
0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70,
0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53,
0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x73, 0x1a, 0xc2, 0x02, 0x0a, 0x0a, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16,
0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b,
0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24,
0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63,
0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
0x74, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x08, 0x20,
0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61,
0x63, 0x6b, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x61,
0x74, 0x74, 0x61, 0x63, 0x6b, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x56, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x64,
0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a,
0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f,
0x75, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6f, 0x75, 0x72, 0x73,
0x22, 0xa2, 0x02, 0x0a, 0x23, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75,
0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x2e, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61,
0x74, 0x73, 0x1a, 0xb0, 0x01, 0x0a, 0x0a, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61,
0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02,
0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63,
0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a,
0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x24, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74,
0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c,
0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a,
0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e,
0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x75,
0x74, 0x65, 0x73, 0x22, 0xae, 0x02, 0x0a, 0x25, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65,
0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79,
0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a,
0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70,
0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75,
0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x2e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05,
0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xb6, 0x01, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62,
0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79,
0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65,
0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x13,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x53,
0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64,
0x61, 0x79, 0x73, 0x22, 0x9c, 0x02, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79,
0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xb6, 0x01, 0x0a, 0x0c,
0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06,
0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x69,
0x6e, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61,
0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x73, 0x22, 0x53, 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65,
0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61,
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x74,
0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44,
0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61,
0x74, 0x73, 0x1a, 0xad, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64,
0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x63, 0x68,
0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63,
0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x73, 0x32, 0xb8, 0x03, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a,
0x16, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x6c,
0x6f, 0x61, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74,
0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e,
0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6e, 0x0a, 0x1b, 0x66, 0x69,
0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f,
0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48,
0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73,
0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61,
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69,
0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x69,
0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x62,
0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72,
0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x72,
0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x22, 0x9c, 0x02, 0x0a, 0x22, 0x46, 0x69,
0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61,
0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x46, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x30, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61,
0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xad, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x69,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65,
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20,
0x0a, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73,
0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43,
0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20,
0x01, 0x28, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x32, 0xb8, 0x03, 0x0a, 0x16, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x21, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44,
0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x12, 0x6e, 0x0a, 0x1b, 0x66, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
0x26, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x75,
0x72, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x73, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73,
0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53,
0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c,
0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74,
0x65, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x6b, 0x0a, 0x1a, 0x66, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c,
0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79,
0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x1a, 0x66, 0x69, 0x6e, 0x64, 0x4c, 0x61,
0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53,
0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61,
0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53,
0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (
@@ -752,7 +897,7 @@ func file_service_server_daily_stat_proto_rawDescGZIP() []byte {
return file_service_server_daily_stat_proto_rawDescData
}
var file_service_server_daily_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_service_server_daily_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_service_server_daily_stat_proto_goTypes = []interface{}{
(*UploadServerDailyStatsRequest)(nil), // 0: pb.UploadServerDailyStatsRequest
(*FindLatestServerHourlyStatsRequest)(nil), // 1: pb.FindLatestServerHourlyStatsRequest
@@ -761,30 +906,32 @@ var file_service_server_daily_stat_proto_goTypes = []interface{}{
(*FindLatestServerMinutelyStatsResponse)(nil), // 4: pb.FindLatestServerMinutelyStatsResponse
(*FindLatestServerDailyStatsRequest)(nil), // 5: pb.FindLatestServerDailyStatsRequest
(*FindLatestServerDailyStatsResponse)(nil), // 6: pb.FindLatestServerDailyStatsResponse
(*FindLatestServerHourlyStatsResponse_HourlyStat)(nil), // 7: pb.FindLatestServerHourlyStatsResponse.HourlyStat
(*FindLatestServerMinutelyStatsResponse_MinutelyStat)(nil), // 8: pb.FindLatestServerMinutelyStatsResponse.MinutelyStat
(*FindLatestServerDailyStatsResponse_DailyStat)(nil), // 9: pb.FindLatestServerDailyStatsResponse.DailyStat
(*ServerDailyStat)(nil), // 10: pb.ServerDailyStat
(*RPCSuccess)(nil), // 11: pb.RPCSuccess
(*UploadServerDailyStatsRequest_DomainStat)(nil), // 7: pb.UploadServerDailyStatsRequest.DomainStat
(*FindLatestServerHourlyStatsResponse_HourlyStat)(nil), // 8: pb.FindLatestServerHourlyStatsResponse.HourlyStat
(*FindLatestServerMinutelyStatsResponse_MinutelyStat)(nil), // 9: pb.FindLatestServerMinutelyStatsResponse.MinutelyStat
(*FindLatestServerDailyStatsResponse_DailyStat)(nil), // 10: pb.FindLatestServerDailyStatsResponse.DailyStat
(*ServerDailyStat)(nil), // 11: pb.ServerDailyStat
(*RPCSuccess)(nil), // 12: pb.RPCSuccess
}
var file_service_server_daily_stat_proto_depIdxs = []int32{
10, // 0: pb.UploadServerDailyStatsRequest.stats:type_name -> pb.ServerDailyStat
7, // 1: pb.FindLatestServerHourlyStatsResponse.stats:type_name -> pb.FindLatestServerHourlyStatsResponse.HourlyStat
8, // 2: pb.FindLatestServerMinutelyStatsResponse.stats:type_name -> pb.FindLatestServerMinutelyStatsResponse.MinutelyStat
9, // 3: pb.FindLatestServerDailyStatsResponse.stats:type_name -> pb.FindLatestServerDailyStatsResponse.DailyStat
0, // 4: pb.ServerDailyStatService.uploadServerDailyStats:input_type -> pb.UploadServerDailyStatsRequest
1, // 5: pb.ServerDailyStatService.findLatestServerHourlyStats:input_type -> pb.FindLatestServerHourlyStatsRequest
3, // 6: pb.ServerDailyStatService.findLatestServerMinutelyStats:input_type -> pb.FindLatestServerMinutelyStatsRequest
5, // 7: pb.ServerDailyStatService.findLatestServerDailyStats:input_type -> pb.FindLatestServerDailyStatsRequest
11, // 8: pb.ServerDailyStatService.uploadServerDailyStats:output_type -> pb.RPCSuccess
2, // 9: pb.ServerDailyStatService.findLatestServerHourlyStats:output_type -> pb.FindLatestServerHourlyStatsResponse
4, // 10: pb.ServerDailyStatService.findLatestServerMinutelyStats:output_type -> pb.FindLatestServerMinutelyStatsResponse
6, // 11: pb.ServerDailyStatService.findLatestServerDailyStats:output_type -> pb.FindLatestServerDailyStatsResponse
8, // [8:12] is the sub-list for method output_type
4, // [4:8] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
11, // 0: pb.UploadServerDailyStatsRequest.stats:type_name -> pb.ServerDailyStat
7, // 1: pb.UploadServerDailyStatsRequest.domainStats:type_name -> pb.UploadServerDailyStatsRequest.DomainStat
8, // 2: pb.FindLatestServerHourlyStatsResponse.stats:type_name -> pb.FindLatestServerHourlyStatsResponse.HourlyStat
9, // 3: pb.FindLatestServerMinutelyStatsResponse.stats:type_name -> pb.FindLatestServerMinutelyStatsResponse.MinutelyStat
10, // 4: pb.FindLatestServerDailyStatsResponse.stats:type_name -> pb.FindLatestServerDailyStatsResponse.DailyStat
0, // 5: pb.ServerDailyStatService.uploadServerDailyStats:input_type -> pb.UploadServerDailyStatsRequest
1, // 6: pb.ServerDailyStatService.findLatestServerHourlyStats:input_type -> pb.FindLatestServerHourlyStatsRequest
3, // 7: pb.ServerDailyStatService.findLatestServerMinutelyStats:input_type -> pb.FindLatestServerMinutelyStatsRequest
5, // 8: pb.ServerDailyStatService.findLatestServerDailyStats:input_type -> pb.FindLatestServerDailyStatsRequest
12, // 9: pb.ServerDailyStatService.uploadServerDailyStats:output_type -> pb.RPCSuccess
2, // 10: pb.ServerDailyStatService.findLatestServerHourlyStats:output_type -> pb.FindLatestServerHourlyStatsResponse
4, // 11: pb.ServerDailyStatService.findLatestServerMinutelyStats:output_type -> pb.FindLatestServerMinutelyStatsResponse
6, // 12: pb.ServerDailyStatService.findLatestServerDailyStats:output_type -> pb.FindLatestServerDailyStatsResponse
9, // [9:13] is the sub-list for method output_type
5, // [5:9] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
}
func init() { file_service_server_daily_stat_proto_init() }
@@ -880,7 +1027,7 @@ func file_service_server_daily_stat_proto_init() {
}
}
file_service_server_daily_stat_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindLatestServerHourlyStatsResponse_HourlyStat); i {
switch v := v.(*UploadServerDailyStatsRequest_DomainStat); i {
case 0:
return &v.state
case 1:
@@ -892,7 +1039,7 @@ func file_service_server_daily_stat_proto_init() {
}
}
file_service_server_daily_stat_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindLatestServerMinutelyStatsResponse_MinutelyStat); i {
switch v := v.(*FindLatestServerHourlyStatsResponse_HourlyStat); i {
case 0:
return &v.state
case 1:
@@ -904,6 +1051,18 @@ func file_service_server_daily_stat_proto_init() {
}
}
file_service_server_daily_stat_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindLatestServerMinutelyStatsResponse_MinutelyStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_server_daily_stat_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindLatestServerDailyStatsResponse_DailyStat); i {
case 0:
return &v.state
@@ -922,7 +1081,7 @@ func file_service_server_daily_stat_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_server_daily_stat_proto_rawDesc,
NumEnums: 0,
NumMessages: 10,
NumMessages: 11,
NumExtensions: 0,
NumServices: 1,
},

View File

@@ -29,7 +29,7 @@ const (
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// 组合Dashboard
// 组合服务的Dashboard
type ComposeServerHTTPFirewallDashboardRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -522,7 +522,7 @@ const _ = grpc.SupportPackageIsVersion6
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ServerHTTPFirewallDailyStatServiceClient interface {
// 组合Dashboard
// 组合服务的Dashboard
ComposeServerHTTPFirewallDashboard(ctx context.Context, in *ComposeServerHTTPFirewallDashboardRequest, opts ...grpc.CallOption) (*ComposeServerHTTPFirewallDashboardResponse, error)
}
@@ -545,7 +545,7 @@ func (c *serverHTTPFirewallDailyStatServiceClient) ComposeServerHTTPFirewallDash
// ServerHTTPFirewallDailyStatServiceServer is the server API for ServerHTTPFirewallDailyStatService service.
type ServerHTTPFirewallDailyStatServiceServer interface {
// 组合Dashboard
// 组合服务的Dashboard
ComposeServerHTTPFirewallDashboard(context.Context, *ComposeServerHTTPFirewallDashboardRequest) (*ComposeServerHTTPFirewallDashboardResponse, error)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,572 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.3
// source: service_server_stat_board_chart.proto
package pb
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
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 EnableServerStatBoardChartRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerStatBoardId int64 `protobuf:"varint,1,opt,name=serverStatBoardId,proto3" json:"serverStatBoardId,omitempty"`
MetricChartId int64 `protobuf:"varint,2,opt,name=metricChartId,proto3" json:"metricChartId,omitempty"`
}
func (x *EnableServerStatBoardChartRequest) Reset() {
*x = EnableServerStatBoardChartRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_stat_board_chart_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EnableServerStatBoardChartRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EnableServerStatBoardChartRequest) ProtoMessage() {}
func (x *EnableServerStatBoardChartRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_server_stat_board_chart_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 EnableServerStatBoardChartRequest.ProtoReflect.Descriptor instead.
func (*EnableServerStatBoardChartRequest) Descriptor() ([]byte, []int) {
return file_service_server_stat_board_chart_proto_rawDescGZIP(), []int{0}
}
func (x *EnableServerStatBoardChartRequest) GetServerStatBoardId() int64 {
if x != nil {
return x.ServerStatBoardId
}
return 0
}
func (x *EnableServerStatBoardChartRequest) GetMetricChartId() int64 {
if x != nil {
return x.MetricChartId
}
return 0
}
// 取消图表
type DisableServerStatBoardChartRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerStatBoardId int64 `protobuf:"varint,1,opt,name=serverStatBoardId,proto3" json:"serverStatBoardId,omitempty"`
MetricChartId int64 `protobuf:"varint,2,opt,name=metricChartId,proto3" json:"metricChartId,omitempty"`
}
func (x *DisableServerStatBoardChartRequest) Reset() {
*x = DisableServerStatBoardChartRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_stat_board_chart_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DisableServerStatBoardChartRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DisableServerStatBoardChartRequest) ProtoMessage() {}
func (x *DisableServerStatBoardChartRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_server_stat_board_chart_proto_msgTypes[1]
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 DisableServerStatBoardChartRequest.ProtoReflect.Descriptor instead.
func (*DisableServerStatBoardChartRequest) Descriptor() ([]byte, []int) {
return file_service_server_stat_board_chart_proto_rawDescGZIP(), []int{1}
}
func (x *DisableServerStatBoardChartRequest) GetServerStatBoardId() int64 {
if x != nil {
return x.ServerStatBoardId
}
return 0
}
func (x *DisableServerStatBoardChartRequest) GetMetricChartId() int64 {
if x != nil {
return x.MetricChartId
}
return 0
}
// 读取看板中的图表
type FindAllEnabledServerStatBoardChartsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerStatBoardId int64 `protobuf:"varint,1,opt,name=serverStatBoardId,proto3" json:"serverStatBoardId,omitempty"`
}
func (x *FindAllEnabledServerStatBoardChartsRequest) Reset() {
*x = FindAllEnabledServerStatBoardChartsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_stat_board_chart_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllEnabledServerStatBoardChartsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllEnabledServerStatBoardChartsRequest) ProtoMessage() {}
func (x *FindAllEnabledServerStatBoardChartsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_server_stat_board_chart_proto_msgTypes[2]
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 FindAllEnabledServerStatBoardChartsRequest.ProtoReflect.Descriptor instead.
func (*FindAllEnabledServerStatBoardChartsRequest) Descriptor() ([]byte, []int) {
return file_service_server_stat_board_chart_proto_rawDescGZIP(), []int{2}
}
func (x *FindAllEnabledServerStatBoardChartsRequest) GetServerStatBoardId() int64 {
if x != nil {
return x.ServerStatBoardId
}
return 0
}
type FindAllEnabledServerStatBoardChartsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServerStatBoardCharts []*ServerStatBoardChart `protobuf:"bytes,1,rep,name=serverStatBoardCharts,proto3" json:"serverStatBoardCharts,omitempty"`
}
func (x *FindAllEnabledServerStatBoardChartsResponse) Reset() {
*x = FindAllEnabledServerStatBoardChartsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_server_stat_board_chart_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllEnabledServerStatBoardChartsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllEnabledServerStatBoardChartsResponse) ProtoMessage() {}
func (x *FindAllEnabledServerStatBoardChartsResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_server_stat_board_chart_proto_msgTypes[3]
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 FindAllEnabledServerStatBoardChartsResponse.ProtoReflect.Descriptor instead.
func (*FindAllEnabledServerStatBoardChartsResponse) Descriptor() ([]byte, []int) {
return file_service_server_stat_board_chart_proto_rawDescGZIP(), []int{3}
}
func (x *FindAllEnabledServerStatBoardChartsResponse) GetServerStatBoardCharts() []*ServerStatBoardChart {
if x != nil {
return x.ServerStatBoardCharts
}
return nil
}
var File_service_server_stat_board_chart_proto protoreflect.FileDescriptor
var file_service_server_stat_board_chart_proto_rawDesc = []byte{
0x0a, 0x25, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x72,
0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x19, 0x6d, 0x6f, 0x64,
0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74,
0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0x77, 0x0a, 0x21, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f,
0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43,
0x68, 0x61, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x43, 0x68, 0x61, 0x72, 0x74, 0x49, 0x64, 0x22, 0x78, 0x0a, 0x22, 0x44,
0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x73, 0x65,
0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12,
0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x68, 0x61, 0x72, 0x74, 0x49, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x68,
0x61, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x2a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61,
0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61,
0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11,
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49,
0x64, 0x22, 0x7d, 0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61,
0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x4e, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f,
0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x73,
0x32, 0xd2, 0x02, 0x0a, 0x1b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x12, 0x53, 0x0a, 0x1a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x12, 0x25,
0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x1b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43,
0x68, 0x61, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c,
0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64,
0x43, 0x68, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x86, 0x01, 0x0a,
0x23, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68,
0x61, 0x72, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c,
0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74,
0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c,
0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74,
0x61, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_server_stat_board_chart_proto_rawDescOnce sync.Once
file_service_server_stat_board_chart_proto_rawDescData = file_service_server_stat_board_chart_proto_rawDesc
)
func file_service_server_stat_board_chart_proto_rawDescGZIP() []byte {
file_service_server_stat_board_chart_proto_rawDescOnce.Do(func() {
file_service_server_stat_board_chart_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_server_stat_board_chart_proto_rawDescData)
})
return file_service_server_stat_board_chart_proto_rawDescData
}
var file_service_server_stat_board_chart_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_service_server_stat_board_chart_proto_goTypes = []interface{}{
(*EnableServerStatBoardChartRequest)(nil), // 0: pb.EnableServerStatBoardChartRequest
(*DisableServerStatBoardChartRequest)(nil), // 1: pb.DisableServerStatBoardChartRequest
(*FindAllEnabledServerStatBoardChartsRequest)(nil), // 2: pb.FindAllEnabledServerStatBoardChartsRequest
(*FindAllEnabledServerStatBoardChartsResponse)(nil), // 3: pb.FindAllEnabledServerStatBoardChartsResponse
(*ServerStatBoardChart)(nil), // 4: pb.ServerStatBoardChart
(*RPCSuccess)(nil), // 5: pb.RPCSuccess
}
var file_service_server_stat_board_chart_proto_depIdxs = []int32{
4, // 0: pb.FindAllEnabledServerStatBoardChartsResponse.serverStatBoardCharts:type_name -> pb.ServerStatBoardChart
0, // 1: pb.ServerStatBoardChartService.enableServerStatBoardChart:input_type -> pb.EnableServerStatBoardChartRequest
1, // 2: pb.ServerStatBoardChartService.disableServerStatBoardChart:input_type -> pb.DisableServerStatBoardChartRequest
2, // 3: pb.ServerStatBoardChartService.findAllEnabledServerStatBoardCharts:input_type -> pb.FindAllEnabledServerStatBoardChartsRequest
5, // 4: pb.ServerStatBoardChartService.enableServerStatBoardChart:output_type -> pb.RPCSuccess
5, // 5: pb.ServerStatBoardChartService.disableServerStatBoardChart:output_type -> pb.RPCSuccess
3, // 6: pb.ServerStatBoardChartService.findAllEnabledServerStatBoardCharts:output_type -> pb.FindAllEnabledServerStatBoardChartsResponse
4, // [4:7] is the sub-list for method output_type
1, // [1:4] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_service_server_stat_board_chart_proto_init() }
func file_service_server_stat_board_chart_proto_init() {
if File_service_server_stat_board_chart_proto != nil {
return
}
file_models_rpc_messages_proto_init()
file_models_model_server_stat_board_chart_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_server_stat_board_chart_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EnableServerStatBoardChartRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_server_stat_board_chart_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DisableServerStatBoardChartRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_server_stat_board_chart_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllEnabledServerStatBoardChartsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_server_stat_board_chart_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllEnabledServerStatBoardChartsResponse); 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_service_server_stat_board_chart_proto_rawDesc,
NumEnums: 0,
NumMessages: 4,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_server_stat_board_chart_proto_goTypes,
DependencyIndexes: file_service_server_stat_board_chart_proto_depIdxs,
MessageInfos: file_service_server_stat_board_chart_proto_msgTypes,
}.Build()
File_service_server_stat_board_chart_proto = out.File
file_service_server_stat_board_chart_proto_rawDesc = nil
file_service_server_stat_board_chart_proto_goTypes = nil
file_service_server_stat_board_chart_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// ServerStatBoardChartServiceClient is the client API for ServerStatBoardChartService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ServerStatBoardChartServiceClient interface {
// 添加图表
EnableServerStatBoardChart(ctx context.Context, in *EnableServerStatBoardChartRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 取消图表
DisableServerStatBoardChart(ctx context.Context, in *DisableServerStatBoardChartRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 读取看板中的图表
FindAllEnabledServerStatBoardCharts(ctx context.Context, in *FindAllEnabledServerStatBoardChartsRequest, opts ...grpc.CallOption) (*FindAllEnabledServerStatBoardChartsResponse, error)
}
type serverStatBoardChartServiceClient struct {
cc grpc.ClientConnInterface
}
func NewServerStatBoardChartServiceClient(cc grpc.ClientConnInterface) ServerStatBoardChartServiceClient {
return &serverStatBoardChartServiceClient{cc}
}
func (c *serverStatBoardChartServiceClient) EnableServerStatBoardChart(ctx context.Context, in *EnableServerStatBoardChartRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, "/pb.ServerStatBoardChartService/enableServerStatBoardChart", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *serverStatBoardChartServiceClient) DisableServerStatBoardChart(ctx context.Context, in *DisableServerStatBoardChartRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, "/pb.ServerStatBoardChartService/disableServerStatBoardChart", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *serverStatBoardChartServiceClient) FindAllEnabledServerStatBoardCharts(ctx context.Context, in *FindAllEnabledServerStatBoardChartsRequest, opts ...grpc.CallOption) (*FindAllEnabledServerStatBoardChartsResponse, error) {
out := new(FindAllEnabledServerStatBoardChartsResponse)
err := c.cc.Invoke(ctx, "/pb.ServerStatBoardChartService/findAllEnabledServerStatBoardCharts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// ServerStatBoardChartServiceServer is the server API for ServerStatBoardChartService service.
type ServerStatBoardChartServiceServer interface {
// 添加图表
EnableServerStatBoardChart(context.Context, *EnableServerStatBoardChartRequest) (*RPCSuccess, error)
// 取消图表
DisableServerStatBoardChart(context.Context, *DisableServerStatBoardChartRequest) (*RPCSuccess, error)
// 读取看板中的图表
FindAllEnabledServerStatBoardCharts(context.Context, *FindAllEnabledServerStatBoardChartsRequest) (*FindAllEnabledServerStatBoardChartsResponse, error)
}
// UnimplementedServerStatBoardChartServiceServer can be embedded to have forward compatible implementations.
type UnimplementedServerStatBoardChartServiceServer struct {
}
func (*UnimplementedServerStatBoardChartServiceServer) EnableServerStatBoardChart(context.Context, *EnableServerStatBoardChartRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method EnableServerStatBoardChart not implemented")
}
func (*UnimplementedServerStatBoardChartServiceServer) DisableServerStatBoardChart(context.Context, *DisableServerStatBoardChartRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method DisableServerStatBoardChart not implemented")
}
func (*UnimplementedServerStatBoardChartServiceServer) FindAllEnabledServerStatBoardCharts(context.Context, *FindAllEnabledServerStatBoardChartsRequest) (*FindAllEnabledServerStatBoardChartsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllEnabledServerStatBoardCharts not implemented")
}
func RegisterServerStatBoardChartServiceServer(s *grpc.Server, srv ServerStatBoardChartServiceServer) {
s.RegisterService(&_ServerStatBoardChartService_serviceDesc, srv)
}
func _ServerStatBoardChartService_EnableServerStatBoardChart_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(EnableServerStatBoardChartRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ServerStatBoardChartServiceServer).EnableServerStatBoardChart(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.ServerStatBoardChartService/EnableServerStatBoardChart",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ServerStatBoardChartServiceServer).EnableServerStatBoardChart(ctx, req.(*EnableServerStatBoardChartRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ServerStatBoardChartService_DisableServerStatBoardChart_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DisableServerStatBoardChartRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ServerStatBoardChartServiceServer).DisableServerStatBoardChart(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.ServerStatBoardChartService/DisableServerStatBoardChart",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ServerStatBoardChartServiceServer).DisableServerStatBoardChart(ctx, req.(*DisableServerStatBoardChartRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ServerStatBoardChartService_FindAllEnabledServerStatBoardCharts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindAllEnabledServerStatBoardChartsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ServerStatBoardChartServiceServer).FindAllEnabledServerStatBoardCharts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pb.ServerStatBoardChartService/FindAllEnabledServerStatBoardCharts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ServerStatBoardChartServiceServer).FindAllEnabledServerStatBoardCharts(ctx, req.(*FindAllEnabledServerStatBoardChartsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _ServerStatBoardChartService_serviceDesc = grpc.ServiceDesc{
ServiceName: "pb.ServerStatBoardChartService",
HandlerType: (*ServerStatBoardChartServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "enableServerStatBoardChart",
Handler: _ServerStatBoardChartService_EnableServerStatBoardChart_Handler,
},
{
MethodName: "disableServerStatBoardChart",
Handler: _ServerStatBoardChartService_DisableServerStatBoardChart_Handler,
},
{
MethodName: "findAllEnabledServerStatBoardCharts",
Handler: _ServerStatBoardChartService_FindAllEnabledServerStatBoardCharts_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_server_stat_board_chart.proto",
}

File diff suppressed because it is too large Load Diff

View File

@@ -10,4 +10,5 @@ message AdminModuleList {
bool isSuper = 2;
repeated AdminModule Modules = 3;
string fullname = 4;
string theme = 5;
}

View File

@@ -0,0 +1,12 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
// API令牌
message APIToken {
int64 id = 1;
string nodeId = 2;
string secret = 3;
string role = 4;
}

View File

@@ -63,6 +63,10 @@ message HTTPAccessLog {
int64 firewallRuleGroupId = 45;
int64 firewallRuleSetId = 46;
int64 firewallRuleId = 47;
repeated string firewallActions = 49;
repeated string tags = 50;
}
message Strings {

View File

@@ -0,0 +1,19 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_metric_item.proto";
// 指标图表
message MetricChart {
int64 id = 1;
string name = 2;
string type = 3;
int32 widthDiv = 4;
bytes paramsJSON = 5;
bool isOn = 6;
int32 maxItems = 7;
MetricItem metricItem = 30;
}

View File

@@ -14,4 +14,5 @@ message MetricItem {
int32 period = 7;
string periodUnit = 8;
string value = 10;
bool isPublic = 11;
}

View File

@@ -0,0 +1,35 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_node_cluster.proto";
import "models/model_node.proto";
import "models/model_server.proto";
// 统计数据
message MetricStat {
int64 id = 1;
string hash = 2;
int64 serverId = 3;
int64 itemId = 4;
repeated string keys = 5;
float value = 6;
string time = 7;
int32 version = 8;
NodeCluster nodeCluster = 30;
Node node = 31;
Server server = 32;
int64 sumCount = 40;
float sumTotal = 41;
}
// 需要上传的统计数据
message UploadingMetricStat {
int64 id = 1;
string hash = 2;
repeated string keys = 3;
float value = 4;
}

View File

@@ -0,0 +1,14 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
message NSRecordHourlyStat {
int64 nsClusterId = 1;
int64 nsNodeId = 2;
int64 nsDomainId = 3;
int64 nsRecordId = 4;
int64 bytes = 5;
int64 countRequests = 6;
int64 createdAt = 7;
}

View File

@@ -12,4 +12,6 @@ message ServerDailyStat {
int64 countRequests = 6;
int64 countCachedRequests = 7;
int64 createdAt = 4;
}
int64 countAttackRequests = 8;
int64 attackBytes = 9;
}

View File

@@ -0,0 +1,11 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
// 统计看板
message ServerStatBoard {
int64 id = 1;
string name = 2;
bool isOn = 3;
}

View File

@@ -0,0 +1,13 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_metric_chart.proto";
// 统计看板条目
message ServerStatBoardChart {
int64 id = 1;
MetricChart metricChart = 30;
}

View File

@@ -12,3 +12,8 @@ message RPCSuccess {
message RPCCountResponse {
int64 count = 1;
}
// 是否存在
message RPCExists {
bool exists = 1;
}

View File

@@ -6,6 +6,7 @@ package pb;
import "models/model_admin.proto";
import "models/model_admin_list.proto";
import "models/rpc_messages.proto";
import "service_server_stat_board.proto";
service AdminService {
// 登录
@@ -55,6 +56,9 @@ service AdminService {
// 取得管理员Dashboard数据
rpc composeAdminDashboard (ComposeAdminDashboardRequest) returns (ComposeAdminDashboardResponse);
// 修改管理员使用的界面风格
rpc updateAdminTheme (UpdateAdminThemeRequest) returns (RPCSuccess);
}
// 登录
@@ -209,6 +213,7 @@ message ComposeAdminDashboardResponse {
repeated DailyTrafficStat dailyTrafficStats = 30;
repeated HourlyTrafficStat hourlyTrafficStats = 31;
UpgradeInfo nodeUpgradeInfo = 32;
UpgradeInfo apiNodeUpgradeInfo = 33;
UpgradeInfo monitorNodeUpgradeInfo = 34;
@@ -216,14 +221,44 @@ message ComposeAdminDashboardResponse {
UpgradeInfo authorityNodeUpgradeInfo = 36;
UpgradeInfo nsNodeUpgradeInfo = 37;
repeated NodeStat topNodeStats = 38;
repeated DomainStat topDomainStats = 39;
repeated MetricDataChart metricDataCharts = 40;
message DailyTrafficStat {
string day = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message HourlyTrafficStat {
string hour = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message NodeStat {
int64 nodeId = 1;
string nodeName = 2;
int64 countRequests = 3;
int64 bytes = 4;
}
message DomainStat {
int64 serverId = 1;
string domain = 2;
int64 countRequests = 3;
int64 bytes = 4;
}
// 节点升级信息
@@ -231,4 +266,12 @@ message ComposeAdminDashboardResponse {
int64 countNodes = 1;
string newVersion = 2;
}
}
// 修改管理员使用的界面风格
message UpdateAdminThemeRequest {
int64 adminId = 1;
string theme = 2;
}

View File

@@ -0,0 +1,21 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_api_token.proto";
// API令牌服务
service APITokenService {
// 获取API令牌
rpc findAllEnabledAPITokens (FindAllEnabledAPITokensRequest) returns (FindAllEnabledAPITokensResponse);
}
// 获取API令牌
message FindAllEnabledAPITokensRequest {
string role = 1;
}
message FindAllEnabledAPITokensResponse {
repeated APIToken apiTokens = 1;
}

View File

@@ -0,0 +1,60 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/rpc_messages.proto";
import "models/model_http_firewall_rule_group.proto";
// 防火墙全局服务
service FirewallService {
// 组合看板数据
rpc composeFirewallGlobalBoard (ComposeFirewallGlobalBoardRequest) returns (ComposeFirewallGlobalBoardResponse);
// 发送告警(notify)消息
rpc notifyHTTPFirewallEvent (NotifyHTTPFirewallEventRequest) returns (RPCSuccess);
}
// 组合看板数据
message ComposeFirewallGlobalBoardRequest {
}
message ComposeFirewallGlobalBoardResponse {
int64 countDailyLogs = 1;
int64 countDailyBlocks = 2;
int64 countDailyCaptcha = 3;
int64 countWeeklyBlocks = 4;
repeated HTTPFirewallRuleGroupStat httpFirewallRuleGroups = 30;
repeated DailyStat dailyStats = 31;
repeated HourlyStat hourlyStats = 32;
message HTTPFirewallRuleGroupStat {
HTTPFirewallRuleGroup httpFirewallRuleGroup = 1;
int64 count = 2;
}
message HourlyStat {
string hour = 1;
int64 countLogs = 2;
int64 countCaptcha = 3;
int64 countBlocks = 4;
}
message DailyStat {
string day = 1;
int64 countLogs = 2;
int64 countCaptcha = 3;
int64 countBlocks = 4;
}
}
// 发送告警(notify)消息
message NotifyHTTPFirewallEventRequest {
int64 serverId = 1;
int64 httpFirewallPolicyId = 2;
int64 httpFirewallRuleGroupId = 3;
int64 httpFirewallRuleSetId = 4;
int64 createdAt = 5;
}

View File

@@ -0,0 +1,83 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_metric_chart.proto";
import "models/rpc_messages.proto";
// 指标图表相关服务
service MetricChartService {
// 创建图表
rpc createMetricChart (CreateMetricChartRequest) returns (CreateMetricChartResponse);
// 修改图表
rpc updateMetricChart (UpdateMetricChartRequest) returns (RPCSuccess);
// 查找单个图表
rpc findEnabledMetricChart (FindEnabledMetricChartRequest) returns (FindEnabledMetricChartResponse);
// 计算图表数量
rpc countEnabledMetricCharts (CountEnabledMetricChartsRequest) returns (RPCCountResponse);
// 列出单页图表
rpc listEnabledMetricCharts (ListEnabledMetricChartsRequest) returns (ListEnabledMetricChartsResponse);
// 删除图表
rpc deleteMetricChart (DeleteMetricChartRequest) returns (RPCSuccess);
}
// 创建图表
message CreateMetricChartRequest {
int64 metricItemId = 1;
string name = 2;
string type = 3;
int32 widthDiv = 4;
bytes paramsJSON = 5;
int32 maxItems = 6;
}
message CreateMetricChartResponse {
int64 metricChartId = 1;
}
// 修改图表
message UpdateMetricChartRequest {
int64 metricChartId = 1;
string name = 2;
string type = 3;
int32 widthDiv = 4;
bytes paramsJSON = 5;
bool isOn = 6;
int32 maxItems = 7;
}
// 查找单个图表
message FindEnabledMetricChartRequest {
int64 metricChartId = 1;
}
message FindEnabledMetricChartResponse {
MetricChart metricChart = 1;
}
// 计算图表数量
message CountEnabledMetricChartsRequest {
int64 metricItemId = 1;
}
// 列出单页图表
message ListEnabledMetricChartsRequest {
int64 metricItemId = 1;
int64 offset = 2;
int64 size = 3;
}
message ListEnabledMetricChartsResponse {
repeated MetricChart metricCharts = 1;
}
// 删除图表
message DeleteMetricChartRequest {
int64 metricChartId = 1;
}

View File

@@ -36,6 +36,7 @@ message CreateMetricItemRequest {
int32 period = 5;
string periodUnit = 6;
string value = 7;
bool isPublic = 8;
}
message CreateMetricItemResponse {
@@ -51,6 +52,7 @@ message UpdateMetricItemRequest {
string periodUnit = 5;
string value = 6;
bool isOn = 7;
bool isPublic = 8;
}
// 查找单个指标信息

View File

@@ -0,0 +1,45 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_metric_stat.proto";
import "models/rpc_messages.proto";
// 指标统计数据相关服务
service MetricStatService {
// 上传统计数据
rpc uploadMetricStats (UploadMetricStatsRequest) returns (RPCSuccess);
// 计算指标数据数量
rpc countMetricStats (CountMetricStatsRequest) returns (RPCCountResponse);
// 读取单页指标数据
rpc listMetricStats (ListMetricStatsRequest) returns (ListMetricStatsResponse);
}
// 上传统计数据
message UploadMetricStatsRequest {
int64 serverId = 1;
string time = 2;
int64 count = 3;
float total = 4;
int32 version = 5;
int64 itemId = 6;
repeated UploadingMetricStat metricStats = 7;
}
// 计算指标数据数量
message CountMetricStatsRequest {
int64 metricItemId = 1;
}
// 读取单页指标数据
message ListMetricStatsRequest {
int64 metricItemId = 1;
int64 offset = 2;
int64 size = 3;
}
message ListMetricStatsResponse {
repeated MetricStat metricStats = 1;
}

View File

@@ -161,6 +161,15 @@ message ListEnabledNodesMatchRequest {
string keyword = 6;
int64 nodeGroupId = 7;
int64 nodeRegionId = 8;
bool cpuAsc = 20;
bool cpuDesc = 21;
bool memoryAsc = 22;
bool memoryDesc = 23;
bool trafficInAsc = 24;
bool trafficInDesc = 25;
bool trafficOutAsc = 26;
bool trafficOutDesc = 27;
}
message ListEnabledNodesMatchResponse {

View File

@@ -5,6 +5,7 @@ package pb;
import "models/rpc_messages.proto";
import "models/model_metric_item.proto";
import "models/model_node_cluster.proto";
// 集群指标
service NodeClusterMetricItemService {
@@ -16,6 +17,12 @@ service NodeClusterMetricItemService {
// 查找集群中所有指标
rpc findAllNodeClusterMetricItems (FindAllNodeClusterMetricItemsRequest) returns (FindAllNodeClusterMetricItemsResponse);
// 检查是否已添加某个指标
rpc existsNodeClusterMetricItem (ExistsNodeClusterMetricItemRequest) returns (RPCExists);
// 查找使用指标的集群
rpc findAllNodeClustersWithMetricItemId (FindAllNodeClustersWithMetricItemIdRequest) returns (FindAllNodeClustersWithMetricItemIdResponse);
}
// 启用某个指标
@@ -33,8 +40,24 @@ message DisableNodeClusterMetricItemRequest {
// 查找集群中所有指标
message FindAllNodeClusterMetricItemsRequest {
int64 nodeClusterId = 1;
string category = 2;
}
message FindAllNodeClusterMetricItemsResponse {
repeated MetricItem metricItems = 1;
}
// 检查是否已添加某个指标
message ExistsNodeClusterMetricItemRequest {
int64 nodeClusterId = 1;
int64 metricItemId = 2;
}
// 查找使用指标的集群
message FindAllNodeClustersWithMetricItemIdRequest {
int64 metricItemId = 1;
}
message FindAllNodeClustersWithMetricItemIdResponse {
repeated NodeCluster nodeClusters = 1;
}

View File

@@ -4,7 +4,7 @@ option go_package = "./pb";
package pb;
import "models/rpc_messages.proto";
import "models/model_message_node_value.proto";
import "models/model_node_value.proto";
// 节点指标数据服务
service NodeValueService {

View File

@@ -0,0 +1,60 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_node_value.proto";
// 域名服务
service NSService {
// 组合看板数据
rpc composeNSBoard (ComposeNSBoardRequest) returns (ComposeNSBoardResponse);
}
// 组合看板数据
message ComposeNSBoardRequest {
}
message ComposeNSBoardResponse {
int64 countNSDomains = 1;
int64 countNSRecords = 2;
int64 countNSClusters = 3;
int64 countNSNodes = 4;
int64 countOfflineNSNodes = 5;
repeated DailyTrafficStat dailyTrafficStats = 30;
repeated HourlyTrafficStat hourlyTrafficStats = 31;
repeated NodeStat topNSNodeStats = 32;
repeated DomainStat topNSDomainStats = 33;
repeated NodeValue cpuNodeValues = 34;
repeated NodeValue memoryNodeValues = 35;
repeated NodeValue loadNodeValues = 36;
message DailyTrafficStat {
string day = 1;
int64 bytes = 2;
int64 countRequests = 3;
}
message HourlyTrafficStat {
string hour = 1;
int64 bytes = 2;
int64 countRequests = 3;
}
message NodeStat {
int64 nsClusterId = 1;
int64 nsNodeId = 2;
string nsNodeName = 3;
int64 countRequests = 4;
int64 bytes = 5;
}
message DomainStat {
int64 nsDomainId = 1;
string nsDomainName = 2;
int64 countRequests = 3;
int64 bytes = 4;
}
}

View File

@@ -54,6 +54,7 @@ message UpdateNSRecordRequest {
string value = 5;
int32 ttl = 6;
repeated int64 nsRouteIds = 7;
bool isOn = 8;
}
// 删除记录

View File

@@ -0,0 +1,18 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_ns_record_hourly_stat.proto";
import "models/rpc_messages.proto";
// NS记录小时统计
service NSRecordHourlyStatService {
// 上传统计
rpc uploadNSRecordHourlyStats (UploadNSRecordHourlyStatsRequest) returns (RPCSuccess);
}
// 上传统计
message UploadNSRecordHourlyStatsRequest {
repeated NSRecordHourlyStat stats = 1;
}

View File

@@ -24,6 +24,19 @@ service ServerDailyStatService {
// 上传统计
message UploadServerDailyStatsRequest {
repeated ServerDailyStat stats = 1;
repeated DomainStat domainStats = 2;
message DomainStat {
int64 serverId = 1;
string domain = 2;
int64 bytes = 3;
int64 cachedBytes = 4;
int64 countRequests = 5;
int64 countCachedRequests = 6;
int64 countAttackRequests = 8;
int64 attackBytes = 9;
int64 createdAt = 7;
}
}
// 按小时读取统计数据

View File

@@ -7,11 +7,11 @@ import "models/model_http_firewall_rule_group.proto";
// WAF统计
service ServerHTTPFirewallDailyStatService {
// 组合Dashboard
// 组合服务的Dashboard
rpc composeServerHTTPFirewallDashboard (ComposeServerHTTPFirewallDashboardRequest) returns (ComposeServerHTTPFirewallDashboardResponse);
}
// 组合Dashboard
// 组合服务的Dashboard
message ComposeServerHTTPFirewallDashboardRequest {
string day = 1;
int64 userId = 2;

View File

@@ -0,0 +1,212 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_server_stat_board.proto";
import "models/model_node_value.proto";
import "models/model_metric_chart.proto";
import "models/model_metric_stat.proto";
// 统计看板
service ServerStatBoardService {
// 读取所有看板
rpc findAllEnabledServerStatBoards (FindAllEnabledServerStatBoardsRequest) returns (FindAllEnabledServerStatBoardsResponse);
// 组合集群看板数据
rpc composeServerStatNodeClusterBoard (ComposeServerStatNodeClusterBoardRequest) returns (ComposeServerStatNodeClusterBoardResponse);
// 组合节点看板数据
rpc composeServerStatNodeBoard (ComposeServerStatNodeBoardRequest) returns (ComposeServerStatNodeBoardResponse);
// 组合服务看板数据
rpc composeServerStatBoard (ComposeServerStatBoardRequest) returns (ComposeServerStatBoardResponse);
}
// 读取所有看板
message FindAllEnabledServerStatBoardsRequest {
int64 nodeClusterId = 1;
}
message FindAllEnabledServerStatBoardsResponse {
repeated ServerStatBoard serverStatBoards = 1;
}
// 组合集群看板数据
message ComposeServerStatNodeClusterBoardRequest {
int64 nodeClusterId = 1;
}
message ComposeServerStatNodeClusterBoardResponse {
int64 countActiveNodes = 1;
int64 countInactiveNodes = 2;
int64 countServers = 3;
int64 countUsers = 4;
repeated DailyTrafficStat dailyTrafficStats = 30;
repeated HourlyTrafficStat hourlyTrafficStats = 31;
repeated NodeStat topNodeStats = 32;
repeated DomainStat topDomainStats = 33;
repeated NodeValue cpuNodeValues = 34;
repeated NodeValue memoryNodeValues = 35;
repeated NodeValue loadNodeValues = 36;
repeated MetricDataChart metricDataCharts = 37;
message DailyTrafficStat {
string day = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message HourlyTrafficStat {
string hour = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message NodeStat {
int64 nodeId = 1;
string nodeName = 2;
int64 countRequests = 3;
int64 bytes = 4;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message DomainStat {
int64 serverId = 1;
string domain = 2;
int64 countRequests = 3;
int64 bytes = 4;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
}
// 组合节点看板数据
message ComposeServerStatNodeBoardRequest {
int64 nodeId = 1;
}
message ComposeServerStatNodeBoardResponse {
bool isActive = 1;
int64 trafficInBytes = 2;
int64 trafficOutBytes = 3;
int64 countRequests = 4;
int64 countAttackRequests = 5;
int64 countConnections = 6;
int64 cacheDiskSize = 7;
int64 cacheMemorySize = 8;
float cpuUsage = 9;
float memoryUsage = 10;
int64 memoryTotalSize = 11;
float load = 12;
repeated DailyTrafficStat dailyTrafficStats = 31;
repeated HourlyTrafficStat hourlyTrafficStats = 32;
repeated DomainStat topDomainStats = 33;
repeated NodeValue cpuNodeValues = 34;
repeated NodeValue memoryNodeValues = 35;
repeated NodeValue loadNodeValues = 36;
repeated NodeValue cacheDirsValues = 38;
repeated MetricDataChart metricDataCharts = 37;
message DailyTrafficStat {
string day = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message HourlyTrafficStat {
string hour = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message DomainStat {
int64 serverId = 1;
string domain = 2;
int64 countRequests = 3;
int64 bytes = 4;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
}
// 组合服务看板数据
message ComposeServerStatBoardRequest {
int64 serverId = 1;
}
message ComposeServerStatBoardResponse {
repeated DailyTrafficStat dailyTrafficStats = 30;
repeated HourlyTrafficStat hourlyTrafficStats = 31;
repeated NodeStat topNodeStats = 32;
repeated DomainStat topDomainStats = 33;
repeated MetricDataChart metricDataCharts = 34;
message DailyTrafficStat {
string day = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message HourlyTrafficStat {
string hour = 1;
int64 bytes = 2;
int64 cachedBytes = 3;
int64 countRequests = 4;
int64 countCachedRequests = 5;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message NodeStat {
int64 nodeId = 1;
string nodeName = 2;
int64 countRequests = 3;
int64 bytes = 4;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
message DomainStat {
int64 serverId = 1;
string domain = 2;
int64 countRequests = 3;
int64 bytes = 4;
int64 countAttackRequests = 6;
int64 attackBytes = 7;
}
}
// 矩阵数据
message MetricDataChart {
MetricChart metricChart = 1;
repeated MetricStat metricStats = 2;
}

View File

@@ -0,0 +1,40 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/rpc_messages.proto";
import "models/model_server_stat_board_chart.proto";
// 统计看板条目
service ServerStatBoardChartService {
// 添加图表
rpc enableServerStatBoardChart (EnableServerStatBoardChartRequest) returns (RPCSuccess);
// 取消图表
rpc disableServerStatBoardChart (DisableServerStatBoardChartRequest) returns (RPCSuccess);
// 读取看板中的图表
rpc findAllEnabledServerStatBoardCharts (FindAllEnabledServerStatBoardChartsRequest) returns (FindAllEnabledServerStatBoardChartsResponse);
}
// 添加图表
message EnableServerStatBoardChartRequest {
int64 serverStatBoardId = 1;
int64 metricChartId = 2;
}
// 取消图表
message DisableServerStatBoardChartRequest {
int64 serverStatBoardId = 1;
int64 metricChartId = 2;
}
// 读取看板中的图表
message FindAllEnabledServerStatBoardChartsRequest {
int64 serverStatBoardId = 1;
}
message FindAllEnabledServerStatBoardChartsResponse {
repeated ServerStatBoardChart serverStatBoardCharts = 1;
}

View File

@@ -6,6 +6,7 @@ package pb;
import "models/rpc_messages.proto";
import "models/model_user.proto";
import "models/model_user_feature.proto";
import "models/model_node_value.proto";
// 用户相关服务
service UserService {
@@ -53,6 +54,9 @@ service UserService {
// 获取所有的功能定义
rpc findAllUserFeatureDefinitions (FindAllUserFeatureDefinitionsRequest) returns (FindAllUserFeatureDefinitionsResponse);
// 组合全局的看板数据
rpc composeUserGlobalBoard (ComposeUserGlobalBoardRequest) returns (ComposeUserGlobalBoardResponse);
}
// 创建用户
@@ -202,4 +206,35 @@ message FindAllUserFeatureDefinitionsRequest {
message FindAllUserFeatureDefinitionsResponse {
repeated UserFeature features = 1;
}
// 组合看板数据
message ComposeUserGlobalBoardRequest {
}
message ComposeUserGlobalBoardResponse {
int64 totalUsers = 1;
int64 countTodayUsers = 2;
int64 countWeeklyUsers = 3;
int64 countUserNodes = 4;
int64 countOfflineUserNodes = 5;
repeated DailyStat dailyStats = 30;
repeated NodeValue cpuNodeValues = 31;
repeated NodeValue memoryNodeValues = 32;
repeated NodeValue loadNodeValues = 33;
repeated TrafficStat topTrafficStats = 34;
message DailyStat {
string day = 1;
int64 count = 2;
}
message TrafficStat {
int64 userId = 1;
string userName = 2;
int64 countRequests = 3;
int64 bytes = 4;
}
}

View File

@@ -1,4 +1,5 @@
package firewallconfigs
type HTTPFirewallAllowAction struct {
Life int64 `yaml:"life" json:"life"`
}

View File

@@ -1,8 +1,9 @@
package firewallconfigs
// url client configure
// HTTPFirewallBlockAction url client configure
type HTTPFirewallBlockAction struct {
StatusCode int `yaml:"statusCode" json:"statusCode"`
Body string `yaml:"body" json:"body"` // supports HTML
URL string `yaml:"url" json:"url"`
Timeout int32 `yaml:"timeout" json:"timeout"`
}

View File

@@ -1,4 +1,6 @@
package firewallconfigs
type HTTPFirewallCaptchaAction struct {
Life int32 `yaml:"life" json:"life"`
Language string `yaml:"language" json:"language"` // 语言zh-CN, en-US ... TODO 需要实现目前是根据浏览器Accept-Language动态获取
}

View File

@@ -2,10 +2,19 @@ package firewallconfigs
import "reflect"
// action definition
type HTTPFirewallActionCategory = string
const (
HTTPFirewallActionCategoryBlock HTTPFirewallActionCategory = "block"
HTTPFirewallActionCategoryAllow HTTPFirewallActionCategory = "allow"
HTTPFirewallActionCategoryVerify HTTPFirewallActionCategory = "verify"
)
// HTTPFirewallActionDefinition action definition
type HTTPFirewallActionDefinition struct {
Name string
Code HTTPFirewallActionString
Description string
Type reflect.Type
Name string `json:"name"`
Code HTTPFirewallActionString `json:"code"`
Description string `json:"description"`
Type reflect.Type `json:"type"`
Category HTTPFirewallActionCategory `json:"category"`
}

View File

@@ -0,0 +1,7 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package firewallconfigs
type HTTPFirewallGet302Action struct {
Life int32 `yaml:"life" json:"life"`
}

View File

@@ -0,0 +1,6 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package firewallconfigs
type HTTPFirewallNotifyAction struct {
}

View File

@@ -0,0 +1,7 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package firewallconfigs
type HTTPFirewallPost307Action struct {
Life int32 `yaml:"life" json:"life"`
}

View File

@@ -0,0 +1,10 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package firewallconfigs
type HTTPFirewallRecordIPAction struct {
Type string `yaml:"type" json:"type"`
IPListId int64 `yaml:"ipListId" json:"ipListId"`
Level string `yaml:"level" json:"level"`
Timeout int32 `yaml:"timeout" json:"timeout"`
}

View File

@@ -0,0 +1,7 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package firewallconfigs
type HTTPFirewallTagAction struct {
Tags []string `yaml:"tags" json:"tags"`
}

View File

@@ -1,12 +0,0 @@
package firewallconfigs
type HTTPFirewallActionString = string
const (
HTTPFirewallActionLog = "log" // allow and log
HTTPFirewallActionBlock = "block" // block
HTTPFirewallActionCaptcha = "captcha" // block and show captcha
HTTPFirewallActionAllow = "allow" // allow
HTTPFirewallActionGoGroup = "go_group" // go to next rule group
HTTPFirewallActionGoSet = "go_set" // go to next rule set
)

View File

@@ -0,0 +1,17 @@
package firewallconfigs
type HTTPFirewallActionString = string
const (
HTTPFirewallActionLog HTTPFirewallActionString = "log" // allow and log
HTTPFirewallActionBlock HTTPFirewallActionString = "block" // block
HTTPFirewallActionCaptcha HTTPFirewallActionString = "captcha" // block and show captcha
HTTPFirewallActionNotify HTTPFirewallActionString = "notify" // 告警
HTTPFirewallActionGet302 HTTPFirewallActionString = "get_302" // 针对GET的302重定向认证
HTTPFirewallActionPost307 HTTPFirewallActionString = "post_307" // 针对POST的307重定向认证
HTTPFirewallActionRecordIP HTTPFirewallActionString = "record_ip" // 记录IP
HTTPFirewallActionTag HTTPFirewallActionString = "tag" // 标签
HTTPFirewallActionAllow HTTPFirewallActionString = "allow" // allow
HTTPFirewallActionGoGroup HTTPFirewallActionString = "go_group" // go to next rule group
HTTPFirewallActionGoSet HTTPFirewallActionString = "go_set" // go to next rule set
)

View File

@@ -6,38 +6,78 @@ import (
var AllActions = []*HTTPFirewallActionDefinition{
{
Name: "阻止",
Code: HTTPFirewallActionBlock,
Name: "阻止",
Code: HTTPFirewallActionBlock,
Description: "阻止请求并中断当前连接。",
Category: HTTPFirewallActionCategoryBlock,
},
{
Name: "允许通过",
Code: HTTPFirewallActionAllow,
Name: "允许通过",
Code: HTTPFirewallActionAllow,
Description: "允许正常通过,不记录到日志。",
Category: HTTPFirewallActionCategoryAllow,
},
{
Name: "允许并记录日志",
Code: HTTPFirewallActionLog,
Name: "允许并记录日志",
Code: HTTPFirewallActionLog,
Description: "允许正常通过并记录到日志。",
Category: HTTPFirewallActionCategoryAllow,
},
{
Name: "Captcha验证码",
Code: HTTPFirewallActionCaptcha,
Name: "Captcha验证码",
Code: HTTPFirewallActionCaptcha,
Description: "在浏览器使用验证码来验证客户端。",
Category: HTTPFirewallActionCategoryVerify,
},
{
Name: "跳到下一个规则分组",
Code: HTTPFirewallActionGoGroup,
Type: reflect.TypeOf(new(HTTPFirewallGoGroupAction)).Elem(),
Name: "告警",
Code: HTTPFirewallActionNotify,
Description: "向集群的消息接收人发送消息通知(企业版)。",
Category: HTTPFirewallActionCategoryVerify,
},
{
Name: "跳到下一个规则集",
Code: HTTPFirewallActionGoSet,
Type: reflect.TypeOf(new(HTTPFirewallGoSetAction)).Elem(),
Name: "GET 302",
Code: HTTPFirewallActionGet302,
Description: "通过302重定向GET请求验证客户端真实性。",
Category: HTTPFirewallActionCategoryVerify,
},
{
Name: "POST 307",
Code: HTTPFirewallActionPost307,
Description: "通过307重定向POST请求验证客户端真实性。",
Category: HTTPFirewallActionCategoryVerify,
},
{
Name: "记录IP",
Code: HTTPFirewallActionRecordIP,
Description: "将此IP记录到某个IP名单中。",
Category: HTTPFirewallActionCategoryBlock,
},
{
Name: "标签",
Code: HTTPFirewallActionTag,
Description: "为匹配的请求打上标签。",
Category: HTTPFirewallActionCategoryAllow,
},
{
Name: "跳到下一个规则分组",
Code: HTTPFirewallActionGoGroup,
Type: reflect.TypeOf(new(HTTPFirewallGoGroupAction)).Elem(),
Category: HTTPFirewallActionCategoryVerify,
},
{
Name: "跳到下一个规则集",
Code: HTTPFirewallActionGoSet,
Type: reflect.TypeOf(new(HTTPFirewallGoSetAction)).Elem(),
Category: HTTPFirewallActionCategoryVerify,
},
}
func FindActionName(action HTTPFirewallActionString) string {
func FindActionDefinition(actionCode HTTPFirewallActionString) *HTTPFirewallActionDefinition {
for _, def := range AllActions {
if def.Code == action {
return def.Name
if def.Code == actionCode {
return def
}
}
return ""
return nil
}

View File

@@ -5,7 +5,7 @@ import (
"regexp"
)
// all check points list
// AllCheckpoints all check points list
var AllCheckpoints = []*HTTPFirewallCheckpointDefinition{
{
Name: "通用请求Header长度限制",
@@ -24,7 +24,7 @@ var AllCheckpoints = []*HTTPFirewallCheckpointDefinition{
{
Name: "客户端地址IP",
Prefix: "remoteAddr",
Description: "试图通过分析X-Forwarded-For等Header获取的客户端地址比如192.168.1.100",
Description: "试图通过分析X-Forwarded-For等Header获取的客户端地址比如192.168.1.100,存在伪造的可能",
IsRequest: true,
},
{
@@ -186,8 +186,16 @@ var AllCheckpoints = []*HTTPFirewallCheckpointDefinition{
},
{
Name: "CC统计",
Prefix: "cc2",
Description: "对统计对象进行统计",
HasParams: false,
IsRequest: true,
IsComposed: true,
},
{
Name: "CC统计",
Prefix: "cc",
Description: "统计某段时间段内的请求信息",
Description: "统计某段时间段内的请求信息请使用新的CC统计代替",
HasParams: true,
Params: []*KeyValue{
NewKeyValue("请求数", "requests"),

View File

@@ -1,6 +1,8 @@
package firewallconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/ipconfigs"
import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/ipconfigs"
)
// HTTPFirewallInboundConfig HTTP防火墙入口配置
type HTTPFirewallInboundConfig struct {
@@ -52,7 +54,7 @@ func (this *HTTPFirewallInboundConfig) Init() error {
if this.DenyListRef != nil {
this.allDenyListRefs = append(this.allDenyListRefs, this.DenyListRef)
}
if len(this.PublicAllowListRefs) > 0 {
if len(this.PublicDenyListRefs) > 0 {
this.allDenyListRefs = append(this.allDenyListRefs, this.PublicDenyListRefs...)
}

View File

@@ -2,7 +2,7 @@ package firewallconfigs
import "encoding/json"
// 防火墙策略
// HTTPFirewallPolicy 防火墙策略
type HTTPFirewallPolicy struct {
Id int64 `yaml:"id" json:"id"`
IsOn bool `yaml:"isOn" json:"isOn"`
@@ -11,9 +11,10 @@ type HTTPFirewallPolicy struct {
Inbound *HTTPFirewallInboundConfig `yaml:"inbound" json:"inbound"`
Outbound *HTTPFirewallOutboundConfig `yaml:"outbound" json:"outbound"`
BlockOptions *HTTPFirewallBlockAction `yaml:"blockOptions" json:"blockOptions"`
}
// 初始化
// Init 初始化
func (this *HTTPFirewallPolicy) Init() error {
if this.Inbound != nil {
err := this.Inbound.Init()
@@ -31,7 +32,7 @@ func (this *HTTPFirewallPolicy) Init() error {
return nil
}
// 获取所有分组
// AllRuleGroups 获取所有分组
func (this *HTTPFirewallPolicy) AllRuleGroups() []*HTTPFirewallRuleGroup {
result := []*HTTPFirewallRuleGroup{}
if this.Inbound != nil {
@@ -43,7 +44,7 @@ func (this *HTTPFirewallPolicy) AllRuleGroups() []*HTTPFirewallRuleGroup {
return result
}
// 根据代号查找分组
// FindRuleGroupWithCode 根据代号查找分组
func (this *HTTPFirewallPolicy) FindRuleGroupWithCode(code string) *HTTPFirewallRuleGroup {
for _, g := range this.AllRuleGroups() {
if g.Code == code {
@@ -53,7 +54,7 @@ func (this *HTTPFirewallPolicy) FindRuleGroupWithCode(code string) *HTTPFirewall
return nil
}
// 根据ID查找分组
// FindRuleGroup 根据ID查找分组
func (this *HTTPFirewallPolicy) FindRuleGroup(groupId int64) *HTTPFirewallRuleGroup {
for _, g := range this.AllRuleGroups() {
if g.Id == groupId {
@@ -63,7 +64,7 @@ func (this *HTTPFirewallPolicy) FindRuleGroup(groupId int64) *HTTPFirewallRuleGr
return nil
}
// 删除某个分组
// RemoveRuleGroup 删除某个分组
func (this *HTTPFirewallPolicy) RemoveRuleGroup(groupId int64) {
if this.Inbound != nil {
this.Inbound.RemoveRuleGroup(groupId)
@@ -73,7 +74,7 @@ func (this *HTTPFirewallPolicy) RemoveRuleGroup(groupId int64) {
}
}
// Inbound JSON
// InboundJSON Inbound JSON
func (this *HTTPFirewallPolicy) InboundJSON() ([]byte, error) {
if this.Inbound == nil {
return []byte("null"), nil
@@ -86,7 +87,7 @@ func (this *HTTPFirewallPolicy) InboundJSON() ([]byte, error) {
return json.Marshal(this.Inbound)
}
// Outbound JSON
// OutboundJSON Outbound JSON
func (this *HTTPFirewallPolicy) OutboundJSON() ([]byte, error) {
if this.Inbound == nil {
return []byte("null"), nil

View File

@@ -2,21 +2,30 @@ package firewallconfigs
import "github.com/iwind/TeaGo/maps"
// 规则集定义
type HTTPFirewallRuleSet struct {
Id int64 `yaml:"id" json:"id"`
IsOn bool `yaml:"isOn" json:"isOn"`
Name string `yaml:"name" json:"name"`
Code string `yaml:"code" json:"code"`
Description string `yaml:"description" json:"description"`
Connector string `yaml:"connector" json:"connector"`
RuleRefs []*HTTPFirewallRuleRef `yaml:"ruleRefs" json:"ruleRefs"`
Rules []*HTTPFirewallRule `yaml:"rules" json:"rules"`
Action string `yaml:"action" json:"action"`
ActionOptions maps.Map `yaml:"actionOptions" json:"actionOptions"`
// HTTPFirewallActionConfig 单个动作配置
type HTTPFirewallActionConfig struct {
Code HTTPFirewallActionString `yaml:"code" json:"code"`
Options maps.Map `yaml:"options" json:"options"`
}
// 初始化
// HTTPFirewallRuleSet 规则集定义
type HTTPFirewallRuleSet struct {
Id int64 `yaml:"id" json:"id"`
IsOn bool `yaml:"isOn" json:"isOn"`
Name string `yaml:"name" json:"name"`
Code string `yaml:"code" json:"code"`
Description string `yaml:"description" json:"description"`
Connector string `yaml:"connector" json:"connector"`
RuleRefs []*HTTPFirewallRuleRef `yaml:"ruleRefs" json:"ruleRefs"`
Rules []*HTTPFirewallRule `yaml:"rules" json:"rules"`
Actions []*HTTPFirewallActionConfig `yaml:"actions" json:"actions"`
//Action string `yaml:"action" json:"action"` // deprecated, v0.2.5
//ActionOptions maps.Map `yaml:"actionOptions" json:"actionOptions"` // deprecated, v0.2.5
}
// Init 初始化
func (this *HTTPFirewallRuleSet) Init() error {
for _, rule := range this.Rules {
err := rule.Init()
@@ -24,10 +33,11 @@ func (this *HTTPFirewallRuleSet) Init() error {
return err
}
}
return nil
}
// 添加规则
// AddRule 添加规则
func (this *HTTPFirewallRuleSet) AddRule(rule *HTTPFirewallRule) {
this.Rules = append(this.Rules, rule)
}

View File

@@ -27,7 +27,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "Javascript事件"
set.Code = "1001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestURI}",
@@ -44,7 +48,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "Javascript函数"
set.Code = "1002"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestURI}",
@@ -61,7 +69,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "HTML标签"
set.Code = "1003"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestURI}",
@@ -89,7 +101,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "上传文件扩展名"
set.Code = "2001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestUpload.ext}",
@@ -117,7 +133,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "Web Shell"
set.Code = "3001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestAll}",
@@ -144,7 +164,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "命令注入"
set.Code = "4001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestURI}",
@@ -179,7 +203,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "路径穿越"
set.Code = "5001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestURI}",
@@ -207,7 +235,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "特殊目录"
set.Code = "6001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${requestPath}",
@@ -235,7 +267,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "Union SQL Injection"
set.Code = "7001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
@@ -254,7 +290,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "SQL注释"
set.Code = "7002"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
@@ -273,7 +313,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "SQL条件"
set.Code = "7003"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
@@ -313,7 +357,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "SQL函数"
set.Code = "7004"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
@@ -332,7 +380,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "SQL附加语句"
set.Code = "7005"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
@@ -362,7 +414,11 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Name = "常见网络爬虫"
set.Code = "20001"
set.Connector = HTTPFirewallRuleConnectorOr
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
@@ -378,13 +434,13 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
policy.Inbound.Groups = append(policy.Inbound.Groups, group)
}
// cc
// cc2
{
group := &HTTPFirewallRuleGroup{}
group.IsOn = true
group.Name = "CC攻击"
group.Description = "Challenge Collapsar防止短时间大量请求涌入请谨慎开启和设置"
group.Code = "cc"
group.Code = "cc2"
{
set := &HTTPFirewallRuleSet{}
@@ -393,14 +449,20 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy {
set.Description = "限制单IP在一定时间内的请求数"
set.Code = "8001"
set.Connector = HTTPFirewallRuleConnectorAnd
set.Action = HTTPFirewallActionBlock
set.Actions = []*HTTPFirewallActionConfig{
{
Code: HTTPFirewallActionBlock,
},
}
set.AddRule(&HTTPFirewallRule{
IsOn: true,
Param: "${cc.requests}",
Param: "${cc2}",
Operator: HTTPFirewallRuleOperatorGt,
Value: "1000",
CheckpointOptions: map[string]interface{}{
"period": "60",
"keys": []string{"${remoteAddr}", "${requestPath}"},
"period": "60",
"threshold": 1000,
},
IsCaseInsensitive: false,
})

View File

@@ -0,0 +1,59 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package serverconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
type MetricChartType = string
const (
MetricChartTypePie MetricChartType = "pie"
MetricChartTypeBar MetricChartType = "bar"
MetricChartTypeTimeBar MetricChartType = "timeBar"
MetricChartTypeTimeLine MetricChartType = "timeLine"
MetricChartTypeTable MetricChartType = "table"
)
func FindAllMetricChartTypes() []*shared.Definition {
return []*shared.Definition{
{
Name: "柱图",
Code: MetricChartTypeBar,
Description: "通过柱图展示各个对象的排行。",
Icon: "chart bar",
},
{
Name: "饼图",
Code: MetricChartTypePie,
Description: "通过饼图展示各个对象的占比。",
Icon: "chart pie",
},
{
Name: "时间柱图",
Code: MetricChartTypeTimeBar,
Description: "通过柱图展示各个对象在不同时间段的变化。",
Icon: "chart bar",
},
{
Name: "时间线图",
Code: MetricChartTypeTimeLine,
Description: "通过线图展示各个对象在不同时间段的变化。",
Icon: "chart line area",
},
{
Name: "表格",
Code: MetricChartTypeTable,
Description: "以表格的形式展示数据。",
Icon: "table",
},
}
}
func FindMetricChartTypeName(chartType MetricChartType) string {
for _, def := range FindAllMetricChartTypes() {
if def.Code == chartType {
return def.Name
}
}
return ""
}

View File

@@ -3,29 +3,9 @@
package serverconfigs
import (
"github.com/cespare/xxhash/v2"
"github.com/iwind/TeaGo/types"
"strconv"
)
// MetricItemCategory 指标分类
type MetricItemCategory = string
const (
MetricItemCategoryHTTP MetricItemCategory = "http"
MetricItemCategoryTCP MetricItemCategory = "tcp"
MetricItemCategoryUDP MetricItemCategory = "udp"
)
// MetricItemPeriodUnit 指标周期单位
type MetricItemPeriodUnit = string
const (
MetricItemPeriodUnitMinute MetricItemPeriodUnit = "minute"
MetricItemPeriodUnitHour MetricItemPeriodUnit = "hour"
MetricItemPeriodUnitDay MetricItemPeriodUnit = "day"
MetricItemPeriodUnitWeek MetricItemPeriodUnit = "week"
MetricItemPeriodUnitMonth MetricItemPeriodUnit = "month"
"github.com/iwind/TeaGo/Tea"
timeutil "github.com/iwind/TeaGo/utils/time"
"time"
)
// MetricItemConfig 指标配置
@@ -33,32 +13,168 @@ type MetricItemConfig struct {
Id int64 `yaml:"id" json:"id"`
IsOn bool `yaml:"isOn" json:"isOn"`
Category MetricItemCategory `yaml:"category" json:"category"`
Period int `yaml:"period" json:"period"`
Period int `yaml:"period" json:"period"` // 单个周期
PeriodUnit MetricItemPeriodUnit `yaml:"periodUnit" json:"periodUnit"`
Keys []string `yaml:"keys" json:"keys"`
Value string `yaml:"value" json:"value"`
Version int32 `yaml:"version" json:"version"`
sumType string // 统计类型
sumType string // 统计类型
baseTime time.Time // 基准时间
hasHTTPConnectionValue bool // 是否有统计HTTP连接数的数值
}
// Init 初始化
func (this *MetricItemConfig) Init() error {
// 所有时间以 2020-01-01日 为基准
this.baseTime = time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local)
if this.Period <= 0 {
this.Period = 1
}
if len(this.PeriodUnit) == 0 {
this.PeriodUnit = MetricItemPeriodUnitDay
}
this.hasHTTPConnectionValue = this.Category == MetricItemCategoryHTTP && this.Value == "${countConnection}"
return nil
}
// ParseRequest 处理请求
func (this *MetricItemConfig) ParseRequest(format func(string) string) (key string, hash string, value float64) {
for _, k := range this.Keys {
key += "@" + format(k)
}
hash = strconv.FormatUint(xxhash.Sum64String(key), 10)
// CurrentTime 根据周期计算时间
func (this *MetricItemConfig) CurrentTime() string {
var t string
// TODO value将来支持复杂运算比如 ${request.traffic.bytes} * 8
if len(this.Value) == 0 {
value = 1
} else {
value = types.Float64(format(this.Value))
switch this.PeriodUnit {
case MetricItemPeriodUnitMonth:
if this.Period > 1 {
var now = time.Now()
var months = (now.Year()-this.baseTime.Year())*12 + int(now.Month())
var delta = months % this.Period
if delta == 0 {
t = timeutil.Format("Ym")
} else {
t = timeutil.Format("Ym", now.AddDate(0, -delta, 0))
}
} else {
t = timeutil.Format("Ym")
}
case MetricItemPeriodUnitWeek:
if this.Period > 1 {
var now = time.Now()
var weeks = int((now.Unix() - this.baseTime.Unix()) / (86400 * 7))
var delta = weeks % this.Period
if delta == 0 {
t = timeutil.Format("YW")
} else {
t = timeutil.FormatTime("YW", now.Unix()-int64(delta*7*86400))
}
} else {
t = timeutil.Format("YW")
}
case MetricItemPeriodUnitDay:
if this.Period > 1 {
var now = time.Now()
var days = int((now.Unix() - this.baseTime.Unix()) / 86400)
var delta = days % this.Period
if delta == 0 {
t = timeutil.Format("Ymd")
} else {
t = timeutil.FormatTime("Ymd", now.Unix()-int64(delta*86400))
}
} else {
t = timeutil.Format("Ymd")
}
case MetricItemPeriodUnitHour:
if this.Period > 1 {
var now = time.Now()
var hours = int((now.Unix() - this.baseTime.Unix()) / 3600)
var delta = hours % this.Period
if delta == 0 {
t = timeutil.Format("YmdH")
} else {
t = timeutil.FormatTime("YmdH", now.Unix()-int64(delta*3600))
}
} else {
t = timeutil.Format("YmdH")
}
case MetricItemPeriodUnitMinute:
if this.Period > 1 {
var now = time.Now()
var minutes = int((now.Unix() - this.baseTime.Unix()) / 60)
var delta = minutes % this.Period
if delta == 0 {
t = timeutil.Format("YmdHi")
} else {
t = timeutil.FormatTime("YmdHi", now.Unix()-int64(delta*60))
}
} else {
t = timeutil.Format("YmdHi")
}
default:
return ""
}
return
return t
}
// ServerExpiresTime 根据周期计算服务器端数据过期时间
func (this *MetricItemConfig) ServerExpiresTime() string {
switch this.PeriodUnit {
case MetricItemPeriodUnitMonth:
return timeutil.Format("Ym", time.Now().AddDate(0, -(this.Period*4), 0))
case MetricItemPeriodUnitWeek:
return timeutil.FormatTime("YW", time.Now().Unix()-86400*7*int64(this.Period*5))
case MetricItemPeriodUnitDay:
return timeutil.FormatTime("Ymd", time.Now().Unix()-86400*int64(this.Period*32))
case MetricItemPeriodUnitHour:
return timeutil.FormatTime("YmdH", time.Now().Unix()-3600*int64(this.Period*25))
case MetricItemPeriodUnitMinute:
return timeutil.FormatTime("YmdHi", time.Now().Unix()-60*int64(this.Period*60))
default:
return ""
}
}
// LocalExpiresTime 根据周期计算本地端过期时间
func (this *MetricItemConfig) LocalExpiresTime() string {
switch this.PeriodUnit {
case MetricItemPeriodUnitMonth:
return timeutil.Format("Ym", time.Now().AddDate(0, -(this.Period+1), 0))
case MetricItemPeriodUnitWeek:
return timeutil.FormatTime("YW", time.Now().Unix()-86400*7*int64(this.Period+1))
case MetricItemPeriodUnitDay:
return timeutil.FormatTime("Ymd", time.Now().Unix()-86400*int64(this.Period+1))
case MetricItemPeriodUnitHour:
return timeutil.FormatTime("YmdH", time.Now().Unix()-3600*int64(this.Period+1))
case MetricItemPeriodUnitMinute:
return timeutil.FormatTime("YmdHi", time.Now().Unix()-60*int64(this.Period+60))
default:
return ""
}
}
// UploadDuration 上传数据的周期
func (this *MetricItemConfig) UploadDuration() time.Duration {
if Tea.IsTesting() {
return 5 * time.Second
}
switch this.PeriodUnit {
case MetricItemPeriodUnitMonth:
return 10 * time.Minute
case MetricItemPeriodUnitWeek:
return 10 * time.Minute
case MetricItemPeriodUnitDay:
return 10 * time.Minute
case MetricItemPeriodUnitHour:
return 5 * time.Minute
case MetricItemPeriodUnitMinute:
return time.Duration(this.Period) * time.Minute
default:
return 10 * time.Minute
}
}
func (this *MetricItemConfig) HasHTTPConnectionValue() bool {
return this.hasHTTPConnectionValue
}

View File

@@ -2,38 +2,59 @@
package serverconfigs
import (
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
"testing"
)
import "testing"
func TestMetricItemConfig_ProcessRequest(t *testing.T) {
var metric = &MetricItemConfig{
Keys: []string{"${remoteAddr}", "${status}", "${requestPath}"},
Value: "${trafficIn}",
func TestMetricItemConfig_CurrentTime_Month(t *testing.T) {
for _, period := range []int{1, 2, 3, 4, 5, 100} {
var item = &MetricItemConfig{
Period: period,
PeriodUnit: MetricItemPeriodUnitMonth,
}
_ = item.Init()
t.Logf(item.CurrentTime())
}
key, hash, value := metric.ParseRequest(func(s string) string {
return configutils.ParseVariables(s, func(varName string) (value string) {
switch varName {
case "trafficIn":
return "1000"
}
return "[" + varName + "]"
})
})
t.Log("key:", key, "hash:", hash)
t.Logf("value: %f", value)
}
func BenchmarkMetricItemConfig_ProcessRequest(b *testing.B) {
var metric = &MetricItemConfig{
Keys: []string{"${remoteAddr}", "${status}"},
}
for i := 0; i < b.N; i++ {
metric.ParseRequest(func(s string) string {
return configutils.ParseVariables(s, func(varName string) (value string) {
return "[" + varName + "]"
})
})
func TestMetricItemConfig_CurrentTime_Week(t *testing.T) {
for _, period := range []int{1, 2, 3, 4, 5} {
var item = &MetricItemConfig{
Period: period,
PeriodUnit: MetricItemPeriodUnitWeek,
}
_ = item.Init()
t.Log(period, ":", item.CurrentTime())
}
}
func TestMetricItemConfig_CurrentTime_Day(t *testing.T) {
for _, period := range []int{1, 2, 3, 4, 5, 13} {
var item = &MetricItemConfig{
Period: period,
PeriodUnit: MetricItemPeriodUnitDay,
}
_ = item.Init()
t.Log(period, ":", item.CurrentTime())
}
}
func TestMetricItemConfig_CurrentTime_Hour(t *testing.T) {
for _, period := range []int{1, 2, 3, 4, 5, 13} {
var item = &MetricItemConfig{
Period: period,
PeriodUnit: MetricItemPeriodUnitHour,
}
_ = item.Init()
t.Log(period, ":", item.CurrentTime())
}
}
func TestMetricItemConfig_CurrentTime_Minute(t *testing.T) {
for _, period := range []int{1, 2, 3, 4, 5, 13} {
var item = &MetricItemConfig{
Period: period,
PeriodUnit: MetricItemPeriodUnitMinute,
}
_ = item.Init()
t.Log(period, ":", item.CurrentTime())
}
}

View File

@@ -0,0 +1,276 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package serverconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
// MetricItemCategory 指标分类
type MetricItemCategory = string
const (
MetricItemCategoryHTTP MetricItemCategory = "http"
MetricItemCategoryTCP MetricItemCategory = "tcp"
MetricItemCategoryUDP MetricItemCategory = "udp"
)
// MetricItemPeriodUnit 指标周期单位
type MetricItemPeriodUnit = string
const (
MetricItemPeriodUnitMinute MetricItemPeriodUnit = "minute"
MetricItemPeriodUnitHour MetricItemPeriodUnit = "hour"
MetricItemPeriodUnitDay MetricItemPeriodUnit = "day"
MetricItemPeriodUnitWeek MetricItemPeriodUnit = "week"
MetricItemPeriodUnitMonth MetricItemPeriodUnit = "month"
)
// MetricItemValueType 值类型
type MetricItemValueType = string
const (
MetricItemValueTypeCount MetricItemValueType = "count" // 数量
MetricItemValueTypeByte MetricItemValueType = "byte" // 字节
)
// FindAllMetricKeyDefinitions 指标对象定义
func FindAllMetricKeyDefinitions(category MetricItemCategory) []*shared.Definition {
switch category {
case MetricItemCategoryHTTP:
return []*shared.Definition{
{
Name: "客户端地址IP",
Code: "${remoteAddr}",
Description: "会依次根据X-Forwarded-For、X-Real-IP、RemoteAddr获取适用于前端可能有别的反向代理的情形存在被伪造的可能",
},
{
Name: "直接客户端地址IP",
Code: "${rawRemoteAddr}",
Description: "返回直接连接服务的客户端原始IP地址",
},
{
Name: "客户端用户名",
Code: "${remoteUser}",
Description: "通过基本认证填入的用户名",
},
{
Name: "请求URI",
Code: "${requestURI}",
Description: "包含参数,比如/hello?name=lily",
},
{
Name: "请求路径",
Code: "${requestPath}",
Description: "不包含参数,比如/hello",
},
{
Name: "完整URL",
Code: "${requestURL}",
Description: "比如https://example.com/hello?name=lily",
},
{
Name: "请求方法",
Code: "${requestMethod}",
Description: "比如GET、POST等",
},
{
Name: "请求协议",
Code: "${scheme}",
Description: "http或https",
},
{
Name: "文件扩展名",
Code: "${requestPathExtension}",
Description: "请求路径中的文件扩展名,包括点符号,比如.html、.png",
},
{
Name: "主机名",
Code: "${host}",
Description: "通常是请求的域名",
},
{
Name: "请求协议",
Code: "${proto}",
Description: "http或https",
},
{
Name: "HTTP协议",
Code: "${proto}",
Description: "包含版本的HTTP请求协议类似于HTTP/1.0",
},
{
Name: "URL参数值",
Code: "${arg.NAME}",
Description: "单个URL参数值",
},
{
Name: "Header值",
Code: "${header.NAME}",
Description: "单个Header值比如${header.User-Agent}",
},
{
Name: "Cookie值",
Code: "${cookie.NAME}",
Description: "单个cookie值比如${cookie.sid}",
},
// ========= 以下是响应 =========
{
Name: "状态码",
Code: "${status}",
},
{
Name: "响应的Content-Type值",
Code: "${response.contentType}",
},
}
case MetricItemCategoryTCP:
// TODO
return []*shared.Definition{}
case MetricItemCategoryUDP:
// TODO
return []*shared.Definition{}
}
return []*shared.Definition{}
}
// MetricValueDefinition 指标数值定义
type MetricValueDefinition struct {
Name string `json:"name"`
Code string `json:"code"`
Description string `json:"description"`
Icon string `json:"icon"`
Type string `json:"type"`
}
// FindAllMetricValueDefinitions 指标数值定义
func FindAllMetricValueDefinitions(category MetricItemCategory) []*MetricValueDefinition {
switch category {
case MetricItemCategoryHTTP:
return []*MetricValueDefinition{
{
Name: "请求数",
Code: "${countRequest}",
Type: MetricItemValueTypeCount,
},
{
Name: "连接数",
Code: "${countConnection}",
Type: MetricItemValueTypeCount,
},
{
Name: "下行流量",
Code: "${countTrafficOut}",
Type: MetricItemValueTypeByte,
},
{
Name: "上行流量",
Code: "${countTrafficIn}",
Type: MetricItemValueTypeByte,
},
}
case MetricItemCategoryTCP:
return []*MetricValueDefinition{
{
Name: "连接数",
Code: "${countConnection}",
Type: MetricItemValueTypeCount,
},
{
Name: "下行流量",
Code: "${countTrafficOut}",
Type: MetricItemValueTypeByte,
},
{
Name: "上行流量",
Code: "${countTrafficIn}",
Type: MetricItemValueTypeByte,
},
}
case MetricItemCategoryUDP:
return []*MetricValueDefinition{
{
Name: "连接数",
Code: "${countConnection}",
Type: MetricItemValueTypeCount,
},
{
Name: "下行流量",
Code: "${countTrafficOut}",
Type: MetricItemValueTypeByte,
},
{
Name: "上行流量",
Code: "${countTrafficIn}",
Type: MetricItemValueTypeByte,
},
}
}
return []*MetricValueDefinition{}
}
func FindMetricValueName(category MetricItemCategory, code string) string {
for _, def := range FindAllMetricValueDefinitions(category) {
if def.Code == code {
return def.Name
}
}
return code
}
func FindMetricValueType(category MetricItemCategory, code string) string {
for _, def := range FindAllMetricValueDefinitions(category) {
if def.Code == code {
return def.Type
}
}
return MetricItemValueTypeCount
}
// HumanMetricTime 格式化时间,让时间更易读
func HumanMetricTime(periodUnit MetricItemPeriodUnit, time string) string {
switch periodUnit {
case MetricItemPeriodUnitMonth:
if len(time) != 6 {
return time
}
return time[:4] + "-" + time[4:]
case MetricItemPeriodUnitWeek:
if len(time) != 6 {
return time
}
return time[:4] + "-" + time[4:]
case MetricItemPeriodUnitDay:
if len(time) != 8 {
return time
}
return time[:4] + "-" + time[4:6] + "-" + time[6:]
case MetricItemPeriodUnitHour:
if len(time) != 10 {
return time
}
return time[:4] + "-" + time[4:6] + "-" + time[6:8] + " " + time[8:]
case MetricItemPeriodUnitMinute:
if len(time) != 12 {
return time
}
return time[:4] + "-" + time[4:6] + "-" + time[6:8] + " " + time[8:10] + ":" + time[10:]
}
return time
}
func FindMetricPeriodUnitName(unit string) string {
switch unit {
case MetricItemPeriodUnitMonth:
return "月"
case MetricItemPeriodUnitWeek:
return "周"
case MetricItemPeriodUnitDay:
return "天"
case MetricItemPeriodUnitHour:
return "小时"
case MetricItemPeriodUnitMinute:
return "分钟"
}
return ""
}

View File

@@ -11,7 +11,7 @@ import (
var regexpSinglePort = regexp.MustCompile(`^\d+$`)
// 网络地址配置
// NetworkAddressConfig 网络地址配置
type NetworkAddressConfig struct {
Protocol Protocol `yaml:"protocol" json:"protocol"` // 协议http、tcp、tcp4、tcp6、unix、udp等
Host string `yaml:"host" json:"host"` // 主机地址或主机名,支持变量
@@ -23,7 +23,7 @@ type NetworkAddressConfig struct {
hostHasVariables bool
}
// 初始化
// Init 初始化
func (this *NetworkAddressConfig) Init() error {
this.hostHasVariables = configutils.HasVariables(this.Host)
@@ -63,7 +63,7 @@ func (this *NetworkAddressConfig) Init() error {
return nil
}
// 所有的地址列表不包括scheme
// Addresses 所有的地址列表不包括scheme
func (this *NetworkAddressConfig) Addresses() []string {
if this.Protocol == ProtocolUnix {
return []string{this.Host}
@@ -72,12 +72,12 @@ func (this *NetworkAddressConfig) Addresses() []string {
result := []string{}
for i := this.minPort; i <= this.maxPort; i++ {
host := this.Host
result = append(result, host+":"+strconv.Itoa(i))
result = append(result, configutils.QuoteIP(host)+":"+strconv.Itoa(i))
}
return result
}
// 所有的地址列表包含scheme
// FullAddresses 所有的地址列表包含scheme
func (this *NetworkAddressConfig) FullAddresses() []string {
if this.Protocol == ProtocolUnix {
return []string{this.Protocol.String() + ":" + this.Host}
@@ -86,20 +86,20 @@ func (this *NetworkAddressConfig) FullAddresses() []string {
result := []string{}
for i := this.minPort; i <= this.maxPort; i++ {
host := this.Host
result = append(result, this.Protocol.String()+"://"+host+":"+strconv.Itoa(i))
result = append(result, this.Protocol.String()+"://"+configutils.QuoteIP(host)+":"+strconv.Itoa(i))
}
return result
}
// 选择其中一个地址
// PickAddress 选择其中一个地址
func (this *NetworkAddressConfig) PickAddress() string {
if this.maxPort > this.minPort {
return this.Host + ":" + strconv.Itoa(rands.Int(this.minPort, this.maxPort))
return configutils.QuoteIP(this.Host) + ":" + strconv.Itoa(rands.Int(this.minPort, this.maxPort))
}
return this.Host + ":" + strconv.Itoa(this.minPort)
return configutils.QuoteIP(this.Host) + ":" + strconv.Itoa(this.minPort)
}
// 判断Host是否包含变量
// HostHasVariables 判断Host是否包含变量
func (this *NetworkAddressConfig) HostHasVariables() bool {
return this.hostHasVariables
}

View File

@@ -54,6 +54,20 @@ func TestNetworkAddressConfig_FullAddresses(t *testing.T) {
}
t.Log(addr.FullAddresses())
}
{
addr := &NetworkAddressConfig{
Protocol: "http",
Host: "::1",
PortRange: "8080-8070",
}
err := addr.Init()
if err != nil {
t.Fatal(err)
}
t.Log(addr.FullAddresses())
}
}
func TestNetworkAddressConfig_PickAddress(t *testing.T) {

View File

@@ -1,12 +1,12 @@
package serverconfigs
// 协议基础数据结构
// BaseProtocol 协议基础数据结构
type BaseProtocol struct {
IsOn bool `yaml:"isOn" json:"isOn"` // 是否开启
Listen []*NetworkAddressConfig `yaml:"listen" json:"listen"` // 绑定的网络地址
}
// 初始化
// InitBase 初始化
func (this *BaseProtocol) InitBase() error {
for _, addr := range this.Listen {
err := addr.Init()
@@ -17,7 +17,7 @@ func (this *BaseProtocol) InitBase() error {
return nil
}
// 获取完整的地址列表
// FullAddresses 获取完整的地址列表
func (this *BaseProtocol) FullAddresses() []string {
result := []string{}
for _, addr := range this.Listen {
@@ -26,7 +26,7 @@ func (this *BaseProtocol) FullAddresses() []string {
return result
}
// 添加地址
// AddListen 添加地址
func (this *BaseProtocol) AddListen(addr ...*NetworkAddressConfig) {
this.Listen = append(this.Listen, addr...)
}

View File

@@ -34,7 +34,7 @@ type ServerConfig struct {
isOk bool
}
// 从JSON中解析Server配置
// NewServerConfigFromJSON 从JSON中解析Server配置
func NewServerConfigFromJSON(data []byte) (*ServerConfig, error) {
config := &ServerConfig{}
err := json.Unmarshal(data, config)
@@ -114,7 +114,7 @@ func (this *ServerConfig) Init() error {
return nil
}
// 配置是否正确
// IsOk 配置是否正确
func (this *ServerConfig) IsOk() bool {
return this.isOk
}
@@ -186,7 +186,7 @@ func (this *ServerConfig) IsUDPFamily() bool {
return this.UDP != nil
}
// 判断是否和域名匹配
// MatchName 判断是否和域名匹配
func (this *ServerConfig) MatchName(name string) bool {
if len(name) == 0 {
return false
@@ -202,7 +202,7 @@ func (this *ServerConfig) MatchName(name string) bool {
return false
}
// 判断是否严格匹配
// MatchNameStrictly 判断是否严格匹配
func (this *ServerConfig) MatchNameStrictly(name string) bool {
for _, serverName := range this.AliasServerNames {
if serverName == name {
@@ -217,7 +217,7 @@ func (this *ServerConfig) MatchNameStrictly(name string) bool {
return false
}
// SSL信息
// SSLPolicy SSL信息
func (this *ServerConfig) SSLPolicy() *sslconfigs.SSLPolicy {
if this.HTTPS != nil {
return this.HTTPS.SSLPolicy
@@ -228,7 +228,7 @@ func (this *ServerConfig) SSLPolicy() *sslconfigs.SSLPolicy {
return nil
}
// 根据条件查找ReverseProxy
// FindAndCheckReverseProxy 根据条件查找ReverseProxy
func (this *ServerConfig) FindAndCheckReverseProxy(dataType string) (*ReverseProxyConfig, error) {
switch dataType {
case "server":

View File

@@ -0,0 +1,11 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package shared
// Definition 数据定义
type Definition struct {
Name string `json:"name"`
Code string `json:"code"`
Description string `json:"description"`
Icon string `json:"icon"`
}

View File

@@ -9,7 +9,7 @@ import (
"strings"
)
// IP Range类型
// IPRangeType IP Range类型
type IPRangeType = int
const (
@@ -19,7 +19,7 @@ const (
IPRangeTypeWildcard IPRangeType = 4 // 通配符,可以使用*
)
// IP Range
// IPRangeConfig IP Range
type IPRangeConfig struct {
Id string `yaml:"id" json:"id"`
@@ -36,14 +36,14 @@ type IPRangeConfig struct {
reg *regexp.Regexp
}
// 获取新对象
// NewIPRangeConfig 获取新对象
func NewIPRangeConfig() *IPRangeConfig {
return &IPRangeConfig{
Id: stringutil.Rand(16),
}
}
// 从字符串中分析
// ParseIPRange 从字符串中分析
func ParseIPRange(s string) (*IPRangeConfig, error) {
if len(s) == 0 {
return nil, errors.New("invalid ip range")
@@ -79,15 +79,15 @@ func ParseIPRange(s string) (*IPRangeConfig, error) {
ipRange.IPTo = s
}
err := ipRange.Validate()
err := ipRange.Init()
if err != nil {
return nil, err
}
return ipRange, nil
}
// 校验
func (this *IPRangeConfig) Validate() error {
// Init 初始化校验
func (this *IPRangeConfig) Init() error {
if this.Type == IPRangeTypeCIDR {
if len(this.CIDR) == 0 {
return errors.New("cidr should not be empty")
@@ -116,10 +116,10 @@ func (this *IPRangeConfig) Validate() error {
return nil
}
// 是否包含某个IP
// Contains 是否包含某个IP
func (this *IPRangeConfig) Contains(ipString string) bool {
ip := net.ParseIP(ipString)
if ip.To4() == nil {
if ip == nil {
return false
}
if this.Type == IPRangeTypeCIDR {

View File

@@ -9,32 +9,52 @@ func TestGeoConfig_Contains(t *testing.T) {
a := assert.NewAssertion(t)
{
geo := NewIPRangeConfig()
geo.Type = IPRangeTypeRange
geo.IPFrom = "192.168.1.100"
geo.IPTo = "192.168.1.110"
a.IsNil(geo.Validate())
a.IsTrue(geo.Contains("192.168.1.100"))
a.IsTrue(geo.Contains("192.168.1.101"))
a.IsTrue(geo.Contains("192.168.1.110"))
a.IsFalse(geo.Contains("192.168.1.111"))
r := NewIPRangeConfig()
r.Type = IPRangeTypeRange
r.IPFrom = "192.168.1.100"
r.IPTo = "192.168.1.110"
a.IsNil(r.Init())
a.IsTrue(r.Contains("192.168.1.100"))
a.IsTrue(r.Contains("192.168.1.101"))
a.IsTrue(r.Contains("192.168.1.110"))
a.IsFalse(r.Contains("192.168.1.111"))
}
{
geo := NewIPRangeConfig()
geo.Type = IPRangeTypeCIDR
geo.CIDR = "192.168.1.1/24"
a.IsNil(geo.Validate())
a.IsTrue(geo.Contains("192.168.1.100"))
a.IsFalse(geo.Contains("192.168.2.100"))
r := NewIPRangeConfig()
r.Type = IPRangeTypeCIDR
r.CIDR = "192.168.1.1/24"
a.IsNil(r.Init())
a.IsTrue(r.Contains("192.168.1.100"))
a.IsFalse(r.Contains("192.168.2.100"))
}
{
geo := NewIPRangeConfig()
geo.Type = IPRangeTypeCIDR
geo.CIDR = "192.168.1.1/16"
a.IsNil(geo.Validate())
a.IsTrue(geo.Contains("192.168.2.100"))
r := NewIPRangeConfig()
r.Type = IPRangeTypeCIDR
r.CIDR = "192.168.1.1/16"
a.IsNil(r.Init())
a.IsTrue(r.Contains("192.168.2.100"))
}
{
r := NewIPRangeConfig()
r.Type = IPRangeTypeRange
r.IPFrom = "::1"
r.IPTo = "::1"
a.IsNil(r.Init())
a.IsTrue(r.Contains("::1"))
}
{
r := NewIPRangeConfig()
r.Type = IPRangeTypeRange
r.IPFrom = "::1"
r.IPTo = "::100"
a.IsNil(r.Init())
a.IsTrue(r.Contains("::1"))
a.IsTrue(r.Contains("::99"))
a.IsFalse(r.Contains("::101"))
}
}

View File

@@ -8,12 +8,13 @@ import "github.com/iwind/TeaGo/maps"
func DefaultRequestVariables() []maps.Map {
return []maps.Map{
{"code": "${edgeVersion}", "name": "边缘节点版本", "description": ""},
{"code": "${remoteAddr}", "name": "客户端地址IP", "description": "会依次根据X-Forwarded-For、X-Real-IP、RemoteAddr获取"},
{"code": "${rawRemoteAddr}", "name": "客户端地址IP", "description": "返回直接连接服务的客户端原始IP地址从v0.1.3版本加入"},
{"code": "${remoteAddr}", "name": "客户端地址IP", "description": "会依次根据X-Forwarded-For、X-Real-IP、RemoteAddr获取,适合前端有别的反向代理服务时使用,存在伪造的风险"},
{"code": "${rawRemoteAddr}", "name": "客户端地址IP", "description": "返回直接连接服务的客户端原始IP地址"},
{"code": "${remotePort}", "name": "客户端端口", "description": ""},
{"code": "${remoteUser}", "name": "客户端用户名", "description": ""},
{"code": "${requestURI}", "name": "请求URI", "description": ""},
{"code": "${requestPath}", "name": "请求路径(不包括参数)", "description": ""},
{"code": "${requestURI}", "name": "请求URI", "description": "比如/hello?name=lily"},
{"code": "${requestPath}", "name": "请求路径(不包括参数)", "description": "比如/hello"},
{"code": "${requestURL}", "name": "完整的请求URL", "description": "比如https://example.com/hello?name=lily"},
{"code": "${requestLength}", "name": "请求内容长度", "description": ""},
{"code": "${requestMethod}", "name": "请求方法", "description": "比如GET、POST"},
{"code": "${requestFilename}", "name": "请求文件路径", "description": ""},