mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	增加服务之间拷贝配置的API(开源版本只有定义,没有完全实现)
This commit is contained in:
		@@ -243,6 +243,115 @@ func (this *ReverseProxyDAO) CreateReverseProxy(tx *dbs.Tx, adminId int64, userI
 | 
			
		||||
	return types.Int64(op.Id), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CloneReverseProxy 复制反向代理
 | 
			
		||||
func (this *ReverseProxyDAO) CloneReverseProxy(tx *dbs.Tx, fromReverseProxyId int64) (newReverseProxyId int64, err error) {
 | 
			
		||||
	if fromReverseProxyId <= 0 {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	reverseProxyOne, err := this.Query(tx).
 | 
			
		||||
		Pk(fromReverseProxyId).
 | 
			
		||||
		State(ReverseProxyStateEnabled).
 | 
			
		||||
		Find()
 | 
			
		||||
	if err != nil || reverseProxyOne == nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	var reverseProxy = reverseProxyOne.(*ReverseProxy)
 | 
			
		||||
	var op = NewReverseProxyOperator()
 | 
			
		||||
	op.TemplateId = reverseProxy.TemplateId
 | 
			
		||||
	op.IsOn = reverseProxy.IsOn
 | 
			
		||||
	if IsNotNull(reverseProxy.Scheduling) {
 | 
			
		||||
		op.Scheduling = reverseProxy.Scheduling
 | 
			
		||||
	}
 | 
			
		||||
	if IsNotNull(reverseProxy.PrimaryOrigins) {
 | 
			
		||||
		var originRefs = []*serverconfigs.OriginRef{}
 | 
			
		||||
		err = json.Unmarshal(reverseProxy.PrimaryOrigins, &originRefs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var newRefs = []*serverconfigs.OriginRef{}
 | 
			
		||||
		for _, originRef := range originRefs {
 | 
			
		||||
			if originRef.OriginId > 0 {
 | 
			
		||||
				newOriginId, err := SharedOriginDAO.CloneOrigin(tx, originRef.OriginId)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return 0, err
 | 
			
		||||
				}
 | 
			
		||||
				if newOriginId > 0 {
 | 
			
		||||
					newRef, err := utils.JSONClone[*serverconfigs.OriginRef](originRef)
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						return 0, err
 | 
			
		||||
					}
 | 
			
		||||
					newRef.OriginId = newOriginId
 | 
			
		||||
					newRefs = append(newRefs, newRef)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		newRefsJSON, err := json.Marshal(newRefs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		op.PrimaryOrigins = newRefsJSON
 | 
			
		||||
	}
 | 
			
		||||
	if IsNotNull(reverseProxy.BackupOrigins) {
 | 
			
		||||
		var originRefs = []*serverconfigs.OriginRef{}
 | 
			
		||||
		err = json.Unmarshal(reverseProxy.BackupOrigins, &originRefs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var newRefs = []*serverconfigs.OriginRef{}
 | 
			
		||||
		for _, originRef := range originRefs {
 | 
			
		||||
			if originRef.OriginId > 0 {
 | 
			
		||||
				newOriginId, err := SharedOriginDAO.CloneOrigin(tx, originRef.OriginId)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return 0, err
 | 
			
		||||
				}
 | 
			
		||||
				if newOriginId > 0 {
 | 
			
		||||
					newRef, err := utils.JSONClone[*serverconfigs.OriginRef](originRef)
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						return 0, err
 | 
			
		||||
					}
 | 
			
		||||
					newRef.OriginId = newOriginId
 | 
			
		||||
					newRefs = append(newRefs, newRef)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		newRefsJSON, err := json.Marshal(newRefs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		op.BackupOrigins = newRefsJSON
 | 
			
		||||
	}
 | 
			
		||||
	op.StripPrefix = reverseProxy.StripPrefix
 | 
			
		||||
	op.RequestHostType = reverseProxy.RequestHostType
 | 
			
		||||
	op.RequestHost = reverseProxy.RequestHost
 | 
			
		||||
	op.RequestHostExcludingPort = reverseProxy.RequestHostExcludingPort
 | 
			
		||||
	op.RequestURI = reverseProxy.RequestURI
 | 
			
		||||
	op.AutoFlush = reverseProxy.AutoFlush
 | 
			
		||||
	if IsNotNull(reverseProxy.AddHeaders) {
 | 
			
		||||
		// TODO 复制Header
 | 
			
		||||
		op.AddHeaders = reverseProxy.AddHeaders
 | 
			
		||||
	}
 | 
			
		||||
	op.State = reverseProxy.State
 | 
			
		||||
	if IsNotNull(reverseProxy.ConnTimeout) {
 | 
			
		||||
		op.ConnTimeout = reverseProxy.ConnTimeout
 | 
			
		||||
	}
 | 
			
		||||
	if IsNotNull(reverseProxy.ReadTimeout) {
 | 
			
		||||
		op.ReadTimeout = reverseProxy.ReadTimeout
 | 
			
		||||
	}
 | 
			
		||||
	if IsNotNull(reverseProxy.IdleTimeout) {
 | 
			
		||||
		op.IdleTimeout = reverseProxy.IdleTimeout
 | 
			
		||||
	}
 | 
			
		||||
	op.MaxConns = reverseProxy.MaxConns
 | 
			
		||||
	op.MaxIdleConns = reverseProxy.MaxIdleConns
 | 
			
		||||
	if IsNotNull(reverseProxy.ProxyProtocol) {
 | 
			
		||||
		op.ProxyProtocol = reverseProxy.ProxyProtocol
 | 
			
		||||
	}
 | 
			
		||||
	op.FollowRedirects = reverseProxy.FollowRedirects
 | 
			
		||||
 | 
			
		||||
	return this.SaveInt64(tx, op)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateReverseProxyScheduling 修改反向代理调度算法
 | 
			
		||||
func (this *ReverseProxyDAO) UpdateReverseProxyScheduling(tx *dbs.Tx, reverseProxyId int64, schedulingJSON []byte) error {
 | 
			
		||||
	if reverseProxyId <= 0 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user