From 4c730d5528a0e9fe137c399dca847e1a2592f43b Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 28 Sep 2020 18:20:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E4=B8=AD=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E9=87=8D=E5=86=99=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/http_rewrite_rule_dao.go | 21 +++++++++++++++++-- internal/db/models/http_rewrite_rule_model.go | 2 ++ .../rpc/services/service_http_rewrite_rule.go | 4 ++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/internal/db/models/http_rewrite_rule_dao.go b/internal/db/models/http_rewrite_rule_dao.go index b49af16d..34910e79 100644 --- a/internal/db/models/http_rewrite_rule_dao.go +++ b/internal/db/models/http_rewrite_rule_dao.go @@ -29,6 +29,20 @@ func NewHTTPRewriteRuleDAO() *HTTPRewriteRuleDAO { var SharedHTTPRewriteRuleDAO = NewHTTPRewriteRuleDAO() +// 初始化 +func (this *HTTPRewriteRuleDAO) Init() { + this.DAOObject.Init() + this.DAOObject.OnUpdate(func() error { + return SharedSysEventDAO.CreateEvent(NewServerChangeEvent()) + }) + this.DAOObject.OnInsert(func() error { + return SharedSysEventDAO.CreateEvent(NewServerChangeEvent()) + }) + this.DAOObject.OnDelete(func() error { + return SharedSysEventDAO.CreateEvent(NewServerChangeEvent()) + }) +} + // 启用条目 func (this *HTTPRewriteRuleDAO) EnableHTTPRewriteRule(id int64) error { _, err := this.Query(). @@ -78,11 +92,12 @@ func (this *HTTPRewriteRuleDAO) ComposeRewriteRule(rewriteRuleId int64) (*server config.RedirectStatus = types.Int(rule.RedirectStatus) config.ProxyHost = rule.ProxyHost config.IsBreak = rule.IsBreak == 1 + config.WithQuery = rule.WithQuery == 1 return config, nil } // 创建规则 -func (this *HTTPRewriteRuleDAO) CreateRewriteRule(pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, isOn bool) (int64, error) { +func (this *HTTPRewriteRuleDAO) CreateRewriteRule(pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, withQuery bool, isOn bool) (int64, error) { op := NewHTTPRewriteRuleOperator() op.State = HTTPRewriteRuleStateEnabled op.IsOn = isOn @@ -92,13 +107,14 @@ func (this *HTTPRewriteRuleDAO) CreateRewriteRule(pattern string, replace string op.Mode = mode op.RedirectStatus = redirectStatus op.IsBreak = isBreak + op.WithQuery = withQuery 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 { +func (this *HTTPRewriteRuleDAO) UpdateRewriteRule(rewriteRuleId int64, pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, withQuery bool, isOn bool) error { if rewriteRuleId <= 0 { return errors.New("invalid rewriteRuleId") } @@ -110,6 +126,7 @@ func (this *HTTPRewriteRuleDAO) UpdateRewriteRule(rewriteRuleId int64, pattern s op.Mode = mode op.RedirectStatus = redirectStatus op.IsBreak = isBreak + op.WithQuery = withQuery op.ProxyHost = proxyHost _, err := this.Save(op) return err diff --git a/internal/db/models/http_rewrite_rule_model.go b/internal/db/models/http_rewrite_rule_model.go index 29031065..91c38423 100644 --- a/internal/db/models/http_rewrite_rule_model.go +++ b/internal/db/models/http_rewrite_rule_model.go @@ -15,6 +15,7 @@ type HTTPRewriteRule struct { RedirectStatus uint32 `field:"redirectStatus"` // 跳转的状态码 ProxyHost string `field:"proxyHost"` // 代理的主机名 IsBreak uint8 `field:"isBreak"` // 是否终止解析 + WithQuery uint8 `field:"withQuery"` // 是否保留URI参数 } type HTTPRewriteRuleOperator struct { @@ -31,6 +32,7 @@ type HTTPRewriteRuleOperator struct { RedirectStatus interface{} // 跳转的状态码 ProxyHost interface{} // 代理的主机名 IsBreak interface{} // 是否终止解析 + WithQuery interface{} // 是否保留URI参数 } func NewHTTPRewriteRuleOperator() *HTTPRewriteRuleOperator { diff --git a/internal/rpc/services/service_http_rewrite_rule.go b/internal/rpc/services/service_http_rewrite_rule.go index baa73d1e..38766dac 100644 --- a/internal/rpc/services/service_http_rewrite_rule.go +++ b/internal/rpc/services/service_http_rewrite_rule.go @@ -19,7 +19,7 @@ func (this *HTTPRewriteRuleService) CreateHTTPRewriteRule(ctx context.Context, r return nil, err } - rewriteRuleId, err := models.SharedHTTPRewriteRuleDAO.CreateRewriteRule(req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.IsOn) + rewriteRuleId, err := models.SharedHTTPRewriteRuleDAO.CreateRewriteRule(req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.WithQuery, req.IsOn) if err != nil { return nil, err } @@ -35,7 +35,7 @@ func (this *HTTPRewriteRuleService) UpdateHTTPRewriteRule(ctx context.Context, r 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) + err = models.SharedHTTPRewriteRuleDAO.UpdateRewriteRule(req.RewriteRuleId, req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.WithQuery, req.IsOn) if err != nil { return nil, err }