mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-30 17:30:25 +08:00
实现缓存策略部分管理功能
This commit is contained in:
@@ -78,6 +78,7 @@ func (this *NodeConfig) AvailableGroups() []*serverconfigs.ServerGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *NodeConfig) Init() error {
|
func (this *NodeConfig) Init() error {
|
||||||
|
// servers
|
||||||
for _, server := range this.Servers {
|
for _, server := range this.Servers {
|
||||||
err := server.Init()
|
err := server.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -85,6 +86,14 @@ func (this *NodeConfig) Init() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// global config
|
||||||
|
if this.GlobalConfig != nil {
|
||||||
|
err := this.GlobalConfig.Init()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
427
pkg/rpc/pb/service_sys_setting.pb.go
Normal file
427
pkg/rpc/pb/service_sys_setting.pb.go
Normal file
@@ -0,0 +1,427 @@
|
|||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.25.0
|
||||||
|
// protoc v3.12.3
|
||||||
|
// source: service_sys_setting.proto
|
||||||
|
|
||||||
|
package pb
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
codes "google.golang.org/grpc/codes"
|
||||||
|
status "google.golang.org/grpc/status"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// This is a compile-time assertion that a sufficiently up-to-date version
|
||||||
|
// of the legacy proto package is being used.
|
||||||
|
const _ = proto.ProtoPackageIsVersion4
|
||||||
|
|
||||||
|
// 更改配置
|
||||||
|
type UpdateSysSettingRequest struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
|
||||||
|
ValueJSON []byte `protobuf:"bytes,2,opt,name=valueJSON,proto3" json:"valueJSON,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *UpdateSysSettingRequest) Reset() {
|
||||||
|
*x = UpdateSysSettingRequest{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_service_sys_setting_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *UpdateSysSettingRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*UpdateSysSettingRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *UpdateSysSettingRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_service_sys_setting_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 UpdateSysSettingRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*UpdateSysSettingRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_service_sys_setting_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *UpdateSysSettingRequest) GetCode() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Code
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *UpdateSysSettingRequest) GetValueJSON() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.ValueJSON
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取配置
|
||||||
|
type ReadSysSettingRequest struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingRequest) Reset() {
|
||||||
|
*x = ReadSysSettingRequest{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_service_sys_setting_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ReadSysSettingRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_service_sys_setting_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 ReadSysSettingRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ReadSysSettingRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_service_sys_setting_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingRequest) GetCode() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Code
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReadSysSettingResponse struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
ValueJSON []byte `protobuf:"bytes,1,opt,name=valueJSON,proto3" json:"valueJSON,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingResponse) Reset() {
|
||||||
|
*x = ReadSysSettingResponse{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_service_sys_setting_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ReadSysSettingResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_service_sys_setting_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 ReadSysSettingResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ReadSysSettingResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_service_sys_setting_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ReadSysSettingResponse) GetValueJSON() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.ValueJSON
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_service_sys_setting_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_service_sys_setting_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x73, 0x65,
|
||||||
|
0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a,
|
||||||
|
0x12, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72,
|
||||||
|
0x6f, 0x74, 0x6f, 0x22, 0x4b, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73,
|
||||||
|
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
|
||||||
|
0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f,
|
||||||
|
0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x18,
|
||||||
|
0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x53, 0x4f, 0x4e,
|
||||||
|
0x22, 0x2b, 0x0a, 0x15, 0x52, 0x65, 0x61, 0x64, 0x53, 0x79, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69,
|
||||||
|
0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
|
||||||
|
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x36, 0x0a,
|
||||||
|
0x16, 0x52, 0x65, 0x61, 0x64, 0x53, 0x79, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52,
|
||||||
|
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||||
|
0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75,
|
||||||
|
0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x32, 0xa3, 0x01, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x53, 0x65, 0x74,
|
||||||
|
0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x75,
|
||||||
|
0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12,
|
||||||
|
0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x53, 0x65,
|
||||||
|
0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70,
|
||||||
|
0x62, 0x2e, 0x52, 0x50, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x63, 0x63, 0x65,
|
||||||
|
0x73, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x53, 0x79, 0x73, 0x53, 0x65, 0x74,
|
||||||
|
0x74, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x53, 0x79,
|
||||||
|
0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||||
|
0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x53, 0x79, 0x73, 0x53, 0x65, 0x74, 0x74,
|
||||||
|
0x69, 0x6e, 0x67, 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_sys_setting_proto_rawDescOnce sync.Once
|
||||||
|
file_service_sys_setting_proto_rawDescData = file_service_sys_setting_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_service_sys_setting_proto_rawDescGZIP() []byte {
|
||||||
|
file_service_sys_setting_proto_rawDescOnce.Do(func() {
|
||||||
|
file_service_sys_setting_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_sys_setting_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_service_sys_setting_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_service_sys_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||||
|
var file_service_sys_setting_proto_goTypes = []interface{}{
|
||||||
|
(*UpdateSysSettingRequest)(nil), // 0: pb.UpdateSysSettingRequest
|
||||||
|
(*ReadSysSettingRequest)(nil), // 1: pb.ReadSysSettingRequest
|
||||||
|
(*ReadSysSettingResponse)(nil), // 2: pb.ReadSysSettingResponse
|
||||||
|
(*RPCUpdateSuccess)(nil), // 3: pb.RPCUpdateSuccess
|
||||||
|
}
|
||||||
|
var file_service_sys_setting_proto_depIdxs = []int32{
|
||||||
|
0, // 0: pb.SysSettingService.updateSysSetting:input_type -> pb.UpdateSysSettingRequest
|
||||||
|
1, // 1: pb.SysSettingService.readSysSetting:input_type -> pb.ReadSysSettingRequest
|
||||||
|
3, // 2: pb.SysSettingService.updateSysSetting:output_type -> pb.RPCUpdateSuccess
|
||||||
|
2, // 3: pb.SysSettingService.readSysSetting:output_type -> pb.ReadSysSettingResponse
|
||||||
|
2, // [2:4] is the sub-list for method output_type
|
||||||
|
0, // [0:2] 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_service_sys_setting_proto_init() }
|
||||||
|
func file_service_sys_setting_proto_init() {
|
||||||
|
if File_service_sys_setting_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file_rpc_messages_proto_init()
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_service_sys_setting_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*UpdateSysSettingRequest); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_service_sys_setting_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ReadSysSettingRequest); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_service_sys_setting_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ReadSysSettingResponse); 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_sys_setting_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 3,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 1,
|
||||||
|
},
|
||||||
|
GoTypes: file_service_sys_setting_proto_goTypes,
|
||||||
|
DependencyIndexes: file_service_sys_setting_proto_depIdxs,
|
||||||
|
MessageInfos: file_service_sys_setting_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_service_sys_setting_proto = out.File
|
||||||
|
file_service_sys_setting_proto_rawDesc = nil
|
||||||
|
file_service_sys_setting_proto_goTypes = nil
|
||||||
|
file_service_sys_setting_proto_depIdxs = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ context.Context
|
||||||
|
var _ grpc.ClientConnInterface
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the grpc package it is being compiled against.
|
||||||
|
const _ = grpc.SupportPackageIsVersion6
|
||||||
|
|
||||||
|
// SysSettingServiceClient is the client API for SysSettingService service.
|
||||||
|
//
|
||||||
|
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
|
||||||
|
type SysSettingServiceClient interface {
|
||||||
|
// 更改配置
|
||||||
|
UpdateSysSetting(ctx context.Context, in *UpdateSysSettingRequest, opts ...grpc.CallOption) (*RPCUpdateSuccess, error)
|
||||||
|
// 读取配置
|
||||||
|
ReadSysSetting(ctx context.Context, in *ReadSysSettingRequest, opts ...grpc.CallOption) (*ReadSysSettingResponse, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type sysSettingServiceClient struct {
|
||||||
|
cc grpc.ClientConnInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSysSettingServiceClient(cc grpc.ClientConnInterface) SysSettingServiceClient {
|
||||||
|
return &sysSettingServiceClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *sysSettingServiceClient) UpdateSysSetting(ctx context.Context, in *UpdateSysSettingRequest, opts ...grpc.CallOption) (*RPCUpdateSuccess, error) {
|
||||||
|
out := new(RPCUpdateSuccess)
|
||||||
|
err := c.cc.Invoke(ctx, "/pb.SysSettingService/updateSysSetting", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *sysSettingServiceClient) ReadSysSetting(ctx context.Context, in *ReadSysSettingRequest, opts ...grpc.CallOption) (*ReadSysSettingResponse, error) {
|
||||||
|
out := new(ReadSysSettingResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/pb.SysSettingService/readSysSetting", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysSettingServiceServer is the server API for SysSettingService service.
|
||||||
|
type SysSettingServiceServer interface {
|
||||||
|
// 更改配置
|
||||||
|
UpdateSysSetting(context.Context, *UpdateSysSettingRequest) (*RPCUpdateSuccess, error)
|
||||||
|
// 读取配置
|
||||||
|
ReadSysSetting(context.Context, *ReadSysSettingRequest) (*ReadSysSettingResponse, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnimplementedSysSettingServiceServer can be embedded to have forward compatible implementations.
|
||||||
|
type UnimplementedSysSettingServiceServer struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*UnimplementedSysSettingServiceServer) UpdateSysSetting(context.Context, *UpdateSysSettingRequest) (*RPCUpdateSuccess, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method UpdateSysSetting not implemented")
|
||||||
|
}
|
||||||
|
func (*UnimplementedSysSettingServiceServer) ReadSysSetting(context.Context, *ReadSysSettingRequest) (*ReadSysSettingResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method ReadSysSetting not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterSysSettingServiceServer(s *grpc.Server, srv SysSettingServiceServer) {
|
||||||
|
s.RegisterService(&_SysSettingService_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _SysSettingService_UpdateSysSetting_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(UpdateSysSettingRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SysSettingServiceServer).UpdateSysSetting(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/pb.SysSettingService/UpdateSysSetting",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SysSettingServiceServer).UpdateSysSetting(ctx, req.(*UpdateSysSettingRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _SysSettingService_ReadSysSetting_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ReadSysSettingRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SysSettingServiceServer).ReadSysSetting(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/pb.SysSettingService/ReadSysSetting",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SysSettingServiceServer).ReadSysSetting(ctx, req.(*ReadSysSettingRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _SysSettingService_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "pb.SysSettingService",
|
||||||
|
HandlerType: (*SysSettingServiceServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "updateSysSetting",
|
||||||
|
Handler: _SysSettingService_UpdateSysSetting_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "readSysSetting",
|
||||||
|
Handler: _SysSettingService_ReadSysSetting_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{},
|
||||||
|
Metadata: "service_sys_setting.proto",
|
||||||
|
}
|
||||||
@@ -9,4 +9,4 @@ message RPCUpdateSuccess {
|
|||||||
|
|
||||||
message RPCDeleteSuccess {
|
message RPCDeleteSuccess {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,29 @@ option go_package = "./pb";
|
|||||||
package pb;
|
package pb;
|
||||||
|
|
||||||
import "model_http_cache_policy.proto";
|
import "model_http_cache_policy.proto";
|
||||||
|
import "rpc_messages.proto";
|
||||||
|
|
||||||
service HTTPCachePolicyService {
|
service HTTPCachePolicyService {
|
||||||
// 获取所有可用策略
|
// 获取所有可用策略
|
||||||
rpc findAllEnabledHTTPCachePolicies (FindAllEnabledHTTPCachePoliciesRequest) returns (FindAllEnabledHTTPCachePoliciesResponse);
|
rpc findAllEnabledHTTPCachePolicies (FindAllEnabledHTTPCachePoliciesRequest) returns (FindAllEnabledHTTPCachePoliciesResponse);
|
||||||
|
|
||||||
|
// 创建缓存策略
|
||||||
|
rpc createHTTPCachePolicy (CreateHTTPCachePolicyRequest) returns (CreateHTTPCachePolicyResponse);
|
||||||
|
|
||||||
|
// 修改缓存策略
|
||||||
|
rpc updateHTTPCachePolicy (UpdateHTTPCachePolicyRequest) returns (RPCUpdateSuccess);
|
||||||
|
|
||||||
|
// 删除缓存策略
|
||||||
|
rpc deleteHTTPCachePolicy (DeleteHTTPCachePolicyRequest) returns (RPCDeleteSuccess);
|
||||||
|
|
||||||
|
// 计算缓存策略数量
|
||||||
|
rpc countAllEnabledHTTPCachePolicies (CountAllEnabledHTTPCachePoliciesRequest) returns (CountAllEnabledHTTPCachePoliciesResponse);
|
||||||
|
|
||||||
|
// 列出单页的缓存策略
|
||||||
|
rpc listEnabledHTTPCachePolicies (ListEnabledHTTPCachePoliciesRequest) returns (ListEnabledHTTPCachePoliciesResponse);
|
||||||
|
|
||||||
|
// 查找单个缓存策略配置
|
||||||
|
rpc findEnabledHTTPCachePolicyConfig (FindEnabledHTTPCachePolicyConfigRequest) returns (FindEnabledHTTPCachePolicyConfigResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取所有可用策略
|
// 获取所有可用策略
|
||||||
@@ -19,3 +38,63 @@ message FindAllEnabledHTTPCachePoliciesResponse {
|
|||||||
repeated HTTPCachePolicy cachePolicies = 1;
|
repeated HTTPCachePolicy cachePolicies = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 创建缓存策略
|
||||||
|
message CreateHTTPCachePolicyRequest {
|
||||||
|
bool isOn = 1;
|
||||||
|
string name = 2;
|
||||||
|
string description = 3;
|
||||||
|
bytes capacityJSON = 4;
|
||||||
|
int64 maxKeys = 5;
|
||||||
|
bytes maxSizeJSON = 6;
|
||||||
|
string type = 7;
|
||||||
|
bytes optionsJSON = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CreateHTTPCachePolicyResponse {
|
||||||
|
int64 cachePolicyId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改缓存策略
|
||||||
|
message UpdateHTTPCachePolicyRequest {
|
||||||
|
int64 cachePolicyId = 1;
|
||||||
|
bool isOn = 2;
|
||||||
|
string name = 3;
|
||||||
|
string description = 4;
|
||||||
|
bytes capacityJSON = 5;
|
||||||
|
int64 maxKeys = 6;
|
||||||
|
bytes maxSizeJSON = 7;
|
||||||
|
string type = 8;
|
||||||
|
bytes optionsJSON = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除缓存策略
|
||||||
|
message DeleteHTTPCachePolicyRequest {
|
||||||
|
int64 cachePolicyId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算缓存策略数量
|
||||||
|
message CountAllEnabledHTTPCachePoliciesRequest {
|
||||||
|
}
|
||||||
|
|
||||||
|
message CountAllEnabledHTTPCachePoliciesResponse {
|
||||||
|
int64 count = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列出单页的缓存策略
|
||||||
|
message ListEnabledHTTPCachePoliciesRequest {
|
||||||
|
int64 offset = 1;
|
||||||
|
int64 size = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ListEnabledHTTPCachePoliciesResponse {
|
||||||
|
bytes cachePoliciesJSON = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找单个缓存策略配置
|
||||||
|
message FindEnabledHTTPCachePolicyConfigRequest {
|
||||||
|
int64 cachePolicyId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FindEnabledHTTPCachePolicyConfigResponse {
|
||||||
|
bytes cachePolicyJSON = 1;
|
||||||
|
}
|
||||||
@@ -62,10 +62,16 @@ service ServerService {
|
|||||||
rpc findAndInitServerWebConfig (FindAndInitServerWebConfigRequest) returns (FindAndInitServerWebConfigResponse);
|
rpc findAndInitServerWebConfig (FindAndInitServerWebConfigRequest) returns (FindAndInitServerWebConfigResponse);
|
||||||
|
|
||||||
// 计算使用某个SSL证书的服务数量
|
// 计算使用某个SSL证书的服务数量
|
||||||
rpc countServersWithSSLCertId (CountServersWithSSLCertIdRequest) returns (CountServersWithSSLCertIdResponse);
|
rpc countAllEnabledServersWithSSLCertId (CountAllEnabledServersWithSSLCertIdRequest) returns (CountAllEnabledServersWithSSLCertIdResponse);
|
||||||
|
|
||||||
// 查找使用某个SSL证书的所有服务
|
// 查找使用某个SSL证书的所有服务
|
||||||
rpc findAllServersWithSSLCertId (FindAllServersWithSSLCertIdRequest) returns (FindAllServersWithSSLCertIdResponse);
|
rpc findAllEnabledServersWithSSLCertId (FindAllEnabledServersWithSSLCertIdRequest) returns (FindAllEnabledServersWithSSLCertIdResponse);
|
||||||
|
|
||||||
|
// 计算使用某个缓存策略的服务数量
|
||||||
|
rpc countAllEnabledServersWithCachePolicyId (CountAllEnabledServersWithCachePolicyIdRequest) returns (CountAllEnabledServersWithCachePolicyIdResponse);
|
||||||
|
|
||||||
|
// 查找使用某个缓存策略的所有服务
|
||||||
|
rpc findAllEnabledServersWithCachePolicyId (FindAllEnabledServersWithCachePolicyIdRequest) returns (FindAllEnabledServersWithCachePolicyIdResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建服务
|
// 创建服务
|
||||||
@@ -217,19 +223,38 @@ message FindAndInitServerWebConfigResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算使用某个SSL证书的服务数量
|
// 计算使用某个SSL证书的服务数量
|
||||||
message CountServersWithSSLCertIdRequest {
|
message CountAllEnabledServersWithSSLCertIdRequest {
|
||||||
int64 certId = 1;
|
int64 certId = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CountServersWithSSLCertIdResponse {
|
message CountAllEnabledServersWithSSLCertIdResponse {
|
||||||
int64 count = 1;
|
int64 count = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查找使用某个SSL证书的所有服务
|
// 查找使用某个SSL证书的所有服务
|
||||||
message FindAllServersWithSSLCertIdRequest {
|
message FindAllEnabledServersWithSSLCertIdRequest {
|
||||||
int64 certId = 1;
|
int64 certId = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message FindAllServersWithSSLCertIdResponse {
|
message FindAllEnabledServersWithSSLCertIdResponse {
|
||||||
repeated Server servers = 1;
|
repeated Server servers = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 计算使用某个缓存策略的服务数量
|
||||||
|
message CountAllEnabledServersWithCachePolicyIdRequest {
|
||||||
|
int64 cachePolicyId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CountAllEnabledServersWithCachePolicyIdResponse {
|
||||||
|
int64 count = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找使用某个缓存策略的所有服务
|
||||||
|
message FindAllEnabledServersWithCachePolicyIdRequest {
|
||||||
|
int64 cachePolicyId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FindAllEnabledServersWithCachePolicyIdResponse {
|
||||||
|
repeated Server servers = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
29
pkg/rpc/protos/service_sys_setting.proto
Normal file
29
pkg/rpc/protos/service_sys_setting.proto
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
option go_package = "./pb";
|
||||||
|
|
||||||
|
package pb;
|
||||||
|
|
||||||
|
import "rpc_messages.proto";
|
||||||
|
|
||||||
|
service SysSettingService {
|
||||||
|
// 更改配置
|
||||||
|
rpc updateSysSetting (UpdateSysSettingRequest) returns (RPCUpdateSuccess);
|
||||||
|
|
||||||
|
// 读取配置
|
||||||
|
rpc readSysSetting (ReadSysSettingRequest) returns (ReadSysSettingResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更改配置
|
||||||
|
message UpdateSysSettingRequest {
|
||||||
|
string code = 1;
|
||||||
|
bytes valueJSON = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取配置
|
||||||
|
message ReadSysSettingRequest {
|
||||||
|
string code = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ReadSysSettingResponse {
|
||||||
|
bytes valueJSON = 1;
|
||||||
|
}
|
||||||
67
pkg/serverconfigs/http_cache_cond.go
Normal file
67
pkg/serverconfigs/http_cache_cond.go
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
package serverconfigs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||||
|
"github.com/iwind/TeaGo/lists"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var DefaultSkippedResponseCacheControlValues = []string{"private", "no-cache", "no-store"}
|
||||||
|
|
||||||
|
type HTTPCacheCond struct {
|
||||||
|
Key string `yaml:"key" json:"key"` // 每个缓存的Key规则,里面可以有变量
|
||||||
|
Life *shared.TimeDuration `yaml:"life" json:"life"` // 时间
|
||||||
|
Status []int `yaml:"status" json:"status"` // 缓存的状态码列表
|
||||||
|
MaxSize *shared.SizeCapacity `yaml:"maxSize" json:"maxSize"` // 能够请求的最大尺寸
|
||||||
|
|
||||||
|
SkipResponseCacheControlValues []string `yaml:"skipCacheControlValues" json:"skipCacheControlValues"` // 可以跳过的响应的Cache-Control值
|
||||||
|
SkipResponseSetCookie bool `yaml:"skipSetCookie" json:"skipSetCookie"` // 是否跳过响应的Set-Cookie Header
|
||||||
|
EnableRequestCachePragma bool `yaml:"enableRequestCachePragma" json:"enableRequestCachePragma"` // 是否支持客户端的Pragma: no-cache
|
||||||
|
|
||||||
|
Conds *shared.HTTPRequestCondsConfig `yaml:"conds" json:"conds"` // 请求条件
|
||||||
|
|
||||||
|
life time.Duration
|
||||||
|
maxSize int64
|
||||||
|
uppercaseSkipCacheControlValues []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *HTTPCacheCond) Init() error {
|
||||||
|
if this.MaxSize != nil {
|
||||||
|
this.maxSize = this.MaxSize.Bytes()
|
||||||
|
}
|
||||||
|
if this.Life != nil {
|
||||||
|
this.life = this.Life.Duration()
|
||||||
|
}
|
||||||
|
|
||||||
|
// control-values
|
||||||
|
this.uppercaseSkipCacheControlValues = []string{}
|
||||||
|
for _, value := range this.SkipResponseCacheControlValues {
|
||||||
|
this.uppercaseSkipCacheControlValues = append(this.uppercaseSkipCacheControlValues, strings.ToUpper(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
// conds
|
||||||
|
if this.Conds != nil {
|
||||||
|
err := this.Conds.Init()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 最大数据尺寸
|
||||||
|
func (this *HTTPCacheCond) MaxDataSize() int64 {
|
||||||
|
return this.maxSize
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生命周期
|
||||||
|
func (this *HTTPCacheCond) LifeDuration() time.Duration {
|
||||||
|
return this.life
|
||||||
|
}
|
||||||
|
|
||||||
|
// 是否包含某个Cache-Control值
|
||||||
|
func (this *HTTPCacheCond) ContainsCacheControl(value string) bool {
|
||||||
|
return lists.ContainsString(this.uppercaseSkipCacheControlValues, strings.ToUpper(value))
|
||||||
|
}
|
||||||
11
pkg/serverconfigs/http_cache_config_file.go
Normal file
11
pkg/serverconfigs/http_cache_config_file.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package serverconfigs
|
||||||
|
|
||||||
|
type CachePolicyType = string
|
||||||
|
|
||||||
|
type HTTPFileCacheConfig struct {
|
||||||
|
Dir string `yaml:"dir" json:"dir"` // 目录
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *HTTPFileCacheConfig) Init() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
8
pkg/serverconfigs/http_cache_config_memory.go
Normal file
8
pkg/serverconfigs/http_cache_config_memory.go
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package serverconfigs
|
||||||
|
|
||||||
|
type HTTPMemoryCacheConfig struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *HTTPMemoryCacheConfig) Init() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -1,129 +1,36 @@
|
|||||||
package serverconfigs
|
package serverconfigs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||||
"github.com/iwind/TeaGo/Tea"
|
|
||||||
"github.com/iwind/TeaGo/files"
|
|
||||||
"github.com/iwind/TeaGo/lists"
|
|
||||||
"github.com/iwind/TeaGo/logs"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var DefaultSkippedResponseCacheControlValues = []string{"private", "no-cache", "no-store"}
|
|
||||||
|
|
||||||
// 缓存策略配置
|
// 缓存策略配置
|
||||||
type HTTPCachePolicy struct {
|
type HTTPCachePolicy struct {
|
||||||
Id int64 `yaml:"id" json:"id"`
|
Id int64 `yaml:"id" json:"id"`
|
||||||
IsOn bool `yaml:"isOn" json:"isOn"` // 是否开启 TODO
|
IsOn bool `yaml:"isOn" json:"isOn"` // 是否开启
|
||||||
Name string `yaml:"name" json:"name"` // 名称
|
Name string `yaml:"name" json:"name"` // 名称
|
||||||
|
Description string `yaml:"description" json:"description"` // 描述
|
||||||
|
Capacity *shared.SizeCapacity `yaml:"capacity" json:"capacity"` // 最大内容容量
|
||||||
|
MaxKeys int64 `yaml:"maxKeys" json:"maxKeys"` // 最多Key值
|
||||||
|
MaxSize *shared.SizeCapacity `yaml:"maxSize" json:"maxSize"` // 单个缓存最大尺寸
|
||||||
|
Type CachePolicyType `yaml:"type" json:"type"` // 类型
|
||||||
|
Options map[string]interface{} `yaml:"options" json:"options"` // 选项
|
||||||
|
|
||||||
Key string `yaml:"key" json:"key"` // 每个缓存的Key规则,里面可以有变量
|
|
||||||
Capacity *shared.SizeCapacity `yaml:"capacity" json:"capacity"` // 最大内容容量
|
|
||||||
Life *shared.TimeDuration `yaml:"life" json:"life"` // 时间
|
|
||||||
Status []int `yaml:"status" json:"status"` // 缓存的状态码列表
|
|
||||||
MaxSize *shared.SizeCapacity `yaml:"maxSize" json:"maxSize"` // 能够请求的最大尺寸
|
|
||||||
|
|
||||||
SkipResponseCacheControlValues []string `yaml:"skipCacheControlValues" json:"skipCacheControlValues"` // 可以跳过的响应的Cache-Control值
|
|
||||||
SkipResponseSetCookie bool `yaml:"skipSetCookie" json:"skipSetCookie"` // 是否跳过响应的Set-Cookie Header
|
|
||||||
EnableRequestCachePragma bool `yaml:"enableRequestCachePragma" json:"enableRequestCachePragma"` // 是否支持客户端的Pragma: no-cache
|
|
||||||
|
|
||||||
Conds *shared.HTTPRequestCondsConfig `yaml:"conds" json:"conds"` // 请求条件
|
|
||||||
|
|
||||||
life time.Duration
|
|
||||||
maxSize int64
|
|
||||||
capacity int64
|
capacity int64
|
||||||
|
|
||||||
uppercaseSkipCacheControlValues []string
|
|
||||||
|
|
||||||
Type string `yaml:"type" json:"type"` // 类型
|
|
||||||
Options map[string]interface{} `yaml:"options" json:"options"` // 选项
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取新对象
|
|
||||||
func NewHTTPCachePolicy() *HTTPCachePolicy {
|
|
||||||
return &HTTPCachePolicy{
|
|
||||||
SkipResponseCacheControlValues: DefaultSkippedResponseCacheControlValues,
|
|
||||||
SkipResponseSetCookie: true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 从文件中读取缓存策略
|
|
||||||
func NewCachePolicyFromFile(file string) *HTTPCachePolicy {
|
|
||||||
if len(file) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
reader, err := files.NewReader(Tea.ConfigFile(file))
|
|
||||||
if err != nil {
|
|
||||||
logs.Error(err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
_ = reader.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
p := NewHTTPCachePolicy()
|
|
||||||
err = reader.ReadYAML(p)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error(err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return p
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 校验
|
// 校验
|
||||||
func (this *HTTPCachePolicy) Init() error {
|
func (this *HTTPCachePolicy) Init() error {
|
||||||
var err error
|
var err error
|
||||||
this.maxSize = this.MaxSize.Bytes()
|
|
||||||
this.life = this.Life.Duration()
|
|
||||||
this.capacity = this.Capacity.Bytes()
|
|
||||||
|
|
||||||
this.uppercaseSkipCacheControlValues = []string{}
|
if this.Capacity != nil {
|
||||||
for _, value := range this.SkipResponseCacheControlValues {
|
this.capacity = this.Capacity.Bytes()
|
||||||
this.uppercaseSkipCacheControlValues = append(this.uppercaseSkipCacheControlValues, strings.ToUpper(value))
|
|
||||||
}
|
|
||||||
|
|
||||||
// cond
|
|
||||||
if this.Conds != nil {
|
|
||||||
err := this.Conds.Init()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最大数据尺寸
|
|
||||||
func (this *HTTPCachePolicy) MaxDataSize() int64 {
|
|
||||||
return this.maxSize
|
|
||||||
}
|
|
||||||
|
|
||||||
// 容量
|
// 容量
|
||||||
func (this *HTTPCachePolicy) CapacitySize() int64 {
|
func (this *HTTPCachePolicy) CapacitySize() int64 {
|
||||||
return this.capacity
|
return this.capacity
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生命周期
|
|
||||||
func (this *HTTPCachePolicy) LifeDuration() time.Duration {
|
|
||||||
return this.life
|
|
||||||
}
|
|
||||||
|
|
||||||
// 是否包含某个Cache-Control值
|
|
||||||
func (this *HTTPCachePolicy) ContainsCacheControl(value string) bool {
|
|
||||||
return lists.ContainsString(this.uppercaseSkipCacheControlValues, strings.ToUpper(value))
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查是否匹配关键词
|
|
||||||
func (this *HTTPCachePolicy) MatchKeyword(keyword string) (matched bool, name string, tags []string) {
|
|
||||||
if configutils.MatchKeyword(this.Name, keyword) || configutils.MatchKeyword(this.Type, keyword) {
|
|
||||||
matched = true
|
|
||||||
name = this.Name
|
|
||||||
if len(this.Type) > 0 {
|
|
||||||
tags = []string{"类型:" + this.Type}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|||||||
29
pkg/serverconfigs/http_cache_policy_types.go
Normal file
29
pkg/serverconfigs/http_cache_policy_types.go
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package serverconfigs
|
||||||
|
|
||||||
|
import "github.com/iwind/TeaGo/maps"
|
||||||
|
|
||||||
|
const (
|
||||||
|
CachePolicyTypeFile CachePolicyType = "file"
|
||||||
|
CachePolicyTypeMemory CachePolicyType = "memory"
|
||||||
|
)
|
||||||
|
|
||||||
|
var AllCachePolicyTypes = []maps.Map{
|
||||||
|
{
|
||||||
|
"name": "文件缓存",
|
||||||
|
"type": CachePolicyTypeFile,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "内存缓存",
|
||||||
|
"type": CachePolicyTypeMemory,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据类型查找名称
|
||||||
|
func FindCachePolicyTypeName(policyType CachePolicyType) string {
|
||||||
|
for _, t := range AllCachePolicyTypes {
|
||||||
|
if t.GetString("type") == policyType {
|
||||||
|
return t.GetString("name")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
@@ -1,11 +1,18 @@
|
|||||||
package serverconfigs
|
package serverconfigs
|
||||||
|
|
||||||
type HTTPCacheRef struct {
|
type HTTPCacheRef struct {
|
||||||
IsPrior bool `yaml:"isPrior" json:"isPrior"` // 是否覆盖
|
IsPrior bool `yaml:"isPrior" json:"isPrior"` // 是否覆盖
|
||||||
IsOn bool `yaml:"isOn" json:"isOn"` // 是否开启
|
IsOn bool `yaml:"isOn" json:"isOn"` // 是否开启
|
||||||
CachePolicyId int64 `yaml:"cachePolicyId" json:"cachePolicyId"` // 缓存策略ID
|
CachePolicyId int64 `yaml:"cachePolicyId" json:"cachePolicyId"` // 缓存策略ID
|
||||||
|
Cond *HTTPCacheCond `yaml:"cond" json:"cond"` // 条件
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *HTTPCacheRef) Init() error {
|
func (this *HTTPCacheRef) Init() error {
|
||||||
|
if this.Cond != nil {
|
||||||
|
err := this.Cond.Init()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ type HTTPWebConfig struct {
|
|||||||
MaxRequestBodySize string `yaml:"maxRequestBodySize" json:"maxRequestBodySize"` // 请求body最大尺寸 TODO 需要实现
|
MaxRequestBodySize string `yaml:"maxRequestBodySize" json:"maxRequestBodySize"` // 请求body最大尺寸 TODO 需要实现
|
||||||
AccessLogRef *HTTPAccessLogRef `yaml:"accessLog" json:"accessLog"` // 访问日志配置
|
AccessLogRef *HTTPAccessLogRef `yaml:"accessLog" json:"accessLog"` // 访问日志配置
|
||||||
StatRef *HTTPStatRef `yaml:"statRef" json:"statRef"` // 统计配置
|
StatRef *HTTPStatRef `yaml:"statRef" json:"statRef"` // 统计配置
|
||||||
CacheRef *HTTPCacheRef `yaml:"cacheRef" json:"cacheRef"` // 缓存配置
|
CacheRefs []*HTTPCacheRef `yaml:"cacheRefs" json:"cacheRefs"` // 缓存配置
|
||||||
|
CachePolicies []*HTTPCachePolicy `yaml:"cachePolicies" json:"cachePolicies"` // 缓存策略
|
||||||
FirewallRef *HTTPFirewallRef `yaml:"firewallRef" json:"firewallRef"` // 防火墙设置
|
FirewallRef *HTTPFirewallRef `yaml:"firewallRef" json:"firewallRef"` // 防火墙设置
|
||||||
WebsocketRef *HTTPWebsocketRef `yaml:"websocketRef" json:"websocketRef"` // Websocket应用配置
|
WebsocketRef *HTTPWebsocketRef `yaml:"websocketRef" json:"websocketRef"` // Websocket应用配置
|
||||||
Websocket *HTTPWebsocketConfig `yaml:"websocket" json:"websocket"` // Websocket配置
|
Websocket *HTTPWebsocketConfig `yaml:"websocket" json:"websocket"` // Websocket配置
|
||||||
@@ -111,8 +112,14 @@ func (this *HTTPWebConfig) Init() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// cache
|
// cache
|
||||||
if this.CacheRef != nil {
|
for _, cacheRef := range this.CacheRefs {
|
||||||
err := this.CacheRef.Init()
|
err := cacheRef.Init()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, cachePolicy := range this.CachePolicies {
|
||||||
|
err := cachePolicy.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user