mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	可以配置是否在反向代理中添加X-Real-IP和X-Forwarded-*
This commit is contained in:
		@@ -139,6 +139,16 @@ func (this *ReverseProxyDAO) ComposeReverseProxyConfig(tx *dbs.Tx, reverseProxyI
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// add headers
 | 
			
		||||
	if IsNotNull(reverseProxy.AddHeaders) {
 | 
			
		||||
		addHeaders := []string{}
 | 
			
		||||
		err = json.Unmarshal([]byte(reverseProxy.AddHeaders), &addHeaders)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		config.AddHeaders = addHeaders
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return config, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -149,6 +159,7 @@ func (this *ReverseProxyDAO) CreateReverseProxy(tx *dbs.Tx, adminId int64, userI
 | 
			
		||||
	op.State = ReverseProxyStateEnabled
 | 
			
		||||
	op.AdminId = adminId
 | 
			
		||||
	op.UserId = userId
 | 
			
		||||
	op.AddHeaders = []string{"X-Real-IP"}
 | 
			
		||||
 | 
			
		||||
	if len(schedulingJSON) > 0 {
 | 
			
		||||
		op.Scheduling = string(schedulingJSON)
 | 
			
		||||
@@ -225,7 +236,7 @@ func (this *ReverseProxyDAO) UpdateReverseProxyBackupOrigins(tx *dbs.Tx, reverse
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 修改是否启用
 | 
			
		||||
func (this *ReverseProxyDAO) UpdateReverseProxy(tx *dbs.Tx, reverseProxyId int64, requestHostType int8, requestHost string, requestURI string, stripPrefix string, autoFlush bool) error {
 | 
			
		||||
func (this *ReverseProxyDAO) UpdateReverseProxy(tx *dbs.Tx, reverseProxyId int64, requestHostType int8, requestHost string, requestURI string, stripPrefix string, autoFlush bool, addHeaders []string) error {
 | 
			
		||||
	if reverseProxyId <= 0 {
 | 
			
		||||
		return errors.New("invalid reverseProxyId")
 | 
			
		||||
	}
 | 
			
		||||
@@ -242,7 +253,17 @@ func (this *ReverseProxyDAO) UpdateReverseProxy(tx *dbs.Tx, reverseProxyId int64
 | 
			
		||||
	op.RequestURI = requestURI
 | 
			
		||||
	op.StripPrefix = stripPrefix
 | 
			
		||||
	op.AutoFlush = autoFlush
 | 
			
		||||
	err := this.Save(tx, op)
 | 
			
		||||
 | 
			
		||||
	if len(addHeaders) == 0 {
 | 
			
		||||
		addHeaders = []string{}
 | 
			
		||||
	}
 | 
			
		||||
	addHeadersJSON, err := json.Marshal(addHeaders)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	op.AddHeaders = addHeadersJSON
 | 
			
		||||
 | 
			
		||||
	err = this.Save(tx, op)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@ type ReverseProxy struct {
 | 
			
		||||
	RequestHost     string `field:"requestHost"`     // 请求Host
 | 
			
		||||
	RequestURI      string `field:"requestURI"`      // 请求URI
 | 
			
		||||
	AutoFlush       uint8  `field:"autoFlush"`       // 是否自动刷新缓冲区
 | 
			
		||||
	AddHeaders      string `field:"addHeaders"`      // 自动添加的Header列表
 | 
			
		||||
	State           uint8  `field:"state"`           // 状态
 | 
			
		||||
	CreatedAt       uint64 `field:"createdAt"`       // 创建时间
 | 
			
		||||
}
 | 
			
		||||
@@ -33,6 +34,7 @@ type ReverseProxyOperator struct {
 | 
			
		||||
	RequestHost     interface{} // 请求Host
 | 
			
		||||
	RequestURI      interface{} // 请求URI
 | 
			
		||||
	AutoFlush       interface{} // 是否自动刷新缓冲区
 | 
			
		||||
	AddHeaders      interface{} // 自动添加的Header列表
 | 
			
		||||
	State           interface{} // 状态
 | 
			
		||||
	CreatedAt       interface{} // 创建时间
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,14 @@ func (this *ReverseProxyService) FindEnabledReverseProxy(ctx context.Context, re
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
		// TODO 检查权限
 | 
			
		||||
		serverId, err := models.SharedServerDAO.FindEnabledServerIdWithReverseProxyId(nil, req.ReverseProxyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		err = models.SharedServerDAO.CheckUserServer(nil, userId, serverId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tx := this.NullTx()
 | 
			
		||||
@@ -74,7 +81,14 @@ func (this *ReverseProxyService) FindEnabledReverseProxyConfig(ctx context.Conte
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
		// TODO 检查权限
 | 
			
		||||
		serverId, err := models.SharedServerDAO.FindEnabledServerIdWithReverseProxyId(nil, req.ReverseProxyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		err = models.SharedServerDAO.CheckUserServer(nil, userId, serverId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tx := this.NullTx()
 | 
			
		||||
@@ -101,7 +115,14 @@ func (this *ReverseProxyService) UpdateReverseProxyScheduling(ctx context.Contex
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
		// TODO 检查权限
 | 
			
		||||
		serverId, err := models.SharedServerDAO.FindEnabledServerIdWithReverseProxyId(nil, req.ReverseProxyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		err = models.SharedServerDAO.CheckUserServer(nil, userId, serverId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tx := this.NullTx()
 | 
			
		||||
@@ -123,7 +144,14 @@ func (this *ReverseProxyService) UpdateReverseProxyPrimaryOrigins(ctx context.Co
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
		// TODO 检查权限
 | 
			
		||||
		serverId, err := models.SharedServerDAO.FindEnabledServerIdWithReverseProxyId(nil, req.ReverseProxyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		err = models.SharedServerDAO.CheckUserServer(nil, userId, serverId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tx := this.NullTx()
 | 
			
		||||
@@ -145,7 +173,14 @@ func (this *ReverseProxyService) UpdateReverseProxyBackupOrigins(ctx context.Con
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
		// TODO 检查权限
 | 
			
		||||
		serverId, err := models.SharedServerDAO.FindEnabledServerIdWithReverseProxyId(nil, req.ReverseProxyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		err = models.SharedServerDAO.CheckUserServer(nil, userId, serverId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tx := this.NullTx()
 | 
			
		||||
@@ -167,12 +202,19 @@ func (this *ReverseProxyService) UpdateReverseProxy(ctx context.Context, req *pb
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
		// TODO 检查权限
 | 
			
		||||
		serverId, err := models.SharedServerDAO.FindEnabledServerIdWithReverseProxyId(nil, req.ReverseProxyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		err = models.SharedServerDAO.CheckUserServer(nil, userId, serverId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tx := this.NullTx()
 | 
			
		||||
 | 
			
		||||
	err = models.SharedReverseProxyDAO.UpdateReverseProxy(tx, req.ReverseProxyId, types.Int8(req.RequestHostType), req.RequestHost, req.RequestURI, req.StripPrefix, req.AutoFlush)
 | 
			
		||||
	err = models.SharedReverseProxyDAO.UpdateReverseProxy(tx, req.ReverseProxyId, types.Int8(req.RequestHostType), req.RequestHost, req.RequestURI, req.StripPrefix, req.AutoFlush, req.AddHeaders)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user