mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	实现重写规则管理
This commit is contained in:
		@@ -70,6 +70,7 @@ func (this *APINode) listenRPC() error {
 | 
			
		||||
	pb.RegisterHTTPFirewallPolicyServiceServer(rpcServer, &services.HTTPFirewallPolicyService{})
 | 
			
		||||
	pb.RegisterHTTPLocationServiceServer(rpcServer, &services.HTTPLocationService{})
 | 
			
		||||
	pb.RegisterHTTPWebsocketServiceServer(rpcServer, &services.HTTPWebsocketService{})
 | 
			
		||||
	pb.RegisterHTTPRewriteRuleServiceServer(rpcServer, &services.HTTPRewriteRuleService{})
 | 
			
		||||
	err = rpcServer.Serve(listener)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errors.New("[API]start rpc failed: " + err.Error())
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										116
									
								
								internal/db/models/http_rewrite_rule_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								internal/db/models/http_rewrite_rule_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
package models
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
			
		||||
	_ "github.com/go-sql-driver/mysql"
 | 
			
		||||
	"github.com/iwind/TeaGo/Tea"
 | 
			
		||||
	"github.com/iwind/TeaGo/dbs"
 | 
			
		||||
	"github.com/iwind/TeaGo/types"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	HTTPRewriteRuleStateEnabled  = 1 // 已启用
 | 
			
		||||
	HTTPRewriteRuleStateDisabled = 0 // 已禁用
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type HTTPRewriteRuleDAO dbs.DAO
 | 
			
		||||
 | 
			
		||||
func NewHTTPRewriteRuleDAO() *HTTPRewriteRuleDAO {
 | 
			
		||||
	return dbs.NewDAO(&HTTPRewriteRuleDAO{
 | 
			
		||||
		DAOObject: dbs.DAOObject{
 | 
			
		||||
			DB:     Tea.Env,
 | 
			
		||||
			Table:  "edgeHTTPRewriteRules",
 | 
			
		||||
			Model:  new(HTTPRewriteRule),
 | 
			
		||||
			PkName: "id",
 | 
			
		||||
		},
 | 
			
		||||
	}).(*HTTPRewriteRuleDAO)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var SharedHTTPRewriteRuleDAO = NewHTTPRewriteRuleDAO()
 | 
			
		||||
 | 
			
		||||
// 启用条目
 | 
			
		||||
func (this *HTTPRewriteRuleDAO) EnableHTTPRewriteRule(id int64) error {
 | 
			
		||||
	_, err := this.Query().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		Set("state", HTTPRewriteRuleStateEnabled).
 | 
			
		||||
		Update()
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 禁用条目
 | 
			
		||||
func (this *HTTPRewriteRuleDAO) DisableHTTPRewriteRule(id int64) error {
 | 
			
		||||
	_, err := this.Query().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		Set("state", HTTPRewriteRuleStateDisabled).
 | 
			
		||||
		Update()
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查找启用中的条目
 | 
			
		||||
func (this *HTTPRewriteRuleDAO) FindEnabledHTTPRewriteRule(id int64) (*HTTPRewriteRule, error) {
 | 
			
		||||
	result, err := this.Query().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		Attr("state", HTTPRewriteRuleStateEnabled).
 | 
			
		||||
		Find()
 | 
			
		||||
	if result == nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return result.(*HTTPRewriteRule), err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 构造配置
 | 
			
		||||
func (this *HTTPRewriteRuleDAO) ComposeRewriteRule(rewriteRuleId int64) (*serverconfigs.HTTPRewriteRule, error) {
 | 
			
		||||
	rule, err := this.FindEnabledHTTPRewriteRule(rewriteRuleId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if rule == nil {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config := &serverconfigs.HTTPRewriteRule{}
 | 
			
		||||
	config.Id = int64(rule.Id)
 | 
			
		||||
	config.IsOn = rule.IsOn == 1
 | 
			
		||||
	config.Pattern = rule.Pattern
 | 
			
		||||
	config.Replace = rule.Replace
 | 
			
		||||
	config.Mode = rule.Mode
 | 
			
		||||
	config.RedirectStatus = types.Int(rule.RedirectStatus)
 | 
			
		||||
	config.ProxyHost = rule.ProxyHost
 | 
			
		||||
	config.IsBreak = rule.IsBreak == 1
 | 
			
		||||
	return config, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建规则
 | 
			
		||||
func (this *HTTPRewriteRuleDAO) CreateRewriteRule(pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, isOn bool) (int64, error) {
 | 
			
		||||
	op := NewHTTPRewriteRuleOperator()
 | 
			
		||||
	op.State = HTTPRewriteRuleStateEnabled
 | 
			
		||||
	op.IsOn = isOn
 | 
			
		||||
 | 
			
		||||
	op.Pattern = pattern
 | 
			
		||||
	op.Replace = replace
 | 
			
		||||
	op.Mode = mode
 | 
			
		||||
	op.RedirectStatus = redirectStatus
 | 
			
		||||
	op.IsBreak = isBreak
 | 
			
		||||
	op.ProxyHost = proxyHost
 | 
			
		||||
	_, err := this.Save(op)
 | 
			
		||||
	return types.Int64(op.Id), err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 修改规则
 | 
			
		||||
func (this *HTTPRewriteRuleDAO) UpdateRewriteRule(rewriteRuleId int64, pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, isOn bool) error {
 | 
			
		||||
	if rewriteRuleId <= 0 {
 | 
			
		||||
		return errors.New("invalid rewriteRuleId")
 | 
			
		||||
	}
 | 
			
		||||
	op := NewHTTPRewriteRuleOperator()
 | 
			
		||||
	op.Id = rewriteRuleId
 | 
			
		||||
	op.IsOn = isOn
 | 
			
		||||
	op.Pattern = pattern
 | 
			
		||||
	op.Replace = replace
 | 
			
		||||
	op.Mode = mode
 | 
			
		||||
	op.RedirectStatus = redirectStatus
 | 
			
		||||
	op.IsBreak = isBreak
 | 
			
		||||
	op.ProxyHost = proxyHost
 | 
			
		||||
	_, err := this.Save(op)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								internal/db/models/http_rewrite_rule_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								internal/db/models/http_rewrite_rule_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
package models
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	_ "github.com/go-sql-driver/mysql"
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										38
									
								
								internal/db/models/http_rewrite_rule_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								internal/db/models/http_rewrite_rule_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
package models
 | 
			
		||||
 | 
			
		||||
// 重写规则
 | 
			
		||||
type HTTPRewriteRule struct {
 | 
			
		||||
	Id             uint32 `field:"id"`             // ID
 | 
			
		||||
	AdminId        uint32 `field:"adminId"`        // 管理员ID
 | 
			
		||||
	UserId         uint32 `field:"userId"`         // 用户ID
 | 
			
		||||
	TemplateId     uint32 `field:"templateId"`     // 模版ID
 | 
			
		||||
	IsOn           uint8  `field:"isOn"`           // 是否启用
 | 
			
		||||
	State          uint8  `field:"state"`          // 状态
 | 
			
		||||
	CreatedAt      uint64 `field:"createdAt"`      // 创建时间
 | 
			
		||||
	Pattern        string `field:"pattern"`        // 匹配规则
 | 
			
		||||
	Replace        string `field:"replace"`        // 跳转后的地址
 | 
			
		||||
	Mode           string `field:"mode"`           // 替换模式
 | 
			
		||||
	RedirectStatus uint32 `field:"redirectStatus"` // 跳转的状态码
 | 
			
		||||
	ProxyHost      string `field:"proxyHost"`      // 代理的主机名
 | 
			
		||||
	IsBreak        uint8  `field:"isBreak"`        // 是否终止解析
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type HTTPRewriteRuleOperator struct {
 | 
			
		||||
	Id             interface{} // ID
 | 
			
		||||
	AdminId        interface{} // 管理员ID
 | 
			
		||||
	UserId         interface{} // 用户ID
 | 
			
		||||
	TemplateId     interface{} // 模版ID
 | 
			
		||||
	IsOn           interface{} // 是否启用
 | 
			
		||||
	State          interface{} // 状态
 | 
			
		||||
	CreatedAt      interface{} // 创建时间
 | 
			
		||||
	Pattern        interface{} // 匹配规则
 | 
			
		||||
	Replace        interface{} // 跳转后的地址
 | 
			
		||||
	Mode           interface{} // 替换模式
 | 
			
		||||
	RedirectStatus interface{} // 跳转的状态码
 | 
			
		||||
	ProxyHost      interface{} // 代理的主机名
 | 
			
		||||
	IsBreak        interface{} // 是否终止解析
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewHTTPRewriteRuleOperator() *HTTPRewriteRuleOperator {
 | 
			
		||||
	return &HTTPRewriteRuleOperator{}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								internal/db/models/http_rewrite_rule_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/http_rewrite_rule_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
package models
 | 
			
		||||
@@ -279,6 +279,25 @@ func (this *HTTPWebDAO) ComposeWebConfig(webId int64) (*serverconfigs.HTTPWebCon
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 重写规则
 | 
			
		||||
	if IsNotNull(web.RewriteRules) {
 | 
			
		||||
		refs := []*serverconfigs.HTTPRewriteRef{}
 | 
			
		||||
		err = json.Unmarshal([]byte(web.RewriteRules), &refs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		for _, ref := range refs {
 | 
			
		||||
			rewriteRule, err := SharedHTTPRewriteRuleDAO.ComposeRewriteRule(ref.RewriteRuleId)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if rewriteRule != nil {
 | 
			
		||||
				config.RewriteRefs = append(config.RewriteRefs, ref)
 | 
			
		||||
				config.RewriteRules = append(config.RewriteRules, rewriteRule)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return config, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -461,3 +480,15 @@ func (this *HTTPWebDAO) UpdateWebsocket(webId int64, websocketJSON []byte) error
 | 
			
		||||
	_, err := this.Save(op)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 修改重写规则设置
 | 
			
		||||
func (this *HTTPWebDAO) UpdateWebRewriteRules(webId int64, rewriteRulesJSON []byte) error {
 | 
			
		||||
	if webId <= 0 {
 | 
			
		||||
		return errors.New("invalid webId")
 | 
			
		||||
	}
 | 
			
		||||
	op := NewHTTPWebOperator()
 | 
			
		||||
	op.Id = webId
 | 
			
		||||
	op.RewriteRules = JSONBytes(rewriteRulesJSON)
 | 
			
		||||
	_, err := this.Save(op)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,8 @@ type HTTPWeb struct {
 | 
			
		||||
	RedirectToHttps    string `field:"redirectToHttps"`    // 跳转到HTTPS设置
 | 
			
		||||
	Indexes            string `field:"indexes"`            // 首页文件列表
 | 
			
		||||
	MaxRequestBodySize string `field:"maxRequestBodySize"` // 最大允许的请求内容尺寸
 | 
			
		||||
	RequestHeader      string `field:"requestHeader"`      // Request Header策略ID
 | 
			
		||||
	ResponseHeader     string `field:"responseHeader"`     // Response Header策略
 | 
			
		||||
	RequestHeader      string `field:"requestHeader"`      // 请求Header配置
 | 
			
		||||
	ResponseHeader     string `field:"responseHeader"`     // 响应Header配置
 | 
			
		||||
	AccessLog          string `field:"accessLog"`          // 访问日志配置
 | 
			
		||||
	Stat               string `field:"stat"`               // 统计配置
 | 
			
		||||
	Gzip               string `field:"gzip"`               // Gzip配置
 | 
			
		||||
@@ -25,6 +25,7 @@ type HTTPWeb struct {
 | 
			
		||||
	Firewall           string `field:"firewall"`           // 防火墙设置
 | 
			
		||||
	Locations          string `field:"locations"`          // 路径规则配置
 | 
			
		||||
	Websocket          string `field:"websocket"`          // Websocket设置
 | 
			
		||||
	RewriteRules       string `field:"rewriteRules"`       // 重写规则配置
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type HTTPWebOperator struct {
 | 
			
		||||
@@ -42,8 +43,8 @@ type HTTPWebOperator struct {
 | 
			
		||||
	RedirectToHttps    interface{} // 跳转到HTTPS设置
 | 
			
		||||
	Indexes            interface{} // 首页文件列表
 | 
			
		||||
	MaxRequestBodySize interface{} // 最大允许的请求内容尺寸
 | 
			
		||||
	RequestHeader      interface{} // Request Header策略ID
 | 
			
		||||
	ResponseHeader     interface{} // Response Header策略
 | 
			
		||||
	RequestHeader      interface{} // 请求Header配置
 | 
			
		||||
	ResponseHeader     interface{} // 响应Header配置
 | 
			
		||||
	AccessLog          interface{} // 访问日志配置
 | 
			
		||||
	Stat               interface{} // 统计配置
 | 
			
		||||
	Gzip               interface{} // Gzip配置
 | 
			
		||||
@@ -51,6 +52,7 @@ type HTTPWebOperator struct {
 | 
			
		||||
	Firewall           interface{} // 防火墙设置
 | 
			
		||||
	Locations          interface{} // 路径规则配置
 | 
			
		||||
	Websocket          interface{} // Websocket设置
 | 
			
		||||
	RewriteRules       interface{} // 重写规则配置
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewHTTPWebOperator() *HTTPWebOperator {
 | 
			
		||||
 
 | 
			
		||||
@@ -210,9 +210,9 @@ func (this *NodeDAO) ListEnabledNodesMatch(offset int64, size int64, clusterId i
 | 
			
		||||
	case configutils.BoolStateAll:
 | 
			
		||||
		// 所有
 | 
			
		||||
	case configutils.BoolStateYes:
 | 
			
		||||
		query.Where("JSON_EXTRACT(status, '$.isActive') AND JSON_EXTRACT(status, '$.updatedAt')-UNIX_TIMESTAMP()<=60")
 | 
			
		||||
		query.Where("JSON_EXTRACT(status, '$.isActive') AND UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')<=60")
 | 
			
		||||
	case configutils.BoolStateNo:
 | 
			
		||||
		query.Where("(status IS NULL OR NOT JSON_EXTRACT(status, '$.isActive') OR JSON_EXTRACT(status, '$.updatedAt')-UNIX_TIMESTAMP()>60)")
 | 
			
		||||
		query.Where("(status IS NULL OR NOT JSON_EXTRACT(status, '$.isActive') OR UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')>60)")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = query.FindAll()
 | 
			
		||||
@@ -300,9 +300,9 @@ func (this *NodeDAO) CountAllEnabledNodesMatch(clusterId int64, installState con
 | 
			
		||||
	case configutils.BoolStateAll:
 | 
			
		||||
		// 所有
 | 
			
		||||
	case configutils.BoolStateYes:
 | 
			
		||||
		query.Where("JSON_EXTRACT(status, '$.isActive') AND JSON_EXTRACT(status, '$.updatedAt')-UNIX_TIMESTAMP()<=60")
 | 
			
		||||
		query.Where("JSON_EXTRACT(status, '$.isActive') AND UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')<=60")
 | 
			
		||||
	case configutils.BoolStateNo:
 | 
			
		||||
		query.Where("(status IS NULL OR NOT JSON_EXTRACT(status, '$.isActive') OR JSON_EXTRACT(status, '$.updatedAt')-UNIX_TIMESTAMP()>60)")
 | 
			
		||||
		query.Where("(status IS NULL OR NOT JSON_EXTRACT(status, '$.isActive') OR UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')>60)")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return query.Count()
 | 
			
		||||
 
 | 
			
		||||
@@ -140,7 +140,7 @@ func (this *ServerDAO) CreateServer(adminId int64, userId int64, serverType serv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 修改服务基本信息
 | 
			
		||||
func (this *ServerDAO) UpdateServerBasic(serverId int64, name string, description string, clusterId int64) error {
 | 
			
		||||
func (this *ServerDAO) UpdateServerBasic(serverId int64, name string, description string, clusterId int64, isOn bool) error {
 | 
			
		||||
	if serverId <= 0 {
 | 
			
		||||
		return errors.New("serverId should not be smaller than 0")
 | 
			
		||||
	}
 | 
			
		||||
@@ -149,11 +149,17 @@ func (this *ServerDAO) UpdateServerBasic(serverId int64, name string, descriptio
 | 
			
		||||
	op.Name = name
 | 
			
		||||
	op.Description = description
 | 
			
		||||
	op.ClusterId = clusterId
 | 
			
		||||
	op.IsOn = isOn
 | 
			
		||||
	_, err := this.Save(op)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = this.RenewServerConfig(serverId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.createEvent()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -208,6 +214,11 @@ func (this *ServerDAO) UpdateServerHTTP(serverId int64, config []byte) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = this.RenewServerConfig(serverId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.createEvent()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -227,6 +238,11 @@ func (this *ServerDAO) UpdateServerHTTPS(serverId int64, config []byte) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = this.RenewServerConfig(serverId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.createEvent()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										44
									
								
								internal/rpc/services/service_http_rewrite_rule.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								internal/rpc/services/service_http_rewrite_rule.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
package services
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
			
		||||
	rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/types"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type HTTPRewriteRuleService struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建重写规则
 | 
			
		||||
func (this *HTTPRewriteRuleService) CreateHTTPRewriteRule(ctx context.Context, req *pb.CreateHTTPRewriteRuleRequest) (*pb.CreateHTTPRewriteRuleResponse, error) {
 | 
			
		||||
	// 校验请求
 | 
			
		||||
	_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	rewriteRuleId, err := models.SharedHTTPRewriteRuleDAO.CreateRewriteRule(req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.IsOn)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.CreateHTTPRewriteRuleResponse{RewriteRuleId: rewriteRuleId}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 修改重写规则
 | 
			
		||||
func (this *HTTPRewriteRuleService) UpdateHTTPRewriteRule(ctx context.Context, req *pb.UpdateHTTPRewriteRuleRequest) (*pb.RPCUpdateSuccess, error) {
 | 
			
		||||
	// 校验请求
 | 
			
		||||
	_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = models.SharedHTTPRewriteRuleDAO.UpdateRewriteRule(req.RewriteRuleId, req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.IsOn)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return rpcutils.RPCUpdateSuccess()
 | 
			
		||||
}
 | 
			
		||||
@@ -286,3 +286,18 @@ func (this *HTTPWebService) UpdateHTTPWebWebsocket(ctx context.Context, req *pb.
 | 
			
		||||
	}
 | 
			
		||||
	return rpcutils.RPCUpdateSuccess()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更改重写规则设置
 | 
			
		||||
func (this *HTTPWebService) UpdateHTTPWebRewriteRules(ctx context.Context, req *pb.UpdateHTTPWebRewriteRulesRequest) (*pb.RPCUpdateSuccess, error) {
 | 
			
		||||
	// 校验请求
 | 
			
		||||
	_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = models.SharedHTTPWebDAO.UpdateWebRewriteRules(req.WebId, req.RewriteRulesJSON)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return rpcutils.RPCUpdateSuccess()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@ func (this *ServerService) UpdateServerBasic(ctx context.Context, req *pb.Update
 | 
			
		||||
		return nil, errors.New("can not find server")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = models.SharedServerDAO.UpdateServerBasic(req.ServerId, req.Name, req.Description, req.ClusterId)
 | 
			
		||||
	err = models.SharedServerDAO.UpdateServerBasic(req.ServerId, req.Name, req.Description, req.ClusterId, req.IsOn)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -446,6 +446,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn
 | 
			
		||||
 | 
			
		||||
	return &pb.FindEnabledServerResponse{Server: &pb.Server{
 | 
			
		||||
		Id:               int64(server.Id),
 | 
			
		||||
		IsOn:             server.IsOn == 1,
 | 
			
		||||
		Type:             server.Type,
 | 
			
		||||
		Name:             server.Name,
 | 
			
		||||
		Description:      server.Description,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user