cmd/soju: add withDefaultPort helper

This commit is contained in:
Simon Ser 2024-01-08 18:22:39 +01:00
parent 4c818d28cc
commit 866845ea95

View file

@ -165,16 +165,13 @@ func main() {
if tlsCfg == nil { if tlsCfg == nil {
log.Fatalf("failed to listen on %q: missing TLS configuration", listen) log.Fatalf("failed to listen on %q: missing TLS configuration", listen)
} }
host := u.Host addr := withDefaultPort(u.Host, "6697")
if _, _, err := net.SplitHostPort(host); err != nil {
host = host + ":6697"
}
ircsTLSCfg := tlsCfg.Clone() ircsTLSCfg := tlsCfg.Clone()
ircsTLSCfg.NextProtos = []string{"irc"} ircsTLSCfg.NextProtos = []string{"irc"}
lc := net.ListenConfig{ lc := net.ListenConfig{
KeepAlive: downstreamKeepAlive, KeepAlive: downstreamKeepAlive,
} }
l, err := lc.Listen(context.Background(), "tcp", host) l, err := lc.Listen(context.Background(), "tcp", addr)
if err != nil { if err != nil {
log.Fatalf("failed to start TLS listener on %q: %v", listen, err) log.Fatalf("failed to start TLS listener on %q: %v", listen, err)
} }
@ -186,14 +183,11 @@ func main() {
} }
}() }()
case "irc+insecure": case "irc+insecure":
host := u.Host addr := withDefaultPort(u.Host, "6667")
if _, _, err := net.SplitHostPort(host); err != nil {
host = host + ":6667"
}
lc := net.ListenConfig{ lc := net.ListenConfig{
KeepAlive: downstreamKeepAlive, KeepAlive: downstreamKeepAlive,
} }
ln, err := lc.Listen(context.Background(), "tcp", host) ln, err := lc.Listen(context.Background(), "tcp", addr)
if err != nil { if err != nil {
log.Fatalf("failed to start listener on %q: %v", listen, err) log.Fatalf("failed to start listener on %q: %v", listen, err)
} }
@ -237,12 +231,8 @@ func main() {
if tlsCfg == nil { if tlsCfg == nil {
log.Fatalf("failed to listen on %q: missing TLS configuration", listen) log.Fatalf("failed to listen on %q: missing TLS configuration", listen)
} }
addr := u.Host
if _, _, err := net.SplitHostPort(addr); err != nil {
addr = addr + ":https"
}
httpSrv := http.Server{ httpSrv := http.Server{
Addr: addr, Addr: withDefaultPort(u.Host, "https"),
TLSConfig: tlsCfg, TLSConfig: tlsCfg,
Handler: srv, Handler: srv,
} }
@ -252,12 +242,8 @@ func main() {
} }
}() }()
case "ws+insecure": case "ws+insecure":
addr := u.Host
if _, _, err := net.SplitHostPort(addr); err != nil {
addr = addr + ":http"
}
httpSrv := http.Server{ httpSrv := http.Server{
Addr: addr, Addr: withDefaultPort(u.Host, "http"),
Handler: srv, Handler: srv,
} }
go func() { go func() {
@ -270,11 +256,8 @@ func main() {
srv.Identd = identd.New() srv.Identd = identd.New()
} }
host := u.Host addr := withDefaultPort(u.Host, "113")
if _, _, err := net.SplitHostPort(host); err != nil { ln, err := net.Listen("tcp", addr)
host = host + ":113"
}
ln, err := net.Listen("tcp", host)
if err != nil { if err != nil {
log.Fatalf("failed to start listener on %q: %v", listen, err) log.Fatalf("failed to start listener on %q: %v", listen, err)
} }
@ -339,12 +322,8 @@ func main() {
if tlsCfg == nil { if tlsCfg == nil {
log.Fatalf("failed to listen on %q: missing TLS configuration", listen) log.Fatalf("failed to listen on %q: missing TLS configuration", listen)
} }
addr := u.Host
if _, _, err := net.SplitHostPort(addr); err != nil {
addr = addr + ":https"
}
httpSrv := http.Server{ httpSrv := http.Server{
Addr: addr, Addr: withDefaultPort(u.Host, "https"),
TLSConfig: tlsCfg, TLSConfig: tlsCfg,
Handler: httpMux, Handler: httpMux,
} }
@ -354,12 +333,8 @@ func main() {
} }
}() }()
case "http+insecure": case "http+insecure":
addr := u.Host
if _, _, err := net.SplitHostPort(addr); err != nil {
addr = addr + ":http"
}
httpSrv := http.Server{ httpSrv := http.Server{
Addr: addr, Addr: withDefaultPort(u.Host, "http"),
Handler: httpMux, Handler: httpMux,
} }
go func() { go func() {
@ -420,3 +395,10 @@ func proxyProtoListener(ln net.Listener, srv *soju.Server) net.Listener {
ReadHeaderTimeout: 5 * time.Second, ReadHeaderTimeout: 5 * time.Second,
} }
} }
func withDefaultPort(addr, port string) string {
if _, _, err := net.SplitHostPort(addr); err != nil {
addr += ":" + port
}
return addr
}