mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	自定义页面增加例外URL和限制URL设置
This commit is contained in:
		@@ -5,6 +5,7 @@ import (
 | 
				
			|||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
	_ "github.com/go-sql-driver/mysql"
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
	"github.com/iwind/TeaGo/Tea"
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
@@ -76,7 +77,7 @@ func (this *HTTPPageDAO) FindEnabledHTTPPage(tx *dbs.Tx, id int64) (*HTTPPage, e
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreatePage 创建Page
 | 
					// CreatePage 创建Page
 | 
				
			||||||
func (this *HTTPPageDAO) CreatePage(tx *dbs.Tx, userId int64, statusList []string, bodyType serverconfigs.HTTPPageBodyType, url string, body string, newStatus int) (pageId int64, err error) {
 | 
					func (this *HTTPPageDAO) CreatePage(tx *dbs.Tx, userId int64, statusList []string, bodyType serverconfigs.HTTPPageBodyType, url string, body string, newStatus int, exceptURLPatterns []*shared.URLPattern, onlyURLPatterns []*shared.URLPattern) (pageId int64, err error) {
 | 
				
			||||||
	var op = NewHTTPPageOperator()
 | 
						var op = NewHTTPPageOperator()
 | 
				
			||||||
	op.UserId = userId
 | 
						op.UserId = userId
 | 
				
			||||||
	op.IsOn = true
 | 
						op.IsOn = true
 | 
				
			||||||
@@ -93,6 +94,29 @@ func (this *HTTPPageDAO) CreatePage(tx *dbs.Tx, userId int64, statusList []strin
 | 
				
			|||||||
	op.Url = url
 | 
						op.Url = url
 | 
				
			||||||
	op.Body = body
 | 
						op.Body = body
 | 
				
			||||||
	op.NewStatus = newStatus
 | 
						op.NewStatus = newStatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if exceptURLPatterns == nil {
 | 
				
			||||||
 | 
								exceptURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							exceptURLPatternsJSON, err := json.Marshal(exceptURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return 0, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							op.ExceptURLPatterns = exceptURLPatternsJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if onlyURLPatterns == nil {
 | 
				
			||||||
 | 
								onlyURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							onlyURLPatternsJSON, err := json.Marshal(onlyURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return 0, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							op.OnlyURLPatterns = onlyURLPatternsJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = this.Save(tx, op)
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return 0, err
 | 
							return 0, err
 | 
				
			||||||
@@ -102,7 +126,7 @@ func (this *HTTPPageDAO) CreatePage(tx *dbs.Tx, userId int64, statusList []strin
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdatePage 修改Page
 | 
					// UpdatePage 修改Page
 | 
				
			||||||
func (this *HTTPPageDAO) UpdatePage(tx *dbs.Tx, pageId int64, statusList []string, bodyType serverconfigs.HTTPPageBodyType, url string, body string, newStatus int) error {
 | 
					func (this *HTTPPageDAO) UpdatePage(tx *dbs.Tx, pageId int64, statusList []string, bodyType serverconfigs.HTTPPageBodyType, url string, body string, newStatus int, exceptURLPatterns []*shared.URLPattern, onlyURLPatterns []*shared.URLPattern) error {
 | 
				
			||||||
	if pageId <= 0 {
 | 
						if pageId <= 0 {
 | 
				
			||||||
		return errors.New("invalid pageId")
 | 
							return errors.New("invalid pageId")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -125,6 +149,29 @@ func (this *HTTPPageDAO) UpdatePage(tx *dbs.Tx, pageId int64, statusList []strin
 | 
				
			|||||||
	op.Url = url
 | 
						op.Url = url
 | 
				
			||||||
	op.Body = body
 | 
						op.Body = body
 | 
				
			||||||
	op.NewStatus = newStatus
 | 
						op.NewStatus = newStatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if exceptURLPatterns == nil {
 | 
				
			||||||
 | 
								exceptURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							exceptURLPatternsJSON, err := json.Marshal(exceptURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							op.ExceptURLPatterns = exceptURLPatternsJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if onlyURLPatterns == nil {
 | 
				
			||||||
 | 
								onlyURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							onlyURLPatternsJSON, err := json.Marshal(onlyURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							op.OnlyURLPatterns = onlyURLPatternsJSON
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = this.Save(tx, op)
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -155,6 +202,14 @@ func (this *HTTPPageDAO) ClonePage(tx *dbs.Tx, fromPageId int64) (newPageId int6
 | 
				
			|||||||
	op.Body = page.Body
 | 
						op.Body = page.Body
 | 
				
			||||||
	op.BodyType = page.BodyType
 | 
						op.BodyType = page.BodyType
 | 
				
			||||||
	op.State = page.State
 | 
						op.State = page.State
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(page.ExceptURLPatterns) > 0 {
 | 
				
			||||||
 | 
							op.ExceptURLPatterns = page.ExceptURLPatterns
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(page.OnlyURLPatterns) > 0 {
 | 
				
			||||||
 | 
							op.OnlyURLPatterns = page.OnlyURLPatterns
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return this.SaveInt64(tx, op)
 | 
						return this.SaveInt64(tx, op)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -178,7 +233,7 @@ func (this *HTTPPageDAO) ComposePageConfig(tx *dbs.Tx, pageId int64, cacheMap *u
 | 
				
			|||||||
		return nil, nil
 | 
							return nil, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config := &serverconfigs.HTTPPageConfig{}
 | 
						var config = &serverconfigs.HTTPPageConfig{}
 | 
				
			||||||
	config.Id = int64(page.Id)
 | 
						config.Id = int64(page.Id)
 | 
				
			||||||
	config.IsOn = page.IsOn
 | 
						config.IsOn = page.IsOn
 | 
				
			||||||
	config.NewStatus = int(page.NewStatus)
 | 
						config.NewStatus = int(page.NewStatus)
 | 
				
			||||||
@@ -201,6 +256,28 @@ func (this *HTTPPageDAO) ComposePageConfig(tx *dbs.Tx, pageId int64, cacheMap *u
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(page.ExceptURLPatterns) > 0 {
 | 
				
			||||||
 | 
							var exceptURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
							err = json.Unmarshal(page.ExceptURLPatterns, &exceptURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if len(exceptURLPatterns) > 0 {
 | 
				
			||||||
 | 
								config.ExceptURLPatterns = exceptURLPatterns
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(page.OnlyURLPatterns) > 0 {
 | 
				
			||||||
 | 
							var onlyURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
							err = json.Unmarshal(page.OnlyURLPatterns, &onlyURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if len(onlyURLPatterns) > 0 {
 | 
				
			||||||
 | 
								config.OnlyURLPatterns = onlyURLPatterns
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if cacheMap != nil {
 | 
						if cacheMap != nil {
 | 
				
			||||||
		cacheMap.Put(cacheKey, config)
 | 
							cacheMap.Put(cacheKey, config)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,33 +2,53 @@ package models
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "github.com/iwind/TeaGo/dbs"
 | 
					import "github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						HTTPPageField_Id                dbs.FieldName = "id"                // ID
 | 
				
			||||||
 | 
						HTTPPageField_AdminId           dbs.FieldName = "adminId"           // 管理员ID
 | 
				
			||||||
 | 
						HTTPPageField_UserId            dbs.FieldName = "userId"            // 用户ID
 | 
				
			||||||
 | 
						HTTPPageField_IsOn              dbs.FieldName = "isOn"              // 是否启用
 | 
				
			||||||
 | 
						HTTPPageField_StatusList        dbs.FieldName = "statusList"        // 状态列表
 | 
				
			||||||
 | 
						HTTPPageField_Url               dbs.FieldName = "url"               // 页面URL
 | 
				
			||||||
 | 
						HTTPPageField_NewStatus         dbs.FieldName = "newStatus"         // 新状态码
 | 
				
			||||||
 | 
						HTTPPageField_State             dbs.FieldName = "state"             // 状态
 | 
				
			||||||
 | 
						HTTPPageField_CreatedAt         dbs.FieldName = "createdAt"         // 创建时间
 | 
				
			||||||
 | 
						HTTPPageField_Body              dbs.FieldName = "body"              // 页面内容
 | 
				
			||||||
 | 
						HTTPPageField_BodyType          dbs.FieldName = "bodyType"          // 内容类型
 | 
				
			||||||
 | 
						HTTPPageField_ExceptURLPatterns dbs.FieldName = "exceptURLPatterns" // 例外URL
 | 
				
			||||||
 | 
						HTTPPageField_OnlyURLPatterns   dbs.FieldName = "onlyURLPatterns"   // 限制URL
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HTTPPage 特殊页面
 | 
					// HTTPPage 特殊页面
 | 
				
			||||||
type HTTPPage struct {
 | 
					type HTTPPage struct {
 | 
				
			||||||
	Id         uint32   `field:"id"`         // ID
 | 
						Id                uint32   `field:"id"`                // ID
 | 
				
			||||||
	AdminId    uint32   `field:"adminId"`    // 管理员ID
 | 
						AdminId           uint32   `field:"adminId"`           // 管理员ID
 | 
				
			||||||
	UserId     uint32   `field:"userId"`     // 用户ID
 | 
						UserId            uint32   `field:"userId"`            // 用户ID
 | 
				
			||||||
	IsOn       bool     `field:"isOn"`       // 是否启用
 | 
						IsOn              bool     `field:"isOn"`              // 是否启用
 | 
				
			||||||
	StatusList dbs.JSON `field:"statusList"` // 状态列表
 | 
						StatusList        dbs.JSON `field:"statusList"`        // 状态列表
 | 
				
			||||||
	Url        string   `field:"url"`        // 页面URL
 | 
						Url               string   `field:"url"`               // 页面URL
 | 
				
			||||||
	NewStatus  int32    `field:"newStatus"`  // 新状态码
 | 
						NewStatus         int32    `field:"newStatus"`         // 新状态码
 | 
				
			||||||
	State      uint8    `field:"state"`      // 状态
 | 
						State             uint8    `field:"state"`             // 状态
 | 
				
			||||||
	CreatedAt  uint64   `field:"createdAt"`  // 创建时间
 | 
						CreatedAt         uint64   `field:"createdAt"`         // 创建时间
 | 
				
			||||||
	Body       string   `field:"body"`       // 页面内容
 | 
						Body              string   `field:"body"`              // 页面内容
 | 
				
			||||||
	BodyType   string   `field:"bodyType"`   // 内容类型
 | 
						BodyType          string   `field:"bodyType"`          // 内容类型
 | 
				
			||||||
 | 
						ExceptURLPatterns dbs.JSON `field:"exceptURLPatterns"` // 例外URL
 | 
				
			||||||
 | 
						OnlyURLPatterns   dbs.JSON `field:"onlyURLPatterns"`   // 限制URL
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HTTPPageOperator struct {
 | 
					type HTTPPageOperator struct {
 | 
				
			||||||
	Id         interface{} // ID
 | 
						Id                any // ID
 | 
				
			||||||
	AdminId    interface{} // 管理员ID
 | 
						AdminId           any // 管理员ID
 | 
				
			||||||
	UserId     interface{} // 用户ID
 | 
						UserId            any // 用户ID
 | 
				
			||||||
	IsOn       interface{} // 是否启用
 | 
						IsOn              any // 是否启用
 | 
				
			||||||
	StatusList interface{} // 状态列表
 | 
						StatusList        any // 状态列表
 | 
				
			||||||
	Url        interface{} // 页面URL
 | 
						Url               any // 页面URL
 | 
				
			||||||
	NewStatus  interface{} // 新状态码
 | 
						NewStatus         any // 新状态码
 | 
				
			||||||
	State      interface{} // 状态
 | 
						State             any // 状态
 | 
				
			||||||
	CreatedAt  interface{} // 创建时间
 | 
						CreatedAt         any // 创建时间
 | 
				
			||||||
	Body       interface{} // 页面内容
 | 
						Body              any // 页面内容
 | 
				
			||||||
	BodyType   interface{} // 内容类型
 | 
						BodyType          any // 内容类型
 | 
				
			||||||
 | 
						ExceptURLPatterns any // 例外URL
 | 
				
			||||||
 | 
						OnlyURLPatterns   any // 限制URL
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewHTTPPageOperator() *HTTPPageOperator {
 | 
					func NewHTTPPageOperator() *HTTPPageOperator {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,10 +4,12 @@ import (
 | 
				
			|||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
	"github.com/iwind/TeaGo/types"
 | 
						"github.com/iwind/TeaGo/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,7 +66,35 @@ func (this *HTTPPageService) CreateHTTPPage(ctx context.Context, req *pb.CreateH
 | 
				
			|||||||
		return nil, errors.New("invalid 'bodyType': " + req.BodyType)
 | 
							return nil, errors.New("invalid 'bodyType': " + req.BodyType)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pageId, err := models.SharedHTTPPageDAO.CreatePage(tx, userId, req.StatusList, req.BodyType, req.Url, req.Body, types.Int(req.NewStatus))
 | 
						var exceptURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
						if len(req.ExceptURLPatternsJSON) > 0 {
 | 
				
			||||||
 | 
							err = json.Unmarshal(req.ExceptURLPatternsJSON, &exceptURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for _, pattern := range exceptURLPatterns {
 | 
				
			||||||
 | 
								err = pattern.Init()
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return nil, fmt.Errorf("validate url pattern '"+pattern.Pattern+"' failed: %w", err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var onlyURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
						if len(req.OnlyURLPatternsJSON) > 0 {
 | 
				
			||||||
 | 
							err = json.Unmarshal(req.OnlyURLPatternsJSON, &onlyURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for _, pattern := range onlyURLPatterns {
 | 
				
			||||||
 | 
								err = pattern.Init()
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return nil, fmt.Errorf("validate url pattern '"+pattern.Pattern+"' failed: %w", err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pageId, err := models.SharedHTTPPageDAO.CreatePage(tx, userId, req.StatusList, req.BodyType, req.Url, req.Body, types.Int(req.NewStatus), exceptURLPatterns, onlyURLPatterns)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -127,7 +157,35 @@ func (this *HTTPPageService) UpdateHTTPPage(ctx context.Context, req *pb.UpdateH
 | 
				
			|||||||
		return nil, errors.New("invalid 'bodyType': " + req.BodyType)
 | 
							return nil, errors.New("invalid 'bodyType': " + req.BodyType)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = models.SharedHTTPPageDAO.UpdatePage(tx, req.HttpPageId, req.StatusList, req.BodyType, req.Url, req.Body, types.Int(req.NewStatus))
 | 
						var exceptURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
						if len(req.ExceptURLPatternsJSON) > 0 {
 | 
				
			||||||
 | 
							err = json.Unmarshal(req.ExceptURLPatternsJSON, &exceptURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for _, pattern := range exceptURLPatterns {
 | 
				
			||||||
 | 
								err = pattern.Init()
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return nil, fmt.Errorf("validate url pattern '"+pattern.Pattern+"' failed: %w", err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var onlyURLPatterns = []*shared.URLPattern{}
 | 
				
			||||||
 | 
						if len(req.OnlyURLPatternsJSON) > 0 {
 | 
				
			||||||
 | 
							err = json.Unmarshal(req.OnlyURLPatternsJSON, &onlyURLPatterns)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for _, pattern := range onlyURLPatterns {
 | 
				
			||||||
 | 
								err = pattern.Init()
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return nil, fmt.Errorf("validate url pattern '"+pattern.Pattern+"' failed: %w", err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = models.SharedHTTPPageDAO.UpdatePage(tx, req.HttpPageId, req.StatusList, req.BodyType, req.Url, req.Body, types.Int(req.NewStatus), exceptURLPatterns, onlyURLPatterns)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102170,7 +102170,7 @@
 | 
				
			|||||||
      "name": "edgeHTTPAccessLogs",
 | 
					      "name": "edgeHTTPAccessLogs",
 | 
				
			||||||
      "engine": "InnoDB",
 | 
					      "engine": "InnoDB",
 | 
				
			||||||
      "charset": "utf8mb4_general_ci",
 | 
					      "charset": "utf8mb4_general_ci",
 | 
				
			||||||
      "definition": "CREATE TABLE `edgeHTTPAccessLogs` (\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `serverId` int(11) unsigned DEFAULT '0' COMMENT '服务ID',\n  `nodeId` int(11) unsigned DEFAULT '0' COMMENT '节点ID',\n  `status` int(3) unsigned DEFAULT '0' COMMENT '状态码',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `content` json DEFAULT NULL COMMENT '日志内容',\n  `requestId` varchar(128) DEFAULT NULL COMMENT '请求ID',\n  `firewallPolicyId` int(11) unsigned DEFAULT '0' COMMENT 'WAF策略ID',\n  `firewallRuleGroupId` int(11) unsigned DEFAULT '0' COMMENT 'WAF分组ID',\n  `firewallRuleSetId` int(11) unsigned DEFAULT '0' COMMENT 'WAF集ID',\n  `firewallRuleId` int(11) unsigned DEFAULT '0' COMMENT 'WAF规则ID',\n  `remoteAddr` varchar(64) DEFAULT NULL COMMENT 'IP地址',\n  `domain` varchar(128) DEFAULT NULL COMMENT '域名',\n  `requestBody` mediumblob COMMENT '请求内容',\n  `responseBody` mediumblob COMMENT '响应内容',\n  PRIMARY KEY (`id`),\n  KEY `serverId` (`serverId`),\n  KEY `nodeId` (`nodeId`),\n  KEY `serverId_status` (`serverId`,`status`),\n  KEY `requestId` (`requestId`),\n  KEY `firewallPolicyId` (`firewallPolicyId`),\n  KEY `firewallRuleGroupId` (`firewallRuleGroupId`),\n  KEY `firewallRuleSetId` (`firewallRuleSetId`),\n  KEY `firewallRuleId` (`firewallRuleId`),\n  KEY `remoteAddr` (`remoteAddr`),\n  KEY `domain` (`domain`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='访问日志'",
 | 
					      "definition": "CREATE TABLE `edgeHTTPAccessLogs` (\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `serverId` int(11) unsigned DEFAULT '0' COMMENT '服务ID',\n  `nodeId` int(11) unsigned DEFAULT '0' COMMENT '节点ID',\n  `status` int(3) unsigned DEFAULT '0' COMMENT '状态码',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `content` json DEFAULT NULL COMMENT '日志内容',\n  `requestId` varchar(128) DEFAULT NULL COMMENT '请求ID',\n  `firewallPolicyId` int(11) unsigned DEFAULT '0' COMMENT 'WAF策略ID',\n  `firewallRuleGroupId` int(11) unsigned DEFAULT '0' COMMENT 'WAF分组ID',\n  `firewallRuleSetId` int(11) unsigned DEFAULT '0' COMMENT 'WAF集ID',\n  `firewallRuleId` int(11) unsigned DEFAULT '0' COMMENT 'WAF规则ID',\n  `remoteAddr` varchar(64) DEFAULT NULL COMMENT 'IP地址',\n  `domain` varchar(255) DEFAULT NULL COMMENT '域名',\n  `requestBody` mediumblob COMMENT '请求内容',\n  `responseBody` mediumblob COMMENT '响应内容',\n  PRIMARY KEY (`id`),\n  KEY `serverId` (`serverId`),\n  KEY `nodeId` (`nodeId`),\n  KEY `serverId_status` (`serverId`,`status`),\n  KEY `requestId` (`requestId`),\n  KEY `firewallPolicyId` (`firewallPolicyId`),\n  KEY `firewallRuleGroupId` (`firewallRuleGroupId`),\n  KEY `firewallRuleSetId` (`firewallRuleSetId`),\n  KEY `firewallRuleId` (`firewallRuleId`),\n  KEY `remoteAddr` (`remoteAddr`),\n  KEY `domain` (`domain`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='访问日志'",
 | 
				
			||||||
      "fields": [
 | 
					      "fields": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "id",
 | 
					          "name": "id",
 | 
				
			||||||
@@ -102222,7 +102222,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "domain",
 | 
					          "name": "domain",
 | 
				
			||||||
          "definition": "varchar(128) COMMENT '域名'"
 | 
					          "definition": "varchar(255) COMMENT '域名'"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "requestBody",
 | 
					          "name": "requestBody",
 | 
				
			||||||
@@ -103342,7 +103342,7 @@
 | 
				
			|||||||
      "name": "edgeHTTPPages",
 | 
					      "name": "edgeHTTPPages",
 | 
				
			||||||
      "engine": "InnoDB",
 | 
					      "engine": "InnoDB",
 | 
				
			||||||
      "charset": "utf8mb4_general_ci",
 | 
					      "charset": "utf8mb4_general_ci",
 | 
				
			||||||
      "definition": "CREATE TABLE `edgeHTTPPages` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `isOn` tinyint(1) unsigned DEFAULT '0' COMMENT '是否启用',\n  `statusList` json DEFAULT NULL COMMENT '状态列表',\n  `url` varchar(1024) DEFAULT NULL COMMENT '页面URL',\n  `newStatus` int(3) DEFAULT NULL COMMENT '新状态码',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `body` text COMMENT '页面内容',\n  `bodyType` varchar(32) DEFAULT 'url' COMMENT '内容类型',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='特殊页面'",
 | 
					      "definition": "CREATE TABLE `edgeHTTPPages` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `isOn` tinyint(1) unsigned DEFAULT '0' COMMENT '是否启用',\n  `statusList` json DEFAULT NULL COMMENT '状态列表',\n  `url` varchar(1024) DEFAULT NULL COMMENT '页面URL',\n  `newStatus` int(3) DEFAULT NULL COMMENT '新状态码',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `body` text COMMENT '页面内容',\n  `bodyType` varchar(32) DEFAULT 'url' COMMENT '内容类型',\n  `exceptURLPatterns` json DEFAULT NULL COMMENT '例外URL',\n  `onlyURLPatterns` json DEFAULT NULL COMMENT '限制URL',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='特殊页面'",
 | 
				
			||||||
      "fields": [
 | 
					      "fields": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "id",
 | 
					          "name": "id",
 | 
				
			||||||
@@ -103387,6 +103387,14 @@
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "bodyType",
 | 
					          "name": "bodyType",
 | 
				
			||||||
          "definition": "varchar(32) DEFAULT 'url' COMMENT '内容类型'"
 | 
					          "definition": "varchar(32) DEFAULT 'url' COMMENT '内容类型'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "name": "exceptURLPatterns",
 | 
				
			||||||
 | 
					          "definition": "json COMMENT '例外URL'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "name": "onlyURLPatterns",
 | 
				
			||||||
 | 
					          "definition": "json COMMENT '限制URL'"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "indexes": [
 | 
					      "indexes": [
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user