实现重写规则管理

This commit is contained in:
GoEdgeLab
2020-09-28 16:25:26 +08:00
parent 1353ad9e6d
commit f459632dd6
37 changed files with 935 additions and 66 deletions

View File

@@ -37,6 +37,7 @@ type RPCClient struct {
httpFirewallPolicyClients []pb.HTTPFirewallPolicyServiceClient
httpLocationClients []pb.HTTPLocationServiceClient
httpWebsocketClients []pb.HTTPWebsocketServiceClient
httpRewriteRuleClients []pb.HTTPRewriteRuleServiceClient
}
func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
@@ -63,6 +64,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
httpFirewallPolicyClients := []pb.HTTPFirewallPolicyServiceClient{}
httpLocationClients := []pb.HTTPLocationServiceClient{}
httpWebsocketClients := []pb.HTTPWebsocketServiceClient{}
httpRewriteRuleClients := []pb.HTTPRewriteRuleServiceClient{}
conns := []*grpc.ClientConn{}
for _, endpoint := range apiConfig.RPC.Endpoints {
@@ -97,6 +99,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
httpFirewallPolicyClients = append(httpFirewallPolicyClients, pb.NewHTTPFirewallPolicyServiceClient(conn))
httpLocationClients = append(httpLocationClients, pb.NewHTTPLocationServiceClient(conn))
httpWebsocketClients = append(httpWebsocketClients, pb.NewHTTPWebsocketServiceClient(conn))
httpRewriteRuleClients = append(httpRewriteRuleClients, pb.NewHTTPRewriteRuleServiceClient(conn))
}
return &RPCClient{
@@ -120,6 +123,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) {
httpFirewallPolicyClients: httpFirewallPolicyClients,
httpLocationClients: httpLocationClients,
httpWebsocketClients: httpWebsocketClients,
httpRewriteRuleClients: httpRewriteRuleClients,
}, nil
}
@@ -256,6 +260,13 @@ func (this *RPCClient) HTTPWebsocketRPC() pb.HTTPWebsocketServiceClient {
return nil
}
func (this *RPCClient) HTTPRewriteRuleRPC() pb.HTTPRewriteRuleServiceClient {
if len(this.httpRewriteRuleClients) > 0 {
return this.httpRewriteRuleClients[rands.Int(0, len(this.httpRewriteRuleClients)-1)]
}
return nil
}
func (this *RPCClient) Context(adminId int64) context.Context {
ctx := context.Background()
m := maps.Map{