mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
Refactor and fixed port and scheme assignment logic in FillMissingFields.
Fixed issue that when a container is stopped or network=host, it will be excluded.
This commit is contained in:
parent
498082f7e5
commit
17115cfb0b
1 changed files with 25 additions and 30 deletions
|
@ -39,21 +39,19 @@ func (e *RawEntry) FillMissingFields() bool {
|
||||||
e.ProxyProperties = &D.ProxyProperties{}
|
e.ProxyProperties = &D.ProxyProperties{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.Port == "" {
|
if port, ok := ServiceNamePortMapTCP[e.ImageName]; ok {
|
||||||
if port, ok := ServiceNamePortMapTCP[e.ImageName]; ok {
|
e.Port = strconv.Itoa(port)
|
||||||
e.Port = strconv.Itoa(port)
|
e.Scheme = "tcp"
|
||||||
} else if port, ok := ImageNamePortMap[e.ImageName]; ok {
|
} else if port, ok := ImageNamePortMap[e.ImageName]; ok {
|
||||||
e.Port = strconv.Itoa(port)
|
e.Port = strconv.Itoa(port)
|
||||||
} else {
|
e.Scheme = "http"
|
||||||
switch {
|
} else if e.Port == "" && e.Scheme == "https" {
|
||||||
case e.Scheme == "https":
|
e.Port = "443"
|
||||||
e.Port = "443"
|
} else if e.Port == "" {
|
||||||
case !isDocker:
|
e.Port = "80"
|
||||||
e.Port = "80"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// replace private port with public port (if any)
|
||||||
if isDocker && e.NetworkMode != "host" {
|
if isDocker && e.NetworkMode != "host" {
|
||||||
if _, ok := e.PublicPortMapping[e.Port]; !ok { // port is not exposed, but specified
|
if _, ok := e.PublicPortMapping[e.Port]; !ok { // port is not exposed, but specified
|
||||||
// try to fallback to first public port
|
// try to fallback to first public port
|
||||||
|
@ -69,27 +67,25 @@ func (e *RawEntry) FillMissingFields() bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if e.Scheme == "" && isDocker {
|
||||||
|
if p, ok := e.PublicPortMapping[e.Port]; ok {
|
||||||
|
if p.Type == "udp" {
|
||||||
|
e.Scheme = "udp"
|
||||||
|
} else {
|
||||||
|
e.Scheme = "http"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if e.Scheme == "" {
|
if e.Scheme == "" {
|
||||||
if _, ok := ServiceNamePortMapTCP[e.ImageName]; ok {
|
if strings.ContainsRune(e.Port, ':') {
|
||||||
e.Scheme = "tcp"
|
|
||||||
} else if strings.ContainsRune(e.Port, ':') {
|
|
||||||
e.Scheme = "tcp"
|
e.Scheme = "tcp"
|
||||||
|
} else if strings.HasSuffix(e.Port, "443") {
|
||||||
|
e.Scheme = "https"
|
||||||
} else if _, ok := WellKnownHTTPPorts[e.Port]; ok {
|
} else if _, ok := WellKnownHTTPPorts[e.Port]; ok {
|
||||||
e.Scheme = "http"
|
e.Scheme = "http"
|
||||||
} else if e.Port == "443" {
|
|
||||||
e.Scheme = "https"
|
|
||||||
} else if isDocker {
|
|
||||||
if p, ok := e.PublicPortMapping[e.Port]; ok {
|
|
||||||
if p.Type == "udp" {
|
|
||||||
e.Scheme = "udp"
|
|
||||||
} else {
|
|
||||||
e.Scheme = "http"
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// port is not exposed, no way to determine
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
|
// assume its http
|
||||||
e.Scheme = "http"
|
e.Scheme = "http"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +93,6 @@ func (e *RawEntry) FillMissingFields() bool {
|
||||||
if e.Host == "" {
|
if e.Host == "" {
|
||||||
e.Host = "localhost"
|
e.Host = "localhost"
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.IdleTimeout == "" {
|
if e.IdleTimeout == "" {
|
||||||
e.IdleTimeout = IdleTimeoutDefault
|
e.IdleTimeout = IdleTimeoutDefault
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue