2020-07-22 22:17:53 +08:00
|
|
|
package models
|
2021-09-22 19:39:43 +08:00
|
|
|
|
|
|
|
|
import (
|
2023-08-08 16:46:17 +08:00
|
|
|
"context"
|
2021-09-22 19:39:43 +08:00
|
|
|
"encoding/json"
|
2024-07-27 14:15:25 +08:00
|
|
|
|
2021-09-22 19:39:43 +08:00
|
|
|
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
|
2021-11-24 19:46:59 +08:00
|
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
2021-09-22 19:39:43 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// DecodeGroupIds 解析服务所属分组ID
|
|
|
|
|
func (this *Server) DecodeGroupIds() []int64 {
|
|
|
|
|
if len(this.GroupIds) == 0 {
|
|
|
|
|
return []int64{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var result = []int64{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.GroupIds, &result)
|
2021-09-22 19:39:43 +08:00
|
|
|
if err != nil {
|
|
|
|
|
remotelogs.Error("Server.DecodeGroupIds", err.Error())
|
|
|
|
|
// 忽略错误
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|
2021-11-24 19:46:59 +08:00
|
|
|
|
|
|
|
|
// DecodeHTTPPorts 获取HTTP所有端口
|
|
|
|
|
func (this *Server) DecodeHTTPPorts() (ports []int) {
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(this.Http) > 0 {
|
2021-11-24 19:46:59 +08:00
|
|
|
config := &serverconfigs.HTTPProtocolConfig{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.Http, config)
|
2021-11-24 19:46:59 +08:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-21 17:07:02 +08:00
|
|
|
// 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
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-24 19:46:59 +08:00
|
|
|
// DecodeHTTPSPorts 获取HTTPS所有端口
|
|
|
|
|
func (this *Server) DecodeHTTPSPorts() (ports []int) {
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(this.Https) > 0 {
|
2022-12-21 17:07:02 +08:00
|
|
|
var config = &serverconfigs.HTTPSProtocolConfig{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.Https, config)
|
2021-11-24 19:46:59 +08:00
|
|
|
if err != nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2023-08-08 16:46:17 +08:00
|
|
|
err = config.Init(context.TODO())
|
2021-11-24 19:46:59 +08:00
|
|
|
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) {
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(this.Tcp) > 0 {
|
2021-11-24 19:46:59 +08:00
|
|
|
config := &serverconfigs.TCPProtocolConfig{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.Tcp, config)
|
2021-11-24 19:46:59 +08:00
|
|
|
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) {
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(this.Tls) > 0 {
|
2021-11-24 19:46:59 +08:00
|
|
|
config := &serverconfigs.TLSProtocolConfig{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.Tls, config)
|
2021-11-24 19:46:59 +08:00
|
|
|
if err != nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2023-08-08 16:46:17 +08:00
|
|
|
err = config.Init(context.TODO())
|
2021-11-24 19:46:59 +08:00
|
|
|
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) {
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(this.Udp) > 0 {
|
2021-11-24 19:46:59 +08:00
|
|
|
config := &serverconfigs.UDPProtocolConfig{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.Udp, config)
|
2021-11-24 19:46:59 +08:00
|
|
|
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
|
|
|
|
|
}
|
2022-10-03 19:28:03 +08:00
|
|
|
|
|
|
|
|
// 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()
|
|
|
|
|
}
|