mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 10: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
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,6 +159,7 @@ func (this *ReverseProxyDAO) CreateReverseProxy(tx *dbs.Tx, adminId int64, userI
|
|||||||
op.State = ReverseProxyStateEnabled
|
op.State = ReverseProxyStateEnabled
|
||||||
op.AdminId = adminId
|
op.AdminId = adminId
|
||||||
op.UserId = userId
|
op.UserId = userId
|
||||||
|
op.AddHeaders = []string{"X-Real-IP"}
|
||||||
|
|
||||||
if len(schedulingJSON) > 0 {
|
if len(schedulingJSON) > 0 {
|
||||||
op.Scheduling = string(schedulingJSON)
|
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 {
|
if reverseProxyId <= 0 {
|
||||||
return errors.New("invalid reverseProxyId")
|
return errors.New("invalid reverseProxyId")
|
||||||
}
|
}
|
||||||
@@ -242,7 +253,17 @@ func (this *ReverseProxyDAO) UpdateReverseProxy(tx *dbs.Tx, reverseProxyId int64
|
|||||||
op.RequestURI = requestURI
|
op.RequestURI = requestURI
|
||||||
op.StripPrefix = stripPrefix
|
op.StripPrefix = stripPrefix
|
||||||
op.AutoFlush = autoFlush
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ type ReverseProxy struct {
|
|||||||
RequestHost string `field:"requestHost"` // 请求Host
|
RequestHost string `field:"requestHost"` // 请求Host
|
||||||
RequestURI string `field:"requestURI"` // 请求URI
|
RequestURI string `field:"requestURI"` // 请求URI
|
||||||
AutoFlush uint8 `field:"autoFlush"` // 是否自动刷新缓冲区
|
AutoFlush uint8 `field:"autoFlush"` // 是否自动刷新缓冲区
|
||||||
|
AddHeaders string `field:"addHeaders"` // 自动添加的Header列表
|
||||||
State uint8 `field:"state"` // 状态
|
State uint8 `field:"state"` // 状态
|
||||||
CreatedAt uint64 `field:"createdAt"` // 创建时间
|
CreatedAt uint64 `field:"createdAt"` // 创建时间
|
||||||
}
|
}
|
||||||
@@ -33,6 +34,7 @@ type ReverseProxyOperator struct {
|
|||||||
RequestHost interface{} // 请求Host
|
RequestHost interface{} // 请求Host
|
||||||
RequestURI interface{} // 请求URI
|
RequestURI interface{} // 请求URI
|
||||||
AutoFlush interface{} // 是否自动刷新缓冲区
|
AutoFlush interface{} // 是否自动刷新缓冲区
|
||||||
|
AddHeaders interface{} // 自动添加的Header列表
|
||||||
State interface{} // 状态
|
State interface{} // 状态
|
||||||
CreatedAt interface{} // 创建时间
|
CreatedAt interface{} // 创建时间
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,14 @@ func (this *ReverseProxyService) FindEnabledReverseProxy(ctx context.Context, re
|
|||||||
}
|
}
|
||||||
|
|
||||||
if userId > 0 {
|
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()
|
tx := this.NullTx()
|
||||||
@@ -74,7 +81,14 @@ func (this *ReverseProxyService) FindEnabledReverseProxyConfig(ctx context.Conte
|
|||||||
}
|
}
|
||||||
|
|
||||||
if userId > 0 {
|
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()
|
tx := this.NullTx()
|
||||||
@@ -101,7 +115,14 @@ func (this *ReverseProxyService) UpdateReverseProxyScheduling(ctx context.Contex
|
|||||||
}
|
}
|
||||||
|
|
||||||
if userId > 0 {
|
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()
|
tx := this.NullTx()
|
||||||
@@ -123,7 +144,14 @@ func (this *ReverseProxyService) UpdateReverseProxyPrimaryOrigins(ctx context.Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
if userId > 0 {
|
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()
|
tx := this.NullTx()
|
||||||
@@ -145,7 +173,14 @@ func (this *ReverseProxyService) UpdateReverseProxyBackupOrigins(ctx context.Con
|
|||||||
}
|
}
|
||||||
|
|
||||||
if userId > 0 {
|
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()
|
tx := this.NullTx()
|
||||||
@@ -167,12 +202,19 @@ func (this *ReverseProxyService) UpdateReverseProxy(ctx context.Context, req *pb
|
|||||||
}
|
}
|
||||||
|
|
||||||
if userId > 0 {
|
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()
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user