36b3af2e3d
PR Check / Code Quality: Format (push) Failing after 1s
PR Check / Code Quality: Lint (darwin) (push) Failing after 0s
PR Check / Code Quality: Lint (freebsd) (push) Failing after 1s
PR Check / Code Quality: Lint (windows) (push) Failing after 1s
PR Check / Code Quality: Lint (linux) (push) Failing after 1s
PR Check / Security: Vulnerability Scan (push) Failing after 0s
Update Documentation / update-docs (push) Failing after 2s
PR Check / Code Quality: Vendor (push) Failing after 1s
PR Check / Code Quality: Coverage (push) Failing after 0s
PR Check / Tests: Unit (macos-latest) (push) Has been cancelled
PR Check / Tests: Unit (ubuntu-24.04) (push) Has been cancelled
PR Check / Tests: Unit (ubuntu-24.04-arm) (push) Has been cancelled
PR Check / Tests: Unit (windows-latest) (push) Has been cancelled
43 lines
857 B
Go
43 lines
857 B
Go
package proc
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func resolveDockerProxyContainer(cmdline string) string {
|
|
var containerIP string
|
|
parts := strings.Fields(cmdline)
|
|
for i, part := range parts {
|
|
if part == "-container-ip" && i+1 < len(parts) {
|
|
containerIP = parts[i+1]
|
|
break
|
|
}
|
|
}
|
|
if containerIP == "" {
|
|
return ""
|
|
}
|
|
|
|
out, err := exec.Command("docker", "network", "inspect", "bridge",
|
|
"--format", "{{range .Containers}}{{.Name}}:{{.IPv4Address}}{{\"\\n\"}}{{end}}").Output()
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
|
|
for _, line := range strings.Split(strings.TrimSpace(string(out)), "\n") {
|
|
if line == "" {
|
|
continue
|
|
}
|
|
colonIdx := strings.Index(line, ":")
|
|
if colonIdx == -1 {
|
|
continue
|
|
}
|
|
name := line[:colonIdx]
|
|
ip := strings.Split(line[colonIdx+1:], "/")[0]
|
|
if ip == containerIP {
|
|
return "target: " + name
|
|
}
|
|
}
|
|
return ""
|
|
}
|