Browse Source

feature: 1、实现域名配置中强制开启https的功能, 2、增加ruleset的增删查功能,3、导入最新的cloudflare的go包后,调用api方式的改变

liufan 2 months ago
parent
commit
1061cdf089

File diff suppressed because it is too large
+ 1671 - 714
cloudflareApi/zone/zone.pb.go


+ 201 - 27
cloudflareApi/zone/zone_grpc.pb.go

@@ -1,8 +1,8 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
-// - protoc-gen-go-grpc v1.3.0
+// - protoc-gen-go-grpc v1.4.0
 // - protoc             v3.20.1
-// source: proto/zone.proto
+// source: zone.proto
 
 package zone
 
@@ -15,8 +15,8 @@ import (
 
 // 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
+// Requires gRPC-Go v1.62.0 or later.
+const _ = grpc.SupportPackageIsVersion8
 
 const (
 	ZoneCloudflare_ZoneIDByNameCloudflare_FullMethodName        = "/cloudflareApi.zone.ZoneCloudflare/ZoneIDByNameCloudflare"
@@ -36,11 +36,15 @@ const (
 	ZoneCloudflare_UpdatePageRulesPriorities_FullMethodName     = "/cloudflareApi.zone.ZoneCloudflare/UpdatePageRulesPriorities"
 	ZoneCloudflare_UpdateRuleSet_FullMethodName                 = "/cloudflareApi.zone.ZoneCloudflare/UpdateRuleSet"
 	ZoneCloudflare_GetRuleSet_FullMethodName                    = "/cloudflareApi.zone.ZoneCloudflare/GetRuleSet"
+	ZoneCloudflare_ListZoneRuleSets_FullMethodName              = "/cloudflareApi.zone.ZoneCloudflare/ListZoneRuleSets"
+	ZoneCloudflare_CreateZoneRuleSet_FullMethodName             = "/cloudflareApi.zone.ZoneCloudflare/CreateZoneRuleSet"
+	ZoneCloudflare_DeleteZoneRuleSet_FullMethodName             = "/cloudflareApi.zone.ZoneCloudflare/DeleteZoneRuleSet"
 	ZoneCloudflare_UpdateArgoSetting_FullMethodName             = "/cloudflareApi.zone.ZoneCloudflare/UpdateArgoSetting"
 	ZoneCloudflare_GetArgoSetting_FullMethodName                = "/cloudflareApi.zone.ZoneCloudflare/GetArgoSetting"
 	ZoneCloudflare_GetArgoSettingSubscription_FullMethodName    = "/cloudflareApi.zone.ZoneCloudflare/GetArgoSettingSubscription"
 	ZoneCloudflare_CreateArgoSettingSubscription_FullMethodName = "/cloudflareApi.zone.ZoneCloudflare/CreateArgoSettingSubscription"
 	ZoneCloudflare_SetSmartTieredCache_FullMethodName           = "/cloudflareApi.zone.ZoneCloudflare/SetSmartTieredCache"
+	ZoneCloudflare_UpdateAlwaysUseHttps_FullMethodName          = "/cloudflareApi.zone.ZoneCloudflare/UpdateAlwaysUseHttps"
 )
 
 // ZoneCloudflareClient is the client API for ZoneCloudflare service.
@@ -67,12 +71,16 @@ type ZoneCloudflareClient interface {
 	// RuleSet UR
 	UpdateRuleSet(ctx context.Context, in *UpdateRuleSetRequestCloudflare, opts ...grpc.CallOption) (*RuleList, error)
 	GetRuleSet(ctx context.Context, in *GetRuleSetRequestCloudflare, opts ...grpc.CallOption) (*RuleList, error)
+	ListZoneRuleSets(ctx context.Context, in *ListZoneRuleSetsRequestCloudflare, opts ...grpc.CallOption) (*RuleSetList, error)
+	CreateZoneRuleSet(ctx context.Context, in *CreateZoneRuleSetRequestCloudflare, opts ...grpc.CallOption) (*CreateZoneRuleSetReplyCloudflare, error)
+	DeleteZoneRuleSet(ctx context.Context, in *DeleteZoneRuleSetRequestCloudflare, opts ...grpc.CallOption) (*DeleteZoneRuleSetReplyCloudflare, error)
 	// Argo Smart Routing Setting UR
 	UpdateArgoSetting(ctx context.Context, in *UpdateArgoRequestCloudflare, opts ...grpc.CallOption) (*ArgoSetting, error)
 	GetArgoSetting(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*ArgoSetting, error)
 	GetArgoSettingSubscription(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*ArgoSetting, error)
 	CreateArgoSettingSubscription(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*ArgoSetting, error)
 	SetSmartTieredCache(ctx context.Context, in *SetSmartTieredCacheRequestCloudflare, opts ...grpc.CallOption) (*SetSmartTieredCacheReplyCloudflare, error)
+	UpdateAlwaysUseHttps(ctx context.Context, in *UpdateAlwaysUseHttpsRequestCloudflare, opts ...grpc.CallOption) (*UpdateAlwaysUseHttpsReplyCloudflare, error)
 }
 
 type zoneCloudflareClient struct {
@@ -84,8 +92,9 @@ func NewZoneCloudflareClient(cc grpc.ClientConnInterface) ZoneCloudflareClient {
 }
 
 func (c *zoneCloudflareClient) ZoneIDByNameCloudflare(ctx context.Context, in *ZoneIDByNameRequestCloudflare, opts ...grpc.CallOption) (*ZoneIDByNameReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ZoneIDByNameReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_ZoneIDByNameCloudflare_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ZoneIDByNameCloudflare_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -93,8 +102,9 @@ func (c *zoneCloudflareClient) ZoneIDByNameCloudflare(ctx context.Context, in *Z
 }
 
 func (c *zoneCloudflareClient) ZoneDetails(ctx context.Context, in *ZoneDetailsRequestCloudflare, opts ...grpc.CallOption) (*ZoneDetailsReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ZoneDetailsReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_ZoneDetails_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ZoneDetails_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -102,8 +112,9 @@ func (c *zoneCloudflareClient) ZoneDetails(ctx context.Context, in *ZoneDetailsR
 }
 
 func (c *zoneCloudflareClient) GetZones(ctx context.Context, in *GetZonesRequestCloudflare, opts ...grpc.CallOption) (*GetZonesReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(GetZonesReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_GetZones_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_GetZones_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -111,8 +122,9 @@ func (c *zoneCloudflareClient) GetZones(ctx context.Context, in *GetZonesRequest
 }
 
 func (c *zoneCloudflareClient) EditZone(ctx context.Context, in *EditZoneRequestCloudflare, opts ...grpc.CallOption) (*EditZoneReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(EditZoneReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_EditZone_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_EditZone_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -120,8 +132,9 @@ func (c *zoneCloudflareClient) EditZone(ctx context.Context, in *EditZoneRequest
 }
 
 func (c *zoneCloudflareClient) DeleteZone(ctx context.Context, in *DeleteZoneRequestCloudflare, opts ...grpc.CallOption) (*DeleteZoneReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(DeleteZoneReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_DeleteZone_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_DeleteZone_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -129,8 +142,9 @@ func (c *zoneCloudflareClient) DeleteZone(ctx context.Context, in *DeleteZoneReq
 }
 
 func (c *zoneCloudflareClient) ListZones(ctx context.Context, in *ListZonesRequestCloudflare, opts ...grpc.CallOption) (*ZonesList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ZonesList)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_ListZones_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ListZones_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -138,8 +152,9 @@ func (c *zoneCloudflareClient) ListZones(ctx context.Context, in *ListZonesReque
 }
 
 func (c *zoneCloudflareClient) ListZonesByAccountId(ctx context.Context, in *ListZonesByAccountIdRequestCloudflare, opts ...grpc.CallOption) (*ZonesList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ZonesList)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_ListZonesByAccountId_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ListZonesByAccountId_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -147,8 +162,9 @@ func (c *zoneCloudflareClient) ListZonesByAccountId(ctx context.Context, in *Lis
 }
 
 func (c *zoneCloudflareClient) ActivationCheck(ctx context.Context, in *ActivationCheckRequestCloudflare, opts ...grpc.CallOption) (*ActivationCheckReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ActivationCheckReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_ActivationCheck_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ActivationCheck_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -156,8 +172,9 @@ func (c *zoneCloudflareClient) ActivationCheck(ctx context.Context, in *Activati
 }
 
 func (c *zoneCloudflareClient) CreateZone(ctx context.Context, in *CreateZoneRequestCloudflare, opts ...grpc.CallOption) (*CreateZoneReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(CreateZoneReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_CreateZone_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_CreateZone_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -165,8 +182,9 @@ func (c *zoneCloudflareClient) CreateZone(ctx context.Context, in *CreateZoneReq
 }
 
 func (c *zoneCloudflareClient) SetZonePlan(ctx context.Context, in *SetZonePlanRequestCloudflare, opts ...grpc.CallOption) (*SetZonePlanReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(SetZonePlanReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_SetZonePlan_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_SetZonePlan_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -174,8 +192,9 @@ func (c *zoneCloudflareClient) SetZonePlan(ctx context.Context, in *SetZonePlanR
 }
 
 func (c *zoneCloudflareClient) ListPageRule(ctx context.Context, in *ListPageRuleRequestCloudflare, opts ...grpc.CallOption) (*PageRuleList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(PageRuleList)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_ListPageRule_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ListPageRule_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -183,8 +202,9 @@ func (c *zoneCloudflareClient) ListPageRule(ctx context.Context, in *ListPageRul
 }
 
 func (c *zoneCloudflareClient) CreatePageRule(ctx context.Context, in *CreatePageRuleRequestCloudflare, opts ...grpc.CallOption) (*PageRule, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(PageRule)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_CreatePageRule_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_CreatePageRule_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -192,8 +212,9 @@ func (c *zoneCloudflareClient) CreatePageRule(ctx context.Context, in *CreatePag
 }
 
 func (c *zoneCloudflareClient) UpdatePageRule(ctx context.Context, in *UpdatePageRuleRequestCloudflare, opts ...grpc.CallOption) (*PageRule, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(PageRule)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdatePageRule_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdatePageRule_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -201,8 +222,9 @@ func (c *zoneCloudflareClient) UpdatePageRule(ctx context.Context, in *UpdatePag
 }
 
 func (c *zoneCloudflareClient) DeletePageRule(ctx context.Context, in *DeletePageRuleRequestCloudflare, opts ...grpc.CallOption) (*PageRule, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(PageRule)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_DeletePageRule_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_DeletePageRule_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -210,8 +232,9 @@ func (c *zoneCloudflareClient) DeletePageRule(ctx context.Context, in *DeletePag
 }
 
 func (c *zoneCloudflareClient) UpdatePageRulesPriorities(ctx context.Context, in *UpdatePageRulesPrioritiesRequestCloudflare, opts ...grpc.CallOption) (*PageRuleList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(PageRuleList)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdatePageRulesPriorities_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdatePageRulesPriorities_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -219,8 +242,9 @@ func (c *zoneCloudflareClient) UpdatePageRulesPriorities(ctx context.Context, in
 }
 
 func (c *zoneCloudflareClient) UpdateRuleSet(ctx context.Context, in *UpdateRuleSetRequestCloudflare, opts ...grpc.CallOption) (*RuleList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(RuleList)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdateRuleSet_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdateRuleSet_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -228,8 +252,39 @@ func (c *zoneCloudflareClient) UpdateRuleSet(ctx context.Context, in *UpdateRule
 }
 
 func (c *zoneCloudflareClient) GetRuleSet(ctx context.Context, in *GetRuleSetRequestCloudflare, opts ...grpc.CallOption) (*RuleList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(RuleList)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_GetRuleSet_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_GetRuleSet_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *zoneCloudflareClient) ListZoneRuleSets(ctx context.Context, in *ListZoneRuleSetsRequestCloudflare, opts ...grpc.CallOption) (*RuleSetList, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(RuleSetList)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_ListZoneRuleSets_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *zoneCloudflareClient) CreateZoneRuleSet(ctx context.Context, in *CreateZoneRuleSetRequestCloudflare, opts ...grpc.CallOption) (*CreateZoneRuleSetReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CreateZoneRuleSetReplyCloudflare)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_CreateZoneRuleSet_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *zoneCloudflareClient) DeleteZoneRuleSet(ctx context.Context, in *DeleteZoneRuleSetRequestCloudflare, opts ...grpc.CallOption) (*DeleteZoneRuleSetReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeleteZoneRuleSetReplyCloudflare)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_DeleteZoneRuleSet_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -237,8 +292,9 @@ func (c *zoneCloudflareClient) GetRuleSet(ctx context.Context, in *GetRuleSetReq
 }
 
 func (c *zoneCloudflareClient) UpdateArgoSetting(ctx context.Context, in *UpdateArgoRequestCloudflare, opts ...grpc.CallOption) (*ArgoSetting, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ArgoSetting)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdateArgoSetting_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdateArgoSetting_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -246,8 +302,9 @@ func (c *zoneCloudflareClient) UpdateArgoSetting(ctx context.Context, in *Update
 }
 
 func (c *zoneCloudflareClient) GetArgoSetting(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*ArgoSetting, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ArgoSetting)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_GetArgoSetting_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_GetArgoSetting_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -255,8 +312,9 @@ func (c *zoneCloudflareClient) GetArgoSetting(ctx context.Context, in *IdRequest
 }
 
 func (c *zoneCloudflareClient) GetArgoSettingSubscription(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*ArgoSetting, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ArgoSetting)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_GetArgoSettingSubscription_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_GetArgoSettingSubscription_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -264,8 +322,9 @@ func (c *zoneCloudflareClient) GetArgoSettingSubscription(ctx context.Context, i
 }
 
 func (c *zoneCloudflareClient) CreateArgoSettingSubscription(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*ArgoSetting, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(ArgoSetting)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_CreateArgoSettingSubscription_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_CreateArgoSettingSubscription_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -273,8 +332,19 @@ func (c *zoneCloudflareClient) CreateArgoSettingSubscription(ctx context.Context
 }
 
 func (c *zoneCloudflareClient) SetSmartTieredCache(ctx context.Context, in *SetSmartTieredCacheRequestCloudflare, opts ...grpc.CallOption) (*SetSmartTieredCacheReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
 	out := new(SetSmartTieredCacheReplyCloudflare)
-	err := c.cc.Invoke(ctx, ZoneCloudflare_SetSmartTieredCache_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_SetSmartTieredCache_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *zoneCloudflareClient) UpdateAlwaysUseHttps(ctx context.Context, in *UpdateAlwaysUseHttpsRequestCloudflare, opts ...grpc.CallOption) (*UpdateAlwaysUseHttpsReplyCloudflare, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(UpdateAlwaysUseHttpsReplyCloudflare)
+	err := c.cc.Invoke(ctx, ZoneCloudflare_UpdateAlwaysUseHttps_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -305,12 +375,16 @@ type ZoneCloudflareServer interface {
 	// RuleSet UR
 	UpdateRuleSet(context.Context, *UpdateRuleSetRequestCloudflare) (*RuleList, error)
 	GetRuleSet(context.Context, *GetRuleSetRequestCloudflare) (*RuleList, error)
+	ListZoneRuleSets(context.Context, *ListZoneRuleSetsRequestCloudflare) (*RuleSetList, error)
+	CreateZoneRuleSet(context.Context, *CreateZoneRuleSetRequestCloudflare) (*CreateZoneRuleSetReplyCloudflare, error)
+	DeleteZoneRuleSet(context.Context, *DeleteZoneRuleSetRequestCloudflare) (*DeleteZoneRuleSetReplyCloudflare, error)
 	// Argo Smart Routing Setting UR
 	UpdateArgoSetting(context.Context, *UpdateArgoRequestCloudflare) (*ArgoSetting, error)
 	GetArgoSetting(context.Context, *IdRequest) (*ArgoSetting, error)
 	GetArgoSettingSubscription(context.Context, *IdRequest) (*ArgoSetting, error)
 	CreateArgoSettingSubscription(context.Context, *IdRequest) (*ArgoSetting, error)
 	SetSmartTieredCache(context.Context, *SetSmartTieredCacheRequestCloudflare) (*SetSmartTieredCacheReplyCloudflare, error)
+	UpdateAlwaysUseHttps(context.Context, *UpdateAlwaysUseHttpsRequestCloudflare) (*UpdateAlwaysUseHttpsReplyCloudflare, error)
 	mustEmbedUnimplementedZoneCloudflareServer()
 }
 
@@ -369,6 +443,15 @@ func (UnimplementedZoneCloudflareServer) UpdateRuleSet(context.Context, *UpdateR
 func (UnimplementedZoneCloudflareServer) GetRuleSet(context.Context, *GetRuleSetRequestCloudflare) (*RuleList, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetRuleSet not implemented")
 }
+func (UnimplementedZoneCloudflareServer) ListZoneRuleSets(context.Context, *ListZoneRuleSetsRequestCloudflare) (*RuleSetList, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListZoneRuleSets not implemented")
+}
+func (UnimplementedZoneCloudflareServer) CreateZoneRuleSet(context.Context, *CreateZoneRuleSetRequestCloudflare) (*CreateZoneRuleSetReplyCloudflare, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CreateZoneRuleSet not implemented")
+}
+func (UnimplementedZoneCloudflareServer) DeleteZoneRuleSet(context.Context, *DeleteZoneRuleSetRequestCloudflare) (*DeleteZoneRuleSetReplyCloudflare, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteZoneRuleSet not implemented")
+}
 func (UnimplementedZoneCloudflareServer) UpdateArgoSetting(context.Context, *UpdateArgoRequestCloudflare) (*ArgoSetting, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method UpdateArgoSetting not implemented")
 }
@@ -384,6 +467,9 @@ func (UnimplementedZoneCloudflareServer) CreateArgoSettingSubscription(context.C
 func (UnimplementedZoneCloudflareServer) SetSmartTieredCache(context.Context, *SetSmartTieredCacheRequestCloudflare) (*SetSmartTieredCacheReplyCloudflare, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SetSmartTieredCache not implemented")
 }
+func (UnimplementedZoneCloudflareServer) UpdateAlwaysUseHttps(context.Context, *UpdateAlwaysUseHttpsRequestCloudflare) (*UpdateAlwaysUseHttpsReplyCloudflare, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateAlwaysUseHttps not implemented")
+}
 func (UnimplementedZoneCloudflareServer) mustEmbedUnimplementedZoneCloudflareServer() {}
 
 // UnsafeZoneCloudflareServer may be embedded to opt out of forward compatibility for this service.
@@ -703,6 +789,60 @@ func _ZoneCloudflare_GetRuleSet_Handler(srv interface{}, ctx context.Context, de
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ZoneCloudflare_ListZoneRuleSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListZoneRuleSetsRequestCloudflare)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ZoneCloudflareServer).ListZoneRuleSets(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: ZoneCloudflare_ListZoneRuleSets_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ZoneCloudflareServer).ListZoneRuleSets(ctx, req.(*ListZoneRuleSetsRequestCloudflare))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ZoneCloudflare_CreateZoneRuleSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateZoneRuleSetRequestCloudflare)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ZoneCloudflareServer).CreateZoneRuleSet(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: ZoneCloudflare_CreateZoneRuleSet_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ZoneCloudflareServer).CreateZoneRuleSet(ctx, req.(*CreateZoneRuleSetRequestCloudflare))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ZoneCloudflare_DeleteZoneRuleSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteZoneRuleSetRequestCloudflare)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ZoneCloudflareServer).DeleteZoneRuleSet(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: ZoneCloudflare_DeleteZoneRuleSet_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ZoneCloudflareServer).DeleteZoneRuleSet(ctx, req.(*DeleteZoneRuleSetRequestCloudflare))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _ZoneCloudflare_UpdateArgoSetting_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(UpdateArgoRequestCloudflare)
 	if err := dec(in); err != nil {
@@ -793,6 +933,24 @@ func _ZoneCloudflare_SetSmartTieredCache_Handler(srv interface{}, ctx context.Co
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ZoneCloudflare_UpdateAlwaysUseHttps_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateAlwaysUseHttpsRequestCloudflare)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ZoneCloudflareServer).UpdateAlwaysUseHttps(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: ZoneCloudflare_UpdateAlwaysUseHttps_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ZoneCloudflareServer).UpdateAlwaysUseHttps(ctx, req.(*UpdateAlwaysUseHttpsRequestCloudflare))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 // ZoneCloudflare_ServiceDesc is the grpc.ServiceDesc for ZoneCloudflare service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -868,6 +1026,18 @@ var ZoneCloudflare_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "GetRuleSet",
 			Handler:    _ZoneCloudflare_GetRuleSet_Handler,
 		},
+		{
+			MethodName: "ListZoneRuleSets",
+			Handler:    _ZoneCloudflare_ListZoneRuleSets_Handler,
+		},
+		{
+			MethodName: "CreateZoneRuleSet",
+			Handler:    _ZoneCloudflare_CreateZoneRuleSet_Handler,
+		},
+		{
+			MethodName: "DeleteZoneRuleSet",
+			Handler:    _ZoneCloudflare_DeleteZoneRuleSet_Handler,
+		},
 		{
 			MethodName: "UpdateArgoSetting",
 			Handler:    _ZoneCloudflare_UpdateArgoSetting_Handler,
@@ -888,7 +1058,11 @@ var ZoneCloudflare_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "SetSmartTieredCache",
 			Handler:    _ZoneCloudflare_SetSmartTieredCache_Handler,
 		},
+		{
+			MethodName: "UpdateAlwaysUseHttps",
+			Handler:    _ZoneCloudflare_UpdateAlwaysUseHttps_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
-	Metadata: "proto/zone.proto",
+	Metadata: "zone.proto",
 }

+ 9 - 207
go.mod

@@ -3,224 +3,26 @@ module cfTest
 go 1.18
 
 require (
-	github.com/cloudflare/cloudflare-go v0.46.0
+	github.com/cloudflare/cloudflare-go v0.98.0
 	github.com/jinzhu/copier v0.3.5
 	github.com/samber/lo v1.37.0
 	github.com/sirupsen/logrus v1.9.0
-	google.golang.org/grpc v1.48.0
-	google.golang.org/protobuf v1.28.1
+	google.golang.org/grpc v1.64.0
+	google.golang.org/protobuf v1.33.0
 	gopkg.in/natefinch/lumberjack.v2 v2.0.0
 )
 
 require (
-	4d63.com/gochecknoglobals v0.1.0 // indirect
-	github.com/Antonboom/errname v0.1.7 // indirect
-	github.com/Antonboom/nilnil v0.1.1 // indirect
 	github.com/BurntSushi/toml v1.2.0 // indirect
-	github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
-	github.com/GaijinEntertainment/go-exhaustruct/v2 v2.2.2 // indirect
-	github.com/Masterminds/goutils v1.1.1 // indirect
-	github.com/Masterminds/semver v1.5.0 // indirect
-	github.com/Masterminds/semver/v3 v3.1.1 // indirect
-	github.com/Masterminds/sprig/v3 v3.2.2 // indirect
-	github.com/Microsoft/go-winio v0.4.16 // indirect
-	github.com/OpenPeeDeeP/depguard v1.1.0 // indirect
-	github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect
-	github.com/acomagu/bufpipe v1.0.3 // indirect
-	github.com/alexkohler/prealloc v1.0.0 // indirect
-	github.com/alingse/asasalint v0.0.11 // indirect
-	github.com/armon/go-radix v1.0.0 // indirect
-	github.com/ashanbrown/forbidigo v1.3.0 // indirect
-	github.com/ashanbrown/makezero v1.1.1 // indirect
-	github.com/beorn7/perks v1.0.1 // indirect
-	github.com/bflad/gopaniccheck v0.1.0 // indirect
-	github.com/bflad/tfproviderlint v0.28.1 // indirect
-	github.com/bgentry/speakeasy v0.1.0 // indirect
-	github.com/bkielbasa/cyclop v1.2.0 // indirect
-	github.com/blizzy78/varnamelen v0.8.0 // indirect
-	github.com/bombsimon/wsl/v3 v3.3.0 // indirect
-	github.com/breml/bidichk v0.2.3 // indirect
-	github.com/breml/errchkjson v0.3.0 // indirect
-	github.com/butuzov/ireturn v0.1.1 // indirect
-	github.com/cespare/xxhash/v2 v2.1.2 // indirect
-	github.com/charithe/durationcheck v0.0.9 // indirect
-	github.com/chavacava/garif v0.0.0-20220316182200-5cad0b5181d4 // indirect
-	github.com/client9/misspell v0.3.4 // indirect
-	github.com/daixiang0/gci v0.5.0 // indirect
-	github.com/davecgh/go-spew v1.1.1 // indirect
-	github.com/denis-tingaikin/go-header v0.4.3 // indirect
-	github.com/emirpasic/gods v1.12.0 // indirect
-	github.com/esimonov/ifshort v1.0.4 // indirect
-	github.com/ettle/strcase v0.1.1 // indirect
-	github.com/fatih/color v1.13.0 // indirect
-	github.com/fatih/structtag v1.2.0 // indirect
-	github.com/firefart/nonamedreturns v1.0.4 // indirect
-	github.com/fsnotify/fsnotify v1.5.4 // indirect
-	github.com/fzipp/gocyclo v0.6.0 // indirect
-	github.com/go-critic/go-critic v0.6.3 // indirect
-	github.com/go-git/gcfg v1.5.0 // indirect
-	github.com/go-git/go-billy/v5 v5.3.1 // indirect
-	github.com/go-git/go-git/v5 v5.4.2 // indirect
-	github.com/go-toolsmith/astcast v1.0.0 // indirect
-	github.com/go-toolsmith/astcopy v1.0.0 // indirect
-	github.com/go-toolsmith/astequal v1.0.1 // indirect
-	github.com/go-toolsmith/astfmt v1.0.0 // indirect
-	github.com/go-toolsmith/astp v1.0.0 // indirect
-	github.com/go-toolsmith/strparse v1.0.0 // indirect
-	github.com/go-toolsmith/typep v1.0.2 // indirect
-	github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect
-	github.com/gobwas/glob v0.2.3 // indirect
-	github.com/gofrs/flock v0.8.1 // indirect
-	github.com/golang/protobuf v1.5.2 // indirect
-	github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect
-	github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
-	github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect
-	github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a // indirect
-	github.com/golangci/golangci-lint v1.47.3 // indirect
-	github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect
-	github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect
-	github.com/golangci/misspell v0.3.5 // indirect
-	github.com/golangci/revgrep v0.0.0-20210930125155-c22e5001d4f2 // indirect
-	github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect
-	github.com/google/go-cmp v0.5.8 // indirect
-	github.com/google/go-github v17.0.0+incompatible // indirect
+	github.com/goccy/go-json v0.10.3 // indirect
 	github.com/google/go-querystring v1.1.0 // indirect
-	github.com/google/uuid v1.3.0 // indirect
-	github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect
-	github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
-	github.com/gostaticanalysis/comment v1.4.2 // indirect
-	github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
-	github.com/gostaticanalysis/nilerr v0.1.1 // indirect
-	github.com/hashicorp/errwrap v1.1.0 // indirect
-	github.com/hashicorp/go-changelog v0.0.0-20220419201213-5edfc0d651d8 // indirect
-	github.com/hashicorp/go-checkpoint v0.5.0 // indirect
 	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
-	github.com/hashicorp/go-multierror v1.1.1 // indirect
-	github.com/hashicorp/go-retryablehttp v0.7.2 // indirect
-	github.com/hashicorp/go-uuid v1.0.3 // indirect
-	github.com/hashicorp/go-version v1.6.0 // indirect
-	github.com/hashicorp/hc-install v0.4.0 // indirect
-	github.com/hashicorp/hcl v1.0.0 // indirect
-	github.com/hashicorp/terraform-exec v0.17.2 // indirect
-	github.com/hashicorp/terraform-json v0.14.0 // indirect
-	github.com/hashicorp/terraform-plugin-docs v0.13.0 // indirect
-	github.com/hexops/gotextdiff v1.0.3 // indirect
-	github.com/huandu/xstrings v1.3.2 // indirect
-	github.com/imdario/mergo v0.3.13 // indirect
-	github.com/inconshreveable/mousetrap v1.0.0 // indirect
-	github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
-	github.com/jgautheron/goconst v1.5.1 // indirect
-	github.com/jingyugao/rowserrcheck v1.1.1 // indirect
-	github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect
-	github.com/julz/importas v0.1.0 // indirect
-	github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect
-	github.com/kisielk/errcheck v1.6.1 // indirect
-	github.com/kisielk/gotool v1.0.0 // indirect
-	github.com/kulti/thelper v0.6.3 // indirect
-	github.com/kunwardeep/paralleltest v1.0.6 // indirect
-	github.com/kyoh86/exportloopref v0.1.8 // indirect
-	github.com/ldez/gomoddirectives v0.2.3 // indirect
-	github.com/ldez/tagliatelle v0.3.1 // indirect
-	github.com/leonklingele/grouper v1.1.0 // indirect
-	github.com/lufeee/execinquery v1.2.1 // indirect
-	github.com/magiconair/properties v1.8.6 // indirect
-	github.com/maratori/testpackage v1.1.0 // indirect
-	github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect
-	github.com/mattn/go-colorable v0.1.12 // indirect
-	github.com/mattn/go-isatty v0.0.14 // indirect
-	github.com/mattn/go-runewidth v0.0.13 // indirect
-	github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
-	github.com/mbilski/exhaustivestruct v1.2.0 // indirect
-	github.com/mgechev/revive v1.2.1 // indirect
-	github.com/mitchellh/cli v1.1.4 // indirect
-	github.com/mitchellh/copystructure v1.2.0 // indirect
-	github.com/mitchellh/go-homedir v1.1.0 // indirect
-	github.com/mitchellh/mapstructure v1.5.0 // indirect
-	github.com/mitchellh/reflectwalk v1.0.2 // indirect
-	github.com/moricho/tparallel v0.2.1 // indirect
-	github.com/nakabonne/nestif v0.3.1 // indirect
-	github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect
-	github.com/nishanths/exhaustive v0.8.1 // indirect
-	github.com/nishanths/predeclared v0.2.2 // indirect
-	github.com/olekukonko/tablewriter v0.0.5 // indirect
-	github.com/pelletier/go-toml v1.9.5 // indirect
-	github.com/pelletier/go-toml/v2 v2.0.2 // indirect
-	github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect
-	github.com/pkg/errors v0.9.1 // indirect
-	github.com/pmezard/go-difflib v1.0.0 // indirect
-	github.com/polyfloyd/go-errorlint v1.0.0 // indirect
-	github.com/posener/complete v1.2.3 // indirect
-	github.com/prometheus/client_golang v1.12.1 // indirect
-	github.com/prometheus/client_model v0.2.0 // indirect
-	github.com/prometheus/common v0.32.1 // indirect
-	github.com/prometheus/procfs v0.7.3 // indirect
-	github.com/quasilyte/go-ruleguard v0.3.16-0.20220213074421-6aa060fab41a // indirect
-	github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 // indirect
-	github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect
-	github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
-	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/russross/blackfriday v1.6.0 // indirect
-	github.com/ryancurrah/gomodguard v1.2.4 // indirect
-	github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect
-	github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect
-	github.com/securego/gosec/v2 v2.12.0 // indirect
-	github.com/sergi/go-diff v1.2.0 // indirect
-	github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
-	github.com/shopspring/decimal v1.3.1 // indirect
-	github.com/sivchari/containedctx v1.0.2 // indirect
-	github.com/sivchari/nosnakecase v1.7.0 // indirect
-	github.com/sivchari/tenv v1.7.0 // indirect
-	github.com/sonatard/noctx v0.0.1 // indirect
-	github.com/sourcegraph/go-diff v0.6.1 // indirect
-	github.com/spf13/afero v1.8.2 // indirect
-	github.com/spf13/cast v1.5.0 // indirect
-	github.com/spf13/cobra v1.5.0 // indirect
-	github.com/spf13/jwalterweatherman v1.1.0 // indirect
-	github.com/spf13/pflag v1.0.5 // indirect
-	github.com/spf13/viper v1.12.0 // indirect
-	github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
-	github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
-	github.com/stretchr/objx v0.4.0 // indirect
-	github.com/stretchr/testify v1.8.0 // indirect
-	github.com/subosito/gotenv v1.4.0 // indirect
-	github.com/sylvia7788/contextcheck v1.0.4 // indirect
-	github.com/tdakkota/asciicheck v0.1.1 // indirect
-	github.com/tetafro/godot v1.4.11 // indirect
-	github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect
-	github.com/tomarrell/wrapcheck/v2 v2.6.2 // indirect
-	github.com/tommy-muehle/go-mnd/v2 v2.5.0 // indirect
-	github.com/ultraware/funlen v0.0.3 // indirect
-	github.com/ultraware/whitespace v0.0.5 // indirect
-	github.com/uudashr/gocognit v1.0.6 // indirect
-	github.com/xanzy/ssh-agent v0.3.0 // indirect
-	github.com/yagipy/maintidx v1.0.0 // indirect
-	github.com/yeya24/promlinter v0.2.0 // indirect
-	github.com/zclconf/go-cty v1.10.0 // indirect
-	gitlab.com/bosi/decorder v0.2.3 // indirect
-	go.uber.org/atomic v1.7.0 // indirect
-	go.uber.org/multierr v1.6.0 // indirect
-	go.uber.org/zap v1.20.0 // indirect
-	golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
+	github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
 	golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
-	golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d // indirect
-	golang.org/x/mod v0.8.0 // indirect
-	golang.org/x/net v0.10.0 // indirect
-	golang.org/x/oauth2 v0.0.0-20220718184931-c8730f7fcb92 // indirect
-	golang.org/x/sync v0.1.0 // indirect
-	golang.org/x/sys v0.8.0 // indirect
-	golang.org/x/text v0.9.0 // indirect
-	golang.org/x/time v0.3.0 // indirect
-	golang.org/x/tools v0.6.0 // indirect
-	google.golang.org/appengine v1.6.7 // indirect
+	golang.org/x/net v0.26.0 // indirect
+	golang.org/x/sys v0.21.0 // indirect
+	golang.org/x/text v0.16.0 // indirect
+	golang.org/x/time v0.5.0 // indirect
 	google.golang.org/genproto v0.0.0-20220808131553-a91ffa7f803e // indirect
-	google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 // indirect
-	gopkg.in/ini.v1 v1.66.6 // indirect
-	gopkg.in/warnings.v0 v0.1.2 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
-	gopkg.in/yaml.v3 v3.0.1 // indirect
-	honnef.co/go/tools v0.3.3 // indirect
-	mvdan.cc/gofumpt v0.3.1 // indirect
-	mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect
-	mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect
-	mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect
 )

File diff suppressed because it is too large
+ 24 - 1444
go.sum


+ 32 - 13
server/DnsCloudflareServer.go

@@ -23,6 +23,7 @@ func Go2ProtoDnsRecord(goRecord *cloudflare.DNSRecord) (protoRecord *dns.DnsReco
 	protoRecord.Ttl = int64(goRecord.TTL)
 	return
 }
+
 func Proto2GoDnsRecord(protoRecord *dns.DnsRecord) (goRecord *cloudflare.DNSRecord) {
 	goRecord = new(cloudflare.DNSRecord)
 	err := copier.Copy(goRecord, protoRecord)
@@ -34,14 +35,34 @@ func Proto2GoDnsRecord(protoRecord *dns.DnsRecord) (goRecord *cloudflare.DNSReco
 	goRecord.ZoneID = protoRecord.ZoneId
 	return
 }
+
+func goRecord2CreateDnsRecordParams(goRecord *cloudflare.DNSRecord) (createDnsRecordParams *cloudflare.CreateDNSRecordParams) {
+	createDnsRecordParams = new(cloudflare.CreateDNSRecordParams)
+	err := copier.Copy(createDnsRecordParams, goRecord)
+	if err != nil {
+		return nil
+	}
+	return
+}
+
+func goRecord2UpdateDnsRecordParams(goRecord *cloudflare.DNSRecord) (updateDnsRecordParams *cloudflare.UpdateDNSRecordParams) {
+	updateDnsRecordParams = new(cloudflare.UpdateDNSRecordParams)
+	err := copier.Copy(updateDnsRecordParams, goRecord)
+	if err != nil {
+		return nil
+	}
+	return
+}
+
 func (d DnsServer) List(ctx context.Context, request *dns.ListRequest) (*dns.DnsRecordList, error) {
 	api, err := cloudflare.New(request.GetApiKey(), request.GetApiEmail())
 	if err != nil {
 		return nil, err
 	}
 	ctxAPI := context.Background()
-
-	records, err := api.DNSRecords(ctxAPI, request.ZoneId, cloudflare.DNSRecord{})
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	records, _, err := api.ListDNSRecords(ctxAPI, zoneIdentifier, cloudflare.ListDNSRecordsParams{})
+	//records, err := api.DNSRecords(ctxAPI, zoneIdentifier, cloudflare.DNSRecord{})
 	if err != nil {
 		return nil, err
 	}
@@ -65,12 +86,13 @@ func (d DnsServer) Create(ctx context.Context, request *dns.DnsRecordRequest) (*
 	ctxAPI := context.Background()
 
 	inRecord := Proto2GoDnsRecord(request.DnsRecord)
-	response, err := api.CreateDNSRecord(ctxAPI, request.ZoneId, *inRecord)
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	createDNSRecordParams := goRecord2CreateDnsRecordParams(inRecord)
+	response, err := api.CreateDNSRecord(ctxAPI, zoneIdentifier, *createDNSRecordParams)
 	if err != nil {
 		return nil, err
 	}
-
-	outRecord := Go2ProtoDnsRecord(&response.Result)
+	outRecord := Go2ProtoDnsRecord(&response)
 	return outRecord, nil
 }
 
@@ -79,15 +101,14 @@ func (d DnsServer) Update(ctx context.Context, request *dns.DnsRecordRequest) (*
 	if err != nil {
 		return nil, err
 	}
-
 	ctxAPI := context.Background()
-
 	inRecord := Proto2GoDnsRecord(request.DnsRecord)
-	err = api.UpdateDNSRecord(ctxAPI, request.ZoneId, inRecord.ID, *inRecord)
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	updateDNSRecordParams := goRecord2UpdateDnsRecordParams(inRecord)
+	_, err = api.UpdateDNSRecord(ctxAPI, zoneIdentifier, *updateDNSRecordParams)
 	if err != nil {
 		return nil, err
 	}
-
 	return &dns.Empty{}, nil
 }
 
@@ -96,13 +117,11 @@ func (d DnsServer) Delete(ctx context.Context, request *dns.DeleteRequest) (*dns
 	if err != nil {
 		return nil, err
 	}
-
 	ctxAPI := context.Background()
-
-	err = api.DeleteDNSRecord(ctxAPI, request.ZoneId, request.Id)
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	err = api.DeleteDNSRecord(ctxAPI, zoneIdentifier, request.Id)
 	if err != nil {
 		return nil, err
 	}
-
 	return &dns.Empty{}, nil
 }

+ 20 - 6
server/LoadBalancerCloudflareServer.go

@@ -39,8 +39,12 @@ func (d LoadBalancerServer) List(ctx context.Context, request *loadBalancer.List
 		return nil, err
 	}
 	ctxAPI := context.Background()
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	listLoadBalancerParams := cloudflare.ListLoadBalancerParams{
+		PaginationOptions: cloudflare.PaginationOptions{}}
+	balancers, err := api.ListLoadBalancers(ctxAPI, zoneIdentifier, listLoadBalancerParams)
 
-	balancers, err := api.ListLoadBalancers(ctxAPI, request.ZoneId)
+	//balancers, err := api.ListLoadBalancers(ctxAPI, request.ZoneId)
 	if err != nil {
 		return nil, err
 	}
@@ -62,9 +66,14 @@ func (d LoadBalancerServer) Create(ctx context.Context, request *loadBalancer.Lo
 	}
 
 	ctxAPI := context.Background()
-
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
 	in := Proto2GoLoadBalancer(request.LoadBalancer)
-	balancer, err := api.CreateLoadBalancer(ctxAPI, request.ZoneId, *in)
+	createLoadBalancerParams := cloudflare.CreateLoadBalancerParams{
+		LoadBalancer: *in,
+	}
+	balancer, err := api.CreateLoadBalancer(ctxAPI, zoneIdentifier, createLoadBalancerParams)
+
+	//balancer, err := api.CreateLoadBalancer(ctxAPI, request.ZoneId, *in)
 	if err != nil {
 		return nil, err
 	}
@@ -82,8 +91,13 @@ func (d LoadBalancerServer) Update(ctx context.Context, request *loadBalancer.Lo
 	ctxAPI := context.Background()
 
 	in := Proto2GoLoadBalancer(request.LoadBalancer)
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	updateLoadBalancerParams := cloudflare.UpdateLoadBalancerParams{
+		LoadBalancer: *in,
+	}
+	balancer, err := api.UpdateLoadBalancer(ctxAPI, zoneIdentifier, updateLoadBalancerParams)
 
-	balancer, err := api.ModifyLoadBalancer(ctxAPI, request.ZoneId, *in)
+	//balancer, err := api.ModifyLoadBalancer(ctxAPI, request.ZoneId, *in)
 	if err != nil {
 		return nil, err
 	}
@@ -98,8 +112,8 @@ func (d LoadBalancerServer) Delete(ctx context.Context, request *loadBalancer.De
 	}
 
 	ctxAPI := context.Background()
-
-	err = api.DeleteLoadBalancer(ctxAPI, request.ZoneId, request.Id)
+	zoneIdentifier := cloudflare.ZoneIdentifier(request.ZoneId)
+	err = api.DeleteLoadBalancer(ctxAPI, zoneIdentifier, request.Id)
 	if err != nil {
 		return nil, err
 	}

+ 30 - 10
server/LoadBalancerPoolCloudflareServer.go

@@ -19,8 +19,12 @@ func (d LoadBalancerPoolServer) Get(ctx context.Context, request *loadBalancerPo
 	}
 
 	ctxAPI := context.Background()
+
+	//pool, err := api.LoadBalancerPoolDetails(ctxAPI, request.Id)
 	//TODO 需要提供AccountID才能获取到正确的Pool。
-	pool, err := api.LoadBalancerPoolDetails(ctxAPI, request.Id)
+	AccountId := ""
+	accountIdentifier := cloudflare.AccountIdentifier(AccountId)
+	pool, err := api.GetLoadBalancerPool(ctxAPI, accountIdentifier, request.Id)
 	if err != nil {
 		return nil, err
 	}
@@ -34,8 +38,12 @@ func (d LoadBalancerPoolServer) List(ctx context.Context, request *loadBalancerP
 		return nil, err
 	}
 	ctxAPI := context.Background()
-
-	pools, err := api.ListLoadBalancerPools(ctxAPI)
+	//TODO 需要提供AccountID才能获取到正确的Pool。
+	AccountId := ""
+	accountIdentifier := cloudflare.AccountIdentifier(AccountId)
+	listLoadBalancerPoolParams := cloudflare.ListLoadBalancerPoolParams{
+		PaginationOptions: cloudflare.PaginationOptions{}}
+	pools, err := api.ListLoadBalancerPools(ctxAPI, accountIdentifier, listLoadBalancerPoolParams)
 	if err != nil {
 		return nil, err
 	}
@@ -57,9 +65,15 @@ func (d LoadBalancerPoolServer) Create(ctx context.Context, request *loadBalance
 	}
 
 	ctxAPI := context.Background()
-
+	//TODO 需要提供AccountID才能获取到正确的Pool。
+	AccountId := ""
+	accountIdentifier := cloudflare.AccountIdentifier(AccountId)
 	in := Proto2GoLoadBalancerPool(request.LoadBalancerPool)
-	pool, err := api.CreateLoadBalancerPool(ctxAPI, *in)
+	createLoadBalancerPoolParams := cloudflare.CreateLoadBalancerPoolParams{
+		LoadBalancerPool: *in,
+	}
+
+	pool, err := api.CreateLoadBalancerPool(ctxAPI, accountIdentifier, createLoadBalancerPoolParams)
 	if err != nil {
 		return nil, err
 	}
@@ -75,10 +89,14 @@ func (d LoadBalancerPoolServer) Update(ctx context.Context, request *loadBalance
 	}
 
 	ctxAPI := context.Background()
-
+	//TODO 需要提供AccountID才能获取到正确的Pool。
+	AccountId := ""
+	accountIdentifier := cloudflare.AccountIdentifier(AccountId)
 	in := Proto2GoLoadBalancerPool(request.LoadBalancerPool)
-
-	pool, err := api.ModifyLoadBalancerPool(ctxAPI, *in)
+	updateLoadBalancerPoolParams := cloudflare.UpdateLoadBalancerPoolParams{
+		LoadBalancer: *in,
+	}
+	pool, err := api.UpdateLoadBalancerPool(ctxAPI, accountIdentifier, updateLoadBalancerPoolParams)
 	if err != nil {
 		return nil, err
 	}
@@ -93,8 +111,10 @@ func (d LoadBalancerPoolServer) Delete(ctx context.Context, request *loadBalance
 	}
 
 	ctxAPI := context.Background()
-
-	err = api.DeleteLoadBalancerPool(ctxAPI, request.Id)
+	//TODO 需要提供AccountID才能获取到正确的Pool。
+	AccountId := ""
+	accountIdentifier := cloudflare.AccountIdentifier(AccountId)
+	err = api.DeleteLoadBalancerPool(ctxAPI, accountIdentifier, request.Id)
 	if err != nil {
 		return nil, err
 	}

+ 43 - 14
server/LogPushCloudflareServer.go

@@ -27,8 +27,13 @@ func (s *LogPushCloudflareServer) ListLogPushJobsByZoneId(ctx context.Context,
 
 	ctxAPI := context.Background()
 
-	LogPushJobs, err := api.ListZoneLogpushJobsForDataset(ctxAPI,
-		requestCloudflare.GetZoneId(), requestCloudflare.GetDataSet())
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	listLogpushJobsForDatasetParams := cloudflare.ListLogpushJobsForDatasetParams{
+		Dataset: requestCloudflare.DataSet,
+	}
+	LogPushJobs, err := api.ListLogpushJobsForDataset(ctxAPI, zoneIdentifier, listLogpushJobsForDatasetParams)
+	//LogPushJobs, err := api.ListZoneLogpushJobsForDataset(ctxAPI,
+	//	requestCloudflare.GetZoneId(), requestCloudflare.GetDataSet())
 	if err != nil {
 		log.Printf("list logpush job error : %v", err)
 		return nil, err
@@ -61,7 +66,19 @@ func (s *LogPushCloudflareServer) CreateLogPushJobByZoneId(ctx context.Context,
 
 	ctxAPI := context.Background()
 
-	job := cloudflare.LogpushJob{
+	//job := cloudflare.LogpushJob{
+	//	Dataset:         requestCloudflare.GetDataSet(),
+	//	DestinationConf: requestCloudflare.GetDestinationConf(),
+	//	Enabled:         true,
+	//	Frequency:       "low",
+	//	LogpullOptions: "fields=ClientIP,ClientCountry,ClientRequestMethod,ClientRequestProtocol," +
+	//		"ClientRequestHost,ClientRequestPath,ClientRequestURI,ClientRequestBytes," +
+	//		"EdgeResponseStatus,EdgeResponseBytes,ClientRequestUserAgent,CacheCacheStatus,CacheResponseBytes," +
+	//		"EdgeStartTimestamp,EdgeEndTimestamp&timestamps=rfc3339",
+	//	OwnershipChallenge: requestCloudflare.GetOwnershipChallenge(),
+	//}
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	createLogpushJobParams := cloudflare.CreateLogpushJobParams{
 		Dataset:         requestCloudflare.GetDataSet(),
 		DestinationConf: requestCloudflare.GetDestinationConf(),
 		Enabled:         true,
@@ -72,7 +89,8 @@ func (s *LogPushCloudflareServer) CreateLogPushJobByZoneId(ctx context.Context,
 			"EdgeStartTimestamp,EdgeEndTimestamp&timestamps=rfc3339",
 		OwnershipChallenge: requestCloudflare.GetOwnershipChallenge(),
 	}
-	result, err := api.CreateZoneLogpushJob(ctxAPI, requestCloudflare.GetZoneId(), job)
+	result, err := api.CreateLogpushJob(ctxAPI, zoneIdentifier, createLogpushJobParams)
+	//result, err := api.CreateZoneLogpushJob(ctxAPI,zoneIdentifier, job)
 	if err != nil {
 		log.Printf("create logpush job error : %v", err)
 		return nil, err
@@ -98,8 +116,9 @@ func (s *LogPushCloudflareServer) DeleteLogPushJobByZoneId(ctx context.Context,
 	}
 
 	ctxAPI := context.Background()
-
-	result := api.DeleteZoneLogpushJob(ctxAPI, requestCloudflare.GetZoneId(), int(requestCloudflare.GetJobId()))
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	result := api.DeleteLogpushJob(ctxAPI, zoneIdentifier, int(requestCloudflare.GetJobId()))
+	//result := api.DeleteZoneLogpushJob(ctxAPI, requestCloudflare.GetZoneId(), int(requestCloudflare.GetJobId()))
 
 	if result != nil {
 		log.Printf("delete zone LogpushJob error: %v", result.Error())
@@ -128,9 +147,13 @@ func (s *LogPushCloudflareServer) GetOwnershipChallengeByZoneId(ctx context.Cont
 	}
 
 	ctxAPI := context.Background()
-
-	ownershipChallenge, err := api.GetZoneLogpushOwnershipChallenge(ctxAPI,
-		requestCloudflare.GetZoneId(), requestCloudflare.GetDestinationConf())
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	getLogpushOwnershipChallengeParams := cloudflare.GetLogpushOwnershipChallengeParams{
+		DestinationConf: requestCloudflare.DestinationConf,
+	}
+	ownershipChallenge, err := api.GetLogpushOwnershipChallenge(ctxAPI, zoneIdentifier, getLogpushOwnershipChallengeParams)
+	//ownershipChallenge, err := api.GetZoneLogpushOwnershipChallenge(ctxAPI,
+	//	requestCloudflare.GetZoneId(), requestCloudflare.GetDestinationConf())
 	if err != nil {
 		log.Printf("get logpush job ownershipChallenge error : %v", err)
 		return nil, err
@@ -165,8 +188,9 @@ func (s *LogPushCloudflareServer) CheckDestinationExist(ctx context.Context,
 	}
 
 	ctxAPI := context.Background()
-
-	exists, err := api.CheckZoneLogpushDestinationExists(ctxAPI, requestCloudflare.GetZoneId(), requestCloudflare.GetDestinationConf())
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	exists, err := api.CheckLogpushDestinationExists(ctxAPI, zoneIdentifier, requestCloudflare.GetDestinationConf())
+	//exists, err := api.CheckZoneLogpushDestinationExists(ctxAPI, requestCloudflare.GetZoneId(), requestCloudflare.GetDestinationConf())
 
 	if err != nil {
 		log.Printf("check logpush job destination error : %v", err)
@@ -193,9 +217,14 @@ func (s *LogPushCloudflareServer) ValidateOwnershipChallenge(ctx context.Context
 	}
 
 	ctxAPI := context.Background()
-
-	valid, err := api.ValidateZoneLogpushOwnershipChallenge(ctxAPI, requestCloudflare.GetZoneId(),
-		requestCloudflare.GetDestinationConf(), requestCloudflare.GetOwnershipChallenge())
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	validateLogpushOwnershipChallengeParams := cloudflare.ValidateLogpushOwnershipChallengeParams{
+		DestinationConf:    requestCloudflare.DestinationConf,
+		OwnershipChallenge: requestCloudflare.OwnershipChallenge,
+	}
+	valid, err := api.ValidateLogpushOwnershipChallenge(ctxAPI, zoneIdentifier, validateLogpushOwnershipChallengeParams)
+	//valid, err := api.ValidateZoneLogpushOwnershipChallenge(ctxAPI, requestCloudflare.GetZoneId(),
+	//	requestCloudflare.GetDestinationConf(), requestCloudflare.GetOwnershipChallenge())
 
 	if err != nil {
 		log.Printf("validate logpush job ownership challenge error : %v", err)

+ 152 - 10
server/ZoneCloudflareServer.go

@@ -471,11 +471,11 @@ func (s *ZoneServer) ActivationCheck(ctx context.Context, requestCloudflare *zon
 }
 
 var phaseMap = map[zone.Phase]string{
-	zone.Phase_http_request_sanitize:  "http_request_sanitize",
-	zone.Phase_http_request_transform: "http_request_transform",
-	//zone.Phase_http_request_origin:             "http_request_origin",
-	//zone.Phase_http_request_cache_settings:     "http_request_cache_settings",
-	//zone.Phase_http_config_settings:            "http_config_settings",
+	zone.Phase_http_request_sanitize:       "http_request_sanitize",
+	zone.Phase_http_request_transform:      "http_request_transform",
+	zone.Phase_http_request_origin:         "http_request_origin",
+	zone.Phase_http_request_cache_settings: "http_request_cache_settings",
+	zone.Phase_http_config_settings:        "http_config_settings",
 	//zone.Phase_http_request_dynamic_redirect:   "http_request_dynamic_redirect",
 	//zone.Phase_ddos_l7:                         "ddos_l7",
 	//zone.Phase_http_request_firewall_custom:    "http_request_firewall_custom",
@@ -490,6 +490,93 @@ var phaseMap = map[zone.Phase]string{
 	//zone.Phase_http_log_custom_fields:          "http_log_custom_fields",
 }
 
+func (s *ZoneServer) ListZoneRuleSets(ctx context.Context, requestCloudflare *zone.ListZoneRuleSetsRequestCloudflare) (*zone.RuleSetList, error) {
+	api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
+	if err != nil {
+		return nil, err
+	}
+	ctxAPI := context.Background()
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	ListRulesetsParams := cloudflare.ListRulesetsParams{}
+	goRuleSets, err := api.ListRulesets(ctxAPI, zoneIdentifier, ListRulesetsParams)
+	if err != nil {
+		return nil, err
+	}
+	filterMap := lo.FilterMap[cloudflare.Ruleset, *zone.RuleSet](goRuleSets, func(goRuleSet cloudflare.Ruleset, _ int) (*zone.RuleSet, bool) {
+		protoRuleSet := Go2ProtoRuleSet(&goRuleSet)
+		return protoRuleSet, true
+	})
+	return &zone.RuleSetList{RuleSets: filterMap}, nil
+}
+
+func (s *ZoneServer) CreateZoneRuleSet(ctx context.Context, requestCloudflare *zone.CreateZoneRuleSetRequestCloudflare) (*zone.CreateZoneRuleSetReplyCloudflare, error) {
+	api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
+	if err != nil {
+		return nil, err
+	}
+	ctxAPI := context.Background()
+	filterMap := lo.FilterMap[*zone.Rule, cloudflare.RulesetRule](requestCloudflare.Rules, func(rule *zone.Rule, index int) (cloudflare.RulesetRule, bool) {
+		ruleResult, err := Proto2GoRulesetRuleByPhase(rule, requestCloudflare.RuleSet.Phase)
+		if err != nil || ruleResult == nil {
+			return cloudflare.RulesetRule{}, false
+		}
+		return *ruleResult, true
+	})
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	createRulesetParams := cloudflare.CreateRulesetParams{
+		Name:  requestCloudflare.RuleSet.Name,
+		Kind:  requestCloudflare.RuleSet.Kind,
+		Phase: phaseMap[requestCloudflare.RuleSet.Phase],
+		Rules: filterMap,
+	}
+	_, err = api.CreateRuleset(ctxAPI, zoneIdentifier, createRulesetParams)
+	if err != nil {
+		return &zone.CreateZoneRuleSetReplyCloudflare{Success: false}, err
+	}
+	//protoRuleSet := Go2ProtoRuleSet(&goRuleSet)
+	return &zone.CreateZoneRuleSetReplyCloudflare{Success: true}, nil
+}
+
+func (s *ZoneServer) DeleteZoneRuleSet(ctx context.Context, requestCloudflare *zone.DeleteZoneRuleSetRequestCloudflare) (*zone.DeleteZoneRuleSetReplyCloudflare, error) {
+	api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
+	if err != nil {
+		return nil, err
+	}
+	ctxAPI := context.Background()
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	err = api.DeleteRuleset(ctxAPI, zoneIdentifier, requestCloudflare.GetRuleSetId())
+	if err != nil {
+		return &zone.DeleteZoneRuleSetReplyCloudflare{Success: false}, err
+	}
+	return &zone.DeleteZoneRuleSetReplyCloudflare{Success: true}, nil
+}
+
+func (s *ZoneServer) UpdateRuleSetByRuleSetId(ctx context.Context, requestCloudflare *zone.UpdateRuleSetByRuleSetIdRequestCloudflare) (*zone.RuleSet, error) {
+	api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
+	if err != nil {
+		return nil, err
+	}
+	ctxAPI := context.Background()
+	filterMap := lo.FilterMap[*zone.Rule, cloudflare.RulesetRule](requestCloudflare.Rules, func(rule *zone.Rule, index int) (cloudflare.RulesetRule, bool) {
+		ruleResult, err := Proto2GoRulesetRuleByPhase(rule, requestCloudflare.Phase)
+		if err != nil || ruleResult == nil {
+			return cloudflare.RulesetRule{}, false
+		}
+		return *ruleResult, true
+	})
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	updateRulesetParams := cloudflare.UpdateRulesetParams{
+		ID:    requestCloudflare.RuleSetId,
+		Rules: filterMap,
+	}
+	goRuleSet, err := api.UpdateRuleset(ctxAPI, zoneIdentifier, updateRulesetParams)
+	if err != nil {
+		return nil, err
+	}
+	protoRuleSet := Go2ProtoRuleSet(&goRuleSet)
+	return protoRuleSet, nil
+}
+
 func (s *ZoneServer) GetRuleSet(ctx context.Context, requestCloudflare *zone.GetRuleSetRequestCloudflare) (*zone.RuleList, error) {
 	api, err := cloudflare.New(requestCloudflare.ApiKey, requestCloudflare.ApiEmail)
 	if err != nil {
@@ -501,8 +588,8 @@ func (s *ZoneServer) GetRuleSet(ctx context.Context, requestCloudflare *zone.Get
 	default:
 		return nil, errors.New("未定义规则阶段")
 	}
-
-	ruleset, err := api.GetZoneRulesetPhase(ctxAPI, requestCloudflare.ZoneId, phaseMap[requestCloudflare.Phase])
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	ruleset, err := api.GetEntrypointRuleset(ctxAPI, zoneIdentifier, phaseMap[requestCloudflare.Phase])
 	if err != nil {
 		_, ok := err.(*cloudflare.NotFoundError)
 		if ok {
@@ -547,10 +634,12 @@ func (s *ZoneServer) UpdateRuleSet(ctx context.Context, requestCloudflare *zone.
 	//		ruleSet.Rules = append(ruleSet.Rules, *ruleResult)
 	//	}
 	//}
-
-	ruleset, err := api.UpdateZoneRulesetPhase(ctxAPI, requestCloudflare.ZoneId, phase, cloudflare.Ruleset{
+	zoneIdentifier := cloudflare.ZoneIdentifier(requestCloudflare.GetZoneId())
+	updateEntrypointRulesetParams := cloudflare.UpdateEntrypointRulesetParams{
+		Phase: phase,
 		Rules: filterMap,
-	})
+	}
+	ruleset, err := api.UpdateEntrypointRuleset(ctxAPI, zoneIdentifier, updateEntrypointRulesetParams)
 	if err != nil {
 		return nil, err
 	}
@@ -782,3 +871,56 @@ func (s *ZoneServer) SetSmartTieredCache(ctx context.Context, requestCloudflare
 
 	return &zone.SetSmartTieredCacheReplyCloudflare{Enabled: r.Success}, nil
 }
+
+// 开启强制使用https
+func (s *ZoneServer) UpdateAlwaysUseHttps(ctx context.Context, requestCloudflare *zone.UpdateAlwaysUseHttpsRequestCloudflare) (*zone.UpdateAlwaysUseHttpsReplyCloudflare, error) {
+	log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey())
+	log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail())
+	log.Printf("zoneId Received: %v", requestCloudflare.GetZoneId())
+
+	type ResponseType struct {
+		Errors   []interface{} `json:"errors"`
+		Messages []interface{} `json:"messages"`
+		Result   interface{}   `json:"result"`
+		Success  bool          `json:"success"`
+	}
+
+	//设置HTTP请求
+	client := &http.Client{}
+	url := "https://api.cloudflare.com/client/v4/zones/" + requestCloudflare.ZoneId + "/settings/always_use_https"
+	var payload io.Reader
+	if requestCloudflare.Enabled {
+		payload = strings.NewReader("{\n  \"value\": \"on\"\n}")
+	} else {
+		payload = strings.NewReader("{\n  \"value\": \"off\"\n}")
+	}
+	req, err := http.NewRequest("PATCH", url, payload)
+
+	if err != nil {
+		return nil, err
+	}
+	req.Header.Add("X-Auth-Key", requestCloudflare.GetApiKey())
+	req.Header.Add("Content-Type", "application/json")
+	req.Header.Add("X-Auth-Email", requestCloudflare.GetApiEmail())
+
+	//执行HTTP请求
+	resp, err := client.Do(req)
+	if err != nil {
+		return nil, err
+	}
+	defer func(Body io.ReadCloser) {
+		_ = Body.Close()
+	}(resp.Body)
+	body, _ := ioutil.ReadAll(resp.Body)
+	print(body)
+	//解析HTTP返回数据
+	var r ResponseType
+	err = json.Unmarshal(body, &r)
+	if err != nil {
+		return nil, fmt.Errorf("%s: %w", "error unmarshalling the JSON response", err)
+	}
+	if r.Success != true {
+		print(fmt.Errorf("%s", r.Errors))
+	}
+	return &zone.UpdateAlwaysUseHttpsReplyCloudflare{Success: r.Success}, nil
+}

+ 343 - 5
server/ZoneCloudflareServer_test.go

@@ -3,6 +3,7 @@ package server
 import (
 	"cfTest/cloudflareApi/zone"
 	"context"
+	"fmt"
 	"github.com/cloudflare/cloudflare-go"
 	"github.com/samber/lo"
 	"log"
@@ -169,13 +170,12 @@ func TestZoneServer_GetRuleSet(t *testing.T) {
 			args: args{
 				ctx: context.Background(),
 				requestCloudflare: &zone.GetRuleSetRequestCloudflare{
-					ApiKey:   apiKey,
-					ApiEmail: apiEmail,
-					ZoneId:   "e29551894461bf16e43a113e5ab09ed3",
-					Phase:    zone.Phase_http_request_transform,
+					ApiKey:   "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail: "shiqi@centcloud.net",
+					ZoneId:   "5801a8cbe2fdfd6c53413d0eef164d23",
+					Phase:    zone.Phase_http_request_cache_settings,
 				},
 			},
-			want:    nil,
 			wantErr: false,
 		},
 	}
@@ -185,6 +185,7 @@ func TestZoneServer_GetRuleSet(t *testing.T) {
 				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
 			}
 			got, err := s.GetRuleSet(tt.args.ctx, tt.args.requestCloudflare)
+			fmt.Println(got)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("GetRuleSet() error = %v, wantErr %v", err, tt.wantErr)
 				return
@@ -629,3 +630,340 @@ func TestZoneServer_SetZonePlan(t *testing.T) {
 		})
 	}
 }
+
+func TestZoneServer_CreateZoneRuleSet(t *testing.T) {
+	type fields struct {
+		UnimplementedZoneCloudflareServer zone.UnimplementedZoneCloudflareServer
+	}
+	type args struct {
+		ctx               context.Context
+		requestCloudflare *zone.CreateZoneRuleSetRequestCloudflare
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *zone.RuleSet
+		wantErr bool
+	}{
+		{
+
+			name: "测试用例1",
+			fields: fields{
+				UnimplementedZoneCloudflareServer: zone.UnimplementedZoneCloudflareServer{},
+			},
+			args: args{
+				requestCloudflare: &zone.CreateZoneRuleSetRequestCloudflare{
+					ApiKey:   "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail: "shiqi@centcloud.net",
+					ZoneId:   "5801a8cbe2fdfd6c53413d0eef164d23",
+					RuleSet: &zone.RuleSet{
+						Name:  "rule1",
+						Kind:  "zone",
+						Phase: zone.Phase_http_request_cache_settings,
+					},
+					Rules: []*zone.Rule{
+						{
+							Expression:    "(http.request.uri.path contains \"shiqi.website/\")",
+							Ttl:           lo.ToPtr[uint32](604800),
+							QueryArgsType: lo.ToPtr[string]("Include"),
+							QueryArgs:     []string{"qwe12", "78u9hi"},
+						},
+					},
+				},
+			},
+			wantErr: false,
+		},
+		// TODO: Add test cases.
+
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			s := &ZoneServer{
+				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
+			}
+			got, err := s.CreateZoneRuleSet(tt.args.ctx, tt.args.requestCloudflare)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("CreateZoneRuleSet() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("CreateZoneRuleSet() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestZoneServer_ListZoneRuleSets(t *testing.T) {
+	type fields struct {
+		UnimplementedZoneCloudflareServer zone.UnimplementedZoneCloudflareServer
+	}
+	type args struct {
+		ctx               context.Context
+		requestCloudflare *zone.ListZoneRuleSetsRequestCloudflare
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *zone.RuleSetList
+		wantErr bool
+	}{
+		{
+
+			name: "测试用例1",
+			fields: fields{
+				UnimplementedZoneCloudflareServer: zone.UnimplementedZoneCloudflareServer{},
+			},
+			args: args{
+				requestCloudflare: &zone.ListZoneRuleSetsRequestCloudflare{
+					ApiKey:   "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail: "shiqi@centcloud.net",
+					ZoneId:   "5801a8cbe2fdfd6c53413d0eef164d23",
+				},
+			},
+			wantErr: false,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			s := &ZoneServer{
+				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
+			}
+			got, err := s.ListZoneRuleSets(tt.args.ctx, tt.args.requestCloudflare)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("ListZoneRuleSets() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("ListZoneRuleSets() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestZoneServer_UpdateRuleSet1(t *testing.T) {
+	type fields struct {
+		UnimplementedZoneCloudflareServer zone.UnimplementedZoneCloudflareServer
+	}
+	type args struct {
+		ctx               context.Context
+		requestCloudflare *zone.UpdateRuleSetRequestCloudflare
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *zone.RuleList
+		wantErr bool
+	}{
+		// TODO: Add test cases.
+		{
+
+			name: "测试用例1",
+			fields: fields{
+				UnimplementedZoneCloudflareServer: zone.UnimplementedZoneCloudflareServer{},
+			},
+			args: args{
+				requestCloudflare: &zone.UpdateRuleSetRequestCloudflare{
+					ApiKey:   "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail: "shiqi@centcloud.net",
+					ZoneId:   "5ee6daeeecf5c088c7517afa95c50739",
+					Phase:    zone.Phase_http_request_cache_settings,
+					Rules: []*zone.Rule{
+						{
+							Expression:    "(http.request.uri.path contains \"shiqi.website/\")",
+							Ttl:           lo.ToPtr[uint32](604800 / 7),
+							QueryArgsType: lo.ToPtr[string]("Include"),
+							QueryArgs:     []string{"qwe12", "78u9hi"},
+						},
+						{
+							Expression:    "(http.request.uri.path contains \"shiqi.website/\")",
+							Ttl:           lo.ToPtr[uint32](604800),
+							QueryArgsType: lo.ToPtr[string]("Include"),
+							QueryArgs:     []string{"qwe12"},
+						},
+					},
+				},
+			},
+			wantErr: false,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			s := &ZoneServer{
+				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
+			}
+			got, err := s.UpdateRuleSet(tt.args.ctx, tt.args.requestCloudflare)
+			fmt.Println(got, err)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("UpdateRuleSet() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("UpdateRuleSet() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}
+
+//RuleSetId = 12371a315d344f719382becef2577d4c
+
+func TestZoneServer_UpdateRuleSetByRuleSetId(t *testing.T) {
+	type fields struct {
+		UnimplementedZoneCloudflareServer zone.UnimplementedZoneCloudflareServer
+	}
+	type args struct {
+		ctx               context.Context
+		requestCloudflare *zone.UpdateRuleSetByRuleSetIdRequestCloudflare
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *zone.RuleSet
+		wantErr bool
+	}{
+		// TODO: Add test cases.
+		{
+
+			name: "测试用例1",
+			fields: fields{
+				UnimplementedZoneCloudflareServer: zone.UnimplementedZoneCloudflareServer{},
+			},
+			args: args{
+				requestCloudflare: &zone.UpdateRuleSetByRuleSetIdRequestCloudflare{
+					ApiKey:    "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail:  "shiqi@centcloud.net",
+					ZoneId:    "f62e1be1fea702904da5ead2d1dc15de",
+					RuleSetId: "12371a315d344f719382becef2577d4c",
+					Phase:     zone.Phase_http_request_cache_settings,
+					Rules: []*zone.Rule{
+						{
+							Expression:    "(http.request.uri.path contains \"shi.website/\")",
+							Ttl:           lo.ToPtr[uint32](604800),
+							QueryArgsType: lo.ToPtr[string]("ExcludeAll"),
+							QueryArgs:     []string{"qwe12", "78u9hi"},
+						},
+					},
+				},
+			},
+			wantErr: false,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			s := &ZoneServer{
+				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
+			}
+			got, err := s.UpdateRuleSetByRuleSetId(tt.args.ctx, tt.args.requestCloudflare)
+
+			if (err != nil) != tt.wantErr {
+				t.Errorf("UpdateRuleSetByRuleSetId() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("UpdateRuleSetByRuleSetId() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestZoneServer_DeleteZoneRuleSet(t *testing.T) {
+	type fields struct {
+		UnimplementedZoneCloudflareServer zone.UnimplementedZoneCloudflareServer
+	}
+	type args struct {
+		ctx               context.Context
+		requestCloudflare *zone.DeleteZoneRuleSetRequestCloudflare
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *zone.DeleteZoneRuleSetReplyCloudflare
+		wantErr bool
+	}{
+		{
+
+			name: "测试用例1",
+			fields: fields{
+				UnimplementedZoneCloudflareServer: zone.UnimplementedZoneCloudflareServer{},
+			},
+			args: args{
+				requestCloudflare: &zone.DeleteZoneRuleSetRequestCloudflare{
+					ApiKey:    "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail:  "shiqi@centcloud.net",
+					ZoneId:    "5801a8cbe2fdfd6c53413d0eef164d23",
+					RuleSetId: "c9e073e5447c461da612be101d64ec04",
+				},
+			},
+			wantErr: false,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			s := &ZoneServer{
+				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
+			}
+			got, err := s.DeleteZoneRuleSet(tt.args.ctx, tt.args.requestCloudflare)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("DeleteZoneRuleSet() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("DeleteZoneRuleSet() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestZoneServer_UpdateAlwaysUseHttps(t *testing.T) {
+	type fields struct {
+		UnimplementedZoneCloudflareServer zone.UnimplementedZoneCloudflareServer
+	}
+	type args struct {
+		ctx               context.Context
+		requestCloudflare *zone.UpdateAlwaysUseHttpsRequestCloudflare
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *zone.UpdateAlwaysUseHttpsReplyCloudflare
+		wantErr bool
+	}{
+		// TODO: Add test cases.
+		{
+
+			name: "测试用例1",
+			fields: fields{
+				UnimplementedZoneCloudflareServer: zone.UnimplementedZoneCloudflareServer{},
+			},
+			args: args{
+				requestCloudflare: &zone.UpdateAlwaysUseHttpsRequestCloudflare{
+					ApiKey:   "d2589c4f617b0493357ae187a7b4518171d07",
+					ApiEmail: "shiqi@centcloud.net",
+					ZoneId:   "5801a8cbe2fdfd6c53413d0eef164d23",
+					Enabled:  false,
+				},
+			},
+			wantErr: false,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			s := &ZoneServer{
+				UnimplementedZoneCloudflareServer: tt.fields.UnimplementedZoneCloudflareServer,
+			}
+			got, err := s.UpdateAlwaysUseHttps(tt.args.ctx, tt.args.requestCloudflare)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("UpdateAlwaysUseHttps() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("UpdateAlwaysUseHttps() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}

+ 130 - 79
server/zone_convert.go

@@ -32,11 +32,11 @@ func Go2ProtoZone(goZone cloudflare.Zone) *zone.ZoneCloudflareEntity {
 func Proto2GoRulesetRuleByPhase(rules *zone.Rule, phase zone.Phase) (*cloudflare.RulesetRule, error) {
 	var (
 		Expression = rules.GetExpression()
-		//TRUE           = true
-		//ttl            = uint(*rules.Ttl)
-		//origin         *cloudflare.RulesetRuleActionParametersOrigin
-		//query          cloudflare.RulesetRuleActionParametersCustomKeyQuery
-		Headers map[string]cloudflare.RulesetRuleActionParametersHTTPHeader
+		TRUE       = true
+		ttl        = uint(*rules.Ttl)
+		origin     *cloudflare.RulesetRuleActionParametersOrigin
+		query      cloudflare.RulesetRuleActionParametersCustomKeyQuery
+		Headers    map[string]cloudflare.RulesetRuleActionParametersHTTPHeader
 	)
 	switch phase {
 	case zone.Phase_http_request_transform:
@@ -51,7 +51,7 @@ func Proto2GoRulesetRuleByPhase(rules *zone.Rule, phase zone.Phase) (*cloudflare
 		}
 		return &cloudflare.RulesetRule{
 			Expression: Expression,
-			Enabled:    true,
+			Enabled:    &TRUE,
 			Action:     "rewrite",
 			ActionParameters: &cloudflare.RulesetRuleActionParameters{
 				URI: &cloudflare.RulesetRuleActionParametersURI{
@@ -59,77 +59,77 @@ func Proto2GoRulesetRuleByPhase(rules *zone.Rule, phase zone.Phase) (*cloudflare
 				},
 			},
 		}, nil
-	//case zone.Phase_http_request_origin:
-	//	port := uint16(rules.GetOriginProtocol())
-	//	if port == 0 && rules.GetOriginHost() == "" {
-	//		return nil, nil
-	//	}
-	//	if port != 0 {
-	//		origin = &cloudflare.RulesetRuleActionParametersOrigin{
-	//			Port: port,
-	//		}
-	//	}
-	//	return &cloudflare.RulesetRule{
-	//		Expression: Expression,
-	//		Enabled:    true,
-	//		Action:     "route",
-	//		ActionParameters: &cloudflare.RulesetRuleActionParameters{
-	//			Origin:     origin,
-	//			HostHeader: rules.GetOriginHost(),
-	//		},
-	//	}, nil
-	//case zone.Phase_http_request_cache_settings:
-	//	switch *rules.QueryArgsType {
-	//	case "Exclude":
-	//		query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
-	//			Include: nil,
-	//			Exclude: &cloudflare.RulesetRuleActionParametersCustomKeyList{
-	//				List: rules.QueryArgs,
-	//				All:  false,
-	//			},
-	//		}
-	//	case "ExcludeAll":
-	//		query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
-	//			Include: nil,
-	//			Exclude: &cloudflare.RulesetRuleActionParametersCustomKeyList{
-	//				List: nil,
-	//				All:  true,
-	//			},
-	//		}
-	//	case "Include":
-	//		query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
-	//			Include: &cloudflare.RulesetRuleActionParametersCustomKeyList{
-	//				List: rules.QueryArgs,
-	//				All:  false,
-	//			},
-	//			Exclude: nil,
-	//		}
-	//	case "IncludeALL":
-	//		query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
-	//			Include: &cloudflare.RulesetRuleActionParametersCustomKeyList{
-	//				List: nil,
-	//				All:  true,
-	//			},
-	//			Exclude: nil,
-	//		}
-	//	}
-	//	return &cloudflare.RulesetRule{
-	//		Expression: Expression,
-	//		Enabled:    true,
-	//		Action:     "set_cache_settings",
-	//		ActionParameters: &cloudflare.RulesetRuleActionParameters{
-	//			Cache: &TRUE,
-	//			CacheKey: &cloudflare.RulesetRuleActionParametersCacheKey{
-	//				CustomKey: &cloudflare.RulesetRuleActionParametersCustomKey{
-	//					Query: &query,
-	//				},
-	//			},
-	//			EdgeTTL: &cloudflare.RulesetRuleActionParametersEdgeTTL{
-	//				Mode:    "override_origin",
-	//				Default: &ttl,
-	//			},
-	//		},
-	//	}, nil
+	case zone.Phase_http_request_origin:
+		port := uint16(rules.GetOriginProtocol())
+		if port == 0 && rules.GetOriginHost() == "" {
+			return nil, nil
+		}
+		if port != 0 {
+			origin = &cloudflare.RulesetRuleActionParametersOrigin{
+				Port: port,
+			}
+		}
+		return &cloudflare.RulesetRule{
+			Expression: Expression,
+			Enabled:    &TRUE,
+			Action:     "route",
+			ActionParameters: &cloudflare.RulesetRuleActionParameters{
+				Origin:     origin,
+				HostHeader: rules.GetOriginHost(),
+			},
+		}, nil
+	case zone.Phase_http_request_cache_settings:
+		switch *rules.QueryArgsType {
+		case "Exclude":
+			query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
+				Include: nil,
+				Exclude: &cloudflare.RulesetRuleActionParametersCustomKeyList{
+					List: rules.QueryArgs,
+					All:  false,
+				},
+			}
+		case "ExcludeAll":
+			query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
+				Include: nil,
+				Exclude: &cloudflare.RulesetRuleActionParametersCustomKeyList{
+					List: nil,
+					All:  true,
+				},
+			}
+		case "Include":
+			query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
+				Include: &cloudflare.RulesetRuleActionParametersCustomKeyList{
+					List: rules.QueryArgs,
+					All:  false,
+				},
+				Exclude: nil,
+			}
+		case "IncludeALL":
+			query = cloudflare.RulesetRuleActionParametersCustomKeyQuery{
+				Include: &cloudflare.RulesetRuleActionParametersCustomKeyList{
+					List: nil,
+					All:  true,
+				},
+				Exclude: nil,
+			}
+		}
+		return &cloudflare.RulesetRule{
+			Expression: Expression,
+			Enabled:    &TRUE,
+			Action:     "set_cache_settings",
+			ActionParameters: &cloudflare.RulesetRuleActionParameters{
+				Cache: &TRUE,
+				CacheKey: &cloudflare.RulesetRuleActionParametersCacheKey{
+					CustomKey: &cloudflare.RulesetRuleActionParametersCustomKey{
+						Query: &query,
+					},
+				},
+				EdgeTTL: &cloudflare.RulesetRuleActionParametersEdgeTTL{
+					Mode:    "override_origin",
+					Default: &ttl,
+				},
+			},
+		}, nil
 	case zone.Phase_http_request_late_transform:
 		if len(rules.GetRequestHeader()) == 0 {
 			return nil, nil
@@ -148,7 +148,7 @@ func Proto2GoRulesetRuleByPhase(rules *zone.Rule, phase zone.Phase) (*cloudflare
 
 		return &cloudflare.RulesetRule{
 			Expression:       Expression,
-			Enabled:          true,
+			Enabled:          &TRUE,
 			Action:           "rewrite",
 			ActionParameters: actionParameters,
 		}, nil
@@ -170,10 +170,23 @@ func Proto2GoRulesetRuleByPhase(rules *zone.Rule, phase zone.Phase) (*cloudflare
 
 		return &cloudflare.RulesetRule{
 			Expression:       Expression,
-			Enabled:          true,
+			Enabled:          &TRUE,
 			Action:           "rewrite",
 			ActionParameters: actionParameters,
 		}, nil
+	case zone.Phase_http_config_settings:
+		ssl, err := cloudflare.SSLFromString(*rules.Ssl)
+		if err != nil {
+			return nil, err
+		}
+		return &cloudflare.RulesetRule{
+			Expression: Expression,
+			Enabled:    &TRUE,
+			Action:     "set_config",
+			ActionParameters: &cloudflare.RulesetRuleActionParameters{
+				SSL: ssl,
+			},
+		}, nil
 	default:
 		return nil, errors.New("未定义规则阶段")
 	}
@@ -212,6 +225,14 @@ func Go2ProtoRuleRuleByPhase(rule *cloudflare.RulesetRule, phase string) (*zone.
 			RequestHeader:  Headers,
 			ResponseHeader: nil,
 		}, nil
+	//case "http_request_cache_settings":
+	//	var ttl = uint32(*rule.ActionParameters.EdgeTTL.Default)
+	//	queryArgsType :=rule.ActionParameters.
+	//	return &zone.Rule{
+	//		Expression: rule.Expression,
+	//		Ttl:        &ttl,
+	//		QueryArgsType:
+	//	}, nil
 	default:
 		return nil, errors.New("未定义规则阶段")
 	}
@@ -317,6 +338,36 @@ func Proto2GoPageRule(rule *zone.PageRule) (*cloudflare.PageRule, error) {
 	}, nil
 }
 
+var stringToPhaseMap = map[string]zone.Phase{
+	"http_request_sanitize":       zone.Phase_http_request_sanitize,
+	"http_request_transform":      zone.Phase_http_request_transform,
+	"http_request_origin":         zone.Phase_http_request_origin,
+	"http_request_cache_settings": zone.Phase_http_request_cache_settings,
+	"http_config_settings":        zone.Phase_http_config_settings,
+	//zone.Phase_http_request_dynamic_redirect:   "http_request_dynamic_redirect",
+	//zone.Phase_ddos_l7:                         "ddos_l7",
+	//zone.Phase_http_request_firewall_custom:    "http_request_firewall_custom",
+	//zone.Phase_http_ratelimit:                  "http_ratelimit",
+	//zone.Phase_http_request_firewall_managed:   "http_request_firewall_managed",
+	//zone.Phase_http_request_sbfm:               "http_request_sbfm",
+	//zone.Phase_http_request_redirect:           "http_request_redirect",
+	"http_request_late_transform": zone.Phase_http_request_late_transform,
+	//zone.Phase_http_custom_errors:              "http_custom_errors",
+	"http_response_headers_transform": zone.Phase_http_response_headers_transform,
+	//zone.Phase_http_response_firewall_managed:  "http_response_firewall_managed",
+	//zone.Phase_http_log_custom_fields:          "http_log_custom_fields",
+}
+
+func Go2ProtoRuleSet(ruleSetFromCloudflare *cloudflare.Ruleset) *zone.RuleSet {
+	ruleSet := &zone.RuleSet{
+		Id:    &ruleSetFromCloudflare.ID,
+		Name:  ruleSetFromCloudflare.Name,
+		Kind:  ruleSetFromCloudflare.Kind,
+		Phase: stringToPhaseMap[ruleSetFromCloudflare.Phase],
+	}
+	return ruleSet
+}
+
 func Go2ProtoPageRule(rule *cloudflare.PageRule) *zone.PageRule {
 	var (
 		ExcludeAll        = "ExcludeAll"