Add https:// and http+insecure:// listeners

Same as wss:// and ws+insecure://, except we'll be able to add more
endpoints for future features (e.g. file uploads).
This commit is contained in:
Simon Ser 2023-03-06 18:33:55 +01:00
parent ef8a9caff4
commit 4c818d28cc
2 changed files with 39 additions and 0 deletions

View file

@ -145,6 +145,9 @@ func main() {
srv.SetConfig(serverCfg)
srv.Logger = soju.NewLogger(log.Writer(), debug)
httpMux := http.NewServeMux()
httpMux.Handle("/socket", srv)
for _, listen := range cfg.Listen {
listen := listen // copy
listenURI := listen
@ -332,6 +335,38 @@ func main() {
log.Fatalf("serving %q: %v", listen, err)
}
}()
case "https":
if tlsCfg == nil {
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{
Addr: addr,
TLSConfig: tlsCfg,
Handler: httpMux,
}
go func() {
if err := httpSrv.ListenAndServeTLS("", ""); err != nil {
log.Fatalf("serving %q: %v", listen, err)
}
}()
case "http+insecure":
addr := u.Host
if _, _, err := net.SplitHostPort(addr); err != nil {
addr = addr + ":http"
}
httpSrv := http.Server{
Addr: addr,
Handler: httpMux,
}
go func() {
if err := httpSrv.ListenAndServe(); err != nil {
log.Fatalf("serving %q: %v", listen, err)
}
}()
default:
log.Fatalf("failed to listen on %q: unsupported scheme", listen)
}

View file

@ -88,6 +88,10 @@ The following directives are supported:
- _irc+insecure://[host][:port]_ listens with plain-text over TCP (default
port if omitted: 6667)
- _unix://<path>_ listens on a Unix domain socket
- _https://[host][:port]_ listens for HTTPS connections (default port: 443)
and handles WebSocket requests at endpoint _/socket_
- _http+insecure://[host][:port]_ listens for plain-text HTTP connections
(default port: 80) and handles WebSocket requests at endpoint _/socket_
- _wss://[host][:port]_ listens for WebSocket connections over TLS (default
port: 443)
- _ws+insecure://[host][:port]_ listens for plain-text WebSocket