mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	HTTP Header中支持设置非标Header
This commit is contained in:
		@@ -157,6 +157,9 @@ func (this *HTTPHeaderPolicyDAO) UpdateDeletingHeaders(tx *dbs.Tx, policyId int6
 | 
				
			|||||||
		return errors.New("invalid policyId")
 | 
							return errors.New("invalid policyId")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if headerNames == nil {
 | 
				
			||||||
 | 
							headerNames = []string{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	namesJSON, err := json.Marshal(headerNames)
 | 
						namesJSON, err := json.Marshal(headerNames)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -164,7 +167,31 @@ func (this *HTTPHeaderPolicyDAO) UpdateDeletingHeaders(tx *dbs.Tx, policyId int6
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var op = NewHTTPHeaderPolicyOperator()
 | 
						var op = NewHTTPHeaderPolicyOperator()
 | 
				
			||||||
	op.Id = policyId
 | 
						op.Id = policyId
 | 
				
			||||||
	op.DeleteHeaders = string(namesJSON)
 | 
						op.DeleteHeaders = namesJSON
 | 
				
			||||||
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return this.NotifyUpdate(tx, policyId)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateNonStandardHeaders 修改非标Headers
 | 
				
			||||||
 | 
					func (this *HTTPHeaderPolicyDAO) UpdateNonStandardHeaders(tx *dbs.Tx, policyId int64, headerNames []string) error {
 | 
				
			||||||
 | 
						if policyId <= 0 {
 | 
				
			||||||
 | 
							return errors.New("invalid policyId")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if headerNames == nil {
 | 
				
			||||||
 | 
							headerNames = []string{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						namesJSON, err := json.Marshal(headerNames)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var op = NewHTTPHeaderPolicyOperator()
 | 
				
			||||||
 | 
						op.Id = policyId
 | 
				
			||||||
 | 
						op.NonStandardHeaders = namesJSON
 | 
				
			||||||
	err = this.Save(tx, op)
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -220,6 +247,16 @@ func (this *HTTPHeaderPolicyDAO) ComposeHeaderPolicyConfig(tx *dbs.Tx, headerPol
 | 
				
			|||||||
		config.DeleteHeaders = headers
 | 
							config.DeleteHeaders = headers
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Non-Standard Headers
 | 
				
			||||||
 | 
						if IsNotNull(policy.NonStandardHeaders) {
 | 
				
			||||||
 | 
							var headers = []string{}
 | 
				
			||||||
 | 
							err = json.Unmarshal(policy.NonStandardHeaders, &headers)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							config.NonStandardHeaders = headers
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// CORS
 | 
						// CORS
 | 
				
			||||||
	if IsNotNull(policy.Cors) {
 | 
						if IsNotNull(policy.Cors) {
 | 
				
			||||||
		var corsConfig = shared.NewHTTPCORSHeaderConfig()
 | 
							var corsConfig = shared.NewHTTPCORSHeaderConfig()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,35 +4,37 @@ import "github.com/iwind/TeaGo/dbs"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// HTTPHeaderPolicy Header定义
 | 
					// HTTPHeaderPolicy Header定义
 | 
				
			||||||
type HTTPHeaderPolicy struct {
 | 
					type HTTPHeaderPolicy struct {
 | 
				
			||||||
	Id             uint32   `field:"id"`             // ID
 | 
						Id                 uint32   `field:"id"`                 // ID
 | 
				
			||||||
	IsOn           bool     `field:"isOn"`           // 是否启用
 | 
						IsOn               bool     `field:"isOn"`               // 是否启用
 | 
				
			||||||
	State          uint8    `field:"state"`          // 状态
 | 
						State              uint8    `field:"state"`              // 状态
 | 
				
			||||||
	AdminId        uint32   `field:"adminId"`        // 管理员ID
 | 
						AdminId            uint32   `field:"adminId"`            // 管理员ID
 | 
				
			||||||
	UserId         uint32   `field:"userId"`         // 用户ID
 | 
						UserId             uint32   `field:"userId"`             // 用户ID
 | 
				
			||||||
	CreatedAt      uint64   `field:"createdAt"`      // 创建时间
 | 
						CreatedAt          uint64   `field:"createdAt"`          // 创建时间
 | 
				
			||||||
	AddHeaders     dbs.JSON `field:"addHeaders"`     // 添加的Header
 | 
						AddHeaders         dbs.JSON `field:"addHeaders"`         // 添加的Header
 | 
				
			||||||
	AddTrailers    dbs.JSON `field:"addTrailers"`    // 添加的Trailers
 | 
						AddTrailers        dbs.JSON `field:"addTrailers"`        // 添加的Trailers
 | 
				
			||||||
	SetHeaders     dbs.JSON `field:"setHeaders"`     // 设置Header
 | 
						SetHeaders         dbs.JSON `field:"setHeaders"`         // 设置Header
 | 
				
			||||||
	ReplaceHeaders dbs.JSON `field:"replaceHeaders"` // 替换Header内容
 | 
						ReplaceHeaders     dbs.JSON `field:"replaceHeaders"`     // 替换Header内容
 | 
				
			||||||
	Expires        dbs.JSON `field:"expires"`        // Expires单独设置
 | 
						Expires            dbs.JSON `field:"expires"`            // Expires单独设置
 | 
				
			||||||
	DeleteHeaders  dbs.JSON `field:"deleteHeaders"`  // 删除的Headers
 | 
						DeleteHeaders      dbs.JSON `field:"deleteHeaders"`      // 删除的Headers
 | 
				
			||||||
	Cors           dbs.JSON `field:"cors"`           // CORS配置
 | 
						NonStandardHeaders dbs.JSON `field:"nonStandardHeaders"` // 非标Headers
 | 
				
			||||||
 | 
						Cors               dbs.JSON `field:"cors"`               // CORS配置
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HTTPHeaderPolicyOperator struct {
 | 
					type HTTPHeaderPolicyOperator struct {
 | 
				
			||||||
	Id             any // ID
 | 
						Id                 any // ID
 | 
				
			||||||
	IsOn           any // 是否启用
 | 
						IsOn               any // 是否启用
 | 
				
			||||||
	State          any // 状态
 | 
						State              any // 状态
 | 
				
			||||||
	AdminId        any // 管理员ID
 | 
						AdminId            any // 管理员ID
 | 
				
			||||||
	UserId         any // 用户ID
 | 
						UserId             any // 用户ID
 | 
				
			||||||
	CreatedAt      any // 创建时间
 | 
						CreatedAt          any // 创建时间
 | 
				
			||||||
	AddHeaders     any // 添加的Header
 | 
						AddHeaders         any // 添加的Header
 | 
				
			||||||
	AddTrailers    any // 添加的Trailers
 | 
						AddTrailers        any // 添加的Trailers
 | 
				
			||||||
	SetHeaders     any // 设置Header
 | 
						SetHeaders         any // 设置Header
 | 
				
			||||||
	ReplaceHeaders any // 替换Header内容
 | 
						ReplaceHeaders     any // 替换Header内容
 | 
				
			||||||
	Expires        any // Expires单独设置
 | 
						Expires            any // Expires单独设置
 | 
				
			||||||
	DeleteHeaders  any // 删除的Headers
 | 
						DeleteHeaders      any // 删除的Headers
 | 
				
			||||||
	Cors           any // CORS配置
 | 
						NonStandardHeaders any // 非标Headers
 | 
				
			||||||
 | 
						Cors               any // CORS配置
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewHTTPHeaderPolicyOperator() *HTTPHeaderPolicyOperator {
 | 
					func NewHTTPHeaderPolicyOperator() *HTTPHeaderPolicyOperator {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -219,3 +219,28 @@ func (this *HTTPHeaderPolicyService) UpdateHTTPHeaderPolicyCORS(ctx context.Cont
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return this.Success()
 | 
						return this.Success()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateHTTPHeaderPolicyNonStandardHeaders 修改非标的Headers
 | 
				
			||||||
 | 
					func (this *HTTPHeaderPolicyService) UpdateHTTPHeaderPolicyNonStandardHeaders(ctx context.Context, req *pb.UpdateHTTPHeaderPolicyNonStandardHeadersRequest) (*pb.RPCSuccess, error) {
 | 
				
			||||||
 | 
						_, userId, err := this.ValidateAdminAndUser(ctx, true)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 检查权限
 | 
				
			||||||
 | 
						if userId > 0 {
 | 
				
			||||||
 | 
							err = models.SharedHTTPHeaderPolicyDAO.CheckUserHeaderPolicy(tx, userId, req.HttpHeaderPolicyId)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = models.SharedHTTPHeaderPolicyDAO.UpdateNonStandardHeaders(tx, req.HttpHeaderPolicyId, req.HeaderNames)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return this.Success()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61579,7 +61579,7 @@
 | 
				
			|||||||
      "name": "edgeHTTPHeaderPolicies",
 | 
					      "name": "edgeHTTPHeaderPolicies",
 | 
				
			||||||
      "engine": "InnoDB",
 | 
					      "engine": "InnoDB",
 | 
				
			||||||
      "charset": "utf8mb4_general_ci",
 | 
					      "charset": "utf8mb4_general_ci",
 | 
				
			||||||
      "definition": "CREATE TABLE `edgeHTTPHeaderPolicies` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `isOn` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `addHeaders` json DEFAULT NULL COMMENT '添加的Header',\n  `addTrailers` json DEFAULT NULL COMMENT '添加的Trailers',\n  `setHeaders` json DEFAULT NULL COMMENT '设置Header',\n  `replaceHeaders` json DEFAULT NULL COMMENT '替换Header内容',\n  `expires` json DEFAULT NULL COMMENT 'Expires单独设置',\n  `deleteHeaders` json DEFAULT NULL COMMENT '删除的Headers',\n  `cors` json DEFAULT NULL COMMENT 'CORS配置',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Header定义'",
 | 
					      "definition": "CREATE TABLE `edgeHTTPHeaderPolicies` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `isOn` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `addHeaders` json DEFAULT NULL COMMENT '添加的Header',\n  `addTrailers` json DEFAULT NULL COMMENT '添加的Trailers',\n  `setHeaders` json DEFAULT NULL COMMENT '设置Header',\n  `replaceHeaders` json DEFAULT NULL COMMENT '替换Header内容',\n  `expires` json DEFAULT NULL COMMENT 'Expires单独设置',\n  `deleteHeaders` json DEFAULT NULL COMMENT '删除的Headers',\n  `nonStandardHeaders` json DEFAULT NULL COMMENT '非标Headers',\n  `cors` json DEFAULT NULL COMMENT 'CORS配置',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Header定义'",
 | 
				
			||||||
      "fields": [
 | 
					      "fields": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "id",
 | 
					          "name": "id",
 | 
				
			||||||
@@ -61629,6 +61629,10 @@
 | 
				
			|||||||
          "name": "deleteHeaders",
 | 
					          "name": "deleteHeaders",
 | 
				
			||||||
          "definition": "json COMMENT '删除的Headers'"
 | 
					          "definition": "json COMMENT '删除的Headers'"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "name": "nonStandardHeaders",
 | 
				
			||||||
 | 
					          "definition": "json COMMENT '非标Headers'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "cors",
 | 
					          "name": "cors",
 | 
				
			||||||
          "definition": "json COMMENT 'CORS配置'"
 | 
					          "definition": "json COMMENT 'CORS配置'"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user