mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-18 07:13:50 +01:00
- Add `StreamPort` configuration to agent configuration and environment variables - Implement TCP and UDP stream client support in agent package - Update agent verification to test stream connectivity (TCP/UDP) - Add `/info` endpoint to agent HTTP handler for version, name, runtime, and stream port - Remove /version, /name, /runtime APIs, replaced by /info - Update agent compose template to expose stream port for TCP and UDP - Update agent creation API to optionally specify stream port (defaults to port + 1) - Modify `StreamRoute` to pass agent configuration to stream implementations - Update `TCPTCPStream` and `UDPUDPStream` to use agent stream tunneling when agent is configured - Add support for both direct connections and agent-tunneled connections in stream routes This enables agents to handle TCP and UDP route tunneling, expanding the proxy capabilities beyond HTTP-only connections.
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package env
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/yusing/godoxy/agent/pkg/agent"
|
|
"github.com/yusing/goutils/env"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func DefaultAgentName() string {
|
|
name, err := os.Hostname()
|
|
if err != nil {
|
|
return "agent"
|
|
}
|
|
return name
|
|
}
|
|
|
|
var (
|
|
AgentName string
|
|
AgentPort int
|
|
AgentStreamPort int
|
|
AgentSkipClientCertCheck bool
|
|
AgentCACert string
|
|
AgentSSLCert string
|
|
DockerSocket string
|
|
Runtime agent.ContainerRuntime
|
|
)
|
|
|
|
func init() {
|
|
Load()
|
|
}
|
|
|
|
func Load() {
|
|
DockerSocket = env.GetEnvString("DOCKER_SOCKET", "/var/run/docker.sock")
|
|
AgentName = env.GetEnvString("AGENT_NAME", DefaultAgentName())
|
|
AgentPort = env.GetEnvInt("AGENT_PORT", 8890)
|
|
AgentStreamPort = env.GetEnvInt("AGENT_STREAM_PORT", AgentPort+1)
|
|
AgentSkipClientCertCheck = env.GetEnvBool("AGENT_SKIP_CLIENT_CERT_CHECK", false)
|
|
|
|
AgentCACert = env.GetEnvString("AGENT_CA_CERT", "")
|
|
AgentSSLCert = env.GetEnvString("AGENT_SSL_CERT", "")
|
|
Runtime = agent.ContainerRuntime(env.GetEnvString("RUNTIME", "docker"))
|
|
|
|
switch Runtime {
|
|
case agent.ContainerRuntimeDocker, agent.ContainerRuntimePodman: //, agent.ContainerRuntimeNerdctl:
|
|
default:
|
|
log.Fatal().Str("runtime", string(Runtime)).Msg("invalid runtime")
|
|
}
|
|
}
|