mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			186 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package models
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
						|
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						|
)
 | 
						|
 | 
						|
// DecodeGroupIds 解析服务所属分组ID
 | 
						|
func (this *Server) DecodeGroupIds() []int64 {
 | 
						|
	if len(this.GroupIds) == 0 {
 | 
						|
		return []int64{}
 | 
						|
	}
 | 
						|
 | 
						|
	var result = []int64{}
 | 
						|
	err := json.Unmarshal(this.GroupIds, &result)
 | 
						|
	if err != nil {
 | 
						|
		remotelogs.Error("Server.DecodeGroupIds", err.Error())
 | 
						|
		// 忽略错误
 | 
						|
	}
 | 
						|
	return result
 | 
						|
}
 | 
						|
 | 
						|
// DecodeHTTPPorts 获取HTTP所有端口
 | 
						|
func (this *Server) DecodeHTTPPorts() (ports []int) {
 | 
						|
	if len(this.Http) > 0 {
 | 
						|
		config := &serverconfigs.HTTPProtocolConfig{}
 | 
						|
		err := json.Unmarshal(this.Http, config)
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		err = config.Init()
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		for _, listen := range config.Listen {
 | 
						|
			for i := listen.MinPort; i <= listen.MaxPort; i++ {
 | 
						|
				ports = append(ports, i)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// DecodeHTTPS 解析HTTPS设置
 | 
						|
func (this *Server) DecodeHTTPS() *serverconfigs.HTTPSProtocolConfig {
 | 
						|
	if len(this.Https) == 0 {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
 | 
						|
	var config = &serverconfigs.HTTPSProtocolConfig{}
 | 
						|
	err := json.Unmarshal(this.Https, config)
 | 
						|
	if err != nil {
 | 
						|
		remotelogs.Error("Server_DecodeHTTPS", err.Error())
 | 
						|
	}
 | 
						|
	return config
 | 
						|
}
 | 
						|
 | 
						|
// DecodeTLS 解析TLS设置
 | 
						|
func (this *Server) DecodeTLS() *serverconfigs.TLSProtocolConfig {
 | 
						|
	if len(this.Tls) == 0 {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
 | 
						|
	var config = &serverconfigs.TLSProtocolConfig{}
 | 
						|
	err := json.Unmarshal(this.Tls, config)
 | 
						|
	if err != nil {
 | 
						|
		remotelogs.Error("Server_DecodeTLS", err.Error())
 | 
						|
	}
 | 
						|
	return config
 | 
						|
}
 | 
						|
 | 
						|
// DecodeHTTPSPorts 获取HTTPS所有端口
 | 
						|
func (this *Server) DecodeHTTPSPorts() (ports []int) {
 | 
						|
	if len(this.Https) > 0 {
 | 
						|
		var config = &serverconfigs.HTTPSProtocolConfig{}
 | 
						|
		err := json.Unmarshal(this.Https, config)
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		err = config.Init()
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		for _, listen := range config.Listen {
 | 
						|
			for i := listen.MinPort; i <= listen.MaxPort; i++ {
 | 
						|
				ports = append(ports, i)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// DecodeTCPPorts 获取TCP所有端口
 | 
						|
func (this *Server) DecodeTCPPorts() (ports []int) {
 | 
						|
	if len(this.Tcp) > 0 {
 | 
						|
		config := &serverconfigs.TCPProtocolConfig{}
 | 
						|
		err := json.Unmarshal(this.Tcp, config)
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		err = config.Init()
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		for _, listen := range config.Listen {
 | 
						|
			for i := listen.MinPort; i <= listen.MaxPort; i++ {
 | 
						|
				ports = append(ports, i)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// DecodeTLSPorts 获取TLS所有端口
 | 
						|
func (this *Server) DecodeTLSPorts() (ports []int) {
 | 
						|
	if len(this.Tls) > 0 {
 | 
						|
		config := &serverconfigs.TLSProtocolConfig{}
 | 
						|
		err := json.Unmarshal(this.Tls, config)
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		err = config.Init()
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		for _, listen := range config.Listen {
 | 
						|
			for i := listen.MinPort; i <= listen.MaxPort; i++ {
 | 
						|
				ports = append(ports, i)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// DecodeUDPPorts 获取UDP所有端口
 | 
						|
func (this *Server) DecodeUDPPorts() (ports []int) {
 | 
						|
	if len(this.Udp) > 0 {
 | 
						|
		config := &serverconfigs.UDPProtocolConfig{}
 | 
						|
		err := json.Unmarshal(this.Udp, config)
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		err = config.Init()
 | 
						|
		if err != nil {
 | 
						|
			return nil
 | 
						|
		}
 | 
						|
		for _, listen := range config.Listen {
 | 
						|
			for i := listen.MinPort; i <= listen.MaxPort; i++ {
 | 
						|
				ports = append(ports, i)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// DecodeServerNames 获取域名
 | 
						|
func (this *Server) DecodeServerNames() (serverNames []*serverconfigs.ServerNameConfig, count int) {
 | 
						|
	if len(this.ServerNames) == 0 {
 | 
						|
		return nil, 0
 | 
						|
	}
 | 
						|
 | 
						|
	serverNames = []*serverconfigs.ServerNameConfig{}
 | 
						|
	err := json.Unmarshal(this.ServerNames, &serverNames)
 | 
						|
	if err != nil {
 | 
						|
		remotelogs.Error("Server/DecodeServerNames", "decode server names failed: "+err.Error())
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	for _, serverName := range serverNames {
 | 
						|
		count += serverName.Count()
 | 
						|
	}
 | 
						|
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// FirstServerName 获取第一个域名
 | 
						|
func (this *Server) FirstServerName() string {
 | 
						|
	serverNames, _ := this.DecodeServerNames()
 | 
						|
	if len(serverNames) == 0 {
 | 
						|
		return ""
 | 
						|
	}
 | 
						|
 | 
						|
	return serverNames[0].FirstName()
 | 
						|
}
 |