Compare commits

..

21 Commits

Author SHA1 Message Date
刘祥超
f0dc9e0577 增加修改节点停用/启用状态API 2024-01-21 17:43:28 +08:00
刘祥超
1cf38864de 查询集群列表API增加ID排序 2024-01-21 16:57:22 +08:00
刘祥超
5f9e7e981c 部分部分API文档 2024-01-21 14:40:07 +08:00
刘祥超
7073467128 WAF允许ALLOW动作增加有效范围 2024-01-20 21:26:21 +08:00
刘祥超
adc4b945e7 WAF策略增加显示页面动作默认设置 2024-01-20 16:18:49 +08:00
刘祥超
12f6a1e3ce 默认不支持${serverAddr}变量 2024-01-20 10:04:51 +08:00
刘祥超
4f89360902 优化HLS相关API角色 2024-01-20 10:03:51 +08:00
刘祥超
d422dc6b85 WAF操作符增加“包含SQL注入-严格模式” 2024-01-16 20:42:13 +08:00
刘祥超
0dc678e38a 配置代码增加多媒体 2024-01-14 21:10:52 +08:00
刘祥超
05de67318b 网站设置增加HLS加密功能(商业版本) 2024-01-14 20:32:30 +08:00
刘祥超
575e916088 套餐增加文件最大上传尺寸设置 2024-01-13 19:32:41 +08:00
刘祥超
489795dba0 字符编码设置增加“强制替换”选项 2024-01-13 16:28:45 +08:00
刘祥超
3e8fc126b8 5秒盾增加匹配条件 2024-01-12 17:13:34 +08:00
刘祥超
64c3d76fb2 添加快捷添加和删除网站源站API 2024-01-12 11:48:47 +08:00
刘祥超
3bd3ef5f78 套餐API增加查找套餐基本信息API 2024-01-11 18:41:17 +08:00
刘祥超
827eeeb506 实现批量删除网站功能 2024-01-11 18:41:04 +08:00
刘祥超
36cf357984 变量表达式支持修饰符 2024-01-11 16:41:08 +08:00
刘祥超
46140bbdb5 套餐可以设置带宽限制 2024-01-11 15:22:37 +08:00
刘祥超
6a671f67bc 增加用户系统门户页、文章相关管理 2024-01-09 10:20:29 +08:00
刘祥超
ea991f5a97 TLS选项中取出SSL3.0(golang已经不再支持) 2024-01-06 20:47:48 +08:00
刘祥超
5bcbf29fc6 WAF操作符增加“包含XSS注入-严格模式” 2024-01-04 14:52:47 +08:00
67 changed files with 9195 additions and 3680 deletions

View File

@@ -3575,6 +3575,30 @@
],
"isDeprecated": false
},
{
"name": "updateHTTPWebHLS",
"requestMessageName": "UpdateHTTPWebHLSRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc updateHTTPWebHLS(UpdateHTTPWebHLSRequest) returns (RPCSuccess);",
"doc": "修改HLS设置",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "findHTTPWebHLS",
"requestMessageName": "FindHTTPWebHLSRequest",
"responseMessageName": "FindHTTPWebHLSResponse",
"code": "rpc findHTTPWebHLS(FindHTTPWebHLSRequest) returns (FindHTTPWebHLSResponse);",
"doc": "查找HLS设置",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "findServerIdWithHTTPWebId",
"requestMessageName": "FindServerIdWithHTTPWebIdRequest",
@@ -3789,7 +3813,10 @@
"responseMessageName": "ListAllIPItemIdsResponse",
"code": "rpc listAllIPItemIds(ListAllIPItemIdsRequest) returns (ListAllIPItemIdsResponse);",
"doc": "列出所有名单中的IP ID",
"roles": [],
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
@@ -5729,6 +5756,17 @@
"node"
],
"isDeprecated": false
},
{
"name": "updateNodeIsOn",
"requestMessageName": "UpdateNodeIsOnRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc updateNodeIsOn(UpdateNodeIsOnRequest) returns (RPCSuccess);",
"doc": "修改节点的启用状态",
"roles": [
"admin"
],
"isDeprecated": false
}
],
"filename": "service_node.proto",
@@ -9504,6 +9542,18 @@
],
"isDeprecated": false
},
{
"name": "findBasicPlan",
"requestMessageName": "FindBasicPlanRequest",
"responseMessageName": "FindBasicPlanResponse",
"code": "rpc findBasicPlan(FindBasicPlanRequest) returns (FindBasicPlanResponse);",
"doc": "查找套餐基本信息",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "countAllEnabledPlans",
"requestMessageName": "CountAllEnabledPlansRequest",
@@ -9538,6 +9588,17 @@
],
"isDeprecated": false
},
{
"name": "findAllAvailableBasicPlans",
"requestMessageName": "FindAllAvailableBasicPlansRequest",
"responseMessageName": "FindAllAvailableBasicPlansResponse",
"code": "rpc findAllAvailableBasicPlans(FindAllAvailableBasicPlansRequest) returns (FindAllAvailableBasicPlansResponse);",
"doc": "列出所有可用的套餐的基本信息",
"roles": [
"node"
],
"isDeprecated": false
},
{
"name": "sortPlans",
"requestMessageName": "SortPlansRequest",
@@ -9553,6 +9614,174 @@
"filename": "service_plan.proto",
"doc": "套餐相关服务"
},
{
"name": "PostService",
"methods": [
{
"name": "createPost",
"requestMessageName": "CreatePostRequest",
"responseMessageName": "CreatePostResponse",
"code": "rpc createPost(CreatePostRequest) returns (CreatePostResponse);",
"doc": "创建文章",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "updatePost",
"requestMessageName": "UpdatePostRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc updatePost(UpdatePostRequest) returns (RPCSuccess);",
"doc": "修改文章",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "deletePost",
"requestMessageName": "DeletePostRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc deletePost(DeletePostRequest) returns (RPCSuccess);",
"doc": "删除文章",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "publishPost",
"requestMessageName": "PublishPostRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc publishPost(PublishPostRequest) returns (RPCSuccess);",
"doc": "发布文章",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "countPosts",
"requestMessageName": "CountPostsRequest",
"responseMessageName": "RPCCountResponse",
"code": "rpc countPosts(CountPostsRequest) returns (RPCCountResponse);",
"doc": "计算文章数量",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "listPosts",
"requestMessageName": "ListPostsRequest",
"responseMessageName": "ListPostsResponse",
"code": "rpc listPosts(ListPostsRequest) returns (ListPostsResponse);",
"doc": "列出单页文章",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "findPost",
"requestMessageName": "FindPostRequest",
"responseMessageName": "FindPostResponse",
"code": "rpc findPost(FindPostRequest) returns (FindPostResponse);",
"doc": "查询单篇文章",
"roles": [
"admin",
"user"
],
"isDeprecated": false
}
],
"filename": "service_post.proto",
"doc": "文章管理服务"
},
{
"name": "PostCategoryService",
"methods": [
{
"name": "createPostCategory",
"requestMessageName": "CreatePostCategoryRequest",
"responseMessageName": "CreatePostCategoryResponse",
"code": "rpc createPostCategory(CreatePostCategoryRequest) returns (CreatePostCategoryResponse);",
"doc": "创建分类",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "updatePostCategory",
"requestMessageName": "UpdatePostCategoryRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc updatePostCategory(UpdatePostCategoryRequest) returns (RPCSuccess);",
"doc": "修改分类",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "deletePostCategory",
"requestMessageName": "DeletePostCategoryRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc deletePostCategory(DeletePostCategoryRequest) returns (RPCSuccess);",
"doc": "删除分类",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "findAllPostCategories",
"requestMessageName": "FindAllPostCategoriesRequest",
"responseMessageName": "FindAllPostCategoriesResponse",
"code": "rpc findAllPostCategories(FindAllPostCategoriesRequest) returns (FindAllPostCategoriesResponse);",
"doc": "列出所有分类",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "findAllAvailablePostCategories",
"requestMessageName": "FindAllAvailablePostCategoriesRequest",
"responseMessageName": "FindAllAvailablePostCategoriesResponse",
"code": "rpc findAllAvailablePostCategories(FindAllAvailablePostCategoriesRequest) returns (FindAllAvailablePostCategoriesResponse);",
"doc": "列出所有可用分类",
"roles": [],
"isDeprecated": false
},
{
"name": "findPostCategory",
"requestMessageName": "FindPostCategoryRequest",
"responseMessageName": "FindPostCategoryResponse",
"code": "rpc findPostCategory(FindPostCategoryRequest) returns (FindPostCategoryResponse);",
"doc": "查询单个分类",
"roles": [
"admin"
],
"isDeprecated": false
},
{
"name": "sortPostCategories",
"requestMessageName": "SortPostCategoriesRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc sortPostCategories(SortPostCategoriesRequest) returns (RPCSuccess);",
"doc": "对分类进行排序",
"roles": [
"admin"
],
"isDeprecated": false
}
],
"filename": "service_post_category.proto",
"doc": "文章分类管理服务"
},
{
"name": "PriceService",
"methods": [
@@ -10336,6 +10565,30 @@
],
"isDeprecated": false
},
{
"name": "addServerOrigin",
"requestMessageName": "AddServerOriginRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc addServerOrigin(AddServerOriginRequest) returns (RPCSuccess);",
"doc": "为网站添加源站",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "deleteServerOrigin",
"requestMessageName": "DeleteServerOriginRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc deleteServerOrigin(DeleteServerOriginRequest) returns (RPCSuccess);",
"doc": "从网站中删除某个源站",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "updateServerBasic",
"requestMessageName": "UpdateServerBasicRequest",
@@ -10574,7 +10827,19 @@
"requestMessageName": "DeleteServerRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc deleteServer (DeleteServerRequest) returns (RPCSuccess);",
"doc": "禁用某网站",
"doc": "删除某网站",
"roles": [
"admin",
"user"
],
"isDeprecated": false
},
{
"name": "deleteServers",
"requestMessageName": "DeleteServersRequest",
"responseMessageName": "RPCSuccess",
"code": "rpc deleteServers(DeleteServersRequest) returns (RPCSuccess);",
"doc": "删除一组网站",
"roles": [
"admin",
"user"
@@ -13804,6 +14069,11 @@
"code": "message AddHTTPFirewallRuleGroupSetRequest {\n\tint64 firewallRuleGroupId = 1;\n\tbytes firewallRuleSetConfigJSON = 2;\n}",
"doc": "添加规则集"
},
{
"name": "AddServerOriginRequest",
"code": "message AddServerOriginRequest {\n\tint64 serverId = 1; // 网站ID\n\tint64 originId = 2; // 源站ID通过 OriginService 创建和查询\n\tbool isPrimary = 3; // 是否为主要源站\n}",
"doc": "为网站添加源站"
},
{
"name": "Admin",
"code": "message Admin {\n\tint64 id = 1; // ID\n\tstring fullname = 2; // 全称\n\tstring username = 3; // 用户名\n\tbool isOn = 4; // 是否启用\n\tbool isSuper = 5; // 是否为超级用户\n\tint64 createdAt = 6; // 创建时间\n\trepeated AdminModule Modules = 7; // 有权限的模块\n\tLogin otpLogin = 8; // OTP认证\n\tbool canLogin = 9; // 是否可以登录\n\tbool hasWeakPassword = 10; // 是否设置了弱密码,只有超级管理员能看到此项\n}",
@@ -14789,6 +15059,11 @@
"code": "message CountNodeLogsRequest {\n\tint64 nodeClusterId = 11;\n\tint64 nodeId = 1;\n\tstring role = 2;\n\tstring dayFrom = 3;\n\tstring dayTo = 4;\n\tstring keyword = 5;\n\tstring level = 6;\n\tint64 serverId = 7;\n\tint64 originId = 8;\n\tbool isUnread = 9;\n\tstring tag = 10;\n\tint32 fixedState = 12;\n\tbool allServers = 13; // 是否获取所有服务相关的日志\n}",
"doc": "查询日志数量"
},
{
"name": "CountPostsRequest",
"code": "message CountPostsRequest {\n\tint64 postCategoryId = 1; // 分类ID\n\tstring productCode = 2; // 产品代号\n\tbool publishedOnly = 3; // 只列出已发布的\n}",
"doc": "计算文章数量"
},
{
"name": "CountSSLCertRequest",
"code": "message CountSSLCertRequest {\n\tbool isCA = 1; // 可选项是否为CA证书\n\tbool isAvailable = 2; // 可选项,是否可用(在有效期内)\n\tbool isExpired = 3; // 可选项,是否已过期\n\tint32 expiringDays = 4; // 可选项,离过期日的天数\n\tstring keyword = 5; // 可选项,关键词\n\tint64 userId = 6; // 可选项用户ID不填则表示读取管理员上传的证书\n\trepeated string domains = 7; // 可选项,搜索使用的域名列表\n\tbool userOnly = 8; // 可选项,只列出用户上传的证书\n}",
@@ -15581,12 +15856,12 @@
},
{
"name": "CreateNodeRequest",
"code": "message CreateNodeRequest {\n\tstring name = 1;\n\tint64 nodeClusterId = 2;\n\tNodeLogin nodeLogin = 3;\n\tint64 nodeGroupId = 4;\n\tint64 dnsDomainId = 5 [deprecated = true];\n\trepeated string dnsRoutes = 6;\n\tint64 nodeRegionId = 7;\n}",
"code": "message CreateNodeRequest {\n\tstring name = 1; // 节点名称\n\tint64 nodeClusterId = 2; // 节点所属集群\n\tNodeLogin nodeLogin = 3; // 节点登录信息\n\tint64 nodeGroupId = 4; // 节点所属分组\n\tint64 dnsDomainId = 5 [deprecated = true]; // 节点域名ID此参数已过期请不要再使用\n\trepeated string dnsRoutes = 6; // 节点DNS线路列表\n\tint64 nodeRegionId = 7; // 节点所属区域\n}",
"doc": "创建节点"
},
{
"name": "CreateNodeResponse",
"code": "message CreateNodeResponse {\n\tint64 nodeId = 1;\n}",
"code": "message CreateNodeResponse {\n\tint64 nodeId = 1; // 节点ID\n}",
"doc": ""
},
{
@@ -15636,7 +15911,7 @@
},
{
"name": "CreateOriginRequest",
"code": "message CreateOriginRequest {\n\tstring name = 1; // 名称,为可选项\n\tNetworkAddress addr = 2; // 源站网络地址\n\tbytes ossJSON = 15; // OSS配置信息源站网络地址中protocol为oss:开头时需要设置此项\n\tstring description = 3; // 描述,为可选项\n\tint32 weight = 4; // 权重不小于0一般设置为10\n\tbool isOn = 5; // 是否启用\n\tbytes connTimeoutJSON = 6; // 可选项,连接超时时间\n\tbytes readTimeoutJSON = 7; // 可选项,读取超时时间\n\tbytes idleTimeoutJSON = 8; // 可选项,空闲超时时间\n\tint32 maxConns = 9; // 可选项,最大连接数\n\tint32 maxIdleConns = 10; // 可选项,最大空闲连接数\n\trepeated string domains = 11; // 可选项,专属域名列表\n\tbytes certRefJSON = 12; // 可选项,证书设置\n\tstring host = 13; // 可选项,回源主机名\n\tbool followPort = 14; // 可选项,是否跟随端口\n\tbool http2Enabled = 16; // 可选项是否支持HTTP/2只在HTTPS源站时生效\n}",
"code": "message CreateOriginRequest {\n\tstring name = 1; // 名称,为可选项\n\tNetworkAddress addr = 2; // 源站网络地址\n\tbytes ossJSON = 15; // OSS配置信息源站网络地址中protocol为oss:开头时需要设置此项\n\tstring description = 3; // 描述,为可选项\n\tint32 weight = 4; // 权重不小于0一般设置为10\n\tbool isOn = 5; // 是否启用一般为true\n\tbytes connTimeoutJSON = 6; // 可选项,连接超时时间\n\tbytes readTimeoutJSON = 7; // 可选项,读取超时时间\n\tbytes idleTimeoutJSON = 8; // 可选项,空闲超时时间\n\tint32 maxConns = 9; // 可选项,最大连接数\n\tint32 maxIdleConns = 10; // 可选项,最大空闲连接数\n\trepeated string domains = 11; // 可选项,专属域名列表\n\tbytes certRefJSON = 12; // 可选项,证书设置\n\tstring host = 13; // 可选项,回源主机名\n\tbool followPort = 14; // 可选项,是否跟随端口\n\tbool http2Enabled = 16; // 可选项是否支持HTTP/2只在HTTPS源站时生效\n}",
"doc": "创建源站"
},
{
@@ -15646,7 +15921,7 @@
},
{
"name": "CreatePlanRequest",
"code": "message CreatePlanRequest {\n\tstring name = 1; // 套餐名称\n\tstring description = 19; // 套餐简介\n\tint64 clusterId = 2; // 集群ID\n\tbytes trafficLimitJSON = 3; // 流量限制\n\tbool hasFullFeatures = 18; // 是否有所有权限\n\tbytes featuresJSON = 4; // 权限列表,[code1, code2, ...]\n\tstring priceType = 5; // 价格类型traffic, bandwidth, period\n\tbytes trafficPriceJSON = 6; // 流量价格配置\n\tbytes bandwidthPriceJSON = 10; // 带宽价格配置\n\tfloat monthlyPrice = 7; // 月度价格\n\tfloat seasonallyPrice = 8; // 季度价格\n\tfloat yearlyPrice = 9; // 年度价格\n\tint32 totalServers = 11; // 可以添加的网站数\n\tint32 totalServerNamesPerServer = 12; // 每个网站可以添加的域名数\n\tint32 totalServerNames = 13; // 可以添加的域名总数\n\tint64 dailyRequests = 14; // 每日访问量额度\n\tint64 monthlyRequests = 15; // 每月访问量额度\n\tint64 dailyWebsocketConnections = 16; // 每日Websocket连接数额度\n\tint64 monthlyWebsocketConnections = 17; // 每月Websocket连接数额度\n}",
"code": "message CreatePlanRequest {\n\tstring name = 1; // 套餐名称\n\tstring description = 19; // 套餐简介\n\tint64 clusterId = 2; // 集群ID\n\tbytes trafficLimitJSON = 3; // 流量限制\n\tbytes bandwidthLimitPerNodeJSON = 20; // 单节点带宽限制 @link json:bit_size_capacity\n\tbool hasFullFeatures = 18; // 是否有所有权限\n\tbytes featuresJSON = 4; // 权限列表,[code1, code2, ...]\n\tstring priceType = 5; // 价格类型traffic, bandwidth, period\n\tbytes trafficPriceJSON = 6; // 流量价格配置\n\tbytes bandwidthPriceJSON = 10; // 带宽价格配置\n\tfloat monthlyPrice = 7; // 月度价格\n\tfloat seasonallyPrice = 8; // 季度价格\n\tfloat yearlyPrice = 9; // 年度价格\n\tint32 totalServers = 11; // 可以添加的网站数\n\tint32 totalServerNamesPerServer = 12; // 每个网站可以添加的域名数\n\tint32 totalServerNames = 13; // 可以添加的域名总数\n\tint64 dailyRequests = 14; // 每日访问量额度\n\tint64 monthlyRequests = 15; // 每月访问量额度\n\tint64 dailyWebsocketConnections = 16; // 每日Websocket连接数额度\n\tint64 monthlyWebsocketConnections = 17; // 每月Websocket连接数额度\n\tbytes maxUploadSizeJSON = 21; // 文件最大上传尺寸 @link json:size_capacity\n}",
"doc": "创建套餐"
},
{
@@ -15654,6 +15929,26 @@
"code": "message CreatePlanResponse {\n\tint64 planId = 1;\n}",
"doc": ""
},
{
"name": "CreatePostCategoryRequest",
"code": "message CreatePostCategoryRequest {\n\tstring name = 1; // 分类名称\n\tstring code = 2; // 分类代号\n}",
"doc": "创建分类"
},
{
"name": "CreatePostCategoryResponse",
"code": "message CreatePostCategoryResponse {\n\tint64 postCategoryId = 1; // 分类ID\n}",
"doc": ""
},
{
"name": "CreatePostRequest",
"code": "message CreatePostRequest {\n\tint64 postCategoryId = 1; // 文章分类ID\n\tstring type = 2; // 类型normal, url\n\tstring productCode = 3; // 产品代号\n\tstring subject = 4; // 标题\n\tstring url = 5; // 跳转的URLtype=url\n\tstring body = 6; // 文章内容type=normal\n}",
"doc": "创建文章"
},
{
"name": "CreatePostResponse",
"code": "message CreatePostResponse {\n\tint64 postId = 1; // 文章ID\n}",
"doc": ""
},
{
"name": "CreateReportNodeGroupRequest",
"code": "message CreateReportNodeGroupRequest {\n\tstring name = 1;\n}",
@@ -16249,6 +16544,16 @@
"code": "message DeletePlanRequest {\n\tint64 planId = 1; // 套餐ID\n}",
"doc": "删除套餐"
},
{
"name": "DeletePostCategoryRequest",
"code": "message DeletePostCategoryRequest {\n\tint64 postCategoryId = 1; // 分类ID\n}",
"doc": "删除分类"
},
{
"name": "DeletePostRequest",
"code": "message DeletePostRequest {\n\tint64 postId = 1; // 文章ID\n}",
"doc": "删除文章"
},
{
"name": "DeleteReportNodeGroupRequest",
"code": "message DeleteReportNodeGroupRequest {\n\tint64 reportNodeGroupId = 1;\n}",
@@ -16274,10 +16579,20 @@
"code": "message DeleteServerGroupRequest {\n\tint64 serverGroupId = 1;\n}",
"doc": "删除分组"
},
{
"name": "DeleteServerOriginRequest",
"code": "message DeleteServerOriginRequest {\n\tint64 serverId = 1; // 网站ID\n\tint64 originId = 2; // 源站ID通过 OriginService 创建和查询\n}",
"doc": "从网站中删除某个源站"
},
{
"name": "DeleteServerRequest",
"code": "message DeleteServerRequest {\n\tint64 serverId = 1; // 网站ID\n}",
"doc": "禁用网站"
"doc": "删除某网站"
},
{
"name": "DeleteServersRequest",
"code": "message DeleteServersRequest {\n\trepeated int64 serverIds = 1; // 网站ID列表[1, 2, ...]\n}",
"doc": "删除一组网站"
},
{
"name": "DeleteTrafficPackagePeriodRequest",
@@ -16749,6 +17064,16 @@
"code": "message FindAllAvailableADPackagePeriodsResponse {\n\trepeated ADPackagePeriod adPackagePeriods = 1;\n}",
"doc": ""
},
{
"name": "FindAllAvailableBasicPlansRequest",
"code": "message FindAllAvailableBasicPlansRequest {\n\n}",
"doc": "列出所有可用的套餐的基本信息"
},
{
"name": "FindAllAvailableBasicPlansResponse",
"code": "message FindAllAvailableBasicPlansResponse {\n\trepeated Plan plans = 1; // 套餐列表\n}",
"doc": ""
},
{
"name": "FindAllAvailableNSDomainGroupsRequest",
"code": "message FindAllAvailableNSDomainGroupsRequest {\n\tint64 userId = 1;\n}",
@@ -16799,6 +17124,16 @@
"code": "message FindAllAvailablePlansResponse {\n\trepeated Plan plans = 1; // 套餐列表\n}",
"doc": ""
},
{
"name": "FindAllAvailablePostCategoriesRequest",
"code": "message FindAllAvailablePostCategoriesRequest {\n\n}",
"doc": "列出所有可用分类"
},
{
"name": "FindAllAvailablePostCategoriesResponse",
"code": "message FindAllAvailablePostCategoriesResponse {\n\trepeated PostCategory postCategories = 1; // 分类列表\n}",
"doc": ""
},
{
"name": "FindAllAvailableTrafficPackagePeriodsRequest",
"code": "message FindAllAvailableTrafficPackagePeriodsRequest {\n\n}",
@@ -17524,6 +17859,16 @@
"code": "message FindAllNotInstalledNodesWithNodeClusterIdResponse {\n\trepeated Node nodes = 1;\n}",
"doc": ""
},
{
"name": "FindAllPostCategoriesRequest",
"code": "message FindAllPostCategoriesRequest {\n\n}",
"doc": "列出所有分类"
},
{
"name": "FindAllPostCategoriesResponse",
"code": "message FindAllPostCategoriesResponse {\n\trepeated PostCategory postCategories = 1; // 分类列表\n}",
"doc": ""
},
{
"name": "FindAllPublicRoutesRequest",
"code": "message FindAllPublicRoutesRequest {\n\n}",
@@ -17794,6 +18139,16 @@
"code": "message FindBasicDNSDomainResponse {\n\tDNSDomain dnsDomain = 1;\n}",
"doc": ""
},
{
"name": "FindBasicPlanRequest",
"code": "message FindBasicPlanRequest {\n\tint64 planId = 1; // 套餐ID\n}",
"doc": "查找套餐基本信息"
},
{
"name": "FindBasicPlanResponse",
"code": "message FindBasicPlanResponse {\n\tPlan plan = 1; // 套餐信息(只读取基本信息)\n}",
"doc": ""
},
{
"name": "FindCurrentAPINodeResponse",
"code": "message FindCurrentAPINodeResponse {\n\tAPINode apiNode = 1;\n}",
@@ -17941,12 +18296,12 @@
},
{
"name": "FindEnabledBasicNodeRequest",
"code": "message FindEnabledBasicNodeRequest {\n\tint64 nodeId = 1;\n}",
"code": "message FindEnabledBasicNodeRequest {\n\tint64 nodeId = 1; // 节点ID\n}",
"doc": "获取单个节点基本信息"
},
{
"name": "FindEnabledBasicNodeResponse",
"code": "message FindEnabledBasicNodeResponse {\n\tBasicNode node = 1;\n}",
"code": "message FindEnabledBasicNodeResponse {\n\tBasicNode node = 1; // 节点基本信息\n}",
"doc": ""
},
{
@@ -18431,12 +18786,12 @@
},
{
"name": "FindEnabledNodeRequest",
"code": "message FindEnabledNodeRequest {\n\tint64 nodeId = 1;\n}",
"code": "message FindEnabledNodeRequest {\n\tint64 nodeId = 1; // 节点ID\n}",
"doc": "获取单个节点信息"
},
{
"name": "FindEnabledNodeResponse",
"code": "message FindEnabledNodeResponse {\n\tNode node = 1;\n}",
"code": "message FindEnabledNodeResponse {\n\tNode node = 1; // 节点信息\n}",
"doc": ""
},
{
@@ -18481,22 +18836,22 @@
},
{
"name": "FindEnabledOriginConfigRequest",
"code": "message FindEnabledOriginConfigRequest {\n\tint64 originId = 1;\n}",
"code": "message FindEnabledOriginConfigRequest {\n\tint64 originId = 1; // 源站ID\n}",
"doc": "查找源站配置"
},
{
"name": "FindEnabledOriginConfigResponse",
"code": "message FindEnabledOriginConfigResponse {\n\tbytes originJSON = 1;\n}",
"code": "message FindEnabledOriginConfigResponse {\n\tbytes originJSON = 1; // 源站信息\n}",
"doc": ""
},
{
"name": "FindEnabledOriginRequest",
"code": "message FindEnabledOriginRequest {\n\tint64 originId = 1;\n}",
"code": "message FindEnabledOriginRequest {\n\tint64 originId = 1; // 源站ID\n}",
"doc": "查找单个源站信息"
},
{
"name": "FindEnabledOriginResponse",
"code": "message FindEnabledOriginResponse {\n\tOrigin Origin = 1;\n}",
"code": "message FindEnabledOriginResponse {\n\tOrigin Origin = 1; // 源站信息\n}",
"doc": ""
},
{
@@ -18666,7 +19021,7 @@
},
{
"name": "FindEnabledServerResponse",
"code": "message FindEnabledServerResponse {\n\tServer server = 1;\n}",
"code": "message FindEnabledServerResponse {\n\tServer server = 1; // 网站信息\n}",
"doc": ""
},
{
@@ -18859,6 +19214,16 @@
"code": "message FindHTTPWebCCResponse {\n\tbytes ccJSON = 1;\n}",
"doc": ""
},
{
"name": "FindHTTPWebHLSRequest",
"code": "message FindHTTPWebHLSRequest {\n\tint64 httpWebId = 1; // Web配置ID\n}",
"doc": "查找HLS设置"
},
{
"name": "FindHTTPWebHLSResponse",
"code": "message FindHTTPWebHLSResponse {\n\tbytes hlsJSON = 1; // HLS配置\n}",
"doc": ""
},
{
"name": "FindHTTPWebHostRedirectsRequest",
"code": "message FindHTTPWebHostRedirectsRequest {\n\tint64 httpWebId = 1;\n}",
@@ -19654,6 +20019,26 @@
"code": "message FindNotifyingNodeTasksResponse {\n\trepeated NodeTask nodeTasks = 1;\n}",
"doc": ""
},
{
"name": "FindPostCategoryRequest",
"code": "message FindPostCategoryRequest {\n\tint64 postCategoryId = 1; // 分类ID\n}",
"doc": "查询单个分类"
},
{
"name": "FindPostCategoryResponse",
"code": "message FindPostCategoryResponse {\n\tPostCategory postCategory = 1; // 分类信息\n}",
"doc": ""
},
{
"name": "FindPostRequest",
"code": "message FindPostRequest {\n\tint64 postId = 1; // 文章ID\n}",
"doc": "查询单篇文章"
},
{
"name": "FindPostResponse",
"code": "message FindPostResponse {\n\tPost post = 1; // 文章信息\n}",
"doc": ""
},
{
"name": "FindPublicIPLibraryArtifactRequest",
"code": "message FindPublicIPLibraryArtifactRequest {\n\n}",
@@ -20186,7 +20571,7 @@
},
{
"name": "HTTPFirewallPolicy",
"code": "message HTTPFirewallPolicy {\n\tint64 id = 1; // 策略ID\n\tstring name = 2; // 名称\n\tstring mode = 7; // 模式\n\tbool isOn = 3; // 是否启用\n\tstring description = 4; // 描述\n\tbytes inboundJSON = 5; // 入站配置\n\tbytes outboundJSON = 6; // 出站配置\n\tint64 serverId = 8; // 所属网站ID如果为0表示公共策略\n\tbool useLocalFirewall = 9; // 是否使用本机防火墙\n\tbytes synFloodJSON = 10; // synflood配置\n\tbytes blockOptionsJSON = 11; // 拦截配置\n\tbytes captchaOptionsJSON = 12; // 人机识别配置\n}",
"code": "message HTTPFirewallPolicy {\n\tint64 id = 1; // 策略ID\n\tstring name = 2; // 名称\n\tstring mode = 7; // 模式\n\tbool isOn = 3; // 是否启用\n\tstring description = 4; // 描述\n\tbytes inboundJSON = 5; // 入站配置\n\tbytes outboundJSON = 6; // 出站配置\n\tint64 serverId = 8; // 所属网站ID如果为0表示公共策略\n\tbool useLocalFirewall = 9; // 是否使用本机防火墙\n\tbytes synFloodJSON = 10; // synflood配置\n\tbytes blockOptionsJSON = 11; // 阻止动作配置\n\tbytes pageOptionsJSON = 13; // 显示网页动作配置\n\tbytes captchaOptionsJSON = 12; // 人机识别配置\n}",
"doc": "WAF策略"
},
{
@@ -20486,7 +20871,7 @@
},
{
"name": "ListEnabledNodeClustersRequest",
"code": "message ListEnabledNodeClustersRequest {\n\tint64 offset = 1;\n\tint64 size = 2;\n\tstring keyword = 3;\n}",
"code": "message ListEnabledNodeClustersRequest {\n\tint64 offset = 1;\n\tint64 size = 2;\n\tstring keyword = 3; // 可选项,搜索关键词\n\tbool idDesc = 4; // 可选项是否按照ID倒序排列\n\tbool idAsc = 5; // 可选项是否按照ID正序排列\n}",
"doc": "列出单页集群"
},
{
@@ -20859,6 +21244,16 @@
"code": "message ListNodeValuesResponse {\n\trepeated NodeValue nodeValues = 1;\n}",
"doc": ""
},
{
"name": "ListPostsRequest",
"code": "message ListPostsRequest {\n\tint64 offset = 1;\n\tint64 size = 2;\n\n\tstring productCode = 3; // 产品代号\n\tint64 postCategoryId = 4; // 分类ID\n\tstring postCategoryCode = 5; // 分类代号\n\tstring excludingPostCategoryCode = 6; // 排除的分类代号\n\tbool publishedOnly = 7; // 只列出已发布的\n\tbool containsBody = 8; // 是否包含文章内容\n}",
"doc": "列出单页文章"
},
{
"name": "ListPostsResponse",
"code": "message ListPostsResponse {\n\trepeated Post posts = 1; // 文章列表\n}",
"doc": ""
},
{
"name": "ListReportNodeTasksRequest",
"code": "message ListReportNodeTasksRequest {\n\tstring role = 1;\n\tint64 nodeClusterId = 2;\n\tstring type = 3;\n\tint64 offset = 4;\n\tint64 size = 5;\n}",
@@ -21391,9 +21786,24 @@
},
{
"name": "Plan",
"code": "message Plan {\n\tint64 id = 1; // 套餐ID\n\tbool isOn = 2; // 是否启用\n\tstring name = 3; // 套餐名称\n\tstring description = 21; // 套餐简介\n\tint64 clusterId = 4; // 集群ID\n\tbytes trafficLimitJSON = 5; // 流量限制\n\tbool hasFullFeatures = 20; // 是否有所有权限\n\tbytes featuresJSON = 6; // 权限列表,[code1, code2, ...]\n\tstring priceType = 7; // 价格类型traffic, bandwidth, period\n\tbytes trafficPriceJSON = 8; // 流量价格配置\n\tbytes bandwidthPriceJSON = 12; // 带宽价格配置\n\tdouble monthlyPrice = 9; // 月度价格\n\tdouble seasonallyPrice = 10; // 季度价格\n\tdouble yearlyPrice = 11; // 年度价格\n\tint32 totalServers = 13; // 可以添加的网站数\n\tint32 totalServerNamesPerServer = 14; // 每个网站可以添加的域名数\n\tint32 totalServerNames = 15; // 可以添加的域名总数\n\tint64 dailyRequests = 16; // 每日访问量额度\n\tint64 monthlyRequests = 17; // 每月访问量额度\n\tint64 dailyWebsocketConnections = 18; // 每日Websocket连接数额度\n\tint64 monthlyWebsocketConnections = 19; // 每月Websocket连接数额度\n}",
"code": "message Plan {\n\tint64 id = 1; // 套餐ID\n\tbool isOn = 2; // 是否启用\n\tstring name = 3; // 套餐名称\n\tstring description = 21; // 套餐简介\n\tint64 clusterId = 4; // 集群ID\n\tbytes trafficLimitJSON = 5; // 流量限制\n\tbytes bandwidthLimitPerNodeJSON = 22; // 单节点带宽限制\n\tbool hasFullFeatures = 20; // 是否有所有权限\n\tbytes featuresJSON = 6; // 权限列表,[code1, code2, ...]\n\tstring priceType = 7; // 价格类型traffic, bandwidth, period\n\tbytes trafficPriceJSON = 8; // 流量价格配置\n\tbytes bandwidthPriceJSON = 12; // 带宽价格配置\n\tdouble monthlyPrice = 9; // 月度价格\n\tdouble seasonallyPrice = 10; // 季度价格\n\tdouble yearlyPrice = 11; // 年度价格\n\tint32 totalServers = 13; // 可以添加的网站数\n\tint32 totalServerNamesPerServer = 14; // 每个网站可以添加的域名数\n\tint32 totalServerNames = 15; // 可以添加的域名总数\n\tint64 dailyRequests = 16; // 每日访问量额度\n\tint64 monthlyRequests = 17; // 每月访问量额度\n\tint64 dailyWebsocketConnections = 18; // 每日Websocket连接数额度\n\tint64 monthlyWebsocketConnections = 19; // 每月Websocket连接数额度\n\tbytes maxUploadSizeJSON = 23; // 文件最大上传尺寸 @link json:size_capacity\n}",
"doc": ""
},
{
"name": "Post",
"code": "message Post {\n\tint64 id = 1; // ID\n\tint64 postCategoryId = 2; // 分类ID\n\tstring productCode = 3; // 产品代号\n\tstring type = 4; // 类型normal, url\n\tstring subject = 5; // 标题\n\tstring url = 6; // URL\n\tstring body = 7; // 内容\n\tint64 createdAt = 8; // 创建时间\n\tbool isPublished = 9; // 是否已发布\n\tint64 publishedAt = 10; // 发布时间\n\n\tPostCategory postCategory = 30; // 分类信息\n}",
"doc": "文章"
},
{
"name": "PostCategory",
"code": "message PostCategory {\n\tint64 id = 1; // ID\n\tstring name = 2; // 名称\n\tstring code = 3; // 文章代号\n\tbool isOn = 4; // 是否启用\n}",
"doc": "文章分类"
},
{
"name": "PublishPostRequest",
"code": "message PublishPostRequest {\n\tint64 postId = 1; // 文章ID\n}",
"doc": "发布文章"
},
{
"name": "PublishScriptsRequest",
"code": "message PublishScriptsRequest {\n\tint64 userId = 1;\n}",
@@ -21719,6 +22129,11 @@
"code": "message SortPlansRequest {\n\trepeated int64 planIds = 1; // 排序后的套餐ID列表\n}",
"doc": "对套餐进行排序"
},
{
"name": "SortPostCategoriesRequest",
"code": "message SortPostCategoriesRequest {\n\trepeated int64 postCategoryIds = 1; // 分类ID列表\n}",
"doc": "对分类进行排序"
},
{
"name": "StartNSNodeRequest",
"code": "message StartNSNodeRequest {\n\tint64 nsNodeId = 1;\n}",
@@ -22071,7 +22486,7 @@
},
{
"name": "UpdateHTTPFirewallPolicyRequest",
"code": "message UpdateHTTPFirewallPolicyRequest {\n\tint64 httpFirewallPolicyId = 1;\n\tbool isOn = 2;\n\tstring name = 3;\n\tstring description = 4;\n\trepeated string firewallGroupCodes = 5;\n\tbytes blockOptionsJSON = 6;\n\tbytes captchaOptionsJSON = 11;\n\tstring mode = 7;\n\tbool useLocalFirewall = 8; // 是否使用本地防火墙\n\tbytes synFloodJSON = 9; // SYN Flood相关配置\n\tbytes LogJSON = 10; // 日志相关配置\n\tint64 maxRequestBodySize = 12; // 最大文件尺寸,单位为字节\n\tstring denyCountryHTML = 13; // 区域封禁提示\n\tstring denyProvinceHTML = 14; // 省份封禁提示\n}",
"code": "message UpdateHTTPFirewallPolicyRequest {\n\tint64 httpFirewallPolicyId = 1;\n\tbool isOn = 2;\n\tstring name = 3;\n\tstring description = 4;\n\trepeated string firewallGroupCodes = 5;\n\tbytes blockOptionsJSON = 6; // 阻止动作配置\n\tbytes pageOptionsJSON = 15; // 显示网页动作配置\n\tbytes captchaOptionsJSON = 11; // 验证码动作配置\n\tstring mode = 7;\n\tbool useLocalFirewall = 8; // 是否使用本地防火墙\n\tbytes synFloodJSON = 9; // SYN Flood相关配置\n\tbytes LogJSON = 10; // 日志相关配置\n\tint64 maxRequestBodySize = 12; // 最大文件尺寸,单位为字节\n\tstring denyCountryHTML = 13; // 区域封禁提示\n\tstring denyProvinceHTML = 14; // 省份封禁提示\n}",
"doc": "修改防火墙策略"
},
{
@@ -22204,6 +22619,11 @@
"code": "message UpdateHTTPWebFirewallRequest {\n\tint64 httpWebId = 1;\n\tbytes firewallJSON = 2; // @link json:http_firewall_ref\n}",
"doc": "更改防火墙设置"
},
{
"name": "UpdateHTTPWebHLSRequest",
"code": "message UpdateHTTPWebHLSRequest {\n\tint64 httpWebId = 1; // Web配置ID\n\tbytes hlsJSON = 2; // HLS配置\n}",
"doc": "修改HLS设置"
},
{
"name": "UpdateHTTPWebHostRedirectsRequest",
"code": "message UpdateHTTPWebHostRedirectsRequest {\n\tint64 httpWebId = 1;\n\tbytes hostRedirectsJSON = 2;\n}",
@@ -22709,6 +23129,11 @@
"code": "message UpdateNodeIsInstalledRequest {\n\tint64 nodeId = 1;\n\tbool isInstalled = 2;\n}",
"doc": "修改节点安装状态"
},
{
"name": "UpdateNodeIsOnRequest",
"code": "message UpdateNodeIsOnRequest {\n\tint64 nodeId = 1; // 节点ID\n\tbool isOn = 2; // 是否启用\n}",
"doc": "修改节点的启用状态"
},
{
"name": "UpdateNodeLoginRequest",
"code": "message UpdateNodeLoginRequest {\n\tint64 nodeId = 1;\n\tNodeLogin nodeLogin = 2;\n}",
@@ -22791,9 +23216,19 @@
},
{
"name": "UpdatePlanRequest",
"code": "message UpdatePlanRequest {\n\tint64 planId = 1; // 套餐ID\n\tstring name = 2; // 套餐名称\n\tstring description = 21; // 套餐简介\n\tbool isOn = 3; // 是否启用\n\tint64 clusterId = 4; // 集群ID\n\tbytes trafficLimitJSON = 5; // 流量限制\n\tbool hasFullFeatures = 20; // 是否有所有权限\n\tbytes featuresJSON = 6; // 权限列表,[code1, code2, ...]\n\tstring priceType = 7; // 价格类型traffic, bandwidth, period\n\tbytes trafficPriceJSON = 8; // 流量价格配置\n\tbytes bandwidthPriceJSON = 12; // 带宽价格配置\n\tfloat monthlyPrice = 9; // 月费用\n\tfloat seasonallyPrice = 10; // 季度费用\n\tfloat yearlyPrice = 11; // 年度费用\n\tint32 totalServers = 13; // 可以添加的网站数\n\tint32 totalServerNamesPerServer = 14; // 每个网站可以添加的域名数\n\tint32 totalServerNames = 15; // 可以添加的域名总数\n\tint64 dailyRequests = 16; // 每日访问量额度\n\tint64 monthlyRequests = 17; // 每月访问量额度\n\tint64 dailyWebsocketConnections = 18; // 每日Websocket连接数额度\n\tint64 monthlyWebsocketConnections = 19; // 每月Websocket连接数额度\n}",
"code": "message UpdatePlanRequest {\n\tint64 planId = 1; // 套餐ID\n\tstring name = 2; // 套餐名称\n\tstring description = 21; // 套餐简介\n\tbool isOn = 3; // 是否启用\n\tint64 clusterId = 4; // 集群ID\n\tbytes trafficLimitJSON = 5; // 流量限制\n\tbytes bandwidthLimitPerNodeJSON = 22; // 单节点带宽限制\n\tbool hasFullFeatures = 20; // 是否有所有权限\n\tbytes featuresJSON = 6; // 权限列表,[code1, code2, ...]\n\tstring priceType = 7; // 价格类型traffic, bandwidth, period\n\tbytes trafficPriceJSON = 8; // 流量价格配置\n\tbytes bandwidthPriceJSON = 12; // 带宽价格配置\n\tfloat monthlyPrice = 9; // 月费用\n\tfloat seasonallyPrice = 10; // 季度费用\n\tfloat yearlyPrice = 11; // 年度费用\n\tint32 totalServers = 13; // 可以添加的网站数\n\tint32 totalServerNamesPerServer = 14; // 每个网站可以添加的域名数\n\tint32 totalServerNames = 15; // 可以添加的域名总数\n\tint64 dailyRequests = 16; // 每日访问量额度\n\tint64 monthlyRequests = 17; // 每月访问量额度\n\tint64 dailyWebsocketConnections = 18; // 每日Websocket连接数额度\n\tint64 monthlyWebsocketConnections = 19; // 每月Websocket连接数额度\n\tbytes maxUploadSizeJSON = 23; // 文件最大上传尺寸 @link json:size_capacity\n}",
"doc": "修改套餐"
},
{
"name": "UpdatePostCategoryRequest",
"code": "message UpdatePostCategoryRequest {\n\tint64 postCategoryId = 1; // 分类ID\n\tstring name = 2; // 分类名称\n\tstring code = 3; // 分类代号\n\tbool isOn = 4; // 是否启用\n}",
"doc": "修改分类"
},
{
"name": "UpdatePostRequest",
"code": "message UpdatePostRequest {\n\tint64 postId = 1; // 文章ID\n\tint64 postCategoryId = 2; // 文章分类ID\n\tstring productCode = 3; // 产品代号\n\tstring subject = 4; // 标题\n\tstring type = 5; // 类型normal, url\n\tstring url = 6; // 跳转的URLtype=url\n\tstring body = 7; // 文章内容type=normal\n}",
"doc": "修改文章"
},
{
"name": "UpdateRegionCityCustomRequest",
"code": "message UpdateRegionCityCustomRequest {\n\tint64 regionCityId = 1;\n\tstring customName = 2;\n\trepeated string customCodes = 3;\n}",
@@ -23326,6 +23761,10 @@
}
],
"links": [
{
"name": "json:bit_size_capacity",
"content": "# 比特位尺寸\n## 定义\n~~~json\n{\n \"count\": \"数量\",\n \"unit\": \"单位\"\n}\n~~~\n\n其中\n* `数量` - 必须是一个整数数字\n* `单位` - 有以下几个值:\n * `b` - 比特\n * `kb` - Kb\n * `mb` - Mb\n * `gb` - Gb\n * `tb` - Tb\n * `pb` - Pb\n * `eb` - Eb\n\n## 示例\n100Mb\n~~~\n{\n \"count\": 100,\n \"unit\": \"mb\"\n}\n~~~\n\n\n32Gb\n~~~\n{\n \"count\": 32,\n \"unit\": \"gb\"\n}\n~~~"
},
{
"name": "json:hsts",
"content": "# HSTS\n\n## 定义\n~~~json\n{\n \"isOn\": \"是否启用\",\n \"maxAge\": \"最大有效期,单位秒\",\n \"includeSubDomains\": \"可选项,是否包含子域名\",\n \"preload\": \"可选项,是否预加载\",\n \"domains\": [\"可选项支持的域名1\", \"可选项支持的域名2\" ...]\n}\n~~~\n\n其中\n* `maxAge` 可以填写一天86400秒或者更长时间\n* 如果不填写 `domains` 则支持所有域名\n\n## 示例\n### 不限制任何域名\n~~~json\n{\n \"isOn\": true,\n \"maxAge\": 86400,\n \"includeSubDomains\":false, \n \"preload\":false,\n \"domains\":[]\n}\n~~~\n\n### 限制域名\n~~~json\n{\n \"isOn\": true,\n \"maxAge\": 86400,\n \"includeSubDomains\":false, \n \"preload\":false,\n \"domains\":[\"example.com\", \"www.example.com\"]\n}\n~~~"
@@ -23390,6 +23829,10 @@
"name": "json:server_names",
"content": "# 域名信息列表\n\n## 定义\n~~~\n[ 域名信息1, 域名信息2, ... ]\n~~~\n其中 `域名信息N` 等是单个域名信息定义,具体请参考 {json:server_name}\n\n## 示例\n### 示例1单个域名\n~~~json\n[\n\t{\n\t\t\"name\": \"example.com\",\n\t\t\"type\": \"full\"\n\t}\n]\n~~~\n\n### 示例2多个域名\n~~~json\n[\n\t{\n\t\t\"name\": \"example.com\",\n\t\t\"type\": \"full\"\n\t},\n\t{\n \t\"name\": \"google.com\",\n \t\"type\": \"full\"\n \t},\n \t{\n\t\t\"name\": \"facebook.com\",\n\t \t\"type\": \"full\"\n \t}\n]\n~~~\n\n### 示例3域名合集\n域名合集效果跟多个域名是一样的只不过在界面上以一个目录的形式呈现。\n~~~json\n[\n \t{\n\t\t\"name\": \"\",\n\t \t\"type\": \"full\",\n\t \t\"subNames\": [\"example.com\", \"google.com\", \"facebook.com\"]\n \t}\n]\n~~~\n"
},
{
"name": "json:size_capacity",
"content": "# 容量\n## 定义\n~~~json\n{\n \"count\": \"数量\",\n \"unit\": \"单位\"\n}\n~~~\n\n其中\n* `数量` - 必须是一个整数数字\n* `单位` - 有以下几个值:\n * `byte` - 字节\n * `kb` - KB\n * `mb` - MB\n * `gb` - GB\n * `tb` - TB\n * `pb` - PB\n * `eb` - EB\n\n## 示例\n100MB\n~~~\n{\n \"count\": 100,\n \"unit\": \"mb\"\n}\n~~~\n\n\n32GB\n~~~\n{\n \"count\": 32,\n \"unit\": \"gb\"\n}\n~~~"
},
{
"name": "json:ssl_cert_refs",
"content": "# SSL证书引用\n\n可以用来引用一组证书。\n\n## 定义\n~~~json\n[\n {\n\t\"isOn\": \"是否启用\",\n\t\"certId\": \"证书ID 1\"\n },\n {\n \"isOn\": \"是否启用\",\n \"certId\": \"证书ID 2\"\n },\n ...\n]\n~~~\n\n## 示例\n~~~json\n[\n {\n \"isOn\": true,\n \"certId\": 12345\n },\n {\n \"isOn\": true,\n \"certId\": 12346\n }\n]\n~~~\n\n其中\n* `certId` - 证书的ID"

View File

@@ -1,21 +1,30 @@
package configutils
import (
"crypto/sha1"
"crypto/sha256"
"encoding/base64"
"fmt"
stringutil "github.com/iwind/TeaGo/utils/string"
"net/url"
"regexp"
"strings"
"sync"
)
// VariableHolder 变量信息存储类型
type VariableHolder string
type VariableHolders = []interface{}
type VariableHolder struct {
Param string
Modifiers []string
}
type VariableHolders = []any
var variableMapping = map[string][]interface{}{} // source => [holder1, ...]
var variableLocker = sync.RWMutex{}
var regexpNamedVariable = regexp.MustCompile(`\${[@\w.-]+}`)
var variableMapping = map[string][]any{} // source => [holder1, ...]
var variableLocker = &sync.RWMutex{}
var regexpNamedVariable = regexp.MustCompile(`\${[@\w.|-]+}`)
var stringBuilderPool = sync.Pool{
New: func() interface{} {
New: func() any {
return &strings.Builder{}
},
}
@@ -46,7 +55,11 @@ func ParseVariables(source string, replacer func(varName string) (value string))
var h = holders[0]
holder, ok := h.(VariableHolder)
if ok {
return replacer(string(holder))
var value = replacer(holder.Param)
if holder.Modifiers != nil {
value = doStringModifiers(value, holder.Modifiers)
}
return replacer(value)
}
return source
}
@@ -58,7 +71,11 @@ func ParseVariables(source string, replacer func(varName string) (value string))
for _, h := range holders {
holder, ok := h.(VariableHolder)
if ok {
builder.WriteString(replacer(string(holder)))
var value = replacer(holder.Param)
if holder.Modifiers != nil {
value = doStringModifiers(value, holder.Modifiers)
}
builder.WriteString(value)
} else {
builder.Write(h.([]byte))
}
@@ -86,11 +103,15 @@ func ParseVariablesFromHolders(holders VariableHolders, replacer func(varName st
}
// replace
result := strings.Builder{}
var result = strings.Builder{}
for _, h := range holders {
holder, ok := h.(VariableHolder)
if ok {
result.WriteString(replacer(string(holder)))
var value = replacer(holder.Param)
if holder.Modifiers != nil {
value = doStringModifiers(value, holder.Modifiers)
}
result.WriteString(value)
} else {
result.Write(h.([]byte))
}
@@ -100,12 +121,24 @@ func ParseVariablesFromHolders(holders VariableHolders, replacer func(varName st
// ParseHolders 分析占位
func ParseHolders(source string) (holders VariableHolders) {
indexes := regexpNamedVariable.FindAllStringIndex(source, -1)
before := 0
var indexes = regexpNamedVariable.FindAllStringIndex(source, -1)
var before = 0
for _, loc := range indexes {
holders = append(holders, []byte(source[before:loc[0]]))
holder := source[loc[0]+2 : loc[1]-1]
holders = append(holders, VariableHolder(holder))
var holder = source[loc[0]+2 : loc[1]-1]
if strings.Contains(holder, "|") {
var holderPieces = strings.Split(holder, "|")
holders = append(holders, VariableHolder{
Param: holderPieces[0],
Modifiers: holderPieces[1:],
})
} else {
holders = append(holders, VariableHolder{
Param: holder,
Modifiers: nil,
})
}
before = loc[1]
}
if before < len(source) {
@@ -121,3 +154,36 @@ func HasVariables(source string) bool {
}
return regexpNamedVariable.MatchString(source)
}
// 执行变量后的修饰符
func doStringModifiers(value string, modifiers []string) string {
for _, modifier := range modifiers {
switch modifier {
case "urlEncode":
value = url.QueryEscape(value)
case "urlDecode":
value2, err := url.QueryUnescape(value)
if err == nil {
value = value2
}
case "base64Encode":
value = base64.StdEncoding.EncodeToString([]byte(value))
case "base64Decode":
value2, err := base64.StdEncoding.DecodeString(value)
if err == nil {
value = string(value2)
}
case "md5":
value = stringutil.Md5(value)
case "sha1":
value = fmt.Sprintf("%x", sha1.Sum([]byte(value)))
case "sha256":
value = fmt.Sprintf("%x", sha256.Sum256([]byte(value)))
case "toLowerCase":
value = strings.ToLower(value)
case "toUpperCase":
value = strings.ToUpper(value)
}
}
return value
}

View File

@@ -1,6 +1,8 @@
package configutils
package configutils_test
import (
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
"github.com/iwind/TeaGo/assert"
"github.com/iwind/TeaGo/types"
"runtime"
"strconv"
@@ -8,48 +10,128 @@ import (
)
func TestParseVariables(t *testing.T) {
var a = assert.NewAssertion(t)
{
v := ParseVariables("hello, ${name}, world", func(s string) string {
var v = configutils.ParseVariables("hello, ${name}, world", func(s string) string {
return "Lu"
})
t.Log(v)
a.IsTrue(v == "hello, Lu, world")
}
{
v := ParseVariables("hello, world", func(s string) string {
var v = configutils.ParseVariables("hello, world", func(s string) string {
return "Lu"
})
t.Log(v)
a.IsTrue(v == "hello, world")
}
{
v := ParseVariables("${name}", func(s string) string {
var v = configutils.ParseVariables("${name}", func(s string) string {
return "Lu"
})
t.Log(v)
a.IsTrue(v == "Lu")
}
}
func TestParseNoVariables(t *testing.T) {
for i := 0; i < 2; i++ {
v := ParseVariables("hello, world", func(s string) string {
var v = configutils.ParseVariables("hello, world", func(s string) string {
return "Lu"
})
t.Log(v)
}
}
func TestParseVariables_Modifier(t *testing.T) {
t.Log(configutils.ParseVariables("${url|urlEncode}", func(varName string) (value string) {
switch varName {
case "url":
return "/hello/world?a=1"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${url|urlDecode}", func(varName string) (value string) {
switch varName {
case "url":
return "%2Fhello%2Fworld%3Fa%3D1"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${url|urlDecode|urlEncode}", func(varName string) (value string) {
switch varName {
case "url":
return "%2Fhello%2Fworld%3Fa%3D1"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|base64Encode}", func(varName string) (value string) {
switch varName {
case "var":
return "123456"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|base64Encode|base64Decode}", func(varName string) (value string) {
switch varName {
case "var":
return "123456"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|md5}", func(varName string) (value string) {
switch varName {
case "var":
return "123456"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|sha1}", func(varName string) (value string) {
switch varName {
case "var":
return "123456"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|sha256}", func(varName string) (value string) {
switch varName {
case "var":
return "123456"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|toLowerCase}", func(varName string) (value string) {
switch varName {
case "var":
return "ABC"
}
return "${" + varName + "}"
}))
t.Log(configutils.ParseVariables("${var|toUpperCase}", func(varName string) (value string) {
switch varName {
case "var":
return "abc"
}
return "${" + varName + "}"
}))
}
func TestParseHolders(t *testing.T) {
var holders = ParseHolders("hello, ${name}, world")
var holders = configutils.ParseHolders("hello, ${name|urlencode}, world")
t.Log("===holders begin===")
for _, h := range holders {
t.Log(types.String(h))
}
t.Log("===holders end===")
t.Log("parse result:", ParseVariablesFromHolders(holders, func(s string) string {
t.Log("parse result:", configutils.ParseVariablesFromHolders(holders, func(s string) string {
return "[" + s + "]"
}))
}
func BenchmarkParseVariables(b *testing.B) {
_ = ParseVariables("hello, ${name}, ${age}, ${gender}, ${home}, world", func(s string) string {
_ = configutils.ParseVariables("hello, ${name}, ${age}, ${gender}, ${home}, world", func(s string) string {
return "Lu"
})
@@ -57,7 +139,7 @@ func BenchmarkParseVariables(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
_ = ParseVariables("hello, ${name}, ${age}, ${gender}, ${home}, world", func(s string) string {
_ = configutils.ParseVariables("hello, ${name}, ${age}, ${gender}, ${home}, world", func(s string) string {
return "Lu"
})
}
@@ -65,10 +147,10 @@ func BenchmarkParseVariables(b *testing.B) {
}
func BenchmarkParseVariablesFromHolders(b *testing.B) {
var holders = ParseHolders("hello, ${name}, ${age}, ${gender}, ${home}, world")
var holders = configutils.ParseHolders("hello, ${name}, ${age}, ${gender}, ${home}, world")
for i := 0; i < b.N; i++ {
_ = ParseVariablesFromHolders(holders, func(s string) string {
_ = configutils.ParseVariablesFromHolders(holders, func(s string) string {
return "Lu"
})
}
@@ -76,7 +158,7 @@ func BenchmarkParseVariablesFromHolders(b *testing.B) {
func BenchmarkParseVariablesUnique(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = ParseVariables("hello, ${name} "+strconv.Itoa(i), func(s string) string {
_ = configutils.ParseVariables("hello, ${name} "+strconv.Itoa(i%100_000), func(s string) string {
return "Lu"
})
}
@@ -86,7 +168,7 @@ func BenchmarkParseVariablesUnique_Single(b *testing.B) {
runtime.GOMAXPROCS(1)
for i := 0; i < b.N; i++ {
_ = ParseVariables("${name}", func(s string) string {
_ = configutils.ParseVariables("${name}", func(s string) string {
return "Lu"
})
}
@@ -94,7 +176,7 @@ func BenchmarkParseVariablesUnique_Single(b *testing.B) {
func BenchmarkParseNoVariables(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = ParseVariables("hello, world", func(s string) string {
_ = configutils.ParseVariables("hello, world", func(s string) string {
return "Lu"
})
}
@@ -102,7 +184,7 @@ func BenchmarkParseNoVariables(b *testing.B) {
func BenchmarkParseEmpty(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = ParseVariables("", func(s string) string {
_ = configutils.ParseVariables("", func(s string) string {
return "Lu"
})
}

View File

@@ -269,6 +269,8 @@ const (
Node_LogUpNode langs.MessageCode = "node@log_up_node" // 手动上线节点 %d
Node_LogUpdateNode langs.MessageCode = "node@log_update_node" // 修改节点 %d 基本信息
Node_LogUpdateNodeInstallationStatus langs.MessageCode = "node@log_update_node_installation_status" // 修改节点安装状态 %d
Node_LogUpdateNodeOff langs.MessageCode = "node@log_update_node_off" // 停用节点 %d
Node_LogUpdateNodeOn langs.MessageCode = "node@log_update_node_on" // 启用节点 %d
Node_LogUpgradeNodeRemotely langs.MessageCode = "node@log_upgrade_node_remotely" // 远程升级节点 %d
Node_UngroupedLabel langs.MessageCode = "node@ungrouped_label" // 未分组
NodeAction_LogCopyNodeActionsToCluster langs.MessageCode = "node_action@log_copy_node_actions_to_cluster" // 复制节点 %d 调度动作到集群
@@ -449,6 +451,11 @@ const (
Plan_LogDeletePlan langs.MessageCode = "plan@log_delete_plan" // 删除套餐 %d
Plan_LogSortPlans langs.MessageCode = "plan@log_sort_plans" // 对套餐进行排序
Plan_LogUpdatePlan langs.MessageCode = "plan@log_update_plan" // 修改套餐 %d
Post_LogCreatePost langs.MessageCode = "post@log_create_post" // 创建文章 %d
Post_LogDeletePost langs.MessageCode = "post@log_delete_post" // 删除文章 %d
Post_LogPublishPost langs.MessageCode = "post@log_publish_post" // 发布文章 %d
Post_LogUpdatePost langs.MessageCode = "post@log_update_post" // 修改文章 %d
Post_ProductGlobal langs.MessageCode = "post@product_global" // 全站
RegionCity_LogAddRegionCityCode langs.MessageCode = "region_city@log_add_region_city_code" // 添加城市/市 %d 别名 %s
RegionCity_LogUpdateRegionCityCustom langs.MessageCode = "region_city@log_update_region_city_custom" // 定制城市 %d 信息
RegionCountry_LogAddRegionCountryCode langs.MessageCode = "region_country@log_add_region_country_code" // 添加国家/地区 %d 别名 %s
@@ -486,6 +493,7 @@ const (
Server_LogCopyServerConfigs langs.MessageCode = "server@log_copy_server_configs" // 从网站 %d 中同步配置 %s
Server_LogCreateServer langs.MessageCode = "server@log_create_server" // 创建网站 %d
Server_LogDeleteServer langs.MessageCode = "server@log_delete_server" // 删除网站 %d
Server_LogDeleteServers langs.MessageCode = "server@log_delete_servers" // 批量删除网站
Server_LogDisableServer langs.MessageCode = "server@log_disable_server" // 停用网站 %d
Server_LogEnableServer langs.MessageCode = "server@log_enable_server" // 启用网站 %d
Server_LogSubmitAuditingServer langs.MessageCode = "server@log_submit_auditing_server" // 提交网站 %d 域名审核
@@ -516,6 +524,7 @@ const (
Server_MenuSettingHTTPProxy langs.MessageCode = "server@menu_setting_http_proxy" // HTTP代理
Server_MenuSettingHTTPS langs.MessageCode = "server@menu_setting_https" // HTTPS
Server_MenuSettingLocations langs.MessageCode = "server@menu_setting_locations" // 路由规则
Server_MenuSettingMultimedia langs.MessageCode = "server@menu_setting_multimedia" // 音视频设置
Server_MenuSettingOptimization langs.MessageCode = "server@menu_setting_optimization" // 页面优化
Server_MenuSettingOrigins langs.MessageCode = "server@menu_setting_origins" // 源站
Server_MenuSettingOthers langs.MessageCode = "server@menu_setting_others" // 其他设置
@@ -581,6 +590,7 @@ const (
ServerGroup_LogDeleteServerGroup langs.MessageCode = "server_group@log_delete_server_group" // 删除网站分组 %d
ServerGroup_LogSortServerGroups langs.MessageCode = "server_group@log_sort_server_groups" // 修改网站分组排序
ServerGroup_LogUpdateServerGroup langs.MessageCode = "server_group@log_update_server_group" // 修改网站分组 %d
ServerHls_LogUpdateHls langs.MessageCode = "server_hls@log_update_hls" // 修改Web %d 的HLS设置
ServerHTTP3_LogUpdateClusterHTTP3Policy langs.MessageCode = "server_http3@log_update_cluster_http3_policy" // 修改集群 %d 的HTTP3策略设置
ServerHTTP_LogUpdateHTTPSettings langs.MessageCode = "server_http@log_update_http_settings" // 修改网站 %d 的HTTP设置
ServerHTTPHeader_LogCreateDeletingHeader langs.MessageCode = "server_http_header@log_create_deleting_header" // 添加删除的报头 HeaderPolicyId: %d, Name: %s

View File

@@ -270,6 +270,8 @@ func init() {
"node@log_up_node": "",
"node@log_update_node": "",
"node@log_update_node_installation_status": "",
"node@log_update_node_off": "",
"node@log_update_node_on": "",
"node@log_upgrade_node_remotely": "",
"node@ungrouped_label": "",
"node_action@log_copy_node_actions_to_cluster": "",
@@ -450,6 +452,11 @@ func init() {
"plan@log_delete_plan": "",
"plan@log_sort_plans": "",
"plan@log_update_plan": "",
"post@log_create_post": "",
"post@log_delete_post": "",
"post@log_publish_post": "",
"post@log_update_post": "",
"post@product_global": "",
"region_city@log_add_region_city_code": "",
"region_city@log_update_region_city_custom": "",
"region_country@log_add_region_country_code": "",
@@ -487,6 +494,7 @@ func init() {
"server@log_copy_server_configs": "从网站 %d 中同步配置 %s",
"server@log_create_server": "创建网站 %d",
"server@log_delete_server": "删除网站 %d",
"server@log_delete_servers": "",
"server@log_disable_server": "停用网站 %d",
"server@log_enable_server": "启用网站 %d",
"server@log_submit_auditing_server": "提交网站 %d 域名审核",
@@ -517,6 +525,7 @@ func init() {
"server@menu_setting_http_proxy": "HTTP Reverse Proxy",
"server@menu_setting_https": "HTTPS",
"server@menu_setting_locations": "Locations",
"server@menu_setting_multimedia": "Audios & Videos",
"server@menu_setting_optimization": "Content Optimizations",
"server@menu_setting_origins": "Origin Sites",
"server@menu_setting_others": "Others",
@@ -582,6 +591,7 @@ func init() {
"server_group@log_delete_server_group": "",
"server_group@log_sort_server_groups": "",
"server_group@log_update_server_group": "",
"server_hls@log_update_hls": "",
"server_http3@log_update_cluster_http3_policy": "",
"server_http@log_update_http_settings": "",
"server_http_header@log_create_deleting_header": "",

View File

@@ -270,6 +270,8 @@ func init() {
"node@log_up_node": "手动上线节点 %d",
"node@log_update_node": "修改节点 %d 基本信息",
"node@log_update_node_installation_status": "修改节点安装状态 %d",
"node@log_update_node_off": "停用节点 %d",
"node@log_update_node_on": "启用节点 %d",
"node@log_upgrade_node_remotely": "远程升级节点 %d",
"node@ungrouped_label": "未分组",
"node_action@log_copy_node_actions_to_cluster": "复制节点 %d 调度动作到集群",
@@ -450,6 +452,11 @@ func init() {
"plan@log_delete_plan": "删除套餐 %d",
"plan@log_sort_plans": "对套餐进行排序",
"plan@log_update_plan": "修改套餐 %d",
"post@log_create_post": "创建文章 %d",
"post@log_delete_post": "删除文章 %d",
"post@log_publish_post": "发布文章 %d",
"post@log_update_post": "修改文章 %d",
"post@product_global": "全站",
"region_city@log_add_region_city_code": "添加城市/市 %d 别名 %s",
"region_city@log_update_region_city_custom": "定制城市 %d 信息",
"region_country@log_add_region_country_code": "添加国家/地区 %d 别名 %s",
@@ -487,6 +494,7 @@ func init() {
"server@log_copy_server_configs": "从网站 %d 中同步配置 %s",
"server@log_create_server": "创建网站 %d",
"server@log_delete_server": "删除网站 %d",
"server@log_delete_servers": "批量删除网站",
"server@log_disable_server": "停用网站 %d",
"server@log_enable_server": "启用网站 %d",
"server@log_submit_auditing_server": "提交网站 %d 域名审核",
@@ -517,6 +525,7 @@ func init() {
"server@menu_setting_http_proxy": "HTTP代理",
"server@menu_setting_https": "HTTPS",
"server@menu_setting_locations": "路由规则",
"server@menu_setting_multimedia": "音视频设置",
"server@menu_setting_optimization": "页面优化",
"server@menu_setting_origins": "源站",
"server@menu_setting_others": "其他设置",
@@ -582,6 +591,7 @@ func init() {
"server_group@log_delete_server_group": "删除网站分组 %d",
"server_group@log_sort_server_groups": "修改网站分组排序",
"server_group@log_update_server_group": "修改网站分组 %d",
"server_hls@log_update_hls": "修改Web %d 的HLS设置",
"server_http3@log_update_cluster_http3_policy": "修改集群 %d 的HTTP3策略设置",
"server_http@log_update_http_settings": "修改网站 %d 的HTTP设置",
"server_http_header@log_create_deleting_header": "添加删除的报头 HeaderPolicyId: %d, Name: %s",

View File

@@ -56,6 +56,7 @@
"menu_setting_udp_proxy": "UDP Reverse Proxy", // in site groups
"menu_setting_plan": "Plan",
"menu_setting_group": "Group",
"menu_setting_multimedia": "Audios & Videos",
"menu_setting_uam": "UAM",
"menu_setting_cc": "CC Protection",

View File

@@ -11,5 +11,7 @@
"log_update_node": "修改节点 %d 基本信息",
"log_update_node_installation_status": "修改节点安装状态 %d",
"log_up_node": "手动上线节点 %d",
"log_update_node_on": "启用节点 %d",
"log_update_node_off": "停用节点 %d",
"log_delete_node_from_cluster": "从集群 %d 中删除节点 %d"
}

View File

@@ -0,0 +1,8 @@
{
"product_global": "全站",
"log_create_post": "创建文章 %d",
"log_publish_post": "发布文章 %d",
"log_delete_post": "删除文章 %d",
"log_update_post": "修改文章 %d"
}

View File

@@ -56,6 +56,7 @@
"menu_setting_udp_proxy": "UDP代理", // 网站分组中使用
"menu_setting_plan": "套餐",
"menu_setting_group": "分组",
"menu_setting_multimedia": "音视频设置",
"menu_setting_uam": "5秒盾",
"menu_setting_cc": "CC防护",
@@ -84,5 +85,6 @@
"log_enable_server": "启用网站 %d",
"log_disable_server": "停用网站 %d",
"log_update_server_name": "修改网站 %d 名称",
"log_update_server_is_on":"修改网站 %d 启用状态"
"log_update_server_is_on":"修改网站 %d 启用状态",
"log_delete_servers": "批量删除网站"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_hls": "修改Web %d 的HLS设置"
}

View File

@@ -29,6 +29,7 @@ var httpCCPolicyLocker = &sync.RWMutex{}
var http3PolicyLocker = &sync.RWMutex{}
var httpPagesPolicyLocker = &sync.RWMutex{}
var webPPolicyLocker = &sync.RWMutex{}
var plansLocker = &sync.RWMutex{}
type ServerError struct {
Id int64
@@ -99,12 +100,13 @@ type NodeConfig struct {
// 脚本
CommonScripts []*serverconfigs.CommonScript `yaml:"commonScripts" json:"commonScripts"`
WebPImagePolicies map[int64]*WebPImagePolicy `yaml:"webpImagePolicies" json:"webpImagePolicies"` // WebP相关配置clusterId => *WebPImagePolicy
UAMPolicies map[int64]*UAMPolicy `yaml:"uamPolicies" json:"uamPolicies"` // UAM相关配置clusterId => *UAMPolicy
HTTPCCPolicies map[int64]*HTTPCCPolicy `yaml:"httpCCPolicies" json:"httpCCPolicies"` // CC相关配置 clusterId => *HTTPCCPolicy
HTTP3Policies map[int64]*HTTP3Policy `yaml:"http3Policies" json:"http3Policies"` // HTTP3相关配置 clusterId => *HTTP3Policy
HTTPPagesPolicies map[int64]*HTTPPagesPolicy `yaml:"httpPagesPolicies" json:"httpPagesPolicies"` // 自定义页面clusterId => *HTTPPagesPolicy
NetworkSecurityPolicy *NetworkSecurityPolicy `yaml:"networkSecurityPolicy" json:"networkSecurityPolicy"` // 网络安全策略
WebPImagePolicies map[int64]*WebPImagePolicy `yaml:"webpImagePolicies" json:"webpImagePolicies"` // WebP相关配置clusterId => *WebPImagePolicy
UAMPolicies map[int64]*UAMPolicy `yaml:"uamPolicies" json:"uamPolicies"` // UAM相关配置clusterId => *UAMPolicy
HTTPCCPolicies map[int64]*HTTPCCPolicy `yaml:"httpCCPolicies" json:"httpCCPolicies"` // CC相关配置 clusterId => *HTTPCCPolicy
HTTP3Policies map[int64]*HTTP3Policy `yaml:"http3Policies" json:"http3Policies"` // HTTP3相关配置 clusterId => *HTTP3Policy
HTTPPagesPolicies map[int64]*HTTPPagesPolicy `yaml:"httpPagesPolicies" json:"httpPagesPolicies"` // 自定义页面clusterId => *HTTPPagesPolicy
NetworkSecurityPolicy *NetworkSecurityPolicy `yaml:"networkSecurityPolicy" json:"networkSecurityPolicy"` // 网络安全策略
Plans map[int64]*serverconfigs.PlanConfig `yaml:"plans" json:"plans"` // 套餐 plan id => *serverconfigs.PlanConfig
// DNS
DNSResolver *DNSResolverConfig `yaml:"dnsResolver" json:"dnsResolver"`
@@ -214,6 +216,9 @@ func CloneNodeConfig(nodeConfig *NodeConfig) (*NodeConfig, error) {
webPPolicyLocker.RLock()
defer webPPolicyLocker.RUnlock()
plansLocker.RLock()
defer plansLocker.RUnlock()
var newConfigValue = reflect.Indirect(reflect.ValueOf(&NodeConfig{}))
var oldValue = reflect.Indirect(reflect.ValueOf(nodeConfig))
var valueType = oldValue.Type()
@@ -444,6 +449,19 @@ func (this *NodeConfig) Init(ctx context.Context) (err error, serverErrors []*Se
}
httpPagesPolicyLocker.RUnlock()
// plans
plansLocker.RLock()
if len(this.Plans) > 0 {
for _, plan := range this.Plans {
err = plan.Init()
if err != nil {
plansLocker.RUnlock()
return
}
}
}
plansLocker.RUnlock()
// dns resolver
if this.DNSResolver != nil {
err = this.DNSResolver.Init()
@@ -606,6 +624,9 @@ func (this *NodeConfig) lookupWeb(server *serverconfigs.ServerConfig, web *serve
if (web.FirewallPolicy.BlockOptions == nil || !web.FirewallPolicy.BlockOptions.IsPrior) && server.HTTPFirewallPolicy.BlockOptions != nil {
web.FirewallPolicy.BlockOptions = server.HTTPFirewallPolicy.BlockOptions
}
if (web.FirewallPolicy.PageOptions == nil || !web.FirewallPolicy.PageOptions.IsPrior) && server.HTTPFirewallPolicy.PageOptions != nil {
web.FirewallPolicy.PageOptions = server.HTTPFirewallPolicy.PageOptions
}
if (web.FirewallPolicy.CaptchaOptions == nil || !web.FirewallPolicy.CaptchaOptions.IsPrior) && server.HTTPFirewallPolicy.CaptchaOptions != nil {
web.FirewallPolicy.CaptchaOptions = server.HTTPFirewallPolicy.CaptchaOptions
}
@@ -784,6 +805,27 @@ func (this *NodeConfig) FindHTTPPagesPolicyWithClusterId(clusterId int64) *HTTPP
return this.HTTPPagesPolicies[clusterId]
}
// UpdatePlans 更新套餐
func (this *NodeConfig) UpdatePlans(planMap map[int64]*serverconfigs.PlanConfig) {
plansLocker.Lock()
this.Plans = planMap
plansLocker.Unlock()
}
// FindAllPlans 查找所有套餐
func (this *NodeConfig) FindAllPlans() map[int64]*serverconfigs.PlanConfig {
plansLocker.RLock()
defer plansLocker.RUnlock()
return this.Plans
}
// 查找单个套餐
func (this *NodeConfig) FindPlan(planId int64) *serverconfigs.PlanConfig {
plansLocker.RLock()
defer plansLocker.RUnlock()
return this.Plans[planId]
}
// SecretHash 对Id和Secret的Hash计算
func (this *NodeConfig) SecretHash() string {
return this.secretHash

View File

@@ -0,0 +1,37 @@
# 比特位尺寸
## 定义
~~~json
{
"count": "数量",
"unit": "单位"
}
~~~
其中:
* `数量` - 必须是一个整数数字
* `单位` - 有以下几个值:
* `b` - 比特
* `kb` - Kb
* `mb` - Mb
* `gb` - Gb
* `tb` - Tb
* `pb` - Pb
* `eb` - Eb
## 示例
100Mb
~~~
{
"count": 100,
"unit": "mb"
}
~~~
32Gb
~~~
{
"count": 32,
"unit": "gb"
}
~~~

View File

@@ -0,0 +1,37 @@
# 容量
## 定义
~~~json
{
"count": "数量",
"unit": "单位"
}
~~~
其中:
* `数量` - 必须是一个整数数字
* `单位` - 有以下几个值:
* `byte` - 字节
* `kb` - KB
* `mb` - MB
* `gb` - GB
* `tb` - TB
* `pb` - PB
* `eb` - EB
## 示例
100MB
~~~
{
"count": 100,
"unit": "mb"
}
~~~
32GB
~~~
{
"count": 32,
"unit": "gb"
}
~~~

View File

@@ -36,7 +36,8 @@ type HTTPFirewallPolicy struct {
ServerId int64 `protobuf:"varint,8,opt,name=serverId,proto3" json:"serverId,omitempty"` // 所属网站ID如果为0表示公共策略
UseLocalFirewall bool `protobuf:"varint,9,opt,name=useLocalFirewall,proto3" json:"useLocalFirewall,omitempty"` // 是否使用本机防火墙
SynFloodJSON []byte `protobuf:"bytes,10,opt,name=synFloodJSON,proto3" json:"synFloodJSON,omitempty"` // synflood配置
BlockOptionsJSON []byte `protobuf:"bytes,11,opt,name=blockOptionsJSON,proto3" json:"blockOptionsJSON,omitempty"` // 拦截配置
BlockOptionsJSON []byte `protobuf:"bytes,11,opt,name=blockOptionsJSON,proto3" json:"blockOptionsJSON,omitempty"` // 阻止动作配置
PageOptionsJSON []byte `protobuf:"bytes,13,opt,name=pageOptionsJSON,proto3" json:"pageOptionsJSON,omitempty"` // 显示网页动作配置
CaptchaOptionsJSON []byte `protobuf:"bytes,12,opt,name=captchaOptionsJSON,proto3" json:"captchaOptionsJSON,omitempty"` // 人机识别配置
}
@@ -149,6 +150,13 @@ func (x *HTTPFirewallPolicy) GetBlockOptionsJSON() []byte {
return nil
}
func (x *HTTPFirewallPolicy) GetPageOptionsJSON() []byte {
if x != nil {
return x.PageOptionsJSON
}
return nil
}
func (x *HTTPFirewallPolicy) GetCaptchaOptionsJSON() []byte {
if x != nil {
return x.CaptchaOptionsJSON
@@ -161,7 +169,7 @@ var File_models_model_http_firewall_policy_proto protoreflect.FileDescriptor
var file_models_model_http_firewall_policy_proto_rawDesc = []byte{
0x0a, 0x27, 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, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x90, 0x03,
0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xba, 0x03,
0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 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,
@@ -184,10 +192,13 @@ var file_models_model_http_firewall_policy_proto_rawDesc = []byte{
0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10,
0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x63, 0x61,
0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a,
0x53, 0x4f, 0x4e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x70, 0x61, 0x67, 0x65, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61,
0x70, 0x74, 0x63, 0x68, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -31,6 +31,7 @@ type Plan struct {
Description string `protobuf:"bytes,21,opt,name=description,proto3" json:"description,omitempty"` // 套餐简介
ClusterId int64 `protobuf:"varint,4,opt,name=clusterId,proto3" json:"clusterId,omitempty"` // 集群ID
TrafficLimitJSON []byte `protobuf:"bytes,5,opt,name=trafficLimitJSON,proto3" json:"trafficLimitJSON,omitempty"` // 流量限制
BandwidthLimitPerNodeJSON []byte `protobuf:"bytes,22,opt,name=bandwidthLimitPerNodeJSON,proto3" json:"bandwidthLimitPerNodeJSON,omitempty"` // 单节点带宽限制
HasFullFeatures bool `protobuf:"varint,20,opt,name=hasFullFeatures,proto3" json:"hasFullFeatures,omitempty"` // 是否有所有权限
FeaturesJSON []byte `protobuf:"bytes,6,opt,name=featuresJSON,proto3" json:"featuresJSON,omitempty"` // 权限列表,[code1, code2, ...]
PriceType string `protobuf:"bytes,7,opt,name=priceType,proto3" json:"priceType,omitempty"` // 价格类型traffic, bandwidth, period
@@ -46,6 +47,7 @@ type Plan struct {
MonthlyRequests int64 `protobuf:"varint,17,opt,name=monthlyRequests,proto3" json:"monthlyRequests,omitempty"` // 每月访问量额度
DailyWebsocketConnections int64 `protobuf:"varint,18,opt,name=dailyWebsocketConnections,proto3" json:"dailyWebsocketConnections,omitempty"` // 每日Websocket连接数额度
MonthlyWebsocketConnections int64 `protobuf:"varint,19,opt,name=monthlyWebsocketConnections,proto3" json:"monthlyWebsocketConnections,omitempty"` // 每月Websocket连接数额度
MaxUploadSizeJSON []byte `protobuf:"bytes,23,opt,name=maxUploadSizeJSON,proto3" json:"maxUploadSizeJSON,omitempty"` // 文件最大上传尺寸 @link json:size_capacity
}
func (x *Plan) Reset() {
@@ -122,6 +124,13 @@ func (x *Plan) GetTrafficLimitJSON() []byte {
return nil
}
func (x *Plan) GetBandwidthLimitPerNodeJSON() []byte {
if x != nil {
return x.BandwidthLimitPerNodeJSON
}
return nil
}
func (x *Plan) GetHasFullFeatures() bool {
if x != nil {
return x.HasFullFeatures
@@ -227,11 +236,18 @@ func (x *Plan) GetMonthlyWebsocketConnections() int64 {
return 0
}
func (x *Plan) GetMaxUploadSizeJSON() []byte {
if x != nil {
return x.MaxUploadSizeJSON
}
return nil
}
var File_models_model_plan_proto protoreflect.FileDescriptor
var file_models_model_plan_proto_rawDesc = []byte{
0x0a, 0x17, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70,
0x6c, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xc0, 0x06,
0x6c, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xac, 0x07,
0x0a, 0x04, 0x50, 0x6c, 0x61, 0x6e, 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, 0x6e, 0x61,
@@ -242,49 +258,56 @@ var file_models_model_plan_proto_rawDesc = []byte{
0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a,
0x0a, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53,
0x4f, 0x4e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61,
0x73, 0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74,
0x75, 0x72, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74,
0x75, 0x72, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53,
0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50,
0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12,
0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53,
0x4f, 0x4e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69,
0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c,
0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e,
0x61, 0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52,
0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65,
0x12, 0x20, 0x0a, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18,
0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69,
0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
0x12, 0x24, 0x0a, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
0x12, 0x3c, 0x0a, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b,
0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20,
0x01, 0x28, 0x03, 0x52, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63,
0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40,
0x0a, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b,
0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20,
0x01, 0x28, 0x03, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73,
0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x3c, 0x0a, 0x19, 0x62, 0x61,
0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x4e,
0x6f, 0x64, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x62,
0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72,
0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x46,
0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53,
0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50,
0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10,
0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x2e, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69,
0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x61,
0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65,
0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50,
0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c,
0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x73,
0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20,
0x0a, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x01, 0x52, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65,
0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24,
0x0a, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d,
0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3c,
0x0a, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28,
0x03, 0x52, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65,
0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b,
0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28,
0x03, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63,
0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c,
0x0a, 0x11, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x4a,
0x53, 0x4f, 0x4e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x55, 0x70,
0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

246
pkg/rpc/pb/model_post.pb.go Normal file
View File

@@ -0,0 +1,246 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: models/model_post.proto
package pb
import (
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)
)
// 文章
type Post struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // ID
PostCategoryId int64 `protobuf:"varint,2,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
ProductCode string `protobuf:"bytes,3,opt,name=productCode,proto3" json:"productCode,omitempty"` // 产品代号
Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` // 类型normal, url
Subject string `protobuf:"bytes,5,opt,name=subject,proto3" json:"subject,omitempty"` // 标题
Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` // URL
Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"` // 内容
CreatedAt int64 `protobuf:"varint,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // 创建时间
IsPublished bool `protobuf:"varint,9,opt,name=isPublished,proto3" json:"isPublished,omitempty"` // 是否已发布
PublishedAt int64 `protobuf:"varint,10,opt,name=publishedAt,proto3" json:"publishedAt,omitempty"` // 发布时间
PostCategory *PostCategory `protobuf:"bytes,30,opt,name=postCategory,proto3" json:"postCategory,omitempty"` // 分类信息
}
func (x *Post) Reset() {
*x = Post{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_post_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Post) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Post) ProtoMessage() {}
func (x *Post) ProtoReflect() protoreflect.Message {
mi := &file_models_model_post_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 Post.ProtoReflect.Descriptor instead.
func (*Post) Descriptor() ([]byte, []int) {
return file_models_model_post_proto_rawDescGZIP(), []int{0}
}
func (x *Post) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *Post) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
func (x *Post) GetProductCode() string {
if x != nil {
return x.ProductCode
}
return ""
}
func (x *Post) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *Post) GetSubject() string {
if x != nil {
return x.Subject
}
return ""
}
func (x *Post) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *Post) GetBody() string {
if x != nil {
return x.Body
}
return ""
}
func (x *Post) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
func (x *Post) GetIsPublished() bool {
if x != nil {
return x.IsPublished
}
return false
}
func (x *Post) GetPublishedAt() int64 {
if x != nil {
return x.PublishedAt
}
return 0
}
func (x *Post) GetPostCategory() *PostCategory {
if x != nil {
return x.PostCategory
}
return nil
}
var File_models_model_post_proto protoreflect.FileDescriptor
var file_models_model_post_proto_rawDesc = []byte{
0x0a, 0x17, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70,
0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x20, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x74,
0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
0xcc, 0x02, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64,
0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73,
0x68, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x75, 0x62,
0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73,
0x68, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x62,
0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x06,
0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_post_proto_rawDescOnce sync.Once
file_models_model_post_proto_rawDescData = file_models_model_post_proto_rawDesc
)
func file_models_model_post_proto_rawDescGZIP() []byte {
file_models_model_post_proto_rawDescOnce.Do(func() {
file_models_model_post_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_post_proto_rawDescData)
})
return file_models_model_post_proto_rawDescData
}
var file_models_model_post_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_post_proto_goTypes = []interface{}{
(*Post)(nil), // 0: pb.Post
(*PostCategory)(nil), // 1: pb.PostCategory
}
var file_models_model_post_proto_depIdxs = []int32{
1, // 0: pb.Post.postCategory:type_name -> pb.PostCategory
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_post_proto_init() }
func file_models_model_post_proto_init() {
if File_models_model_post_proto != nil {
return
}
file_models_model_post_category_proto_init()
if !protoimpl.UnsafeEnabled {
file_models_model_post_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Post); 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_post_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_post_proto_goTypes,
DependencyIndexes: file_models_model_post_proto_depIdxs,
MessageInfos: file_models_model_post_proto_msgTypes,
}.Build()
File_models_model_post_proto = out.File
file_models_model_post_proto_rawDesc = nil
file_models_model_post_proto_goTypes = nil
file_models_model_post_proto_depIdxs = nil
}

View File

@@ -0,0 +1,171 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: models/model_post_category.proto
package pb
import (
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)
)
// 文章分类
type PostCategory struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // ID
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 名称
Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` // 文章代号
IsOn bool `protobuf:"varint,4,opt,name=isOn,proto3" json:"isOn,omitempty"` // 是否启用
}
func (x *PostCategory) Reset() {
*x = PostCategory{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_post_category_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PostCategory) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PostCategory) ProtoMessage() {}
func (x *PostCategory) ProtoReflect() protoreflect.Message {
mi := &file_models_model_post_category_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 PostCategory.ProtoReflect.Descriptor instead.
func (*PostCategory) Descriptor() ([]byte, []int) {
return file_models_model_post_category_proto_rawDescGZIP(), []int{0}
}
func (x *PostCategory) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *PostCategory) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *PostCategory) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
func (x *PostCategory) GetIsOn() bool {
if x != nil {
return x.IsOn
}
return false
}
var File_models_model_post_category_proto protoreflect.FileDescriptor
var file_models_model_post_category_proto_rawDesc = []byte{
0x0a, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70,
0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x5a, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 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, 0x63, 0x6f,
0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x04, 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_post_category_proto_rawDescOnce sync.Once
file_models_model_post_category_proto_rawDescData = file_models_model_post_category_proto_rawDesc
)
func file_models_model_post_category_proto_rawDescGZIP() []byte {
file_models_model_post_category_proto_rawDescOnce.Do(func() {
file_models_model_post_category_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_post_category_proto_rawDescData)
})
return file_models_model_post_category_proto_rawDescData
}
var file_models_model_post_category_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_post_category_proto_goTypes = []interface{}{
(*PostCategory)(nil), // 0: pb.PostCategory
}
var file_models_model_post_category_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_post_category_proto_init() }
func file_models_model_post_category_proto_init() {
if File_models_model_post_category_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_post_category_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PostCategory); 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_post_category_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_post_category_proto_goTypes,
DependencyIndexes: file_models_model_post_category_proto_depIdxs,
MessageInfos: file_models_model_post_category_proto_msgTypes,
}.Build()
File_models_model_post_category_proto = out.File
file_models_model_post_category_proto_rawDesc = nil
file_models_model_post_category_proto_goTypes = nil
file_models_model_post_category_proto_depIdxs = nil
}

View File

@@ -379,8 +379,9 @@ type UpdateHTTPFirewallPolicyRequest struct {
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
FirewallGroupCodes []string `protobuf:"bytes,5,rep,name=firewallGroupCodes,proto3" json:"firewallGroupCodes,omitempty"`
BlockOptionsJSON []byte `protobuf:"bytes,6,opt,name=blockOptionsJSON,proto3" json:"blockOptionsJSON,omitempty"`
CaptchaOptionsJSON []byte `protobuf:"bytes,11,opt,name=captchaOptionsJSON,proto3" json:"captchaOptionsJSON,omitempty"`
BlockOptionsJSON []byte `protobuf:"bytes,6,opt,name=blockOptionsJSON,proto3" json:"blockOptionsJSON,omitempty"` // 阻止动作配置
PageOptionsJSON []byte `protobuf:"bytes,15,opt,name=pageOptionsJSON,proto3" json:"pageOptionsJSON,omitempty"` // 显示网页动作配置
CaptchaOptionsJSON []byte `protobuf:"bytes,11,opt,name=captchaOptionsJSON,proto3" json:"captchaOptionsJSON,omitempty"` // 验证码动作配置
Mode string `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"`
UseLocalFirewall bool `protobuf:"varint,8,opt,name=useLocalFirewall,proto3" json:"useLocalFirewall,omitempty"` // 是否使用本地防火墙
SynFloodJSON []byte `protobuf:"bytes,9,opt,name=synFloodJSON,proto3" json:"synFloodJSON,omitempty"` // SYN Flood相关配置
@@ -464,6 +465,13 @@ func (x *UpdateHTTPFirewallPolicyRequest) GetBlockOptionsJSON() []byte {
return nil
}
func (x *UpdateHTTPFirewallPolicyRequest) GetPageOptionsJSON() []byte {
if x != nil {
return x.PageOptionsJSON
}
return nil
}
func (x *UpdateHTTPFirewallPolicyRequest) GetCaptchaOptionsJSON() []byte {
if x != nil {
return x.CaptchaOptionsJSON
@@ -1427,7 +1435,7 @@ var file_service_http_firewall_policy_proto_rawDesc = []byte{
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x01, 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, 0x22, 0xaf, 0x04, 0x0a,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xd9, 0x04, 0x0a,
0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x32, 0x0a, 0x14, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
@@ -1443,246 +1451,248 @@ var file_service_http_firewall_policy_proto_rawDesc = []byte{
0x77, 0x61, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2a,
0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53,
0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61,
0x70, 0x74, 0x63, 0x68, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f,
0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2a,
0x0a, 0x10, 0x75, 0x73, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x75, 0x73, 0x65, 0x4c, 0x6f, 0x63,
0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x79,
0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0c, 0x73, 0x79, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x18,
0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x07, 0x4c, 0x6f, 0x67, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0c,
0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x42, 0x6f, 0x64, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x6e, 0x79,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x54, 0x4d, 0x4c, 0x18, 0x0d, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0f, 0x64, 0x65, 0x6e, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x54,
0x4d, 0x4c, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e,
0x63, 0x65, 0x48, 0x54, 0x4d, 0x4c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65,
0x6e, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x48, 0x54, 0x4d, 0x4c, 0x22, 0xa1,
0x01, 0x0a, 0x25, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x20, 0x0a, 0x0b,
0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x0b, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x22,
0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53,
0x4f, 0x4e, 0x22, 0x7e, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53,
0x4f, 0x4e, 0x22, 0x6c, 0x0a, 0x2a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f,
0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
0x22, 0x94, 0x01, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f,
0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f,
0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72,
0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x4a, 0x0a, 0x14, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x55,
0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 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, 0x01, 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, 0x22, 0x60, 0x0a, 0x2a, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 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, 0x01, 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, 0x22, 0x65, 0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x64, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x5a,
0x0a, 0x24, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61,
0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0f, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x0f, 0x70, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x12, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x4c,
0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01,
0x28, 0x08, 0x52, 0x10, 0x75, 0x73, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64,
0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x46,
0x6c, 0x6f, 0x6f, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4a,
0x53, 0x4f, 0x4e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x4a, 0x53,
0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x42, 0x6f, 0x64, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12,
0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x53, 0x69,
0x7a, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x6e, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72,
0x79, 0x48, 0x54, 0x4d, 0x4c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x6e,
0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x54, 0x4d, 0x4c, 0x12, 0x2a, 0x0a, 0x10,
0x64, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x48, 0x54, 0x4d, 0x4c,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x6e, 0x63, 0x65, 0x48, 0x54, 0x4d, 0x4c, 0x22, 0xa1, 0x01, 0x0a, 0x25, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 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, 0x01, 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, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e,
0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x69, 0x6e, 0x62,
0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x62,
0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c,
0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x7e, 0x0a, 0x26,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01,
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, 0x22, 0x6f, 0x0a, 0x25, 0x46, 0x69,
0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x16, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x12, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x1f,
0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e,
0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x0b, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x6c, 0x0a, 0x2a,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48,
0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65,
0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79,
0x77, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64,
0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x26, 0x4c,
0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a,
0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6e,
0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
0x64, 0x22, 0x75, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x14,
0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x22,
0x60, 0x0a, 0x2a, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x22, 0x65, 0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x36, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x5a, 0x0a, 0x24, 0x46, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
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, 0x01, 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, 0x22, 0x6f, 0x0a, 0x25, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a,
0x12, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x48,
0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x52, 0x12, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x36, 0x0a,
0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x68,
0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x6c, 0x0a, 0x26, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x36, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x6c, 0x0a, 0x26, 0x43,
0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0xc8, 0x02, 0x0a, 0x27, 0x43, 0x68,
0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x18, 0x01, 0x20,
0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12,
0x18, 0x0a, 0x07, 0x69, 0x73, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
0x52, 0x07, 0x69, 0x73, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x41,
0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73,
0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x69, 0x70, 0x4c, 0x69, 0x73,
0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x50, 0x4c,
0x69, 0x73, 0x74, 0x52, 0x06, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x69,
0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62,
0x2e, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x69, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12,
0x37, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79,
0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x6f,
0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0e, 0x72, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x6e, 0x63, 0x65, 0x22, 0x61, 0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 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, 0x01, 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, 0x22, 0x4a, 0x0a, 0x2c, 0x46, 0x69, 0x6e, 0x64, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x32, 0x9d, 0x0c, 0x0a, 0x19, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x12, 0x83, 0x01, 0x0a, 0x22, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69,
0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74,
0x0a, 0x1d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
0x28, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x79, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x70, 0x22, 0xc8, 0x02, 0x0a, 0x27, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69,
0x73, 0x4f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x46,
0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x46, 0x6f,
0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
0x64, 0x12, 0x22, 0x0a, 0x06, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x69,
0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x69, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x50, 0x49, 0x74, 0x65,
0x6d, 0x52, 0x06, 0x69, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x37, 0x0a, 0x0d, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e,
0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x52, 0x0e,
0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x22, 0x61,
0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69,
0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x01, 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, 0x22, 0x4a, 0x0a, 0x2c, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49,
0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 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, 0x32, 0x9d, 0x0c,
0x0a, 0x19, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x22,
0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
0x65, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x65, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x2e,
0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1d, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45,
0x6d, 0x70, 0x74, 0x79, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f,
0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
0x5b, 0x0a, 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47,
0x72, 0x6f, 0x75, 0x70, 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, 0x5d, 0x0a, 0x1f,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6b, 0x0a, 0x23, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
0x65, 0x73, 0x12, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 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, 0x7a, 0x0a, 0x1f, 0x6c, 0x69, 0x73, 0x74,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65,
0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x18, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x5d, 0x0a, 0x1f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x62,
0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73,
0x73, 0x12, 0x6b, 0x0a, 0x23, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
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, 0x7a,
0x0a, 0x1f, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e,
0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x18, 0x64, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 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, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46,
0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x12, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x29, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x23, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74,
0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54,
0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x18, 0x69, 0x6d,
0x70, 0x6f, 0x72, 0x74, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6f,
0x72, 0x74, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x7a, 0x0a, 0x1f, 0x63,
0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a,
0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72,
0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x50, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x62, 0x2e,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c,
0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x24, 0x66, 0x69, 0x6e, 0x64,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
0x12, 0x2f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69,
0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x18, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x54, 0x54, 0x50,
0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x7a, 0x0a, 0x1f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54,
0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68,
0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48,
0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x49, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x89, 0x01, 0x0a, 0x24, 0x66, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x30, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77,
0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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,
0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2f, 0x2e, 0x70, 0x62, 0x2e,
0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68,
0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74,
0x68, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 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 (

View File

@@ -2538,6 +2538,157 @@ func (x *FindHTTPWebUserAgentResponse) GetUserAgentJSON() []byte {
return nil
}
// 修改HLS设置
type UpdateHTTPWebHLSRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HttpWebId int64 `protobuf:"varint,1,opt,name=httpWebId,proto3" json:"httpWebId,omitempty"` // Web配置ID
HlsJSON []byte `protobuf:"bytes,2,opt,name=hlsJSON,proto3" json:"hlsJSON,omitempty"` // HLS配置
}
func (x *UpdateHTTPWebHLSRequest) Reset() {
*x = UpdateHTTPWebHLSRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_http_web_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateHTTPWebHLSRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateHTTPWebHLSRequest) ProtoMessage() {}
func (x *UpdateHTTPWebHLSRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_http_web_proto_msgTypes[48]
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 UpdateHTTPWebHLSRequest.ProtoReflect.Descriptor instead.
func (*UpdateHTTPWebHLSRequest) Descriptor() ([]byte, []int) {
return file_service_http_web_proto_rawDescGZIP(), []int{48}
}
func (x *UpdateHTTPWebHLSRequest) GetHttpWebId() int64 {
if x != nil {
return x.HttpWebId
}
return 0
}
func (x *UpdateHTTPWebHLSRequest) GetHlsJSON() []byte {
if x != nil {
return x.HlsJSON
}
return nil
}
// 查找HLS设置
type FindHTTPWebHLSRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HttpWebId int64 `protobuf:"varint,1,opt,name=httpWebId,proto3" json:"httpWebId,omitempty"` // Web配置ID
}
func (x *FindHTTPWebHLSRequest) Reset() {
*x = FindHTTPWebHLSRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_http_web_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindHTTPWebHLSRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindHTTPWebHLSRequest) ProtoMessage() {}
func (x *FindHTTPWebHLSRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_http_web_proto_msgTypes[49]
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 FindHTTPWebHLSRequest.ProtoReflect.Descriptor instead.
func (*FindHTTPWebHLSRequest) Descriptor() ([]byte, []int) {
return file_service_http_web_proto_rawDescGZIP(), []int{49}
}
func (x *FindHTTPWebHLSRequest) GetHttpWebId() int64 {
if x != nil {
return x.HttpWebId
}
return 0
}
type FindHTTPWebHLSResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HlsJSON []byte `protobuf:"bytes,1,opt,name=hlsJSON,proto3" json:"hlsJSON,omitempty"` // HLS配置
}
func (x *FindHTTPWebHLSResponse) Reset() {
*x = FindHTTPWebHLSResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_http_web_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindHTTPWebHLSResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindHTTPWebHLSResponse) ProtoMessage() {}
func (x *FindHTTPWebHLSResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_http_web_proto_msgTypes[50]
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 FindHTTPWebHLSResponse.ProtoReflect.Descriptor instead.
func (*FindHTTPWebHLSResponse) Descriptor() ([]byte, []int) {
return file_service_http_web_proto_rawDescGZIP(), []int{50}
}
func (x *FindHTTPWebHLSResponse) GetHlsJSON() []byte {
if x != nil {
return x.HlsJSON
}
return nil
}
// 根据WebId查找ServerId
type FindServerIdWithHTTPWebIdRequest struct {
state protoimpl.MessageState
@@ -2550,7 +2701,7 @@ type FindServerIdWithHTTPWebIdRequest struct {
func (x *FindServerIdWithHTTPWebIdRequest) Reset() {
*x = FindServerIdWithHTTPWebIdRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_http_web_proto_msgTypes[48]
mi := &file_service_http_web_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2563,7 +2714,7 @@ func (x *FindServerIdWithHTTPWebIdRequest) String() string {
func (*FindServerIdWithHTTPWebIdRequest) ProtoMessage() {}
func (x *FindServerIdWithHTTPWebIdRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_http_web_proto_msgTypes[48]
mi := &file_service_http_web_proto_msgTypes[51]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2576,7 +2727,7 @@ func (x *FindServerIdWithHTTPWebIdRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use FindServerIdWithHTTPWebIdRequest.ProtoReflect.Descriptor instead.
func (*FindServerIdWithHTTPWebIdRequest) Descriptor() ([]byte, []int) {
return file_service_http_web_proto_rawDescGZIP(), []int{48}
return file_service_http_web_proto_rawDescGZIP(), []int{51}
}
func (x *FindServerIdWithHTTPWebIdRequest) GetHttpWebId() int64 {
@@ -2597,7 +2748,7 @@ type FindServerIdWithHTTPWebIdResponse struct {
func (x *FindServerIdWithHTTPWebIdResponse) Reset() {
*x = FindServerIdWithHTTPWebIdResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_http_web_proto_msgTypes[49]
mi := &file_service_http_web_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2610,7 +2761,7 @@ func (x *FindServerIdWithHTTPWebIdResponse) String() string {
func (*FindServerIdWithHTTPWebIdResponse) ProtoMessage() {}
func (x *FindServerIdWithHTTPWebIdResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_http_web_proto_msgTypes[49]
mi := &file_service_http_web_proto_msgTypes[52]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2623,7 +2774,7 @@ func (x *FindServerIdWithHTTPWebIdResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use FindServerIdWithHTTPWebIdResponse.ProtoReflect.Descriptor instead.
func (*FindServerIdWithHTTPWebIdResponse) Descriptor() ([]byte, []int) {
return file_service_http_web_proto_rawDescGZIP(), []int{49}
return file_service_http_web_proto_rawDescGZIP(), []int{52}
}
func (x *FindServerIdWithHTTPWebIdResponse) GetServerId() int64 {
@@ -2893,212 +3044,232 @@ var file_service_http_web_proto_rawDesc = []byte{
0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24,
0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74,
0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x40, 0x0a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76,
0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x51, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x1c, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x57, 0x65, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x57, 0x65, 0x62, 0x49, 0x64, 0x12, 0x18, 0x0a,
0x07, 0x68, 0x6c, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
0x68, 0x6c, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x35, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x1c, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x57, 0x65, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x57, 0x65, 0x62, 0x49, 0x64, 0x22, 0x32,
0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x6c, 0x73, 0x4a,
0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x68, 0x6c, 0x73, 0x4a, 0x53,
0x4f, 0x4e, 0x22, 0x40, 0x0a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x49, 0x64, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x57, 0x65,
0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x57,
0x65, 0x62, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x49,
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70,
0x57, 0x65, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x68, 0x74, 0x74,
0x70, 0x57, 0x65, 0x62, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x32, 0xb9, 0x18, 0x0a, 0x0e, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x12, 0x18, 0x2e, 0x70, 0x62,
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x53, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x18, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0d,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x12, 0x18, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43,
0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4f, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73,
0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x11, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x50,
0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e,
0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4d,
0x0a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52,
0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x6d, 0x6f,
0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 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,
0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x68,
0x61, 0x72, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 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, 0x53, 0x0a, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65,
0x61, 0x64, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65,
0x61, 0x64, 0x65, 0x72, 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, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65,
0x73, 0x73, 0x12, 0x49, 0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x20, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x53, 0x68,
0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a,
0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x50, 0x61,
0x67, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x50, 0x61, 0x67, 0x65, 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, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x12, 0x21, 0x2e, 0x70,
0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x41,
0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
0x41, 0x0a, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x53, 0x74, 0x61, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x53, 0x74, 0x61, 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, 0x43, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x61, 0x63, 0x68, 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, 0x49, 0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65,
0x73, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x70,
0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x4c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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,
0x57, 0x0a, 0x1c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x12,
0x27, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57,
0x65, 0x62, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x48, 0x54, 0x54, 0x50,
0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b,
0x65, 0x74, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 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, 0x47, 0x0a, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x46, 0x61, 0x73, 0x74, 0x63, 0x67, 0x69, 0x12, 0x1f, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x46, 0x61, 0x73, 0x74, 0x63, 0x67, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e,
0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51,
0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52,
0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62,
0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x32, 0xc3, 0x19, 0x0a, 0x0e, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53,
0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x18, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x12, 0x18, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65,
0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 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, 0x53, 0x0a, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57,
0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x12,
0x25, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57,
0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 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, 0x65, 0x0a, 0x18, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63,
0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69,
0x72, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a,
0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x41, 0x75,
0x74, 0x68, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x41, 0x75, 0x74, 0x68, 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, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43,
0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69,
0x6d, 0x69, 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, 0x62, 0x0a, 0x17, 0x66, 0x69,
0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d,
0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55,
0x0a, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x26, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 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, 0x68, 0x0a, 0x19, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70,
0x74, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69,
0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x3f, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x55, 0x41, 0x4d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x41, 0x4d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4f, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53,
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52,
0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x11, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x50, 0x12, 0x1c,
0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x57, 0x65, 0x62, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x17,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x41, 0x64, 0x64, 0x72, 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, 0x14, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x68, 0x61, 0x72,
0x73, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 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, 0x53, 0x0a, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64,
0x65, 0x72, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64,
0x65, 0x72, 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, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55,
0x41, 0x4d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x55, 0x41, 0x4d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x41,
0x4d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x12, 0x1a, 0x2e, 0x70,
0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43,
0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x64,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49,
0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52,
0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
0x72, 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, 0x56, 0x0a, 0x13, 0x66, 0x69, 0x6e,
0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73,
0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57,
0x65, 0x62, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73,
0x65, 0x72, 0x41, 0x67, 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, 0x12, 0x59,
0x0a, 0x14, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65,
0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e,
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x66, 0x69, 0x6e,
0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x49, 0x64, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70,
0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69,
0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 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,
0x12, 0x49, 0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x53, 0x68, 0x75, 0x74,
0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x12, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x50, 0x61, 0x67, 0x65,
0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x50, 0x61, 0x67, 0x65, 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, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63,
0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a,
0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x53, 0x74,
0x61, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x53, 0x74, 0x61, 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, 0x43, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x61, 0x63, 0x68, 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, 0x49, 0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x12, 0x20,
0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x4c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x57, 0x0a,
0x1c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65,
0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x12, 0x27, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53,
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 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, 0x47, 0x0a, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x46, 0x61, 0x73, 0x74, 0x63, 0x67, 0x69, 0x12, 0x1f, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x46, 0x61,
0x73, 0x74, 0x63, 0x67, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x19,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x77,
0x72, 0x69, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x77, 0x72,
0x69, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 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,
0x53, 0x0a, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x12, 0x25, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 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, 0x65, 0x0a, 0x18, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73,
0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65,
0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x41, 0x75, 0x74, 0x68,
0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50,
0x57, 0x65, 0x62, 0x41, 0x75, 0x74, 0x68, 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, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d,
0x69, 0x74, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69,
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, 0x62, 0x0a, 0x17, 0x66, 0x69, 0x6e, 0x64,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69,
0x6d, 0x69, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x1b,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 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, 0x68, 0x0a, 0x19, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57,
0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73,
0x12, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63,
0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x41,
0x4d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54,
0x50, 0x57, 0x65, 0x62, 0x55, 0x41, 0x4d, 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, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x41, 0x4d,
0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 0x55, 0x41, 0x4d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x41, 0x4d, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53,
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x64, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x43, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57,
0x65, 0x62, 0x43, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x15,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x66,
0x65, 0x72, 0x65, 0x72, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 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, 0x56, 0x0a, 0x13, 0x66, 0x69, 0x6e, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73, 0x12, 0x1e,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52,
0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x52,
0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62,
0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65, 0x72,
0x41, 0x67, 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, 0x12, 0x59, 0x0a, 0x14,
0x66, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65, 0x72, 0x41,
0x67, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48, 0x54,
0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53, 0x12, 0x1b, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c,
0x53, 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, 0x66, 0x69, 0x6e, 0x64,
0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e,
0x46, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x48,
0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x48, 0x4c, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x68, 0x0a, 0x19, 0x66, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49,
0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x49, 0x64, 0x12, 0x24,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64,
0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65, 0x62, 0x49, 0x64, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x48, 0x54, 0x54, 0x50, 0x57, 0x65,
0x62, 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 (
@@ -3113,7 +3284,7 @@ func file_service_http_web_proto_rawDescGZIP() []byte {
return file_service_http_web_proto_rawDescData
}
var file_service_http_web_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
var file_service_http_web_proto_msgTypes = make([]protoimpl.MessageInfo, 53)
var file_service_http_web_proto_goTypes = []interface{}{
(*CreateHTTPWebRequest)(nil), // 0: pb.CreateHTTPWebRequest
(*CreateHTTPWebResponse)(nil), // 1: pb.CreateHTTPWebResponse
@@ -3163,13 +3334,16 @@ var file_service_http_web_proto_goTypes = []interface{}{
(*UpdateHTTPWebUserAgentRequest)(nil), // 45: pb.UpdateHTTPWebUserAgentRequest
(*FindHTTPWebUserAgentRequest)(nil), // 46: pb.FindHTTPWebUserAgentRequest
(*FindHTTPWebUserAgentResponse)(nil), // 47: pb.FindHTTPWebUserAgentResponse
(*FindServerIdWithHTTPWebIdRequest)(nil), // 48: pb.FindServerIdWithHTTPWebIdRequest
(*FindServerIdWithHTTPWebIdResponse)(nil), // 49: pb.FindServerIdWithHTTPWebIdResponse
(*HTTPWeb)(nil), // 50: pb.HTTPWeb
(*RPCSuccess)(nil), // 51: pb.RPCSuccess
(*UpdateHTTPWebHLSRequest)(nil), // 48: pb.UpdateHTTPWebHLSRequest
(*FindHTTPWebHLSRequest)(nil), // 49: pb.FindHTTPWebHLSRequest
(*FindHTTPWebHLSResponse)(nil), // 50: pb.FindHTTPWebHLSResponse
(*FindServerIdWithHTTPWebIdRequest)(nil), // 51: pb.FindServerIdWithHTTPWebIdRequest
(*FindServerIdWithHTTPWebIdResponse)(nil), // 52: pb.FindServerIdWithHTTPWebIdResponse
(*HTTPWeb)(nil), // 53: pb.HTTPWeb
(*RPCSuccess)(nil), // 54: pb.RPCSuccess
}
var file_service_http_web_proto_depIdxs = []int32{
50, // 0: pb.FindEnabledHTTPWebResponse.httpWeb:type_name -> pb.HTTPWeb
53, // 0: pb.FindEnabledHTTPWebResponse.httpWeb:type_name -> pb.HTTPWeb
0, // 1: pb.HTTPWebService.createHTTPWeb:input_type -> pb.CreateHTTPWebRequest
2, // 2: pb.HTTPWebService.findEnabledHTTPWeb:input_type -> pb.FindEnabledHTTPWebRequest
4, // 3: pb.HTTPWebService.findEnabledHTTPWebConfig:input_type -> pb.FindEnabledHTTPWebConfigRequest
@@ -3208,48 +3382,52 @@ var file_service_http_web_proto_depIdxs = []int32{
43, // 36: pb.HTTPWebService.findHTTPWebReferers:input_type -> pb.FindHTTPWebReferersRequest
45, // 37: pb.HTTPWebService.updateHTTPWebUserAgent:input_type -> pb.UpdateHTTPWebUserAgentRequest
46, // 38: pb.HTTPWebService.findHTTPWebUserAgent:input_type -> pb.FindHTTPWebUserAgentRequest
48, // 39: pb.HTTPWebService.findServerIdWithHTTPWebId:input_type -> pb.FindServerIdWithHTTPWebIdRequest
1, // 40: pb.HTTPWebService.createHTTPWeb:output_type -> pb.CreateHTTPWebResponse
3, // 41: pb.HTTPWebService.findEnabledHTTPWeb:output_type -> pb.FindEnabledHTTPWebResponse
5, // 42: pb.HTTPWebService.findEnabledHTTPWebConfig:output_type -> pb.FindEnabledHTTPWebConfigResponse
51, // 43: pb.HTTPWebService.updateHTTPWeb:output_type -> pb.RPCSuccess
51, // 44: pb.HTTPWebService.updateHTTPWebCompression:output_type -> pb.RPCSuccess
51, // 45: pb.HTTPWebService.updateHTTPWebOptimization:output_type -> pb.RPCSuccess
51, // 46: pb.HTTPWebService.updateHTTPWebWebP:output_type -> pb.RPCSuccess
51, // 47: pb.HTTPWebService.updateHTTPWebRemoteAddr:output_type -> pb.RPCSuccess
51, // 48: pb.HTTPWebService.updateHTTPWebCharset:output_type -> pb.RPCSuccess
51, // 49: pb.HTTPWebService.updateHTTPWebRequestHeader:output_type -> pb.RPCSuccess
51, // 50: pb.HTTPWebService.updateHTTPWebResponseHeader:output_type -> pb.RPCSuccess
51, // 51: pb.HTTPWebService.updateHTTPWebShutdown:output_type -> pb.RPCSuccess
51, // 52: pb.HTTPWebService.updateHTTPWebPages:output_type -> pb.RPCSuccess
51, // 53: pb.HTTPWebService.updateHTTPWebAccessLog:output_type -> pb.RPCSuccess
51, // 54: pb.HTTPWebService.updateHTTPWebStat:output_type -> pb.RPCSuccess
51, // 55: pb.HTTPWebService.updateHTTPWebCache:output_type -> pb.RPCSuccess
51, // 56: pb.HTTPWebService.updateHTTPWebFirewall:output_type -> pb.RPCSuccess
51, // 57: pb.HTTPWebService.updateHTTPWebLocations:output_type -> pb.RPCSuccess
51, // 58: pb.HTTPWebService.updateHTTPWebRedirectToHTTPS:output_type -> pb.RPCSuccess
51, // 59: pb.HTTPWebService.updateHTTPWebWebsocket:output_type -> pb.RPCSuccess
51, // 60: pb.HTTPWebService.updateHTTPWebFastcgi:output_type -> pb.RPCSuccess
51, // 61: pb.HTTPWebService.updateHTTPWebRewriteRules:output_type -> pb.RPCSuccess
51, // 62: pb.HTTPWebService.updateHTTPWebHostRedirects:output_type -> pb.RPCSuccess
27, // 63: pb.HTTPWebService.findHTTPWebHostRedirects:output_type -> pb.FindHTTPWebHostRedirectsResponse
51, // 64: pb.HTTPWebService.updateHTTPWebAuth:output_type -> pb.RPCSuccess
51, // 65: pb.HTTPWebService.updateHTTPWebCommon:output_type -> pb.RPCSuccess
51, // 66: pb.HTTPWebService.updateHTTPWebRequestLimit:output_type -> pb.RPCSuccess
32, // 67: pb.HTTPWebService.findHTTPWebRequestLimit:output_type -> pb.FindHTTPWebRequestLimitResponse
51, // 68: pb.HTTPWebService.updateHTTPWebRequestScripts:output_type -> pb.RPCSuccess
35, // 69: pb.HTTPWebService.findHTTPWebRequestScripts:output_type -> pb.FindHTTPWebRequestScriptsResponse
51, // 70: pb.HTTPWebService.updateHTTPWebUAM:output_type -> pb.RPCSuccess
38, // 71: pb.HTTPWebService.findHTTPWebUAM:output_type -> pb.FindHTTPWebUAMResponse
51, // 72: pb.HTTPWebService.updateHTTPWebCC:output_type -> pb.RPCSuccess
41, // 73: pb.HTTPWebService.findHTTPWebCC:output_type -> pb.FindHTTPWebCCResponse
51, // 74: pb.HTTPWebService.updateHTTPWebReferers:output_type -> pb.RPCSuccess
44, // 75: pb.HTTPWebService.findHTTPWebReferers:output_type -> pb.FindHTTPWebReferersResponse
51, // 76: pb.HTTPWebService.updateHTTPWebUserAgent:output_type -> pb.RPCSuccess
47, // 77: pb.HTTPWebService.findHTTPWebUserAgent:output_type -> pb.FindHTTPWebUserAgentResponse
49, // 78: pb.HTTPWebService.findServerIdWithHTTPWebId:output_type -> pb.FindServerIdWithHTTPWebIdResponse
40, // [40:79] is the sub-list for method output_type
1, // [1:40] is the sub-list for method input_type
48, // 39: pb.HTTPWebService.updateHTTPWebHLS:input_type -> pb.UpdateHTTPWebHLSRequest
49, // 40: pb.HTTPWebService.findHTTPWebHLS:input_type -> pb.FindHTTPWebHLSRequest
51, // 41: pb.HTTPWebService.findServerIdWithHTTPWebId:input_type -> pb.FindServerIdWithHTTPWebIdRequest
1, // 42: pb.HTTPWebService.createHTTPWeb:output_type -> pb.CreateHTTPWebResponse
3, // 43: pb.HTTPWebService.findEnabledHTTPWeb:output_type -> pb.FindEnabledHTTPWebResponse
5, // 44: pb.HTTPWebService.findEnabledHTTPWebConfig:output_type -> pb.FindEnabledHTTPWebConfigResponse
54, // 45: pb.HTTPWebService.updateHTTPWeb:output_type -> pb.RPCSuccess
54, // 46: pb.HTTPWebService.updateHTTPWebCompression:output_type -> pb.RPCSuccess
54, // 47: pb.HTTPWebService.updateHTTPWebOptimization:output_type -> pb.RPCSuccess
54, // 48: pb.HTTPWebService.updateHTTPWebWebP:output_type -> pb.RPCSuccess
54, // 49: pb.HTTPWebService.updateHTTPWebRemoteAddr:output_type -> pb.RPCSuccess
54, // 50: pb.HTTPWebService.updateHTTPWebCharset:output_type -> pb.RPCSuccess
54, // 51: pb.HTTPWebService.updateHTTPWebRequestHeader:output_type -> pb.RPCSuccess
54, // 52: pb.HTTPWebService.updateHTTPWebResponseHeader:output_type -> pb.RPCSuccess
54, // 53: pb.HTTPWebService.updateHTTPWebShutdown:output_type -> pb.RPCSuccess
54, // 54: pb.HTTPWebService.updateHTTPWebPages:output_type -> pb.RPCSuccess
54, // 55: pb.HTTPWebService.updateHTTPWebAccessLog:output_type -> pb.RPCSuccess
54, // 56: pb.HTTPWebService.updateHTTPWebStat:output_type -> pb.RPCSuccess
54, // 57: pb.HTTPWebService.updateHTTPWebCache:output_type -> pb.RPCSuccess
54, // 58: pb.HTTPWebService.updateHTTPWebFirewall:output_type -> pb.RPCSuccess
54, // 59: pb.HTTPWebService.updateHTTPWebLocations:output_type -> pb.RPCSuccess
54, // 60: pb.HTTPWebService.updateHTTPWebRedirectToHTTPS:output_type -> pb.RPCSuccess
54, // 61: pb.HTTPWebService.updateHTTPWebWebsocket:output_type -> pb.RPCSuccess
54, // 62: pb.HTTPWebService.updateHTTPWebFastcgi:output_type -> pb.RPCSuccess
54, // 63: pb.HTTPWebService.updateHTTPWebRewriteRules:output_type -> pb.RPCSuccess
54, // 64: pb.HTTPWebService.updateHTTPWebHostRedirects:output_type -> pb.RPCSuccess
27, // 65: pb.HTTPWebService.findHTTPWebHostRedirects:output_type -> pb.FindHTTPWebHostRedirectsResponse
54, // 66: pb.HTTPWebService.updateHTTPWebAuth:output_type -> pb.RPCSuccess
54, // 67: pb.HTTPWebService.updateHTTPWebCommon:output_type -> pb.RPCSuccess
54, // 68: pb.HTTPWebService.updateHTTPWebRequestLimit:output_type -> pb.RPCSuccess
32, // 69: pb.HTTPWebService.findHTTPWebRequestLimit:output_type -> pb.FindHTTPWebRequestLimitResponse
54, // 70: pb.HTTPWebService.updateHTTPWebRequestScripts:output_type -> pb.RPCSuccess
35, // 71: pb.HTTPWebService.findHTTPWebRequestScripts:output_type -> pb.FindHTTPWebRequestScriptsResponse
54, // 72: pb.HTTPWebService.updateHTTPWebUAM:output_type -> pb.RPCSuccess
38, // 73: pb.HTTPWebService.findHTTPWebUAM:output_type -> pb.FindHTTPWebUAMResponse
54, // 74: pb.HTTPWebService.updateHTTPWebCC:output_type -> pb.RPCSuccess
41, // 75: pb.HTTPWebService.findHTTPWebCC:output_type -> pb.FindHTTPWebCCResponse
54, // 76: pb.HTTPWebService.updateHTTPWebReferers:output_type -> pb.RPCSuccess
44, // 77: pb.HTTPWebService.findHTTPWebReferers:output_type -> pb.FindHTTPWebReferersResponse
54, // 78: pb.HTTPWebService.updateHTTPWebUserAgent:output_type -> pb.RPCSuccess
47, // 79: pb.HTTPWebService.findHTTPWebUserAgent:output_type -> pb.FindHTTPWebUserAgentResponse
54, // 80: pb.HTTPWebService.updateHTTPWebHLS:output_type -> pb.RPCSuccess
50, // 81: pb.HTTPWebService.findHTTPWebHLS:output_type -> pb.FindHTTPWebHLSResponse
52, // 82: pb.HTTPWebService.findServerIdWithHTTPWebId:output_type -> pb.FindServerIdWithHTTPWebIdResponse
42, // [42:83] is the sub-list for method output_type
1, // [1:42] 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
@@ -3840,7 +4018,7 @@ func file_service_http_web_proto_init() {
}
}
file_service_http_web_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindServerIdWithHTTPWebIdRequest); i {
switch v := v.(*UpdateHTTPWebHLSRequest); i {
case 0:
return &v.state
case 1:
@@ -3852,6 +4030,42 @@ func file_service_http_web_proto_init() {
}
}
file_service_http_web_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindHTTPWebHLSRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_http_web_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindHTTPWebHLSResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_http_web_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindServerIdWithHTTPWebIdRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_http_web_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindServerIdWithHTTPWebIdResponse); i {
case 0:
return &v.state
@@ -3870,7 +4084,7 @@ func file_service_http_web_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_http_web_proto_rawDesc,
NumEnums: 0,
NumMessages: 50,
NumMessages: 53,
NumExtensions: 0,
NumServices: 1,
},

View File

@@ -57,6 +57,8 @@ const (
HTTPWebService_FindHTTPWebReferers_FullMethodName = "/pb.HTTPWebService/findHTTPWebReferers"
HTTPWebService_UpdateHTTPWebUserAgent_FullMethodName = "/pb.HTTPWebService/updateHTTPWebUserAgent"
HTTPWebService_FindHTTPWebUserAgent_FullMethodName = "/pb.HTTPWebService/findHTTPWebUserAgent"
HTTPWebService_UpdateHTTPWebHLS_FullMethodName = "/pb.HTTPWebService/updateHTTPWebHLS"
HTTPWebService_FindHTTPWebHLS_FullMethodName = "/pb.HTTPWebService/findHTTPWebHLS"
HTTPWebService_FindServerIdWithHTTPWebId_FullMethodName = "/pb.HTTPWebService/findServerIdWithHTTPWebId"
)
@@ -140,6 +142,10 @@ type HTTPWebServiceClient interface {
UpdateHTTPWebUserAgent(ctx context.Context, in *UpdateHTTPWebUserAgentRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 查找UserAgent设置
FindHTTPWebUserAgent(ctx context.Context, in *FindHTTPWebUserAgentRequest, opts ...grpc.CallOption) (*FindHTTPWebUserAgentResponse, error)
// 修改HLS设置
UpdateHTTPWebHLS(ctx context.Context, in *UpdateHTTPWebHLSRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 查找HLS设置
FindHTTPWebHLS(ctx context.Context, in *FindHTTPWebHLSRequest, opts ...grpc.CallOption) (*FindHTTPWebHLSResponse, error)
// 根据WebId查找ServerId
FindServerIdWithHTTPWebId(ctx context.Context, in *FindServerIdWithHTTPWebIdRequest, opts ...grpc.CallOption) (*FindServerIdWithHTTPWebIdResponse, error)
}
@@ -494,6 +500,24 @@ func (c *hTTPWebServiceClient) FindHTTPWebUserAgent(ctx context.Context, in *Fin
return out, nil
}
func (c *hTTPWebServiceClient) UpdateHTTPWebHLS(ctx context.Context, in *UpdateHTTPWebHLSRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, HTTPWebService_UpdateHTTPWebHLS_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *hTTPWebServiceClient) FindHTTPWebHLS(ctx context.Context, in *FindHTTPWebHLSRequest, opts ...grpc.CallOption) (*FindHTTPWebHLSResponse, error) {
out := new(FindHTTPWebHLSResponse)
err := c.cc.Invoke(ctx, HTTPWebService_FindHTTPWebHLS_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *hTTPWebServiceClient) FindServerIdWithHTTPWebId(ctx context.Context, in *FindServerIdWithHTTPWebIdRequest, opts ...grpc.CallOption) (*FindServerIdWithHTTPWebIdResponse, error) {
out := new(FindServerIdWithHTTPWebIdResponse)
err := c.cc.Invoke(ctx, HTTPWebService_FindServerIdWithHTTPWebId_FullMethodName, in, out, opts...)
@@ -583,6 +607,10 @@ type HTTPWebServiceServer interface {
UpdateHTTPWebUserAgent(context.Context, *UpdateHTTPWebUserAgentRequest) (*RPCSuccess, error)
// 查找UserAgent设置
FindHTTPWebUserAgent(context.Context, *FindHTTPWebUserAgentRequest) (*FindHTTPWebUserAgentResponse, error)
// 修改HLS设置
UpdateHTTPWebHLS(context.Context, *UpdateHTTPWebHLSRequest) (*RPCSuccess, error)
// 查找HLS设置
FindHTTPWebHLS(context.Context, *FindHTTPWebHLSRequest) (*FindHTTPWebHLSResponse, error)
// 根据WebId查找ServerId
FindServerIdWithHTTPWebId(context.Context, *FindServerIdWithHTTPWebIdRequest) (*FindServerIdWithHTTPWebIdResponse, error)
}
@@ -705,6 +733,12 @@ func (UnimplementedHTTPWebServiceServer) UpdateHTTPWebUserAgent(context.Context,
func (UnimplementedHTTPWebServiceServer) FindHTTPWebUserAgent(context.Context, *FindHTTPWebUserAgentRequest) (*FindHTTPWebUserAgentResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindHTTPWebUserAgent not implemented")
}
func (UnimplementedHTTPWebServiceServer) UpdateHTTPWebHLS(context.Context, *UpdateHTTPWebHLSRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateHTTPWebHLS not implemented")
}
func (UnimplementedHTTPWebServiceServer) FindHTTPWebHLS(context.Context, *FindHTTPWebHLSRequest) (*FindHTTPWebHLSResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindHTTPWebHLS not implemented")
}
func (UnimplementedHTTPWebServiceServer) FindServerIdWithHTTPWebId(context.Context, *FindServerIdWithHTTPWebIdRequest) (*FindServerIdWithHTTPWebIdResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindServerIdWithHTTPWebId not implemented")
}
@@ -1404,6 +1438,42 @@ func _HTTPWebService_FindHTTPWebUserAgent_Handler(srv interface{}, ctx context.C
return interceptor(ctx, in, info, handler)
}
func _HTTPWebService_UpdateHTTPWebHLS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateHTTPWebHLSRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(HTTPWebServiceServer).UpdateHTTPWebHLS(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: HTTPWebService_UpdateHTTPWebHLS_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(HTTPWebServiceServer).UpdateHTTPWebHLS(ctx, req.(*UpdateHTTPWebHLSRequest))
}
return interceptor(ctx, in, info, handler)
}
func _HTTPWebService_FindHTTPWebHLS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindHTTPWebHLSRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(HTTPWebServiceServer).FindHTTPWebHLS(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: HTTPWebService_FindHTTPWebHLS_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(HTTPWebServiceServer).FindHTTPWebHLS(ctx, req.(*FindHTTPWebHLSRequest))
}
return interceptor(ctx, in, info, handler)
}
func _HTTPWebService_FindServerIdWithHTTPWebId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindServerIdWithHTTPWebIdRequest)
if err := dec(in); err != nil {
@@ -1581,6 +1651,14 @@ var HTTPWebService_ServiceDesc = grpc.ServiceDesc{
MethodName: "findHTTPWebUserAgent",
Handler: _HTTPWebService_FindHTTPWebUserAgent_Handler,
},
{
MethodName: "updateHTTPWebHLS",
Handler: _HTTPWebService_UpdateHTTPWebHLS_Handler,
},
{
MethodName: "findHTTPWebHLS",
Handler: _HTTPWebService_FindHTTPWebHLS_Handler,
},
{
MethodName: "findServerIdWithHTTPWebId",
Handler: _HTTPWebService_FindServerIdWithHTTPWebId_Handler,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -84,6 +84,7 @@ const (
NodeService_FindNodeTOAConfig_FullMethodName = "/pb.NodeService/findNodeTOAConfig"
NodeService_FindNodeNetworkSecurityPolicy_FullMethodName = "/pb.NodeService/findNodeNetworkSecurityPolicy"
NodeService_FindNodeWebPPolicies_FullMethodName = "/pb.NodeService/findNodeWebPPolicies"
NodeService_UpdateNodeIsOn_FullMethodName = "/pb.NodeService/updateNodeIsOn"
)
// NodeServiceClient is the client API for NodeService service.
@@ -220,6 +221,8 @@ type NodeServiceClient interface {
FindNodeNetworkSecurityPolicy(ctx context.Context, in *FindNodeNetworkSecurityPolicyRequest, opts ...grpc.CallOption) (*FindNodeNetworkSecurityPolicyResponse, error)
// 查找节点的WebP策略
FindNodeWebPPolicies(ctx context.Context, in *FindNodeWebPPoliciesRequest, opts ...grpc.CallOption) (*FindNodeWebPPoliciesResponse, error)
// 修改节点的启用状态
UpdateNodeIsOn(ctx context.Context, in *UpdateNodeIsOnRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
}
type nodeServiceClient struct {
@@ -837,6 +840,15 @@ func (c *nodeServiceClient) FindNodeWebPPolicies(ctx context.Context, in *FindNo
return out, nil
}
func (c *nodeServiceClient) UpdateNodeIsOn(ctx context.Context, in *UpdateNodeIsOnRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, NodeService_UpdateNodeIsOn_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// NodeServiceServer is the server API for NodeService service.
// All implementations should embed UnimplementedNodeServiceServer
// for forward compatibility
@@ -971,6 +983,8 @@ type NodeServiceServer interface {
FindNodeNetworkSecurityPolicy(context.Context, *FindNodeNetworkSecurityPolicyRequest) (*FindNodeNetworkSecurityPolicyResponse, error)
// 查找节点的WebP策略
FindNodeWebPPolicies(context.Context, *FindNodeWebPPoliciesRequest) (*FindNodeWebPPoliciesResponse, error)
// 修改节点的启用状态
UpdateNodeIsOn(context.Context, *UpdateNodeIsOnRequest) (*RPCSuccess, error)
}
// UnimplementedNodeServiceServer should be embedded to have forward compatible implementations.
@@ -1172,6 +1186,9 @@ func (UnimplementedNodeServiceServer) FindNodeNetworkSecurityPolicy(context.Cont
func (UnimplementedNodeServiceServer) FindNodeWebPPolicies(context.Context, *FindNodeWebPPoliciesRequest) (*FindNodeWebPPoliciesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindNodeWebPPolicies not implemented")
}
func (UnimplementedNodeServiceServer) UpdateNodeIsOn(context.Context, *UpdateNodeIsOnRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateNodeIsOn not implemented")
}
// UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to NodeServiceServer will
@@ -2362,6 +2379,24 @@ func _NodeService_FindNodeWebPPolicies_Handler(srv interface{}, ctx context.Cont
return interceptor(ctx, in, info, handler)
}
func _NodeService_UpdateNodeIsOn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateNodeIsOnRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(NodeServiceServer).UpdateNodeIsOn(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: NodeService_UpdateNodeIsOn_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeServiceServer).UpdateNodeIsOn(ctx, req.(*UpdateNodeIsOnRequest))
}
return interceptor(ctx, in, info, handler)
}
// NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -2625,6 +2660,10 @@ var NodeService_ServiceDesc = grpc.ServiceDesc{
MethodName: "findNodeWebPPolicies",
Handler: _NodeService_FindNodeWebPPolicies_Handler,
},
{
MethodName: "updateNodeIsOn",
Handler: _NodeService_UpdateNodeIsOn_Handler,
},
},
Streams: []grpc.StreamDesc{
{

View File

@@ -31,7 +31,7 @@ type CreateOriginRequest struct {
OssJSON []byte `protobuf:"bytes,15,opt,name=ossJSON,proto3" json:"ossJSON,omitempty"` // OSS配置信息源站网络地址中protocol为oss:开头时需要设置此项
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // 描述,为可选项
Weight int32 `protobuf:"varint,4,opt,name=weight,proto3" json:"weight,omitempty"` // 权重不小于0一般设置为10
IsOn bool `protobuf:"varint,5,opt,name=isOn,proto3" json:"isOn,omitempty"` // 是否启用
IsOn bool `protobuf:"varint,5,opt,name=isOn,proto3" json:"isOn,omitempty"` // 是否启用一般为true
ConnTimeoutJSON []byte `protobuf:"bytes,6,opt,name=connTimeoutJSON,proto3" json:"connTimeoutJSON,omitempty"` // 可选项,连接超时时间
ReadTimeoutJSON []byte `protobuf:"bytes,7,opt,name=readTimeoutJSON,proto3" json:"readTimeoutJSON,omitempty"` // 可选项,读取超时时间
IdleTimeoutJSON []byte `protobuf:"bytes,8,opt,name=idleTimeoutJSON,proto3" json:"idleTimeoutJSON,omitempty"` // 可选项,空闲超时时间
@@ -417,7 +417,7 @@ type FindEnabledOriginRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
OriginId int64 `protobuf:"varint,1,opt,name=originId,proto3" json:"originId,omitempty"`
OriginId int64 `protobuf:"varint,1,opt,name=originId,proto3" json:"originId,omitempty"` // 源站ID
}
func (x *FindEnabledOriginRequest) Reset() {
@@ -464,7 +464,7 @@ type FindEnabledOriginResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Origin *Origin `protobuf:"bytes,1,opt,name=Origin,proto3" json:"Origin,omitempty"`
Origin *Origin `protobuf:"bytes,1,opt,name=Origin,proto3" json:"Origin,omitempty"` // 源站信息
}
func (x *FindEnabledOriginResponse) Reset() {
@@ -512,7 +512,7 @@ type FindEnabledOriginConfigRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
OriginId int64 `protobuf:"varint,1,opt,name=originId,proto3" json:"originId,omitempty"`
OriginId int64 `protobuf:"varint,1,opt,name=originId,proto3" json:"originId,omitempty"` // 源站ID
}
func (x *FindEnabledOriginConfigRequest) Reset() {
@@ -559,7 +559,7 @@ type FindEnabledOriginConfigResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
OriginJSON []byte `protobuf:"bytes,1,opt,name=originJSON,proto3" json:"originJSON,omitempty"`
OriginJSON []byte `protobuf:"bytes,1,opt,name=originJSON,proto3" json:"originJSON,omitempty"` // 源站信息
}
func (x *FindEnabledOriginConfigResponse) Reset() {

View File

@@ -30,6 +30,7 @@ type CreatePlanRequest struct {
Description string `protobuf:"bytes,19,opt,name=description,proto3" json:"description,omitempty"` // 套餐简介
ClusterId int64 `protobuf:"varint,2,opt,name=clusterId,proto3" json:"clusterId,omitempty"` // 集群ID
TrafficLimitJSON []byte `protobuf:"bytes,3,opt,name=trafficLimitJSON,proto3" json:"trafficLimitJSON,omitempty"` // 流量限制
BandwidthLimitPerNodeJSON []byte `protobuf:"bytes,20,opt,name=bandwidthLimitPerNodeJSON,proto3" json:"bandwidthLimitPerNodeJSON,omitempty"` // 单节点带宽限制 @link json:bit_size_capacity
HasFullFeatures bool `protobuf:"varint,18,opt,name=hasFullFeatures,proto3" json:"hasFullFeatures,omitempty"` // 是否有所有权限
FeaturesJSON []byte `protobuf:"bytes,4,opt,name=featuresJSON,proto3" json:"featuresJSON,omitempty"` // 权限列表,[code1, code2, ...]
PriceType string `protobuf:"bytes,5,opt,name=priceType,proto3" json:"priceType,omitempty"` // 价格类型traffic, bandwidth, period
@@ -45,6 +46,7 @@ type CreatePlanRequest struct {
MonthlyRequests int64 `protobuf:"varint,15,opt,name=monthlyRequests,proto3" json:"monthlyRequests,omitempty"` // 每月访问量额度
DailyWebsocketConnections int64 `protobuf:"varint,16,opt,name=dailyWebsocketConnections,proto3" json:"dailyWebsocketConnections,omitempty"` // 每日Websocket连接数额度
MonthlyWebsocketConnections int64 `protobuf:"varint,17,opt,name=monthlyWebsocketConnections,proto3" json:"monthlyWebsocketConnections,omitempty"` // 每月Websocket连接数额度
MaxUploadSizeJSON []byte `protobuf:"bytes,21,opt,name=maxUploadSizeJSON,proto3" json:"maxUploadSizeJSON,omitempty"` // 文件最大上传尺寸 @link json:size_capacity
}
func (x *CreatePlanRequest) Reset() {
@@ -107,6 +109,13 @@ func (x *CreatePlanRequest) GetTrafficLimitJSON() []byte {
return nil
}
func (x *CreatePlanRequest) GetBandwidthLimitPerNodeJSON() []byte {
if x != nil {
return x.BandwidthLimitPerNodeJSON
}
return nil
}
func (x *CreatePlanRequest) GetHasFullFeatures() bool {
if x != nil {
return x.HasFullFeatures
@@ -212,6 +221,13 @@ func (x *CreatePlanRequest) GetMonthlyWebsocketConnections() int64 {
return 0
}
func (x *CreatePlanRequest) GetMaxUploadSizeJSON() []byte {
if x != nil {
return x.MaxUploadSizeJSON
}
return nil
}
type CreatePlanResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -271,6 +287,7 @@ type UpdatePlanRequest struct {
IsOn bool `protobuf:"varint,3,opt,name=isOn,proto3" json:"isOn,omitempty"` // 是否启用
ClusterId int64 `protobuf:"varint,4,opt,name=clusterId,proto3" json:"clusterId,omitempty"` // 集群ID
TrafficLimitJSON []byte `protobuf:"bytes,5,opt,name=trafficLimitJSON,proto3" json:"trafficLimitJSON,omitempty"` // 流量限制
BandwidthLimitPerNodeJSON []byte `protobuf:"bytes,22,opt,name=bandwidthLimitPerNodeJSON,proto3" json:"bandwidthLimitPerNodeJSON,omitempty"` // 单节点带宽限制
HasFullFeatures bool `protobuf:"varint,20,opt,name=hasFullFeatures,proto3" json:"hasFullFeatures,omitempty"` // 是否有所有权限
FeaturesJSON []byte `protobuf:"bytes,6,opt,name=featuresJSON,proto3" json:"featuresJSON,omitempty"` // 权限列表,[code1, code2, ...]
PriceType string `protobuf:"bytes,7,opt,name=priceType,proto3" json:"priceType,omitempty"` // 价格类型traffic, bandwidth, period
@@ -286,6 +303,7 @@ type UpdatePlanRequest struct {
MonthlyRequests int64 `protobuf:"varint,17,opt,name=monthlyRequests,proto3" json:"monthlyRequests,omitempty"` // 每月访问量额度
DailyWebsocketConnections int64 `protobuf:"varint,18,opt,name=dailyWebsocketConnections,proto3" json:"dailyWebsocketConnections,omitempty"` // 每日Websocket连接数额度
MonthlyWebsocketConnections int64 `protobuf:"varint,19,opt,name=monthlyWebsocketConnections,proto3" json:"monthlyWebsocketConnections,omitempty"` // 每月Websocket连接数额度
MaxUploadSizeJSON []byte `protobuf:"bytes,23,opt,name=maxUploadSizeJSON,proto3" json:"maxUploadSizeJSON,omitempty"` // 文件最大上传尺寸 @link json:size_capacity
}
func (x *UpdatePlanRequest) Reset() {
@@ -362,6 +380,13 @@ func (x *UpdatePlanRequest) GetTrafficLimitJSON() []byte {
return nil
}
func (x *UpdatePlanRequest) GetBandwidthLimitPerNodeJSON() []byte {
if x != nil {
return x.BandwidthLimitPerNodeJSON
}
return nil
}
func (x *UpdatePlanRequest) GetHasFullFeatures() bool {
if x != nil {
return x.HasFullFeatures
@@ -467,6 +492,13 @@ func (x *UpdatePlanRequest) GetMonthlyWebsocketConnections() int64 {
return 0
}
func (x *UpdatePlanRequest) GetMaxUploadSizeJSON() []byte {
if x != nil {
return x.MaxUploadSizeJSON
}
return nil
}
// 删除套餐
type DeletePlanRequest struct {
state protoimpl.MessageState
@@ -610,6 +642,101 @@ func (x *FindEnabledPlanResponse) GetPlan() *Plan {
return nil
}
// 查找套餐基本信息
type FindBasicPlanRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PlanId int64 `protobuf:"varint,1,opt,name=planId,proto3" json:"planId,omitempty"` // 套餐ID
}
func (x *FindBasicPlanRequest) Reset() {
*x = FindBasicPlanRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindBasicPlanRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindBasicPlanRequest) ProtoMessage() {}
func (x *FindBasicPlanRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_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 FindBasicPlanRequest.ProtoReflect.Descriptor instead.
func (*FindBasicPlanRequest) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{6}
}
func (x *FindBasicPlanRequest) GetPlanId() int64 {
if x != nil {
return x.PlanId
}
return 0
}
type FindBasicPlanResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` // 套餐信息(只读取基本信息)
}
func (x *FindBasicPlanResponse) Reset() {
*x = FindBasicPlanResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindBasicPlanResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindBasicPlanResponse) ProtoMessage() {}
func (x *FindBasicPlanResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_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 FindBasicPlanResponse.ProtoReflect.Descriptor instead.
func (*FindBasicPlanResponse) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{7}
}
func (x *FindBasicPlanResponse) GetPlan() *Plan {
if x != nil {
return x.Plan
}
return nil
}
// 计算套餐数量
type CountAllEnabledPlansRequest struct {
state protoimpl.MessageState
@@ -620,7 +747,7 @@ type CountAllEnabledPlansRequest struct {
func (x *CountAllEnabledPlansRequest) Reset() {
*x = CountAllEnabledPlansRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[6]
mi := &file_service_plan_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -633,7 +760,7 @@ func (x *CountAllEnabledPlansRequest) String() string {
func (*CountAllEnabledPlansRequest) ProtoMessage() {}
func (x *CountAllEnabledPlansRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[6]
mi := &file_service_plan_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -646,7 +773,7 @@ func (x *CountAllEnabledPlansRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CountAllEnabledPlansRequest.ProtoReflect.Descriptor instead.
func (*CountAllEnabledPlansRequest) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{6}
return file_service_plan_proto_rawDescGZIP(), []int{8}
}
// 列出单页套餐
@@ -662,7 +789,7 @@ type ListEnabledPlansRequest struct {
func (x *ListEnabledPlansRequest) Reset() {
*x = ListEnabledPlansRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[7]
mi := &file_service_plan_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -675,7 +802,7 @@ func (x *ListEnabledPlansRequest) String() string {
func (*ListEnabledPlansRequest) ProtoMessage() {}
func (x *ListEnabledPlansRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[7]
mi := &file_service_plan_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -688,7 +815,7 @@ func (x *ListEnabledPlansRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListEnabledPlansRequest.ProtoReflect.Descriptor instead.
func (*ListEnabledPlansRequest) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{7}
return file_service_plan_proto_rawDescGZIP(), []int{9}
}
func (x *ListEnabledPlansRequest) GetOffset() int64 {
@@ -716,7 +843,7 @@ type ListEnabledPlansResponse struct {
func (x *ListEnabledPlansResponse) Reset() {
*x = ListEnabledPlansResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[8]
mi := &file_service_plan_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -729,7 +856,7 @@ func (x *ListEnabledPlansResponse) String() string {
func (*ListEnabledPlansResponse) ProtoMessage() {}
func (x *ListEnabledPlansResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[8]
mi := &file_service_plan_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -742,7 +869,7 @@ func (x *ListEnabledPlansResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListEnabledPlansResponse.ProtoReflect.Descriptor instead.
func (*ListEnabledPlansResponse) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{8}
return file_service_plan_proto_rawDescGZIP(), []int{10}
}
func (x *ListEnabledPlansResponse) GetPlans() []*Plan {
@@ -762,7 +889,7 @@ type FindAllAvailablePlansRequest struct {
func (x *FindAllAvailablePlansRequest) Reset() {
*x = FindAllAvailablePlansRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[9]
mi := &file_service_plan_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -775,7 +902,7 @@ func (x *FindAllAvailablePlansRequest) String() string {
func (*FindAllAvailablePlansRequest) ProtoMessage() {}
func (x *FindAllAvailablePlansRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[9]
mi := &file_service_plan_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -788,7 +915,7 @@ func (x *FindAllAvailablePlansRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use FindAllAvailablePlansRequest.ProtoReflect.Descriptor instead.
func (*FindAllAvailablePlansRequest) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{9}
return file_service_plan_proto_rawDescGZIP(), []int{11}
}
type FindAllAvailablePlansResponse struct {
@@ -802,7 +929,7 @@ type FindAllAvailablePlansResponse struct {
func (x *FindAllAvailablePlansResponse) Reset() {
*x = FindAllAvailablePlansResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[10]
mi := &file_service_plan_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -815,7 +942,7 @@ func (x *FindAllAvailablePlansResponse) String() string {
func (*FindAllAvailablePlansResponse) ProtoMessage() {}
func (x *FindAllAvailablePlansResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[10]
mi := &file_service_plan_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -828,7 +955,7 @@ func (x *FindAllAvailablePlansResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use FindAllAvailablePlansResponse.ProtoReflect.Descriptor instead.
func (*FindAllAvailablePlansResponse) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{10}
return file_service_plan_proto_rawDescGZIP(), []int{12}
}
func (x *FindAllAvailablePlansResponse) GetPlans() []*Plan {
@@ -838,6 +965,92 @@ func (x *FindAllAvailablePlansResponse) GetPlans() []*Plan {
return nil
}
// 列出所有可用的套餐的基本信息
type FindAllAvailableBasicPlansRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *FindAllAvailableBasicPlansRequest) Reset() {
*x = FindAllAvailableBasicPlansRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllAvailableBasicPlansRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllAvailableBasicPlansRequest) ProtoMessage() {}
func (x *FindAllAvailableBasicPlansRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[13]
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 FindAllAvailableBasicPlansRequest.ProtoReflect.Descriptor instead.
func (*FindAllAvailableBasicPlansRequest) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{13}
}
type FindAllAvailableBasicPlansResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Plans []*Plan `protobuf:"bytes,1,rep,name=plans,proto3" json:"plans,omitempty"` // 套餐列表
}
func (x *FindAllAvailableBasicPlansResponse) Reset() {
*x = FindAllAvailableBasicPlansResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllAvailableBasicPlansResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllAvailableBasicPlansResponse) ProtoMessage() {}
func (x *FindAllAvailableBasicPlansResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[14]
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 FindAllAvailableBasicPlansResponse.ProtoReflect.Descriptor instead.
func (*FindAllAvailableBasicPlansResponse) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{14}
}
func (x *FindAllAvailableBasicPlansResponse) GetPlans() []*Plan {
if x != nil {
return x.Plans
}
return nil
}
// 对套餐进行排序
type SortPlansRequest struct {
state protoimpl.MessageState
@@ -850,7 +1063,7 @@ type SortPlansRequest struct {
func (x *SortPlansRequest) Reset() {
*x = SortPlansRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_plan_proto_msgTypes[11]
mi := &file_service_plan_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -863,7 +1076,7 @@ func (x *SortPlansRequest) String() string {
func (*SortPlansRequest) ProtoMessage() {}
func (x *SortPlansRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_plan_proto_msgTypes[11]
mi := &file_service_plan_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -876,7 +1089,7 @@ func (x *SortPlansRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SortPlansRequest.ProtoReflect.Descriptor instead.
func (*SortPlansRequest) Descriptor() ([]byte, []int) {
return file_service_plan_proto_rawDescGZIP(), []int{11}
return file_service_plan_proto_rawDescGZIP(), []int{15}
}
func (x *SortPlansRequest) GetPlanIds() []int64 {
@@ -893,7 +1106,7 @@ var file_service_plan_proto_rawDesc = []byte{
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x17, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 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, 0xa9, 0x06, 0x0a,
0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x07, 0x0a,
0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
@@ -903,148 +1116,179 @@ var file_service_plan_proto_rawDesc = []byte{
0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53,
0x4f, 0x4e, 0x12, 0x3c, 0x0a, 0x19, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18,
0x14, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68,
0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75,
0x72, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x46, 0x75,
0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c,
0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10,
0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50,
0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x64,
0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50,
0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74,
0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c,
0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f,
0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18,
0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c,
0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79,
0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x79, 0x65, 0x61,
0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61,
0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x19,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52,
0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64,
0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f,
0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57,
0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79,
0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57,
0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68,
0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c,
0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x15, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65,
0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x2c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c,
0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c,
0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e,
0x49, 0x64, 0x22, 0xc1, 0x07, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61,
0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x03,
0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x66,
0x66, 0x69, 0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0c, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74,
0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x3c, 0x0a, 0x19, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74,
0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x53, 0x4f,
0x4e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64,
0x74, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x53,
0x4f, 0x4e, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61,
0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73,
0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73,
0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c,
0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x04, 0x20, 0x01,
0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0c, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a,
0x0a, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53,
0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
0x4f, 0x4e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x61,
0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74,
0x68, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f,
0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02,
0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02,
0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28,
0x0a, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63,
0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61,
0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61,
0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x79, 0x65, 0x61, 0x72,
0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x79,
0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x79,
0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05,
0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x3c,
0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d,
0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x05, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61,
0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x61, 0x69, 0x6c,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x28,
0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79,
0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x64, 0x61, 0x69, 0x6c,
0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x64, 0x61, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x64, 0x61, 0x69,
0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c,
0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b, 0x6d, 0x6f, 0x6e,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b, 0x6d, 0x6f, 0x6e,
0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16,
0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x22, 0xd5, 0x06, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06,
0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c,
0x61, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73,
0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c,
0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10,
0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53, 0x4f, 0x4e,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x46,
0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x53,
0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50,
0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10,
0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x2e, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69,
0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x61,
0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65,
0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50,
0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c,
0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x73,
0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20,
0x0a, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x02, 0x52, 0x0b, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65,
0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24,
0x0a, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d,
0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3c,
0x0a, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28,
0x03, 0x52, 0x19, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65,
0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b,
0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28,
0x03, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63,
0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2b,
0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x16, 0x46,
0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x37, 0x0a,
0x17, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x6e,
0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41,
0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x45, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x18,
0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x73,
0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x55,
0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x17, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69,
0x7a, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70,
0x6c, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61,
0x6e, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70,
0x6c, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x1c, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08,
0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x2e,
0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50, 0x6c, 0x61, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x22, 0x35,
0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50, 0x6c, 0x61, 0x6e, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52,
0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c,
0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x22, 0x45, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x18, 0x4c,
0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x6e,
0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x41,
0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, 0x0a, 0x1d, 0x46, 0x69, 0x6e, 0x64, 0x41,
0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x6e,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61,
0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64,
0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x6e,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, 0x0a, 0x1d, 0x46, 0x69, 0x6e, 0x64,
0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x6e,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x70, 0x6c, 0x61,
0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c,
0x61, 0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x2c, 0x0a, 0x10, 0x53, 0x6f, 0x72,
0x74, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
0x07, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07,
0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x73, 0x32, 0xaf, 0x04, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x6e,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70,
0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c,
0x61, 0x6e, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c,
0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52,
0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x64, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e,
0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4a,
0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61,
0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c,
0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64,
0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x69,
0x63, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x44, 0x0a,
0x22, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
0x65, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x70, 0x6c,
0x61, 0x6e, 0x73, 0x22, 0x2c, 0x0a, 0x10, 0x53, 0x6f, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x49,
0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64,
0x73, 0x32, 0xe2, 0x05, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12,
0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33,
0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x15, 0x2e, 0x70,
0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63,
0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61,
0x6e, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61,
0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x69,
0x63, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x42,
0x61, 0x73, 0x69, 0x63, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x19, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50, 0x6c,
0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x14, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61,
0x6e, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
@@ -1061,11 +1305,18 @@ var file_service_plan_proto_rawDesc = []byte{
0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x50, 0x6c,
0x61, 0x6e, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x50, 0x6c, 0x61,
0x6e, 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,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x1a, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c,
0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50,
0x6c, 0x61, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c,
0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50,
0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
0x65, 0x42, 0x61, 0x73, 0x69, 0x63, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x73,
0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x6e, 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 (
@@ -1080,49 +1331,59 @@ func file_service_plan_proto_rawDescGZIP() []byte {
return file_service_plan_proto_rawDescData
}
var file_service_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_service_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
var file_service_plan_proto_goTypes = []interface{}{
(*CreatePlanRequest)(nil), // 0: pb.CreatePlanRequest
(*CreatePlanResponse)(nil), // 1: pb.CreatePlanResponse
(*UpdatePlanRequest)(nil), // 2: pb.UpdatePlanRequest
(*DeletePlanRequest)(nil), // 3: pb.DeletePlanRequest
(*FindEnabledPlanRequest)(nil), // 4: pb.FindEnabledPlanRequest
(*FindEnabledPlanResponse)(nil), // 5: pb.FindEnabledPlanResponse
(*CountAllEnabledPlansRequest)(nil), // 6: pb.CountAllEnabledPlansRequest
(*ListEnabledPlansRequest)(nil), // 7: pb.ListEnabledPlansRequest
(*ListEnabledPlansResponse)(nil), // 8: pb.ListEnabledPlansResponse
(*FindAllAvailablePlansRequest)(nil), // 9: pb.FindAllAvailablePlansRequest
(*FindAllAvailablePlansResponse)(nil), // 10: pb.FindAllAvailablePlansResponse
(*SortPlansRequest)(nil), // 11: pb.SortPlansRequest
(*Plan)(nil), // 12: pb.Plan
(*RPCSuccess)(nil), // 13: pb.RPCSuccess
(*RPCCountResponse)(nil), // 14: pb.RPCCountResponse
(*CreatePlanRequest)(nil), // 0: pb.CreatePlanRequest
(*CreatePlanResponse)(nil), // 1: pb.CreatePlanResponse
(*UpdatePlanRequest)(nil), // 2: pb.UpdatePlanRequest
(*DeletePlanRequest)(nil), // 3: pb.DeletePlanRequest
(*FindEnabledPlanRequest)(nil), // 4: pb.FindEnabledPlanRequest
(*FindEnabledPlanResponse)(nil), // 5: pb.FindEnabledPlanResponse
(*FindBasicPlanRequest)(nil), // 6: pb.FindBasicPlanRequest
(*FindBasicPlanResponse)(nil), // 7: pb.FindBasicPlanResponse
(*CountAllEnabledPlansRequest)(nil), // 8: pb.CountAllEnabledPlansRequest
(*ListEnabledPlansRequest)(nil), // 9: pb.ListEnabledPlansRequest
(*ListEnabledPlansResponse)(nil), // 10: pb.ListEnabledPlansResponse
(*FindAllAvailablePlansRequest)(nil), // 11: pb.FindAllAvailablePlansRequest
(*FindAllAvailablePlansResponse)(nil), // 12: pb.FindAllAvailablePlansResponse
(*FindAllAvailableBasicPlansRequest)(nil), // 13: pb.FindAllAvailableBasicPlansRequest
(*FindAllAvailableBasicPlansResponse)(nil), // 14: pb.FindAllAvailableBasicPlansResponse
(*SortPlansRequest)(nil), // 15: pb.SortPlansRequest
(*Plan)(nil), // 16: pb.Plan
(*RPCSuccess)(nil), // 17: pb.RPCSuccess
(*RPCCountResponse)(nil), // 18: pb.RPCCountResponse
}
var file_service_plan_proto_depIdxs = []int32{
12, // 0: pb.FindEnabledPlanResponse.plan:type_name -> pb.Plan
12, // 1: pb.ListEnabledPlansResponse.plans:type_name -> pb.Plan
12, // 2: pb.FindAllAvailablePlansResponse.plans:type_name -> pb.Plan
0, // 3: pb.PlanService.createPlan:input_type -> pb.CreatePlanRequest
2, // 4: pb.PlanService.updatePlan:input_type -> pb.UpdatePlanRequest
3, // 5: pb.PlanService.deletePlan:input_type -> pb.DeletePlanRequest
4, // 6: pb.PlanService.findEnabledPlan:input_type -> pb.FindEnabledPlanRequest
6, // 7: pb.PlanService.countAllEnabledPlans:input_type -> pb.CountAllEnabledPlansRequest
7, // 8: pb.PlanService.listEnabledPlans:input_type -> pb.ListEnabledPlansRequest
9, // 9: pb.PlanService.findAllAvailablePlans:input_type -> pb.FindAllAvailablePlansRequest
11, // 10: pb.PlanService.sortPlans:input_type -> pb.SortPlansRequest
1, // 11: pb.PlanService.createPlan:output_type -> pb.CreatePlanResponse
13, // 12: pb.PlanService.updatePlan:output_type -> pb.RPCSuccess
13, // 13: pb.PlanService.deletePlan:output_type -> pb.RPCSuccess
5, // 14: pb.PlanService.findEnabledPlan:output_type -> pb.FindEnabledPlanResponse
14, // 15: pb.PlanService.countAllEnabledPlans:output_type -> pb.RPCCountResponse
8, // 16: pb.PlanService.listEnabledPlans:output_type -> pb.ListEnabledPlansResponse
10, // 17: pb.PlanService.findAllAvailablePlans:output_type -> pb.FindAllAvailablePlansResponse
13, // 18: pb.PlanService.sortPlans:output_type -> pb.RPCSuccess
11, // [11:19] is the sub-list for method output_type
3, // [3:11] 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
16, // 0: pb.FindEnabledPlanResponse.plan:type_name -> pb.Plan
16, // 1: pb.FindBasicPlanResponse.plan:type_name -> pb.Plan
16, // 2: pb.ListEnabledPlansResponse.plans:type_name -> pb.Plan
16, // 3: pb.FindAllAvailablePlansResponse.plans:type_name -> pb.Plan
16, // 4: pb.FindAllAvailableBasicPlansResponse.plans:type_name -> pb.Plan
0, // 5: pb.PlanService.createPlan:input_type -> pb.CreatePlanRequest
2, // 6: pb.PlanService.updatePlan:input_type -> pb.UpdatePlanRequest
3, // 7: pb.PlanService.deletePlan:input_type -> pb.DeletePlanRequest
4, // 8: pb.PlanService.findEnabledPlan:input_type -> pb.FindEnabledPlanRequest
6, // 9: pb.PlanService.findBasicPlan:input_type -> pb.FindBasicPlanRequest
8, // 10: pb.PlanService.countAllEnabledPlans:input_type -> pb.CountAllEnabledPlansRequest
9, // 11: pb.PlanService.listEnabledPlans:input_type -> pb.ListEnabledPlansRequest
11, // 12: pb.PlanService.findAllAvailablePlans:input_type -> pb.FindAllAvailablePlansRequest
13, // 13: pb.PlanService.findAllAvailableBasicPlans:input_type -> pb.FindAllAvailableBasicPlansRequest
15, // 14: pb.PlanService.sortPlans:input_type -> pb.SortPlansRequest
1, // 15: pb.PlanService.createPlan:output_type -> pb.CreatePlanResponse
17, // 16: pb.PlanService.updatePlan:output_type -> pb.RPCSuccess
17, // 17: pb.PlanService.deletePlan:output_type -> pb.RPCSuccess
5, // 18: pb.PlanService.findEnabledPlan:output_type -> pb.FindEnabledPlanResponse
7, // 19: pb.PlanService.findBasicPlan:output_type -> pb.FindBasicPlanResponse
18, // 20: pb.PlanService.countAllEnabledPlans:output_type -> pb.RPCCountResponse
10, // 21: pb.PlanService.listEnabledPlans:output_type -> pb.ListEnabledPlansResponse
12, // 22: pb.PlanService.findAllAvailablePlans:output_type -> pb.FindAllAvailablePlansResponse
14, // 23: pb.PlanService.findAllAvailableBasicPlans:output_type -> pb.FindAllAvailableBasicPlansResponse
17, // 24: pb.PlanService.sortPlans:output_type -> pb.RPCSuccess
15, // [15:25] is the sub-list for method output_type
5, // [5:15] 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_plan_proto_init() }
@@ -1206,7 +1467,7 @@ func file_service_plan_proto_init() {
}
}
file_service_plan_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CountAllEnabledPlansRequest); i {
switch v := v.(*FindBasicPlanRequest); i {
case 0:
return &v.state
case 1:
@@ -1218,7 +1479,7 @@ func file_service_plan_proto_init() {
}
}
file_service_plan_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEnabledPlansRequest); i {
switch v := v.(*FindBasicPlanResponse); i {
case 0:
return &v.state
case 1:
@@ -1230,7 +1491,7 @@ func file_service_plan_proto_init() {
}
}
file_service_plan_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEnabledPlansResponse); i {
switch v := v.(*CountAllEnabledPlansRequest); i {
case 0:
return &v.state
case 1:
@@ -1242,7 +1503,7 @@ func file_service_plan_proto_init() {
}
}
file_service_plan_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailablePlansRequest); i {
switch v := v.(*ListEnabledPlansRequest); i {
case 0:
return &v.state
case 1:
@@ -1254,7 +1515,7 @@ func file_service_plan_proto_init() {
}
}
file_service_plan_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailablePlansResponse); i {
switch v := v.(*ListEnabledPlansResponse); i {
case 0:
return &v.state
case 1:
@@ -1266,6 +1527,54 @@ func file_service_plan_proto_init() {
}
}
file_service_plan_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailablePlansRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_plan_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailablePlansResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_plan_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailableBasicPlansRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_plan_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailableBasicPlansResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_plan_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SortPlansRequest); i {
case 0:
return &v.state
@@ -1284,7 +1593,7 @@ func file_service_plan_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_plan_proto_rawDesc,
NumEnums: 0,
NumMessages: 12,
NumMessages: 16,
NumExtensions: 0,
NumServices: 1,
},

View File

@@ -19,14 +19,16 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
PlanService_CreatePlan_FullMethodName = "/pb.PlanService/createPlan"
PlanService_UpdatePlan_FullMethodName = "/pb.PlanService/updatePlan"
PlanService_DeletePlan_FullMethodName = "/pb.PlanService/deletePlan"
PlanService_FindEnabledPlan_FullMethodName = "/pb.PlanService/findEnabledPlan"
PlanService_CountAllEnabledPlans_FullMethodName = "/pb.PlanService/countAllEnabledPlans"
PlanService_ListEnabledPlans_FullMethodName = "/pb.PlanService/listEnabledPlans"
PlanService_FindAllAvailablePlans_FullMethodName = "/pb.PlanService/findAllAvailablePlans"
PlanService_SortPlans_FullMethodName = "/pb.PlanService/sortPlans"
PlanService_CreatePlan_FullMethodName = "/pb.PlanService/createPlan"
PlanService_UpdatePlan_FullMethodName = "/pb.PlanService/updatePlan"
PlanService_DeletePlan_FullMethodName = "/pb.PlanService/deletePlan"
PlanService_FindEnabledPlan_FullMethodName = "/pb.PlanService/findEnabledPlan"
PlanService_FindBasicPlan_FullMethodName = "/pb.PlanService/findBasicPlan"
PlanService_CountAllEnabledPlans_FullMethodName = "/pb.PlanService/countAllEnabledPlans"
PlanService_ListEnabledPlans_FullMethodName = "/pb.PlanService/listEnabledPlans"
PlanService_FindAllAvailablePlans_FullMethodName = "/pb.PlanService/findAllAvailablePlans"
PlanService_FindAllAvailableBasicPlans_FullMethodName = "/pb.PlanService/findAllAvailableBasicPlans"
PlanService_SortPlans_FullMethodName = "/pb.PlanService/sortPlans"
)
// PlanServiceClient is the client API for PlanService service.
@@ -41,12 +43,16 @@ type PlanServiceClient interface {
DeletePlan(ctx context.Context, in *DeletePlanRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 查找单个套餐
FindEnabledPlan(ctx context.Context, in *FindEnabledPlanRequest, opts ...grpc.CallOption) (*FindEnabledPlanResponse, error)
// 查找套餐基本信息
FindBasicPlan(ctx context.Context, in *FindBasicPlanRequest, opts ...grpc.CallOption) (*FindBasicPlanResponse, error)
// 计算套餐数量
CountAllEnabledPlans(ctx context.Context, in *CountAllEnabledPlansRequest, opts ...grpc.CallOption) (*RPCCountResponse, error)
// 列出单页套餐
ListEnabledPlans(ctx context.Context, in *ListEnabledPlansRequest, opts ...grpc.CallOption) (*ListEnabledPlansResponse, error)
// 列出所有可用的套餐
FindAllAvailablePlans(ctx context.Context, in *FindAllAvailablePlansRequest, opts ...grpc.CallOption) (*FindAllAvailablePlansResponse, error)
// 列出所有可用的套餐的基本信息
FindAllAvailableBasicPlans(ctx context.Context, in *FindAllAvailableBasicPlansRequest, opts ...grpc.CallOption) (*FindAllAvailableBasicPlansResponse, error)
// 对套餐进行排序
SortPlans(ctx context.Context, in *SortPlansRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
}
@@ -95,6 +101,15 @@ func (c *planServiceClient) FindEnabledPlan(ctx context.Context, in *FindEnabled
return out, nil
}
func (c *planServiceClient) FindBasicPlan(ctx context.Context, in *FindBasicPlanRequest, opts ...grpc.CallOption) (*FindBasicPlanResponse, error) {
out := new(FindBasicPlanResponse)
err := c.cc.Invoke(ctx, PlanService_FindBasicPlan_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *planServiceClient) CountAllEnabledPlans(ctx context.Context, in *CountAllEnabledPlansRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) {
out := new(RPCCountResponse)
err := c.cc.Invoke(ctx, PlanService_CountAllEnabledPlans_FullMethodName, in, out, opts...)
@@ -122,6 +137,15 @@ func (c *planServiceClient) FindAllAvailablePlans(ctx context.Context, in *FindA
return out, nil
}
func (c *planServiceClient) FindAllAvailableBasicPlans(ctx context.Context, in *FindAllAvailableBasicPlansRequest, opts ...grpc.CallOption) (*FindAllAvailableBasicPlansResponse, error) {
out := new(FindAllAvailableBasicPlansResponse)
err := c.cc.Invoke(ctx, PlanService_FindAllAvailableBasicPlans_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *planServiceClient) SortPlans(ctx context.Context, in *SortPlansRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PlanService_SortPlans_FullMethodName, in, out, opts...)
@@ -143,12 +167,16 @@ type PlanServiceServer interface {
DeletePlan(context.Context, *DeletePlanRequest) (*RPCSuccess, error)
// 查找单个套餐
FindEnabledPlan(context.Context, *FindEnabledPlanRequest) (*FindEnabledPlanResponse, error)
// 查找套餐基本信息
FindBasicPlan(context.Context, *FindBasicPlanRequest) (*FindBasicPlanResponse, error)
// 计算套餐数量
CountAllEnabledPlans(context.Context, *CountAllEnabledPlansRequest) (*RPCCountResponse, error)
// 列出单页套餐
ListEnabledPlans(context.Context, *ListEnabledPlansRequest) (*ListEnabledPlansResponse, error)
// 列出所有可用的套餐
FindAllAvailablePlans(context.Context, *FindAllAvailablePlansRequest) (*FindAllAvailablePlansResponse, error)
// 列出所有可用的套餐的基本信息
FindAllAvailableBasicPlans(context.Context, *FindAllAvailableBasicPlansRequest) (*FindAllAvailableBasicPlansResponse, error)
// 对套餐进行排序
SortPlans(context.Context, *SortPlansRequest) (*RPCSuccess, error)
}
@@ -169,6 +197,9 @@ func (UnimplementedPlanServiceServer) DeletePlan(context.Context, *DeletePlanReq
func (UnimplementedPlanServiceServer) FindEnabledPlan(context.Context, *FindEnabledPlanRequest) (*FindEnabledPlanResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindEnabledPlan not implemented")
}
func (UnimplementedPlanServiceServer) FindBasicPlan(context.Context, *FindBasicPlanRequest) (*FindBasicPlanResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindBasicPlan not implemented")
}
func (UnimplementedPlanServiceServer) CountAllEnabledPlans(context.Context, *CountAllEnabledPlansRequest) (*RPCCountResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CountAllEnabledPlans not implemented")
}
@@ -178,6 +209,9 @@ func (UnimplementedPlanServiceServer) ListEnabledPlans(context.Context, *ListEna
func (UnimplementedPlanServiceServer) FindAllAvailablePlans(context.Context, *FindAllAvailablePlansRequest) (*FindAllAvailablePlansResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllAvailablePlans not implemented")
}
func (UnimplementedPlanServiceServer) FindAllAvailableBasicPlans(context.Context, *FindAllAvailableBasicPlansRequest) (*FindAllAvailableBasicPlansResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllAvailableBasicPlans not implemented")
}
func (UnimplementedPlanServiceServer) SortPlans(context.Context, *SortPlansRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method SortPlans not implemented")
}
@@ -265,6 +299,24 @@ func _PlanService_FindEnabledPlan_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler)
}
func _PlanService_FindBasicPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindBasicPlanRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PlanServiceServer).FindBasicPlan(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PlanService_FindBasicPlan_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PlanServiceServer).FindBasicPlan(ctx, req.(*FindBasicPlanRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PlanService_CountAllEnabledPlans_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CountAllEnabledPlansRequest)
if err := dec(in); err != nil {
@@ -319,6 +371,24 @@ func _PlanService_FindAllAvailablePlans_Handler(srv interface{}, ctx context.Con
return interceptor(ctx, in, info, handler)
}
func _PlanService_FindAllAvailableBasicPlans_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindAllAvailableBasicPlansRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PlanServiceServer).FindAllAvailableBasicPlans(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PlanService_FindAllAvailableBasicPlans_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PlanServiceServer).FindAllAvailableBasicPlans(ctx, req.(*FindAllAvailableBasicPlansRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PlanService_SortPlans_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SortPlansRequest)
if err := dec(in); err != nil {
@@ -360,6 +430,10 @@ var PlanService_ServiceDesc = grpc.ServiceDesc{
MethodName: "findEnabledPlan",
Handler: _PlanService_FindEnabledPlan_Handler,
},
{
MethodName: "findBasicPlan",
Handler: _PlanService_FindBasicPlan_Handler,
},
{
MethodName: "countAllEnabledPlans",
Handler: _PlanService_CountAllEnabledPlans_Handler,
@@ -372,6 +446,10 @@ var PlanService_ServiceDesc = grpc.ServiceDesc{
MethodName: "findAllAvailablePlans",
Handler: _PlanService_FindAllAvailablePlans_Handler,
},
{
MethodName: "findAllAvailableBasicPlans",
Handler: _PlanService_FindAllAvailableBasicPlans_Handler,
},
{
MethodName: "sortPlans",
Handler: _PlanService_SortPlans_Handler,

View File

@@ -0,0 +1,966 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: service_post.proto
package pb
import (
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)
)
// 创建文章
type CreatePostRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryId int64 `protobuf:"varint,1,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 文章分类ID
Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // 类型normal, url
ProductCode string `protobuf:"bytes,3,opt,name=productCode,proto3" json:"productCode,omitempty"` // 产品代号
Subject string `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"` // 标题
Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` // 跳转的URLtype=url
Body string `protobuf:"bytes,6,opt,name=body,proto3" json:"body,omitempty"` // 文章内容type=normal
}
func (x *CreatePostRequest) Reset() {
*x = CreatePostRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreatePostRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreatePostRequest) ProtoMessage() {}
func (x *CreatePostRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 CreatePostRequest.ProtoReflect.Descriptor instead.
func (*CreatePostRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{0}
}
func (x *CreatePostRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
func (x *CreatePostRequest) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *CreatePostRequest) GetProductCode() string {
if x != nil {
return x.ProductCode
}
return ""
}
func (x *CreatePostRequest) GetSubject() string {
if x != nil {
return x.Subject
}
return ""
}
func (x *CreatePostRequest) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *CreatePostRequest) GetBody() string {
if x != nil {
return x.Body
}
return ""
}
type CreatePostResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostId int64 `protobuf:"varint,1,opt,name=postId,proto3" json:"postId,omitempty"` // 文章ID
}
func (x *CreatePostResponse) Reset() {
*x = CreatePostResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreatePostResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreatePostResponse) ProtoMessage() {}
func (x *CreatePostResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 CreatePostResponse.ProtoReflect.Descriptor instead.
func (*CreatePostResponse) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{1}
}
func (x *CreatePostResponse) GetPostId() int64 {
if x != nil {
return x.PostId
}
return 0
}
// 修改文章
type UpdatePostRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostId int64 `protobuf:"varint,1,opt,name=postId,proto3" json:"postId,omitempty"` // 文章ID
PostCategoryId int64 `protobuf:"varint,2,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 文章分类ID
ProductCode string `protobuf:"bytes,3,opt,name=productCode,proto3" json:"productCode,omitempty"` // 产品代号
Subject string `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"` // 标题
Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` // 类型normal, url
Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` // 跳转的URLtype=url
Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"` // 文章内容type=normal
}
func (x *UpdatePostRequest) Reset() {
*x = UpdatePostRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdatePostRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdatePostRequest) ProtoMessage() {}
func (x *UpdatePostRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 UpdatePostRequest.ProtoReflect.Descriptor instead.
func (*UpdatePostRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{2}
}
func (x *UpdatePostRequest) GetPostId() int64 {
if x != nil {
return x.PostId
}
return 0
}
func (x *UpdatePostRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
func (x *UpdatePostRequest) GetProductCode() string {
if x != nil {
return x.ProductCode
}
return ""
}
func (x *UpdatePostRequest) GetSubject() string {
if x != nil {
return x.Subject
}
return ""
}
func (x *UpdatePostRequest) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *UpdatePostRequest) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *UpdatePostRequest) GetBody() string {
if x != nil {
return x.Body
}
return ""
}
// 删除文章
type DeletePostRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostId int64 `protobuf:"varint,1,opt,name=postId,proto3" json:"postId,omitempty"` // 文章ID
}
func (x *DeletePostRequest) Reset() {
*x = DeletePostRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeletePostRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeletePostRequest) ProtoMessage() {}
func (x *DeletePostRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 DeletePostRequest.ProtoReflect.Descriptor instead.
func (*DeletePostRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{3}
}
func (x *DeletePostRequest) GetPostId() int64 {
if x != nil {
return x.PostId
}
return 0
}
// 发布文章
type PublishPostRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostId int64 `protobuf:"varint,1,opt,name=postId,proto3" json:"postId,omitempty"` // 文章ID
}
func (x *PublishPostRequest) Reset() {
*x = PublishPostRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PublishPostRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PublishPostRequest) ProtoMessage() {}
func (x *PublishPostRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 PublishPostRequest.ProtoReflect.Descriptor instead.
func (*PublishPostRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{4}
}
func (x *PublishPostRequest) GetPostId() int64 {
if x != nil {
return x.PostId
}
return 0
}
// 计算文章数量
type CountPostsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryId int64 `protobuf:"varint,1,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
ProductCode string `protobuf:"bytes,2,opt,name=productCode,proto3" json:"productCode,omitempty"` // 产品代号
PublishedOnly bool `protobuf:"varint,3,opt,name=publishedOnly,proto3" json:"publishedOnly,omitempty"` // 只列出已发布的
}
func (x *CountPostsRequest) Reset() {
*x = CountPostsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CountPostsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CountPostsRequest) ProtoMessage() {}
func (x *CountPostsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 CountPostsRequest.ProtoReflect.Descriptor instead.
func (*CountPostsRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{5}
}
func (x *CountPostsRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
func (x *CountPostsRequest) GetProductCode() string {
if x != nil {
return x.ProductCode
}
return ""
}
func (x *CountPostsRequest) GetPublishedOnly() bool {
if x != nil {
return x.PublishedOnly
}
return false
}
// 列出单页文章
type ListPostsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
ProductCode string `protobuf:"bytes,3,opt,name=productCode,proto3" json:"productCode,omitempty"` // 产品代号
PostCategoryId int64 `protobuf:"varint,4,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
PostCategoryCode string `protobuf:"bytes,5,opt,name=postCategoryCode,proto3" json:"postCategoryCode,omitempty"` // 分类代号
ExcludingPostCategoryCode string `protobuf:"bytes,6,opt,name=excludingPostCategoryCode,proto3" json:"excludingPostCategoryCode,omitempty"` // 排除的分类代号
PublishedOnly bool `protobuf:"varint,7,opt,name=publishedOnly,proto3" json:"publishedOnly,omitempty"` // 只列出已发布的
ContainsBody bool `protobuf:"varint,8,opt,name=containsBody,proto3" json:"containsBody,omitempty"` // 是否包含文章内容
}
func (x *ListPostsRequest) Reset() {
*x = ListPostsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListPostsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListPostsRequest) ProtoMessage() {}
func (x *ListPostsRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 ListPostsRequest.ProtoReflect.Descriptor instead.
func (*ListPostsRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{6}
}
func (x *ListPostsRequest) GetOffset() int64 {
if x != nil {
return x.Offset
}
return 0
}
func (x *ListPostsRequest) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
func (x *ListPostsRequest) GetProductCode() string {
if x != nil {
return x.ProductCode
}
return ""
}
func (x *ListPostsRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
func (x *ListPostsRequest) GetPostCategoryCode() string {
if x != nil {
return x.PostCategoryCode
}
return ""
}
func (x *ListPostsRequest) GetExcludingPostCategoryCode() string {
if x != nil {
return x.ExcludingPostCategoryCode
}
return ""
}
func (x *ListPostsRequest) GetPublishedOnly() bool {
if x != nil {
return x.PublishedOnly
}
return false
}
func (x *ListPostsRequest) GetContainsBody() bool {
if x != nil {
return x.ContainsBody
}
return false
}
type ListPostsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Posts []*Post `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"` // 文章列表
}
func (x *ListPostsResponse) Reset() {
*x = ListPostsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListPostsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListPostsResponse) ProtoMessage() {}
func (x *ListPostsResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_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 ListPostsResponse.ProtoReflect.Descriptor instead.
func (*ListPostsResponse) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{7}
}
func (x *ListPostsResponse) GetPosts() []*Post {
if x != nil {
return x.Posts
}
return nil
}
// 查询单篇文章
type FindPostRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostId int64 `protobuf:"varint,1,opt,name=postId,proto3" json:"postId,omitempty"` // 文章ID
}
func (x *FindPostRequest) Reset() {
*x = FindPostRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindPostRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindPostRequest) ProtoMessage() {}
func (x *FindPostRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_proto_msgTypes[8]
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 FindPostRequest.ProtoReflect.Descriptor instead.
func (*FindPostRequest) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{8}
}
func (x *FindPostRequest) GetPostId() int64 {
if x != nil {
return x.PostId
}
return 0
}
type FindPostResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Post *Post `protobuf:"bytes,1,opt,name=post,proto3" json:"post,omitempty"` // 文章信息
}
func (x *FindPostResponse) Reset() {
*x = FindPostResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindPostResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindPostResponse) ProtoMessage() {}
func (x *FindPostResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_proto_msgTypes[9]
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 FindPostResponse.ProtoReflect.Descriptor instead.
func (*FindPostResponse) Descriptor() ([]byte, []int) {
return file_service_post_proto_rawDescGZIP(), []int{9}
}
func (x *FindPostResponse) GetPost() *Post {
if x != nil {
return x.Post
}
return nil
}
var File_service_post_proto protoreflect.FileDescriptor
var file_service_post_proto_rawDesc = []byte{
0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x17, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 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, 0xb1, 0x01, 0x0a,
0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20,
0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04,
0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79,
0x22, 0x2c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0xc9,
0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e,
0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
0x72, 0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43,
0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75,
0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x12, 0x50, 0x75, 0x62, 0x6c, 0x69,
0x73, 0x68, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70,
0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50,
0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x75,
0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xbc, 0x02, 0x0a, 0x10,
0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b,
0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26,
0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64,
0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x43, 0x6f,
0x64, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x50,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67,
0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65,
0x12, 0x24, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x6c,
0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
0x6e, 0x73, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x6f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x33, 0x0a, 0x11, 0x4c, 0x69,
0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x1e, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08,
0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x22,
0x29, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x10, 0x46, 0x69,
0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c,
0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70,
0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x32, 0x97, 0x03, 0x0a,
0x0b, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73,
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 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, 0x33,
0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x70,
0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 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, 0x35, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x50, 0x6f,
0x73, 0x74, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x50,
0x6f, 0x73, 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, 0x39, 0x0a, 0x0a, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x50, 0x6f, 0x73, 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, 0x38, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73,
0x74, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x35, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x13, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 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_post_proto_rawDescOnce sync.Once
file_service_post_proto_rawDescData = file_service_post_proto_rawDesc
)
func file_service_post_proto_rawDescGZIP() []byte {
file_service_post_proto_rawDescOnce.Do(func() {
file_service_post_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_post_proto_rawDescData)
})
return file_service_post_proto_rawDescData
}
var file_service_post_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_service_post_proto_goTypes = []interface{}{
(*CreatePostRequest)(nil), // 0: pb.CreatePostRequest
(*CreatePostResponse)(nil), // 1: pb.CreatePostResponse
(*UpdatePostRequest)(nil), // 2: pb.UpdatePostRequest
(*DeletePostRequest)(nil), // 3: pb.DeletePostRequest
(*PublishPostRequest)(nil), // 4: pb.PublishPostRequest
(*CountPostsRequest)(nil), // 5: pb.CountPostsRequest
(*ListPostsRequest)(nil), // 6: pb.ListPostsRequest
(*ListPostsResponse)(nil), // 7: pb.ListPostsResponse
(*FindPostRequest)(nil), // 8: pb.FindPostRequest
(*FindPostResponse)(nil), // 9: pb.FindPostResponse
(*Post)(nil), // 10: pb.Post
(*RPCSuccess)(nil), // 11: pb.RPCSuccess
(*RPCCountResponse)(nil), // 12: pb.RPCCountResponse
}
var file_service_post_proto_depIdxs = []int32{
10, // 0: pb.ListPostsResponse.posts:type_name -> pb.Post
10, // 1: pb.FindPostResponse.post:type_name -> pb.Post
0, // 2: pb.PostService.createPost:input_type -> pb.CreatePostRequest
2, // 3: pb.PostService.updatePost:input_type -> pb.UpdatePostRequest
3, // 4: pb.PostService.deletePost:input_type -> pb.DeletePostRequest
4, // 5: pb.PostService.publishPost:input_type -> pb.PublishPostRequest
5, // 6: pb.PostService.countPosts:input_type -> pb.CountPostsRequest
6, // 7: pb.PostService.listPosts:input_type -> pb.ListPostsRequest
8, // 8: pb.PostService.findPost:input_type -> pb.FindPostRequest
1, // 9: pb.PostService.createPost:output_type -> pb.CreatePostResponse
11, // 10: pb.PostService.updatePost:output_type -> pb.RPCSuccess
11, // 11: pb.PostService.deletePost:output_type -> pb.RPCSuccess
11, // 12: pb.PostService.publishPost:output_type -> pb.RPCSuccess
12, // 13: pb.PostService.countPosts:output_type -> pb.RPCCountResponse
7, // 14: pb.PostService.listPosts:output_type -> pb.ListPostsResponse
9, // 15: pb.PostService.findPost:output_type -> pb.FindPostResponse
9, // [9:16] is the sub-list for method output_type
2, // [2:9] 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_post_proto_init() }
func file_service_post_proto_init() {
if File_service_post_proto != nil {
return
}
file_models_model_post_proto_init()
file_models_rpc_messages_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_post_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreatePostRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreatePostResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdatePostRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeletePostRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PublishPostRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CountPostsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPostsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPostsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindPostRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindPostResponse); 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_post_proto_rawDesc,
NumEnums: 0,
NumMessages: 10,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_post_proto_goTypes,
DependencyIndexes: file_service_post_proto_depIdxs,
MessageInfos: file_service_post_proto_msgTypes,
}.Build()
File_service_post_proto = out.File
file_service_post_proto_rawDesc = nil
file_service_post_proto_goTypes = nil
file_service_post_proto_depIdxs = nil
}

View File

@@ -0,0 +1,875 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: service_post_category.proto
package pb
import (
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)
)
// 创建分类
type CreatePostCategoryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // 分类名称
Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` // 分类代号
}
func (x *CreatePostCategoryRequest) Reset() {
*x = CreatePostCategoryRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreatePostCategoryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreatePostCategoryRequest) ProtoMessage() {}
func (x *CreatePostCategoryRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 CreatePostCategoryRequest.ProtoReflect.Descriptor instead.
func (*CreatePostCategoryRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{0}
}
func (x *CreatePostCategoryRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *CreatePostCategoryRequest) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
type CreatePostCategoryResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryId int64 `protobuf:"varint,1,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
}
func (x *CreatePostCategoryResponse) Reset() {
*x = CreatePostCategoryResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreatePostCategoryResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreatePostCategoryResponse) ProtoMessage() {}
func (x *CreatePostCategoryResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 CreatePostCategoryResponse.ProtoReflect.Descriptor instead.
func (*CreatePostCategoryResponse) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{1}
}
func (x *CreatePostCategoryResponse) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
// 修改分类
type UpdatePostCategoryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryId int64 `protobuf:"varint,1,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 分类名称
Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` // 分类代号
IsOn bool `protobuf:"varint,4,opt,name=isOn,proto3" json:"isOn,omitempty"` // 是否启用
}
func (x *UpdatePostCategoryRequest) Reset() {
*x = UpdatePostCategoryRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdatePostCategoryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdatePostCategoryRequest) ProtoMessage() {}
func (x *UpdatePostCategoryRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 UpdatePostCategoryRequest.ProtoReflect.Descriptor instead.
func (*UpdatePostCategoryRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{2}
}
func (x *UpdatePostCategoryRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
func (x *UpdatePostCategoryRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *UpdatePostCategoryRequest) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
func (x *UpdatePostCategoryRequest) GetIsOn() bool {
if x != nil {
return x.IsOn
}
return false
}
// 删除分类
type DeletePostCategoryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryId int64 `protobuf:"varint,1,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
}
func (x *DeletePostCategoryRequest) Reset() {
*x = DeletePostCategoryRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeletePostCategoryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeletePostCategoryRequest) ProtoMessage() {}
func (x *DeletePostCategoryRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 DeletePostCategoryRequest.ProtoReflect.Descriptor instead.
func (*DeletePostCategoryRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{3}
}
func (x *DeletePostCategoryRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
// 列出所有分类
type FindAllPostCategoriesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *FindAllPostCategoriesRequest) Reset() {
*x = FindAllPostCategoriesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllPostCategoriesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllPostCategoriesRequest) ProtoMessage() {}
func (x *FindAllPostCategoriesRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 FindAllPostCategoriesRequest.ProtoReflect.Descriptor instead.
func (*FindAllPostCategoriesRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{4}
}
type FindAllPostCategoriesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategories []*PostCategory `protobuf:"bytes,1,rep,name=postCategories,proto3" json:"postCategories,omitempty"` // 分类列表
}
func (x *FindAllPostCategoriesResponse) Reset() {
*x = FindAllPostCategoriesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllPostCategoriesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllPostCategoriesResponse) ProtoMessage() {}
func (x *FindAllPostCategoriesResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 FindAllPostCategoriesResponse.ProtoReflect.Descriptor instead.
func (*FindAllPostCategoriesResponse) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{5}
}
func (x *FindAllPostCategoriesResponse) GetPostCategories() []*PostCategory {
if x != nil {
return x.PostCategories
}
return nil
}
// 列出所有可用分类
type FindAllAvailablePostCategoriesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *FindAllAvailablePostCategoriesRequest) Reset() {
*x = FindAllAvailablePostCategoriesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllAvailablePostCategoriesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllAvailablePostCategoriesRequest) ProtoMessage() {}
func (x *FindAllAvailablePostCategoriesRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 FindAllAvailablePostCategoriesRequest.ProtoReflect.Descriptor instead.
func (*FindAllAvailablePostCategoriesRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{6}
}
type FindAllAvailablePostCategoriesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategories []*PostCategory `protobuf:"bytes,1,rep,name=postCategories,proto3" json:"postCategories,omitempty"` // 分类列表
}
func (x *FindAllAvailablePostCategoriesResponse) Reset() {
*x = FindAllAvailablePostCategoriesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindAllAvailablePostCategoriesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindAllAvailablePostCategoriesResponse) ProtoMessage() {}
func (x *FindAllAvailablePostCategoriesResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_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 FindAllAvailablePostCategoriesResponse.ProtoReflect.Descriptor instead.
func (*FindAllAvailablePostCategoriesResponse) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{7}
}
func (x *FindAllAvailablePostCategoriesResponse) GetPostCategories() []*PostCategory {
if x != nil {
return x.PostCategories
}
return nil
}
// 查询单个分类
type FindPostCategoryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryId int64 `protobuf:"varint,1,opt,name=postCategoryId,proto3" json:"postCategoryId,omitempty"` // 分类ID
}
func (x *FindPostCategoryRequest) Reset() {
*x = FindPostCategoryRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindPostCategoryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindPostCategoryRequest) ProtoMessage() {}
func (x *FindPostCategoryRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_proto_msgTypes[8]
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 FindPostCategoryRequest.ProtoReflect.Descriptor instead.
func (*FindPostCategoryRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{8}
}
func (x *FindPostCategoryRequest) GetPostCategoryId() int64 {
if x != nil {
return x.PostCategoryId
}
return 0
}
type FindPostCategoryResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategory *PostCategory `protobuf:"bytes,1,opt,name=postCategory,proto3" json:"postCategory,omitempty"` // 分类信息
}
func (x *FindPostCategoryResponse) Reset() {
*x = FindPostCategoryResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindPostCategoryResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindPostCategoryResponse) ProtoMessage() {}
func (x *FindPostCategoryResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_proto_msgTypes[9]
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 FindPostCategoryResponse.ProtoReflect.Descriptor instead.
func (*FindPostCategoryResponse) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{9}
}
func (x *FindPostCategoryResponse) GetPostCategory() *PostCategory {
if x != nil {
return x.PostCategory
}
return nil
}
// 对分类进行排序
type SortPostCategoriesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PostCategoryIds []int64 `protobuf:"varint,1,rep,packed,name=postCategoryIds,proto3" json:"postCategoryIds,omitempty"` // 分类ID列表
}
func (x *SortPostCategoriesRequest) Reset() {
*x = SortPostCategoriesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_post_category_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SortPostCategoriesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SortPostCategoriesRequest) ProtoMessage() {}
func (x *SortPostCategoriesRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_post_category_proto_msgTypes[10]
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 SortPostCategoriesRequest.ProtoReflect.Descriptor instead.
func (*SortPostCategoriesRequest) Descriptor() ([]byte, []int) {
return file_service_post_category_proto_rawDescGZIP(), []int{10}
}
func (x *SortPostCategoriesRequest) GetPostCategoryIds() []int64 {
if x != nil {
return x.PostCategoryIds
}
return nil
}
var File_service_post_category_proto protoreflect.FileDescriptor
var file_service_post_category_proto_rawDesc = []byte{
0x0a, 0x1b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63,
0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70,
0x62, 0x1a, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f,
0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 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, 0x43,
0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x22, 0x44, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73,
0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43,
0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x7f, 0x0a, 0x19, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e,
0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 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, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x04,
0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x22, 0x43, 0x0a, 0x19, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43,
0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22,
0x1e, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
0x59, 0x0a, 0x1d, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x38, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69,
0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f,
0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x27, 0x0a, 0x25, 0x46, 0x69,
0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f,
0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x26, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x41, 0x76,
0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67,
0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a,
0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x43,
0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x50,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
0x72, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x18, 0x46, 0x69,
0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70,
0x62, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c,
0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x19,
0x53, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69,
0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x6f, 0x73,
0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x03, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x49, 0x64, 0x73, 0x32, 0xdf, 0x04, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x79, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73,
0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x43, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x12, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x70, 0x62,
0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67,
0x6f, 0x72, 0x79, 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, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x69, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c,
0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41,
0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x1e, 0x66, 0x69, 0x6e, 0x64,
0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x2e,
0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41,
0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x43,
0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x4d, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x43, 0x0a, 0x12, 0x73, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x72, 0x74,
0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 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_post_category_proto_rawDescOnce sync.Once
file_service_post_category_proto_rawDescData = file_service_post_category_proto_rawDesc
)
func file_service_post_category_proto_rawDescGZIP() []byte {
file_service_post_category_proto_rawDescOnce.Do(func() {
file_service_post_category_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_post_category_proto_rawDescData)
})
return file_service_post_category_proto_rawDescData
}
var file_service_post_category_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_service_post_category_proto_goTypes = []interface{}{
(*CreatePostCategoryRequest)(nil), // 0: pb.CreatePostCategoryRequest
(*CreatePostCategoryResponse)(nil), // 1: pb.CreatePostCategoryResponse
(*UpdatePostCategoryRequest)(nil), // 2: pb.UpdatePostCategoryRequest
(*DeletePostCategoryRequest)(nil), // 3: pb.DeletePostCategoryRequest
(*FindAllPostCategoriesRequest)(nil), // 4: pb.FindAllPostCategoriesRequest
(*FindAllPostCategoriesResponse)(nil), // 5: pb.FindAllPostCategoriesResponse
(*FindAllAvailablePostCategoriesRequest)(nil), // 6: pb.FindAllAvailablePostCategoriesRequest
(*FindAllAvailablePostCategoriesResponse)(nil), // 7: pb.FindAllAvailablePostCategoriesResponse
(*FindPostCategoryRequest)(nil), // 8: pb.FindPostCategoryRequest
(*FindPostCategoryResponse)(nil), // 9: pb.FindPostCategoryResponse
(*SortPostCategoriesRequest)(nil), // 10: pb.SortPostCategoriesRequest
(*PostCategory)(nil), // 11: pb.PostCategory
(*RPCSuccess)(nil), // 12: pb.RPCSuccess
}
var file_service_post_category_proto_depIdxs = []int32{
11, // 0: pb.FindAllPostCategoriesResponse.postCategories:type_name -> pb.PostCategory
11, // 1: pb.FindAllAvailablePostCategoriesResponse.postCategories:type_name -> pb.PostCategory
11, // 2: pb.FindPostCategoryResponse.postCategory:type_name -> pb.PostCategory
0, // 3: pb.PostCategoryService.createPostCategory:input_type -> pb.CreatePostCategoryRequest
2, // 4: pb.PostCategoryService.updatePostCategory:input_type -> pb.UpdatePostCategoryRequest
3, // 5: pb.PostCategoryService.deletePostCategory:input_type -> pb.DeletePostCategoryRequest
4, // 6: pb.PostCategoryService.findAllPostCategories:input_type -> pb.FindAllPostCategoriesRequest
6, // 7: pb.PostCategoryService.findAllAvailablePostCategories:input_type -> pb.FindAllAvailablePostCategoriesRequest
8, // 8: pb.PostCategoryService.findPostCategory:input_type -> pb.FindPostCategoryRequest
10, // 9: pb.PostCategoryService.sortPostCategories:input_type -> pb.SortPostCategoriesRequest
1, // 10: pb.PostCategoryService.createPostCategory:output_type -> pb.CreatePostCategoryResponse
12, // 11: pb.PostCategoryService.updatePostCategory:output_type -> pb.RPCSuccess
12, // 12: pb.PostCategoryService.deletePostCategory:output_type -> pb.RPCSuccess
5, // 13: pb.PostCategoryService.findAllPostCategories:output_type -> pb.FindAllPostCategoriesResponse
7, // 14: pb.PostCategoryService.findAllAvailablePostCategories:output_type -> pb.FindAllAvailablePostCategoriesResponse
9, // 15: pb.PostCategoryService.findPostCategory:output_type -> pb.FindPostCategoryResponse
12, // 16: pb.PostCategoryService.sortPostCategories:output_type -> pb.RPCSuccess
10, // [10:17] is the sub-list for method output_type
3, // [3:10] 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_service_post_category_proto_init() }
func file_service_post_category_proto_init() {
if File_service_post_category_proto != nil {
return
}
file_models_model_post_category_proto_init()
file_models_rpc_messages_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_post_category_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreatePostCategoryRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreatePostCategoryResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdatePostCategoryRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeletePostCategoryRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllPostCategoriesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllPostCategoriesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailablePostCategoriesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindAllAvailablePostCategoriesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindPostCategoryRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindPostCategoryResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_post_category_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SortPostCategoriesRequest); 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_post_category_proto_rawDesc,
NumEnums: 0,
NumMessages: 11,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_post_category_proto_goTypes,
DependencyIndexes: file_service_post_category_proto_depIdxs,
MessageInfos: file_service_post_category_proto_msgTypes,
}.Build()
File_service_post_category_proto = out.File
file_service_post_category_proto_rawDesc = nil
file_service_post_category_proto_goTypes = nil
file_service_post_category_proto_depIdxs = nil
}

View File

@@ -0,0 +1,343 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.19.4
// source: service_post_category.proto
package pb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
PostCategoryService_CreatePostCategory_FullMethodName = "/pb.PostCategoryService/createPostCategory"
PostCategoryService_UpdatePostCategory_FullMethodName = "/pb.PostCategoryService/updatePostCategory"
PostCategoryService_DeletePostCategory_FullMethodName = "/pb.PostCategoryService/deletePostCategory"
PostCategoryService_FindAllPostCategories_FullMethodName = "/pb.PostCategoryService/findAllPostCategories"
PostCategoryService_FindAllAvailablePostCategories_FullMethodName = "/pb.PostCategoryService/findAllAvailablePostCategories"
PostCategoryService_FindPostCategory_FullMethodName = "/pb.PostCategoryService/findPostCategory"
PostCategoryService_SortPostCategories_FullMethodName = "/pb.PostCategoryService/sortPostCategories"
)
// PostCategoryServiceClient is the client API for PostCategoryService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type PostCategoryServiceClient interface {
// 创建分类
CreatePostCategory(ctx context.Context, in *CreatePostCategoryRequest, opts ...grpc.CallOption) (*CreatePostCategoryResponse, error)
// 修改分类
UpdatePostCategory(ctx context.Context, in *UpdatePostCategoryRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 删除分类
DeletePostCategory(ctx context.Context, in *DeletePostCategoryRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 列出所有分类
FindAllPostCategories(ctx context.Context, in *FindAllPostCategoriesRequest, opts ...grpc.CallOption) (*FindAllPostCategoriesResponse, error)
// 列出所有可用分类
FindAllAvailablePostCategories(ctx context.Context, in *FindAllAvailablePostCategoriesRequest, opts ...grpc.CallOption) (*FindAllAvailablePostCategoriesResponse, error)
// 查询单个分类
FindPostCategory(ctx context.Context, in *FindPostCategoryRequest, opts ...grpc.CallOption) (*FindPostCategoryResponse, error)
// 对分类进行排序
SortPostCategories(ctx context.Context, in *SortPostCategoriesRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
}
type postCategoryServiceClient struct {
cc grpc.ClientConnInterface
}
func NewPostCategoryServiceClient(cc grpc.ClientConnInterface) PostCategoryServiceClient {
return &postCategoryServiceClient{cc}
}
func (c *postCategoryServiceClient) CreatePostCategory(ctx context.Context, in *CreatePostCategoryRequest, opts ...grpc.CallOption) (*CreatePostCategoryResponse, error) {
out := new(CreatePostCategoryResponse)
err := c.cc.Invoke(ctx, PostCategoryService_CreatePostCategory_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postCategoryServiceClient) UpdatePostCategory(ctx context.Context, in *UpdatePostCategoryRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PostCategoryService_UpdatePostCategory_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postCategoryServiceClient) DeletePostCategory(ctx context.Context, in *DeletePostCategoryRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PostCategoryService_DeletePostCategory_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postCategoryServiceClient) FindAllPostCategories(ctx context.Context, in *FindAllPostCategoriesRequest, opts ...grpc.CallOption) (*FindAllPostCategoriesResponse, error) {
out := new(FindAllPostCategoriesResponse)
err := c.cc.Invoke(ctx, PostCategoryService_FindAllPostCategories_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postCategoryServiceClient) FindAllAvailablePostCategories(ctx context.Context, in *FindAllAvailablePostCategoriesRequest, opts ...grpc.CallOption) (*FindAllAvailablePostCategoriesResponse, error) {
out := new(FindAllAvailablePostCategoriesResponse)
err := c.cc.Invoke(ctx, PostCategoryService_FindAllAvailablePostCategories_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postCategoryServiceClient) FindPostCategory(ctx context.Context, in *FindPostCategoryRequest, opts ...grpc.CallOption) (*FindPostCategoryResponse, error) {
out := new(FindPostCategoryResponse)
err := c.cc.Invoke(ctx, PostCategoryService_FindPostCategory_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postCategoryServiceClient) SortPostCategories(ctx context.Context, in *SortPostCategoriesRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PostCategoryService_SortPostCategories_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// PostCategoryServiceServer is the server API for PostCategoryService service.
// All implementations should embed UnimplementedPostCategoryServiceServer
// for forward compatibility
type PostCategoryServiceServer interface {
// 创建分类
CreatePostCategory(context.Context, *CreatePostCategoryRequest) (*CreatePostCategoryResponse, error)
// 修改分类
UpdatePostCategory(context.Context, *UpdatePostCategoryRequest) (*RPCSuccess, error)
// 删除分类
DeletePostCategory(context.Context, *DeletePostCategoryRequest) (*RPCSuccess, error)
// 列出所有分类
FindAllPostCategories(context.Context, *FindAllPostCategoriesRequest) (*FindAllPostCategoriesResponse, error)
// 列出所有可用分类
FindAllAvailablePostCategories(context.Context, *FindAllAvailablePostCategoriesRequest) (*FindAllAvailablePostCategoriesResponse, error)
// 查询单个分类
FindPostCategory(context.Context, *FindPostCategoryRequest) (*FindPostCategoryResponse, error)
// 对分类进行排序
SortPostCategories(context.Context, *SortPostCategoriesRequest) (*RPCSuccess, error)
}
// UnimplementedPostCategoryServiceServer should be embedded to have forward compatible implementations.
type UnimplementedPostCategoryServiceServer struct {
}
func (UnimplementedPostCategoryServiceServer) CreatePostCategory(context.Context, *CreatePostCategoryRequest) (*CreatePostCategoryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreatePostCategory not implemented")
}
func (UnimplementedPostCategoryServiceServer) UpdatePostCategory(context.Context, *UpdatePostCategoryRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdatePostCategory not implemented")
}
func (UnimplementedPostCategoryServiceServer) DeletePostCategory(context.Context, *DeletePostCategoryRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeletePostCategory not implemented")
}
func (UnimplementedPostCategoryServiceServer) FindAllPostCategories(context.Context, *FindAllPostCategoriesRequest) (*FindAllPostCategoriesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllPostCategories not implemented")
}
func (UnimplementedPostCategoryServiceServer) FindAllAvailablePostCategories(context.Context, *FindAllAvailablePostCategoriesRequest) (*FindAllAvailablePostCategoriesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllAvailablePostCategories not implemented")
}
func (UnimplementedPostCategoryServiceServer) FindPostCategory(context.Context, *FindPostCategoryRequest) (*FindPostCategoryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindPostCategory not implemented")
}
func (UnimplementedPostCategoryServiceServer) SortPostCategories(context.Context, *SortPostCategoriesRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method SortPostCategories not implemented")
}
// UnsafePostCategoryServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to PostCategoryServiceServer will
// result in compilation errors.
type UnsafePostCategoryServiceServer interface {
mustEmbedUnimplementedPostCategoryServiceServer()
}
func RegisterPostCategoryServiceServer(s grpc.ServiceRegistrar, srv PostCategoryServiceServer) {
s.RegisterService(&PostCategoryService_ServiceDesc, srv)
}
func _PostCategoryService_CreatePostCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreatePostCategoryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).CreatePostCategory(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_CreatePostCategory_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).CreatePostCategory(ctx, req.(*CreatePostCategoryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostCategoryService_UpdatePostCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdatePostCategoryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).UpdatePostCategory(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_UpdatePostCategory_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).UpdatePostCategory(ctx, req.(*UpdatePostCategoryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostCategoryService_DeletePostCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeletePostCategoryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).DeletePostCategory(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_DeletePostCategory_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).DeletePostCategory(ctx, req.(*DeletePostCategoryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostCategoryService_FindAllPostCategories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindAllPostCategoriesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).FindAllPostCategories(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_FindAllPostCategories_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).FindAllPostCategories(ctx, req.(*FindAllPostCategoriesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostCategoryService_FindAllAvailablePostCategories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindAllAvailablePostCategoriesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).FindAllAvailablePostCategories(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_FindAllAvailablePostCategories_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).FindAllAvailablePostCategories(ctx, req.(*FindAllAvailablePostCategoriesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostCategoryService_FindPostCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindPostCategoryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).FindPostCategory(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_FindPostCategory_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).FindPostCategory(ctx, req.(*FindPostCategoryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostCategoryService_SortPostCategories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SortPostCategoriesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostCategoryServiceServer).SortPostCategories(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostCategoryService_SortPostCategories_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostCategoryServiceServer).SortPostCategories(ctx, req.(*SortPostCategoriesRequest))
}
return interceptor(ctx, in, info, handler)
}
// PostCategoryService_ServiceDesc is the grpc.ServiceDesc for PostCategoryService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var PostCategoryService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "pb.PostCategoryService",
HandlerType: (*PostCategoryServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "createPostCategory",
Handler: _PostCategoryService_CreatePostCategory_Handler,
},
{
MethodName: "updatePostCategory",
Handler: _PostCategoryService_UpdatePostCategory_Handler,
},
{
MethodName: "deletePostCategory",
Handler: _PostCategoryService_DeletePostCategory_Handler,
},
{
MethodName: "findAllPostCategories",
Handler: _PostCategoryService_FindAllPostCategories_Handler,
},
{
MethodName: "findAllAvailablePostCategories",
Handler: _PostCategoryService_FindAllAvailablePostCategories_Handler,
},
{
MethodName: "findPostCategory",
Handler: _PostCategoryService_FindPostCategory_Handler,
},
{
MethodName: "sortPostCategories",
Handler: _PostCategoryService_SortPostCategories_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_post_category.proto",
}

View File

@@ -0,0 +1,343 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.19.4
// source: service_post.proto
package pb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
PostService_CreatePost_FullMethodName = "/pb.PostService/createPost"
PostService_UpdatePost_FullMethodName = "/pb.PostService/updatePost"
PostService_DeletePost_FullMethodName = "/pb.PostService/deletePost"
PostService_PublishPost_FullMethodName = "/pb.PostService/publishPost"
PostService_CountPosts_FullMethodName = "/pb.PostService/countPosts"
PostService_ListPosts_FullMethodName = "/pb.PostService/listPosts"
PostService_FindPost_FullMethodName = "/pb.PostService/findPost"
)
// PostServiceClient is the client API for PostService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type PostServiceClient interface {
// 创建文章
CreatePost(ctx context.Context, in *CreatePostRequest, opts ...grpc.CallOption) (*CreatePostResponse, error)
// 修改文章
UpdatePost(ctx context.Context, in *UpdatePostRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 删除文章
DeletePost(ctx context.Context, in *DeletePostRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 发布文章
PublishPost(ctx context.Context, in *PublishPostRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 计算文章数量
CountPosts(ctx context.Context, in *CountPostsRequest, opts ...grpc.CallOption) (*RPCCountResponse, error)
// 列出单页文章
ListPosts(ctx context.Context, in *ListPostsRequest, opts ...grpc.CallOption) (*ListPostsResponse, error)
// 查询单篇文章
FindPost(ctx context.Context, in *FindPostRequest, opts ...grpc.CallOption) (*FindPostResponse, error)
}
type postServiceClient struct {
cc grpc.ClientConnInterface
}
func NewPostServiceClient(cc grpc.ClientConnInterface) PostServiceClient {
return &postServiceClient{cc}
}
func (c *postServiceClient) CreatePost(ctx context.Context, in *CreatePostRequest, opts ...grpc.CallOption) (*CreatePostResponse, error) {
out := new(CreatePostResponse)
err := c.cc.Invoke(ctx, PostService_CreatePost_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postServiceClient) UpdatePost(ctx context.Context, in *UpdatePostRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PostService_UpdatePost_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postServiceClient) DeletePost(ctx context.Context, in *DeletePostRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PostService_DeletePost_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postServiceClient) PublishPost(ctx context.Context, in *PublishPostRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, PostService_PublishPost_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postServiceClient) CountPosts(ctx context.Context, in *CountPostsRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) {
out := new(RPCCountResponse)
err := c.cc.Invoke(ctx, PostService_CountPosts_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postServiceClient) ListPosts(ctx context.Context, in *ListPostsRequest, opts ...grpc.CallOption) (*ListPostsResponse, error) {
out := new(ListPostsResponse)
err := c.cc.Invoke(ctx, PostService_ListPosts_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *postServiceClient) FindPost(ctx context.Context, in *FindPostRequest, opts ...grpc.CallOption) (*FindPostResponse, error) {
out := new(FindPostResponse)
err := c.cc.Invoke(ctx, PostService_FindPost_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// PostServiceServer is the server API for PostService service.
// All implementations should embed UnimplementedPostServiceServer
// for forward compatibility
type PostServiceServer interface {
// 创建文章
CreatePost(context.Context, *CreatePostRequest) (*CreatePostResponse, error)
// 修改文章
UpdatePost(context.Context, *UpdatePostRequest) (*RPCSuccess, error)
// 删除文章
DeletePost(context.Context, *DeletePostRequest) (*RPCSuccess, error)
// 发布文章
PublishPost(context.Context, *PublishPostRequest) (*RPCSuccess, error)
// 计算文章数量
CountPosts(context.Context, *CountPostsRequest) (*RPCCountResponse, error)
// 列出单页文章
ListPosts(context.Context, *ListPostsRequest) (*ListPostsResponse, error)
// 查询单篇文章
FindPost(context.Context, *FindPostRequest) (*FindPostResponse, error)
}
// UnimplementedPostServiceServer should be embedded to have forward compatible implementations.
type UnimplementedPostServiceServer struct {
}
func (UnimplementedPostServiceServer) CreatePost(context.Context, *CreatePostRequest) (*CreatePostResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreatePost not implemented")
}
func (UnimplementedPostServiceServer) UpdatePost(context.Context, *UpdatePostRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdatePost not implemented")
}
func (UnimplementedPostServiceServer) DeletePost(context.Context, *DeletePostRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeletePost not implemented")
}
func (UnimplementedPostServiceServer) PublishPost(context.Context, *PublishPostRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method PublishPost not implemented")
}
func (UnimplementedPostServiceServer) CountPosts(context.Context, *CountPostsRequest) (*RPCCountResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CountPosts not implemented")
}
func (UnimplementedPostServiceServer) ListPosts(context.Context, *ListPostsRequest) (*ListPostsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListPosts not implemented")
}
func (UnimplementedPostServiceServer) FindPost(context.Context, *FindPostRequest) (*FindPostResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindPost not implemented")
}
// UnsafePostServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to PostServiceServer will
// result in compilation errors.
type UnsafePostServiceServer interface {
mustEmbedUnimplementedPostServiceServer()
}
func RegisterPostServiceServer(s grpc.ServiceRegistrar, srv PostServiceServer) {
s.RegisterService(&PostService_ServiceDesc, srv)
}
func _PostService_CreatePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreatePostRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).CreatePost(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_CreatePost_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).CreatePost(ctx, req.(*CreatePostRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostService_UpdatePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdatePostRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).UpdatePost(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_UpdatePost_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).UpdatePost(ctx, req.(*UpdatePostRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostService_DeletePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeletePostRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).DeletePost(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_DeletePost_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).DeletePost(ctx, req.(*DeletePostRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostService_PublishPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PublishPostRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).PublishPost(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_PublishPost_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).PublishPost(ctx, req.(*PublishPostRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostService_CountPosts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CountPostsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).CountPosts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_CountPosts_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).CountPosts(ctx, req.(*CountPostsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostService_ListPosts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListPostsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).ListPosts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_ListPosts_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).ListPosts(ctx, req.(*ListPostsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _PostService_FindPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindPostRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PostServiceServer).FindPost(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: PostService_FindPost_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PostServiceServer).FindPost(ctx, req.(*FindPostRequest))
}
return interceptor(ctx, in, info, handler)
}
// PostService_ServiceDesc is the grpc.ServiceDesc for PostService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var PostService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "pb.PostService",
HandlerType: (*PostServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "createPost",
Handler: _PostService_CreatePost_Handler,
},
{
MethodName: "updatePost",
Handler: _PostService_UpdatePost_Handler,
},
{
MethodName: "deletePost",
Handler: _PostService_DeletePost_Handler,
},
{
MethodName: "publishPost",
Handler: _PostService_PublishPost_Handler,
},
{
MethodName: "countPosts",
Handler: _PostService_CountPosts_Handler,
},
{
MethodName: "listPosts",
Handler: _PostService_ListPosts_Handler,
},
{
MethodName: "findPost",
Handler: _PostService_FindPost_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_post.proto",
}

File diff suppressed because it is too large Load Diff

View File

@@ -22,6 +22,8 @@ const (
ServerService_CreateServer_FullMethodName = "/pb.ServerService/createServer"
ServerService_CreateBasicHTTPServer_FullMethodName = "/pb.ServerService/createBasicHTTPServer"
ServerService_CreateBasicTCPServer_FullMethodName = "/pb.ServerService/createBasicTCPServer"
ServerService_AddServerOrigin_FullMethodName = "/pb.ServerService/addServerOrigin"
ServerService_DeleteServerOrigin_FullMethodName = "/pb.ServerService/deleteServerOrigin"
ServerService_UpdateServerBasic_FullMethodName = "/pb.ServerService/updateServerBasic"
ServerService_UpdateServerGroupIds_FullMethodName = "/pb.ServerService/updateServerGroupIds"
ServerService_UpdateServerIsOn_FullMethodName = "/pb.ServerService/updateServerIsOn"
@@ -43,6 +45,7 @@ const (
ServerService_CountAllEnabledServersMatch_FullMethodName = "/pb.ServerService/countAllEnabledServersMatch"
ServerService_ListEnabledServersMatch_FullMethodName = "/pb.ServerService/listEnabledServersMatch"
ServerService_DeleteServer_FullMethodName = "/pb.ServerService/deleteServer"
ServerService_DeleteServers_FullMethodName = "/pb.ServerService/deleteServers"
ServerService_FindEnabledServer_FullMethodName = "/pb.ServerService/findEnabledServer"
ServerService_FindEnabledServerConfig_FullMethodName = "/pb.ServerService/findEnabledServerConfig"
ServerService_FindEnabledServerType_FullMethodName = "/pb.ServerService/findEnabledServerType"
@@ -93,6 +96,10 @@ type ServerServiceClient interface {
CreateBasicHTTPServer(ctx context.Context, in *CreateBasicHTTPServerRequest, opts ...grpc.CallOption) (*CreateBasicHTTPServerResponse, error)
// 快速创建基本的TCP网站
CreateBasicTCPServer(ctx context.Context, in *CreateBasicTCPServerRequest, opts ...grpc.CallOption) (*CreateBasicTCPServerResponse, error)
// 为网站添加源站
AddServerOrigin(ctx context.Context, in *AddServerOriginRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 从网站中删除某个源站
DeleteServerOrigin(ctx context.Context, in *DeleteServerOriginRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 修改网站基本信息
UpdateServerBasic(ctx context.Context, in *UpdateServerBasicRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 修改网站所在分组
@@ -133,8 +140,10 @@ type ServerServiceClient interface {
CountAllEnabledServersMatch(ctx context.Context, in *CountAllEnabledServersMatchRequest, opts ...grpc.CallOption) (*RPCCountResponse, error)
// 列出单页网站
ListEnabledServersMatch(ctx context.Context, in *ListEnabledServersMatchRequest, opts ...grpc.CallOption) (*ListEnabledServersMatchResponse, error)
// 禁用某网站
// 删除某网站
DeleteServer(ctx context.Context, in *DeleteServerRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 删除一组网站
DeleteServers(ctx context.Context, in *DeleteServersRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
// 查找单个网站
FindEnabledServer(ctx context.Context, in *FindEnabledServerRequest, opts ...grpc.CallOption) (*FindEnabledServerResponse, error)
// 查找网站配置
@@ -248,6 +257,24 @@ func (c *serverServiceClient) CreateBasicTCPServer(ctx context.Context, in *Crea
return out, nil
}
func (c *serverServiceClient) AddServerOrigin(ctx context.Context, in *AddServerOriginRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, ServerService_AddServerOrigin_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *serverServiceClient) DeleteServerOrigin(ctx context.Context, in *DeleteServerOriginRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, ServerService_DeleteServerOrigin_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *serverServiceClient) UpdateServerBasic(ctx context.Context, in *UpdateServerBasicRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, ServerService_UpdateServerBasic_FullMethodName, in, out, opts...)
@@ -437,6 +464,15 @@ func (c *serverServiceClient) DeleteServer(ctx context.Context, in *DeleteServer
return out, nil
}
func (c *serverServiceClient) DeleteServers(ctx context.Context, in *DeleteServersRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
out := new(RPCSuccess)
err := c.cc.Invoke(ctx, ServerService_DeleteServers_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *serverServiceClient) FindEnabledServer(ctx context.Context, in *FindEnabledServerRequest, opts ...grpc.CallOption) (*FindEnabledServerResponse, error) {
out := new(FindEnabledServerResponse)
err := c.cc.Invoke(ctx, ServerService_FindEnabledServer_FullMethodName, in, out, opts...)
@@ -789,6 +825,10 @@ type ServerServiceServer interface {
CreateBasicHTTPServer(context.Context, *CreateBasicHTTPServerRequest) (*CreateBasicHTTPServerResponse, error)
// 快速创建基本的TCP网站
CreateBasicTCPServer(context.Context, *CreateBasicTCPServerRequest) (*CreateBasicTCPServerResponse, error)
// 为网站添加源站
AddServerOrigin(context.Context, *AddServerOriginRequest) (*RPCSuccess, error)
// 从网站中删除某个源站
DeleteServerOrigin(context.Context, *DeleteServerOriginRequest) (*RPCSuccess, error)
// 修改网站基本信息
UpdateServerBasic(context.Context, *UpdateServerBasicRequest) (*RPCSuccess, error)
// 修改网站所在分组
@@ -829,8 +869,10 @@ type ServerServiceServer interface {
CountAllEnabledServersMatch(context.Context, *CountAllEnabledServersMatchRequest) (*RPCCountResponse, error)
// 列出单页网站
ListEnabledServersMatch(context.Context, *ListEnabledServersMatchRequest) (*ListEnabledServersMatchResponse, error)
// 禁用某网站
// 删除某网站
DeleteServer(context.Context, *DeleteServerRequest) (*RPCSuccess, error)
// 删除一组网站
DeleteServers(context.Context, *DeleteServersRequest) (*RPCSuccess, error)
// 查找单个网站
FindEnabledServer(context.Context, *FindEnabledServerRequest) (*FindEnabledServerResponse, error)
// 查找网站配置
@@ -922,6 +964,12 @@ func (UnimplementedServerServiceServer) CreateBasicHTTPServer(context.Context, *
func (UnimplementedServerServiceServer) CreateBasicTCPServer(context.Context, *CreateBasicTCPServerRequest) (*CreateBasicTCPServerResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateBasicTCPServer not implemented")
}
func (UnimplementedServerServiceServer) AddServerOrigin(context.Context, *AddServerOriginRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method AddServerOrigin not implemented")
}
func (UnimplementedServerServiceServer) DeleteServerOrigin(context.Context, *DeleteServerOriginRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteServerOrigin not implemented")
}
func (UnimplementedServerServiceServer) UpdateServerBasic(context.Context, *UpdateServerBasicRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateServerBasic not implemented")
}
@@ -985,6 +1033,9 @@ func (UnimplementedServerServiceServer) ListEnabledServersMatch(context.Context,
func (UnimplementedServerServiceServer) DeleteServer(context.Context, *DeleteServerRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteServer not implemented")
}
func (UnimplementedServerServiceServer) DeleteServers(context.Context, *DeleteServersRequest) (*RPCSuccess, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteServers not implemented")
}
func (UnimplementedServerServiceServer) FindEnabledServer(context.Context, *FindEnabledServerRequest) (*FindEnabledServerResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindEnabledServer not implemented")
}
@@ -1165,6 +1216,42 @@ func _ServerService_CreateBasicTCPServer_Handler(srv interface{}, ctx context.Co
return interceptor(ctx, in, info, handler)
}
func _ServerService_AddServerOrigin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AddServerOriginRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ServerServiceServer).AddServerOrigin(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ServerService_AddServerOrigin_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ServerServiceServer).AddServerOrigin(ctx, req.(*AddServerOriginRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ServerService_DeleteServerOrigin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteServerOriginRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ServerServiceServer).DeleteServerOrigin(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ServerService_DeleteServerOrigin_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ServerServiceServer).DeleteServerOrigin(ctx, req.(*DeleteServerOriginRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ServerService_UpdateServerBasic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateServerBasicRequest)
if err := dec(in); err != nil {
@@ -1543,6 +1630,24 @@ func _ServerService_DeleteServer_Handler(srv interface{}, ctx context.Context, d
return interceptor(ctx, in, info, handler)
}
func _ServerService_DeleteServers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteServersRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ServerServiceServer).DeleteServers(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ServerService_DeleteServers_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ServerServiceServer).DeleteServers(ctx, req.(*DeleteServersRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ServerService_FindEnabledServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindEnabledServerRequest)
if err := dec(in); err != nil {
@@ -2246,6 +2351,14 @@ var ServerService_ServiceDesc = grpc.ServiceDesc{
MethodName: "createBasicTCPServer",
Handler: _ServerService_CreateBasicTCPServer_Handler,
},
{
MethodName: "addServerOrigin",
Handler: _ServerService_AddServerOrigin_Handler,
},
{
MethodName: "deleteServerOrigin",
Handler: _ServerService_DeleteServerOrigin_Handler,
},
{
MethodName: "updateServerBasic",
Handler: _ServerService_UpdateServerBasic_Handler,
@@ -2330,6 +2443,10 @@ var ServerService_ServiceDesc = grpc.ServiceDesc{
MethodName: "deleteServer",
Handler: _ServerService_DeleteServer_Handler,
},
{
MethodName: "deleteServers",
Handler: _ServerService_DeleteServers_Handler,
},
{
MethodName: "findEnabledServer",
Handler: _ServerService_FindEnabledServer_Handler,

View File

@@ -15,6 +15,7 @@ message HTTPFirewallPolicy {
int64 serverId = 8; // 所属网站ID如果为0表示公共策略
bool useLocalFirewall = 9; // 是否使用本机防火墙
bytes synFloodJSON = 10; // synflood配置
bytes blockOptionsJSON = 11; // 拦截配置
bytes blockOptionsJSON = 11; // 阻止动作配置
bytes pageOptionsJSON = 13; // 显示网页动作配置
bytes captchaOptionsJSON = 12; // 人机识别配置
}

View File

@@ -10,6 +10,7 @@ message Plan {
string description = 21; // 套餐简介
int64 clusterId = 4; // 集群ID
bytes trafficLimitJSON = 5; // 流量限制
bytes bandwidthLimitPerNodeJSON = 22; // 单节点带宽限制
bool hasFullFeatures = 20; // 是否有所有权限
bytes featuresJSON = 6; // 权限列表,[code1, code2, ...]
string priceType = 7; // 价格类型traffic, bandwidth, period
@@ -25,4 +26,5 @@ message Plan {
int64 monthlyRequests = 17; // 每月访问量额度
int64 dailyWebsocketConnections = 18; // 每日Websocket连接数额度
int64 monthlyWebsocketConnections = 19; // 每月Websocket连接数额度
bytes maxUploadSizeJSON = 23; // 文件最大上传尺寸 @link json:size_capacity
}

View File

@@ -0,0 +1,22 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_post_category.proto";
// 文章
message Post {
int64 id = 1; // ID
int64 postCategoryId = 2; // 分类ID
string productCode = 3; // 产品代号
string type = 4; // 类型normal, url
string subject = 5; // 标题
string url = 6; // URL
string body = 7; // 内容
int64 createdAt = 8; // 创建时间
bool isPublished = 9; // 是否已发布
int64 publishedAt = 10; // 发布时间
PostCategory postCategory = 30; // 分类信息
}

View File

@@ -0,0 +1,12 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
// 文章分类
message PostCategory {
int64 id = 1; // ID
string name = 2; // 名称
string code = 3; // 文章代号
bool isOn = 4; // 是否启用
}

View File

@@ -98,8 +98,9 @@ message UpdateHTTPFirewallPolicyRequest {
string name = 3;
string description = 4;
repeated string firewallGroupCodes = 5;
bytes blockOptionsJSON = 6;
bytes captchaOptionsJSON = 11;
bytes blockOptionsJSON = 6; // 阻止动作配置
bytes pageOptionsJSON = 15; // 显示网页动作配置
bytes captchaOptionsJSON = 11; // 验证码动作配置
string mode = 7;
bool useLocalFirewall = 8; // 是否使用本地防火墙
bytes synFloodJSON = 9; // SYN Flood相关配置

View File

@@ -122,6 +122,12 @@ service HTTPWebService {
// 查找UserAgent设置
rpc findHTTPWebUserAgent(FindHTTPWebUserAgentRequest) returns (FindHTTPWebUserAgentResponse);
// 修改HLS设置
rpc updateHTTPWebHLS(UpdateHTTPWebHLSRequest) returns (RPCSuccess);
// 查找HLS设置
rpc findHTTPWebHLS(FindHTTPWebHLSRequest) returns (FindHTTPWebHLSResponse);
// 根据WebId查找ServerId
rpc findServerIdWithHTTPWebId(FindServerIdWithHTTPWebIdRequest) returns (FindServerIdWithHTTPWebIdResponse);
}
@@ -384,6 +390,21 @@ message FindHTTPWebUserAgentResponse {
bytes userAgentJSON = 1;
}
// 修改HLS设置
message UpdateHTTPWebHLSRequest {
int64 httpWebId = 1; // Web配置ID
bytes hlsJSON = 2; // HLS配置
}
// 查找HLS设置
message FindHTTPWebHLSRequest {
int64 httpWebId = 1; // Web配置ID
}
message FindHTTPWebHLSResponse {
bytes hlsJSON = 1; // HLS配置
}
// 根据WebId查找ServerId
message FindServerIdWithHTTPWebIdRequest {
int64 httpWebId = 1; // Web设置ID

View File

@@ -208,21 +208,24 @@ service NodeService {
// 查找节点的WebP策略
rpc findNodeWebPPolicies(FindNodeWebPPoliciesRequest) returns (FindNodeWebPPoliciesResponse);
// 修改节点的启用状态
rpc updateNodeIsOn(UpdateNodeIsOnRequest) returns (RPCSuccess);
}
// 创建节点
message CreateNodeRequest {
string name = 1;
int64 nodeClusterId = 2;
NodeLogin nodeLogin = 3;
int64 nodeGroupId = 4;
int64 dnsDomainId = 5 [deprecated = true];
repeated string dnsRoutes = 6;
int64 nodeRegionId = 7;
string name = 1; // 节点名称
int64 nodeClusterId = 2; // 节点所属集群
NodeLogin nodeLogin = 3; // 节点登录信息
int64 nodeGroupId = 4; // 节点所属分组
int64 dnsDomainId = 5 [deprecated = true]; // 节点域名ID此参数已过期请不要再使用
repeated string dnsRoutes = 6; // 节点DNS线路列表
int64 nodeRegionId = 7; // 节点所属区域
}
message CreateNodeResponse {
int64 nodeId = 1;
int64 nodeId = 1; // 节点ID
}
// 注册集群节点
@@ -308,20 +311,20 @@ message UpdateNodeRequest {
// 获取单个节点信息
message FindEnabledNodeRequest {
int64 nodeId = 1;
int64 nodeId = 1; // 节点ID
}
message FindEnabledNodeResponse {
Node node = 1;
Node node = 1; // 节点信息
}
// 获取单个节点基本信息
message FindEnabledBasicNodeRequest {
int64 nodeId = 1;
int64 nodeId = 1; // 节点ID
}
message FindEnabledBasicNodeResponse {
BasicNode node = 1;
BasicNode node = 1; // 节点基本信息
}
// 组合单个节点配置
@@ -844,4 +847,10 @@ message FindNodeWebPPoliciesResponse {
int64 nodeClusterId = 1; // 集群ID
bytes webPPolicyJSON = 2; // WebP策略配置
}
}
// 修改节点的启用状态
message UpdateNodeIsOnRequest {
int64 nodeId = 1; // 节点ID
bool isOn = 2; // 是否启用
}

View File

@@ -244,7 +244,9 @@ message CountAllEnabledNodeClustersRequest {
message ListEnabledNodeClustersRequest {
int64 offset = 1;
int64 size = 2;
string keyword = 3;
string keyword = 3; // 可选项,搜索关键词
bool idDesc = 4; // 可选项是否按照ID倒序排列
bool idAsc = 5; // 可选项是否按照ID正序排列
}
message ListEnabledNodeClustersResponse {

View File

@@ -29,7 +29,7 @@ message CreateOriginRequest {
bytes ossJSON = 15; // OSS配置信息源站网络地址中protocol为oss:开头时需要设置此项
string description = 3; // 描述,为可选项
int32 weight = 4; // 权重不小于0一般设置为10
bool isOn = 5; // 是否启用
bool isOn = 5; // 是否启用一般为true
bytes connTimeoutJSON = 6; // 可选项,连接超时时间
bytes readTimeoutJSON = 7; // 可选项,读取超时时间
bytes idleTimeoutJSON = 8; // 可选项,空闲超时时间
@@ -69,18 +69,18 @@ message UpdateOriginRequest {
// 查找单个源站信息
message FindEnabledOriginRequest {
int64 originId = 1;
int64 originId = 1; // 源站ID
}
message FindEnabledOriginResponse {
Origin Origin = 1;
Origin Origin = 1; // 源站信息
}
// 查找源站配置
message FindEnabledOriginConfigRequest {
int64 originId = 1;
int64 originId = 1; // 源站ID
}
message FindEnabledOriginConfigResponse {
bytes originJSON = 1;
bytes originJSON = 1; // 源站信息
}

View File

@@ -20,6 +20,9 @@ service PlanService {
// 查找单个套餐
rpc findEnabledPlan(FindEnabledPlanRequest) returns (FindEnabledPlanResponse);
// 查找套餐基本信息
rpc findBasicPlan(FindBasicPlanRequest) returns (FindBasicPlanResponse);
// 计算套餐数量
rpc countAllEnabledPlans(CountAllEnabledPlansRequest) returns (RPCCountResponse);
@@ -29,6 +32,9 @@ service PlanService {
// 列出所有可用的套餐
rpc findAllAvailablePlans(FindAllAvailablePlansRequest) returns (FindAllAvailablePlansResponse);
// 列出所有可用的套餐的基本信息
rpc findAllAvailableBasicPlans(FindAllAvailableBasicPlansRequest) returns (FindAllAvailableBasicPlansResponse);
// 对套餐进行排序
rpc sortPlans(SortPlansRequest) returns (RPCSuccess);
}
@@ -39,6 +45,7 @@ message CreatePlanRequest {
string description = 19; // 套餐简介
int64 clusterId = 2; // 集群ID
bytes trafficLimitJSON = 3; // 流量限制
bytes bandwidthLimitPerNodeJSON = 20; // 单节点带宽限制 @link json:bit_size_capacity
bool hasFullFeatures = 18; // 是否有所有权限
bytes featuresJSON = 4; // 权限列表,[code1, code2, ...]
string priceType = 5; // 价格类型traffic, bandwidth, period
@@ -54,6 +61,7 @@ message CreatePlanRequest {
int64 monthlyRequests = 15; // 每月访问量额度
int64 dailyWebsocketConnections = 16; // 每日Websocket连接数额度
int64 monthlyWebsocketConnections = 17; // 每月Websocket连接数额度
bytes maxUploadSizeJSON = 21; // 文件最大上传尺寸 @link json:size_capacity
}
message CreatePlanResponse {
@@ -68,6 +76,7 @@ message UpdatePlanRequest {
bool isOn = 3; // 是否启用
int64 clusterId = 4; // 集群ID
bytes trafficLimitJSON = 5; // 流量限制
bytes bandwidthLimitPerNodeJSON = 22; // 单节点带宽限制
bool hasFullFeatures = 20; // 是否有所有权限
bytes featuresJSON = 6; // 权限列表,[code1, code2, ...]
string priceType = 7; // 价格类型traffic, bandwidth, period
@@ -83,6 +92,7 @@ message UpdatePlanRequest {
int64 monthlyRequests = 17; // 每月访问量额度
int64 dailyWebsocketConnections = 18; // 每日Websocket连接数额度
int64 monthlyWebsocketConnections = 19; // 每月Websocket连接数额度
bytes maxUploadSizeJSON = 23; // 文件最大上传尺寸 @link json:size_capacity
}
// 删除套餐
@@ -99,6 +109,15 @@ message FindEnabledPlanResponse {
Plan plan = 1; // 套餐信息
}
// 查找套餐基本信息
message FindBasicPlanRequest {
int64 planId = 1; // 套餐ID
}
message FindBasicPlanResponse {
Plan plan = 1; // 套餐信息(只读取基本信息)
}
// 计算套餐数量
message CountAllEnabledPlansRequest {
@@ -123,6 +142,15 @@ message FindAllAvailablePlansResponse {
repeated Plan plans = 1; // 套餐列表
}
// 列出所有可用的套餐的基本信息
message FindAllAvailableBasicPlansRequest {
}
message FindAllAvailableBasicPlansResponse {
repeated Plan plans = 1; // 套餐列表
}
// 对套餐进行排序
message SortPlansRequest {
repeated int64 planIds = 1; // 排序后的套餐ID列表

View File

@@ -0,0 +1,99 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_post.proto";
import "models/rpc_messages.proto";
// 文章管理服务
service PostService {
// 创建文章
rpc createPost(CreatePostRequest) returns (CreatePostResponse);
// 修改文章
rpc updatePost(UpdatePostRequest) returns (RPCSuccess);
// 删除文章
rpc deletePost(DeletePostRequest) returns (RPCSuccess);
// 发布文章
rpc publishPost(PublishPostRequest) returns (RPCSuccess);
// 计算文章数量
rpc countPosts(CountPostsRequest) returns (RPCCountResponse);
// 列出单页文章
rpc listPosts(ListPostsRequest) returns (ListPostsResponse);
// 查询单篇文章
rpc findPost(FindPostRequest) returns (FindPostResponse);
}
// 创建文章
message CreatePostRequest {
int64 postCategoryId = 1; // 文章分类ID
string type = 2; // 类型normal, url
string productCode = 3; // 产品代号
string subject = 4; // 标题
string url = 5; // 跳转的URLtype=url
string body = 6; // 文章内容type=normal
}
message CreatePostResponse {
int64 postId = 1; // 文章ID
}
// 修改文章
message UpdatePostRequest {
int64 postId = 1; // 文章ID
int64 postCategoryId = 2; // 文章分类ID
string productCode = 3; // 产品代号
string subject = 4; // 标题
string type = 5; // 类型normal, url
string url = 6; // 跳转的URLtype=url
string body = 7; // 文章内容type=normal
}
// 删除文章
message DeletePostRequest {
int64 postId = 1; // 文章ID
}
// 发布文章
message PublishPostRequest {
int64 postId = 1; // 文章ID
}
// 计算文章数量
message CountPostsRequest {
int64 postCategoryId = 1; // 分类ID
string productCode = 2; // 产品代号
bool publishedOnly = 3; // 只列出已发布的
}
// 列出单页文章
message ListPostsRequest {
int64 offset = 1;
int64 size = 2;
string productCode = 3; // 产品代号
int64 postCategoryId = 4; // 分类ID
string postCategoryCode = 5; // 分类代号
string excludingPostCategoryCode = 6; // 排除的分类代号
bool publishedOnly = 7; // 只列出已发布的
bool containsBody = 8; // 是否包含文章内容
}
message ListPostsResponse {
repeated Post posts = 1; // 文章列表
}
// 查询单篇文章
message FindPostRequest {
int64 postId = 1; // 文章ID
}
message FindPostResponse {
Post post = 1; // 文章信息
}

View File

@@ -0,0 +1,86 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_post_category.proto";
import "models/rpc_messages.proto";
// 文章分类管理服务
service PostCategoryService {
// 创建分类
rpc createPostCategory(CreatePostCategoryRequest) returns (CreatePostCategoryResponse);
// 修改分类
rpc updatePostCategory(UpdatePostCategoryRequest) returns (RPCSuccess);
// 删除分类
rpc deletePostCategory(DeletePostCategoryRequest) returns (RPCSuccess);
// 列出所有分类
rpc findAllPostCategories(FindAllPostCategoriesRequest) returns (FindAllPostCategoriesResponse);
// 列出所有可用分类
rpc findAllAvailablePostCategories(FindAllAvailablePostCategoriesRequest) returns (FindAllAvailablePostCategoriesResponse);
// 查询单个分类
rpc findPostCategory(FindPostCategoryRequest) returns (FindPostCategoryResponse);
// 对分类进行排序
rpc sortPostCategories(SortPostCategoriesRequest) returns (RPCSuccess);
}
// 创建分类
message CreatePostCategoryRequest {
string name = 1; // 分类名称
string code = 2; // 分类代号
}
message CreatePostCategoryResponse {
int64 postCategoryId = 1; // 分类ID
}
// 修改分类
message UpdatePostCategoryRequest {
int64 postCategoryId = 1; // 分类ID
string name = 2; // 分类名称
string code = 3; // 分类代号
bool isOn = 4; // 是否启用
}
// 删除分类
message DeletePostCategoryRequest {
int64 postCategoryId = 1; // 分类ID
}
// 列出所有分类
message FindAllPostCategoriesRequest {
}
message FindAllPostCategoriesResponse {
repeated PostCategory postCategories = 1; // 分类列表
}
// 列出所有可用分类
message FindAllAvailablePostCategoriesRequest {
}
message FindAllAvailablePostCategoriesResponse {
repeated PostCategory postCategories = 1; // 分类列表
}
// 查询单个分类
message FindPostCategoryRequest {
int64 postCategoryId = 1; // 分类ID
}
message FindPostCategoryResponse {
PostCategory postCategory = 1; // 分类信息
}
// 对分类进行排序
message SortPostCategoriesRequest {
repeated int64 postCategoryIds = 1; // 分类ID列表
}

View File

@@ -20,6 +20,12 @@ service ServerService {
// 快速创建基本的TCP网站
rpc createBasicTCPServer(CreateBasicTCPServerRequest) returns (CreateBasicTCPServerResponse);
// 为网站添加源站
rpc addServerOrigin(AddServerOriginRequest) returns (RPCSuccess);
// 从网站中删除某个源站
rpc deleteServerOrigin(DeleteServerOriginRequest) returns (RPCSuccess);
// 修改网站基本信息
rpc updateServerBasic (UpdateServerBasicRequest) returns (RPCSuccess);
@@ -80,9 +86,12 @@ service ServerService {
// 列出单页网站
rpc listEnabledServersMatch (ListEnabledServersMatchRequest) returns (ListEnabledServersMatchResponse);
// 禁用某网站
// 删除某网站
rpc deleteServer (DeleteServerRequest) returns (RPCSuccess);
// 删除一组网站
rpc deleteServers(DeleteServersRequest) returns (RPCSuccess);
// 查找单个网站
rpc findEnabledServer (FindEnabledServerRequest) returns (FindEnabledServerResponse);
@@ -258,6 +267,19 @@ message CreateBasicTCPServerResponse {
int64 serverId = 1; // 所创建的网站ID
}
// 为网站添加源站
message AddServerOriginRequest {
int64 serverId = 1; // 网站ID
int64 originId = 2; // 源站ID通过 OriginService 创建和查询
bool isPrimary = 3; // 是否为主要源站
}
// 从网站中删除某个源站
message DeleteServerOriginRequest {
int64 serverId = 1; // 网站ID
int64 originId = 2; // 源站ID通过 OriginService 创建和查询
}
// 修改网站基本信息
message UpdateServerBasicRequest {
int64 serverId = 1; // 网站ID
@@ -410,11 +432,16 @@ message ListEnabledServersMatchResponse {
repeated Server servers = 1;
}
// 禁用网站
// 删除某网站
message DeleteServerRequest {
int64 serverId = 1; // 网站ID
}
// 删除一组网站
message DeleteServersRequest {
repeated int64 serverIds = 1; // 网站ID列表[1, 2, ...]
}
// 查找单个网站
message FindEnabledServerRequest {
int64 serverId = 1; // 网站ID
@@ -422,7 +449,7 @@ message FindEnabledServerRequest {
}
message FindEnabledServerResponse {
Server server = 1;
Server server = 1; // 网站信息
}
// 查找网站配置

View File

@@ -31,4 +31,5 @@ const (
ConfigCodeTraffic ConfigCode = "traffic"
ConfigCodeRequestScripts ConfigCode = "requestScripts"
ConfigCodeReverseProxy ConfigCode = "reverseProxy"
ConfigCodeMultimedia ConfigCode = "multimedia"
)

View File

@@ -1,5 +1,13 @@
package firewallconfigs
type AllowScope = string
const (
AllowScopeGroup AllowScope = "group"
AllowScopeServer AllowScope = "server"
AllowScopeGlobal AllowScope = "global"
)
type HTTPFirewallAllowAction struct {
Life int64 `yaml:"life" json:"life"`
Scope AllowScope `yaml:"scope" json:"scope"`
}

View File

@@ -2,7 +2,7 @@ package firewallconfigs
import "net/http"
// HTTPFirewallBlockAction url client configure
// HTTPFirewallBlockAction default block action
type HTTPFirewallBlockAction struct {
IsPrior bool `yaml:"isPrior" json:"isPrior"`

View File

@@ -5,6 +5,12 @@ import (
)
var AllActions = []*HTTPFirewallActionDefinition{
{
Name: "显示网页",
Code: HTTPFirewallActionPage,
Description: "显示请求被拦截的网页。",
Category: HTTPFirewallActionCategoryBlock,
},
{
Name: "阻止",
Code: HTTPFirewallActionBlock,
@@ -29,12 +35,6 @@ var AllActions = []*HTTPFirewallActionDefinition{
Description: "将此IP记录到某个IP名单中。",
Category: HTTPFirewallActionCategoryBlock,
},
{
Name: "显示网页",
Code: HTTPFirewallActionPage,
Description: "在网页中显示提示文字。",
Category: HTTPFirewallActionCategoryBlock,
},
{
Name: "跳转",
Code: HTTPFirewallActionRedirect,
@@ -44,7 +44,7 @@ var AllActions = []*HTTPFirewallActionDefinition{
{
Name: "允许通过",
Code: HTTPFirewallActionAllow,
Description: "允许正常通过,不记录到日志。",
Description: "允许跳过规则集正常通过防火墙。",
Category: HTTPFirewallActionCategoryAllow,
},
{

View File

@@ -0,0 +1,34 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package firewallconfigs
import "net/http"
// HTTPFirewallPageAction default page action
type HTTPFirewallPageAction struct {
IsPrior bool `yaml:"isPrior" json:"isPrior"`
Status int `yaml:"status" json:"status"`
Body string `yaml:"body" json:"body"`
}
func DefaultHTTPFirewallPageAction() *HTTPFirewallPageAction {
return &HTTPFirewallPageAction{
Status: http.StatusForbidden,
Body: `<!DOCTYPE html>
<html lang="en">
<head>
<title>403 Forbidden</title>
<style>
address { line-height: 1.8; }
</style>
</head>
<body>
<h1>403 Forbidden By WAF</h1>
<address>Connection: ${remoteAddr} (Client) -&gt; ${serverAddr} (Server)</address>
<address>Request ID: ${requestId}</address>
</body>
</html>`,
}
}

View File

@@ -15,6 +15,7 @@ type HTTPFirewallPolicy struct {
Outbound *HTTPFirewallOutboundConfig `yaml:"outbound" json:"outbound"`
BlockOptions *HTTPFirewallBlockAction `yaml:"blockOptions" json:"blockOptions"`
CaptchaOptions *HTTPFirewallCaptchaAction `yaml:"captchaOptions" json:"captchaOptions"`
PageOptions *HTTPFirewallPageAction `yaml:"pageOptions" json:"pageOptions"`
Mode FirewallMode `yaml:"mode" json:"mode"`
UseLocalFirewall bool `yaml:"useLocalFirewall" json:"useLocalFirewall"`
SYNFlood *SYNFloodConfig `yaml:"synFlood" json:"synFlood"`

View File

@@ -4,33 +4,35 @@ type HTTPFirewallRuleOperator = string
type HTTPFirewallRuleCaseInsensitive = string
const (
HTTPFirewallRuleOperatorGt HTTPFirewallRuleOperator = "gt"
HTTPFirewallRuleOperatorGte HTTPFirewallRuleOperator = "gte"
HTTPFirewallRuleOperatorLt HTTPFirewallRuleOperator = "lt"
HTTPFirewallRuleOperatorLte HTTPFirewallRuleOperator = "lte"
HTTPFirewallRuleOperatorEq HTTPFirewallRuleOperator = "eq"
HTTPFirewallRuleOperatorNeq HTTPFirewallRuleOperator = "neq"
HTTPFirewallRuleOperatorEqString HTTPFirewallRuleOperator = "eq string"
HTTPFirewallRuleOperatorNeqString HTTPFirewallRuleOperator = "neq string"
HTTPFirewallRuleOperatorMatch HTTPFirewallRuleOperator = "match"
HTTPFirewallRuleOperatorNotMatch HTTPFirewallRuleOperator = "not match"
HTTPFirewallRuleOperatorWildcardMatch HTTPFirewallRuleOperator = "wildcard match"
HTTPFirewallRuleOperatorWildcardNotMatch HTTPFirewallRuleOperator = "wildcard not match"
HTTPFirewallRuleOperatorContains HTTPFirewallRuleOperator = "contains"
HTTPFirewallRuleOperatorNotContains HTTPFirewallRuleOperator = "not contains"
HTTPFirewallRuleOperatorContainsAnyWord HTTPFirewallRuleOperator = "contains any word"
HTTPFirewallRuleOperatorContainsAllWords HTTPFirewallRuleOperator = "contains all words"
HTTPFirewallRuleOperatorNotContainsAnyWord HTTPFirewallRuleOperator = "not contains any word"
HTTPFirewallRuleOperatorPrefix HTTPFirewallRuleOperator = "prefix"
HTTPFirewallRuleOperatorSuffix HTTPFirewallRuleOperator = "suffix"
HTTPFirewallRuleOperatorContainsAny HTTPFirewallRuleOperator = "contains any"
HTTPFirewallRuleOperatorContainsAll HTTPFirewallRuleOperator = "contains all"
HTTPFirewallRuleOperatorContainsSQLInjection HTTPFirewallRuleOperator = "contains sql injection"
HTTPFirewallRuleOperatorContainsXSS HTTPFirewallRuleOperator = "contains xss"
HTTPFirewallRuleOperatorHasKey HTTPFirewallRuleOperator = "has key" // has key in slice or map
HTTPFirewallRuleOperatorVersionGt HTTPFirewallRuleOperator = "version gt"
HTTPFirewallRuleOperatorVersionLt HTTPFirewallRuleOperator = "version lt"
HTTPFirewallRuleOperatorVersionRange HTTPFirewallRuleOperator = "version range"
HTTPFirewallRuleOperatorGt HTTPFirewallRuleOperator = "gt"
HTTPFirewallRuleOperatorGte HTTPFirewallRuleOperator = "gte"
HTTPFirewallRuleOperatorLt HTTPFirewallRuleOperator = "lt"
HTTPFirewallRuleOperatorLte HTTPFirewallRuleOperator = "lte"
HTTPFirewallRuleOperatorEq HTTPFirewallRuleOperator = "eq"
HTTPFirewallRuleOperatorNeq HTTPFirewallRuleOperator = "neq"
HTTPFirewallRuleOperatorEqString HTTPFirewallRuleOperator = "eq string"
HTTPFirewallRuleOperatorNeqString HTTPFirewallRuleOperator = "neq string"
HTTPFirewallRuleOperatorMatch HTTPFirewallRuleOperator = "match"
HTTPFirewallRuleOperatorNotMatch HTTPFirewallRuleOperator = "not match"
HTTPFirewallRuleOperatorWildcardMatch HTTPFirewallRuleOperator = "wildcard match"
HTTPFirewallRuleOperatorWildcardNotMatch HTTPFirewallRuleOperator = "wildcard not match"
HTTPFirewallRuleOperatorContains HTTPFirewallRuleOperator = "contains"
HTTPFirewallRuleOperatorNotContains HTTPFirewallRuleOperator = "not contains"
HTTPFirewallRuleOperatorContainsAnyWord HTTPFirewallRuleOperator = "contains any word"
HTTPFirewallRuleOperatorContainsAllWords HTTPFirewallRuleOperator = "contains all words"
HTTPFirewallRuleOperatorNotContainsAnyWord HTTPFirewallRuleOperator = "not contains any word"
HTTPFirewallRuleOperatorPrefix HTTPFirewallRuleOperator = "prefix"
HTTPFirewallRuleOperatorSuffix HTTPFirewallRuleOperator = "suffix"
HTTPFirewallRuleOperatorContainsAny HTTPFirewallRuleOperator = "contains any"
HTTPFirewallRuleOperatorContainsAll HTTPFirewallRuleOperator = "contains all"
HTTPFirewallRuleOperatorContainsSQLInjection HTTPFirewallRuleOperator = "contains sql injection"
HTTPFirewallRuleOperatorContainsSQLInjectionStrictly HTTPFirewallRuleOperator = "contains sql injection strictly"
HTTPFirewallRuleOperatorContainsXSS HTTPFirewallRuleOperator = "contains xss"
HTTPFirewallRuleOperatorContainsXSSStrictly HTTPFirewallRuleOperator = "contains xss strictly"
HTTPFirewallRuleOperatorHasKey HTTPFirewallRuleOperator = "has key" // has key in slice or map
HTTPFirewallRuleOperatorVersionGt HTTPFirewallRuleOperator = "version gt"
HTTPFirewallRuleOperatorVersionLt HTTPFirewallRuleOperator = "version lt"
HTTPFirewallRuleOperatorVersionRange HTTPFirewallRuleOperator = "version range"
HTTPFirewallRuleOperatorContainsBinary HTTPFirewallRuleOperator = "contains binary" // contains binary
HTTPFirewallRuleOperatorNotContainsBinary HTTPFirewallRuleOperator = "not contains binary" // not contains binary
@@ -175,6 +177,13 @@ var AllRuleOperators = []*RuleOperatorDefinition{
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
DataType: "none",
},
{
Name: "包含SQL注入-严格模式",
Code: HTTPFirewallRuleOperatorContainsSQLInjectionStrictly,
Description: "更加严格地检测字符串内容是否包含SQL注入相对于非严格模式有一定的误报几率。",
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
DataType: "none",
},
{
Name: "包含XSS注入",
Code: HTTPFirewallRuleOperatorContainsXSS,
@@ -182,6 +191,13 @@ var AllRuleOperators = []*RuleOperatorDefinition{
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
DataType: "none",
},
{
Name: "包含XSS注入-严格模式",
Code: HTTPFirewallRuleOperatorContainsXSSStrictly,
Description: "更加严格地检测字符串内容是否包含XSS注入相对于非严格模式此时xml、audio、video等标签也会被匹配。",
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
DataType: "none",
},
{
Name: "包含二进制数据",
Code: HTTPFirewallRuleOperatorContainsBinary,

View File

@@ -18,7 +18,7 @@ func NewGlobalServerConfig() *GlobalServerConfig {
var config = &GlobalServerConfig{}
config.HTTPAll.SupportsLowVersionHTTP = true
config.HTTPAll.EnableServerAddrVariable = true
config.HTTPAll.EnableServerAddrVariable = false
config.HTTPAll.LnRequestSchedulingMethod = LnRequestSchedulingMethodURLMapping
config.HTTPAccessLog.IsOn = true

View File

@@ -0,0 +1,29 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package serverconfigs
// HLSConfig HTTP Living Streaming相关配置
type HLSConfig struct {
IsPrior bool `yaml:"isPrior" json:"isPrior"`
Encrypting *HLSEncryptingConfig `yaml:"encrypting" json:"encrypting"` // 加密设置
}
func (this *HLSConfig) Init() error {
// encrypting
if this.Encrypting != nil {
err := this.Encrypting.Init()
if err != nil {
return err
}
}
return nil
}
func (this *HLSConfig) IsEmpty() bool {
if this.Encrypting != nil && this.Encrypting.IsOn {
return false
}
return true
}

View File

@@ -0,0 +1,54 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package serverconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
// HLSEncryptingConfig HLS加密配置
type HLSEncryptingConfig struct {
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用
OnlyURLPatterns []*shared.URLPattern `yaml:"onlyURLPatterns" json:"onlyURLPatterns"` // 仅限的URL
ExceptURLPatterns []*shared.URLPattern `yaml:"exceptURLPatterns" json:"exceptURLPatterns"` // 排除的URL
}
func (this *HLSEncryptingConfig) Init() error {
for _, pattern := range this.OnlyURLPatterns {
err := pattern.Init()
if err != nil {
return err
}
}
for _, pattern := range this.ExceptURLPatterns {
err := pattern.Init()
if err != nil {
return err
}
}
return nil
}
func (this *HLSEncryptingConfig) MatchURL(url string) bool {
// except
if len(this.ExceptURLPatterns) > 0 {
for _, pattern := range this.ExceptURLPatterns {
if pattern.Match(url) {
return false
}
}
}
// only
if len(this.OnlyURLPatterns) > 0 {
for _, pattern := range this.OnlyURLPatterns {
if pattern.Match(url) {
return true
}
}
return false
}
return true
}

View File

@@ -1,16 +1,17 @@
package serverconfigs
// 字符集设置
// HTTPCharsetConfig 字符集设置
type HTTPCharsetConfig struct {
IsPrior bool `yaml:"isPrior" json:"isPrior"` // 是否覆盖
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用
Charset string `yaml:"charset" json:"charset"` // 字符集
IsUpper bool `yaml:"isUpper" json:"isUpper"` // 是否要大写
Force bool `yaml:"force" json:"force"` // 是否强制覆盖
// TODO 支持自定义字符集
}
// 初始化
// Init 初始化
func (this *HTTPCharsetConfig) Init() error {
return nil
}

View File

@@ -32,6 +32,7 @@ type HTTPWebConfig struct {
FastcgiRef *HTTPFastcgiRef `yaml:"fastcgiRef" json:"fastcgiRef"` // Fastcgi引用
FastcgiList []*HTTPFastcgiConfig `yaml:"fastcgiList" json:"fastcgiList"` // Fastcgi配置
UserAgent *UserAgentConfig `yaml:"userAgent" json:"userAgent"` // UserAgent配置
HLS *HLSConfig `yaml:"hls" json:"hls"` // HLS配置
RequestHeaderPolicyRef *shared.HTTPHeaderPolicyRef `yaml:"requestHeaderPolicyRef" json:"requestHeaderPolicyRef"` // 请求Header
RequestHeaderPolicy *shared.HTTPHeaderPolicy `yaml:"requestHeaderPolicy" json:"requestHeaderPolicy"` // 请求Header策略
@@ -311,6 +312,14 @@ func (this *HTTPWebConfig) Init(ctx context.Context) error {
}
}
// hls
if this.HLS != nil {
err := this.HLS.Init()
if err != nil {
return err
}
}
return nil
}

View File

@@ -2,11 +2,24 @@
package serverconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
// PlanConfig 套餐配置
type PlanConfig struct {
Id int64 `yaml:"id" json:"id"`
Name string `yaml:"name" json:"name"`
TrafficLimit *TrafficLimitConfig `yaml:"trafficLimit" json:"trafficLimit"`
BandwidthLimitPerNode *shared.BitSizeCapacity `yaml:"bandwidthLimitPerNode" json:"bandwidthLimitPerNode"`
MaxUploadSize *shared.SizeCapacity `yaml:"maxUploadSize" json:"maxUploadSize"`
}
func (this *PlanConfig) Init() error {
if this.TrafficLimit != nil {
err := this.TrafficLimit.Init()
if err != nil {
return err
}
}
return nil
}

View File

@@ -256,9 +256,7 @@ func (this *ServerConfig) Init(ctx context.Context) (results []error) {
results = append(results, err)
}
if this.UserPlan.Plan != nil {
this.planId = this.UserPlan.Plan.Id
}
this.planId = this.UserPlan.PlanId
}
// UAM

View File

@@ -0,0 +1,77 @@
package shared
import "encoding/json"
type BitSizeCapacityUnit = string
const (
BitSizeCapacityUnitB BitSizeCapacityUnit = "b"
BitSizeCapacityUnitKB BitSizeCapacityUnit = "kb"
BitSizeCapacityUnitMB BitSizeCapacityUnit = "mb"
BitSizeCapacityUnitGB BitSizeCapacityUnit = "gb"
BitSizeCapacityUnitTB BitSizeCapacityUnit = "tb"
BitSizeCapacityUnitPB BitSizeCapacityUnit = "pb"
BitSizeCapacityUnitEB BitSizeCapacityUnit = "eb"
//BitSizeCapacityUnitZB BitSizeCapacityUnit = "zb" // zb和yb超出int64范围暂不支持
//BitSizeCapacityUnitYB BitSizeCapacityUnit = "yb"
)
type BitSizeCapacity struct {
Count int64 `json:"count" yaml:"count"`
Unit BitSizeCapacityUnit `json:"unit" yaml:"unit"`
}
func NewBitSizeCapacity(count int64, unit BitSizeCapacityUnit) *BitSizeCapacity {
return &BitSizeCapacity{
Count: count,
Unit: unit,
}
}
func DecodeBitSizeCapacityJSON(sizeCapacityJSON []byte) (*BitSizeCapacity, error) {
var capacity = &BitSizeCapacity{}
err := json.Unmarshal(sizeCapacityJSON, capacity)
return capacity, err
}
func (this *BitSizeCapacity) Bits() int64 {
if this.Count < 0 {
return -1
}
switch this.Unit {
case BitSizeCapacityUnitB:
return this.Count
case BitSizeCapacityUnitKB:
return this.Count * this.pow(1)
case BitSizeCapacityUnitMB:
return this.Count * this.pow(2)
case BitSizeCapacityUnitGB:
return this.Count * this.pow(3)
case BitSizeCapacityUnitTB:
return this.Count * this.pow(4)
case BitSizeCapacityUnitPB:
return this.Count * this.pow(5)
case BitSizeCapacityUnitEB:
return this.Count * this.pow(6)
default:
return this.Count
}
}
func (this *BitSizeCapacity) IsNotEmpty() bool {
return this.Count > 0
}
func (this *BitSizeCapacity) AsJSON() ([]byte, error) {
return json.Marshal(this)
}
func (this *BitSizeCapacity) pow(n int) int64 {
if n <= 0 {
return 1
}
if n == 1 {
return 1024 // TODO 考虑是否使用1000进制
}
return this.pow(n-1) * 1024
}

View File

@@ -0,0 +1,27 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package shared_test
import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
"testing"
)
func TestBitSizeCapacity_Bits(t *testing.T) {
{
var capacity = shared.NewBitSizeCapacity(1, shared.BitSizeCapacityUnitB)
t.Log(capacity.Bits())
}
{
var capacity = shared.NewBitSizeCapacity(2, shared.BitSizeCapacityUnitKB)
t.Log(capacity.Bits())
}
{
var capacity = shared.NewBitSizeCapacity(3, shared.BitSizeCapacityUnitMB)
t.Log(capacity.Bits())
}
{
var capacity = shared.NewBitSizeCapacity(4, shared.BitSizeCapacityUnitGB)
t.Log(capacity.Bits())
}
}

View File

@@ -4,7 +4,7 @@ import (
"crypto/tls"
)
var AllTlsVersions = []TLSVersion{"SSL 3.0", "TLS 1.0", "TLS 1.1", "TLS 1.2", "TLS 1.3"}
var AllTlsVersions = []TLSVersion{ /**"SSL 3.0",**/ "TLS 1.0", "TLS 1.1", "TLS 1.2", "TLS 1.3"}
var AllTLSCipherSuites = []TLSCipherSuite{
"TLS_RSA_WITH_RC4_128_SHA",

View File

@@ -29,6 +29,10 @@ type TrafficLimitConfig struct {
NoticePageBody string `yaml:"noticePageBody" json:"noticePageBody"` // 超出限制时的提醒,支持请求变量
}
func (this *TrafficLimitConfig) Init() error {
return nil
}
// DailyBytes 每天限制
// 不使用Init()来初始化数据是为了让其他地方不经过Init()也能得到计算值
func (this *TrafficLimitConfig) DailyBytes() int64 {

View File

@@ -2,17 +2,20 @@
package serverconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
)
// UAMConfig UAM配置
type UAMConfig struct {
IsPrior bool `yaml:"isPrior" json:"isPrior"`
IsOn bool `yaml:"isOn" json:"isOn"`
AddToWhiteList bool `yaml:"addToWhiteList" json:"addToWhiteList"` // 是否将IP加入到白名单
OnlyURLPatterns []*shared.URLPattern `yaml:"onlyURLPatterns" json:"onlyURLPatterns"` // 仅限的URL
ExceptURLPatterns []*shared.URLPattern `yaml:"exceptURLPatterns" json:"exceptURLPatterns"` // 排除的URL
MinQPSPerIP int `yaml:"minQPSPerIP" json:"minQPSPerIP"` // 启用要求的单IP最低平均QPS
AddToWhiteList bool `yaml:"addToWhiteList" json:"addToWhiteList"` // 是否将IP加入到白名单
OnlyURLPatterns []*shared.URLPattern `yaml:"onlyURLPatterns" json:"onlyURLPatterns"` // 仅限的URL
ExceptURLPatterns []*shared.URLPattern `yaml:"exceptURLPatterns" json:"exceptURLPatterns"` // 排除的URL
MinQPSPerIP int `yaml:"minQPSPerIP" json:"minQPSPerIP"` // 启用要求的单IP最低平均QPS
Conds *shared.HTTPRequestCondsConfig `yaml:"conds" json:"conds"` // 匹配条件
}
func NewUAMConfig() *UAMConfig {
@@ -38,6 +41,14 @@ func (this *UAMConfig) Init() error {
}
}
// conds
if this.Conds != nil {
err := this.Conds.Init()
if err != nil {
return err
}
}
return nil
}
@@ -62,3 +73,10 @@ func (this *UAMConfig) MatchURL(url string) bool {
return true
}
func (this *UAMConfig) MatchRequest(formatter func(s string) string) bool {
if this.Conds == nil {
return true
}
return this.Conds.MatchRequest(formatter)
}

View File

@@ -20,20 +20,13 @@ const DefaultPlanExpireNoticePageBody = `<!DOCTYPE html>
// UserPlanConfig 用户套餐配置
type UserPlanConfig struct {
Id int64 `yaml:"id" json:"id"` // 用户套餐ID
DayTo string `yaml:"dayTo" json:"dayTo"` // 有效期
Plan *PlanConfig `yaml:"plan" json:"plan"`
Id int64 `yaml:"id" json:"id"` // 用户套餐ID
DayTo string `yaml:"dayTo" json:"dayTo"` // 有效期
PlanId int64 `yaml:"planId" json:"planId"` // 套餐定义ID
}
// Init 初始化
func (this *UserPlanConfig) Init() error {
if this.Plan != nil {
err := this.Plan.Init()
if err != nil {
return err
}
}
return nil
}

View File

@@ -16,8 +16,9 @@ type UserUIConfig struct {
Version string `json:"version"` // 显示的版本号
ShowFinance bool `json:"showFinance"` // 是否显示财务相关信息
FaviconFileId int64 `json:"faviconFileId"` // Favicon文件ID
LogoFileId int64 `json:"logoFileId"` // Logo文件ID
TimeZone string `json:"timeZone"` // 时区
LogoFileId int64 `json:"logoFileId"` // 控制面板Logo文件ID
TimeZone string `json:"timeZone"` // 时区
ClientIPHeaderNames string `json:"clientIPHeaderNames"` // 客户端IP获取报头名称列表
@@ -36,6 +37,11 @@ type UserUIConfig struct {
BandwidthAlgo BandwidthAlgo `json:"bandwidthAlgo"` // 带宽算法
} `json:"trafficStats"` // 流量统计相关设置
Portal struct {
IsOn bool `json:"isOn"` // 是否启用
LogoFileId int64 `json:"logoFileId"` // Logo文件ID
} `json:"portal"` // 门户页面相关设置
Theme ThemeConfig `yaml:"theme" json:"theme"` // 风格模板
}