Skip to content

Commit

Permalink
bump relay
Browse files Browse the repository at this point in the history
  • Loading branch information
navigaid committed Mar 26, 2024
1 parent 2f0108b commit 89cd289
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 50 deletions.
70 changes: 23 additions & 47 deletions apps/relay/relay.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (

"github.com/caddyserver/certmagic"
"github.com/webteleport/relay"
"github.com/webteleport/relay/manager"
"github.com/webteleport/ufo/apps/relay/envs"
"github.com/webteleport/utils"
)
Expand Down Expand Up @@ -72,12 +71,11 @@ func listenHTTP(handler http.Handler, errc chan error) {
errc <- http.Serve(ln, handler)
}

func listenHTTPSLocalTLS(handler http.Handler, errc chan error) {
func listenHTTPS(handler http.Handler, errc chan error, tlsConfig *tls.Config) {
if envs.HTTPS_PORT == nil {
return
}
slog.Info("listening on HTTPS https://" + envs.HOST + *envs.HTTPS_PORT)
tlsConfig := LocalTLSConfig(envs.CERT, envs.KEY)
ln, err := tls.Listen("tcp4", *envs.HTTPS_PORT, tlsConfig)
if err != nil {
errc <- err
Expand All @@ -86,65 +84,43 @@ func listenHTTPSLocalTLS(handler http.Handler, errc chan error) {
errc <- http.Serve(ln, handler)
}

func listenHTTPSOnDemandTLS(handler http.Handler, errc chan error) {
if envs.HTTPS_PORT == nil {
return
}
slog.Info("listening on HTTPS https://" + envs.HOST + *envs.HTTPS_PORT + " w/ on demand tls")
tlsConfig, err := OnDemandTLSConfig()
if err != nil {
errc <- err
return
}
ln, err := tls.Listen("tcp4", *envs.HTTPS_PORT, tlsConfig)
if err != nil {
errc <- err
return
}
errc <- http.Serve(ln, handler)
}

func listenUDPLocalTLS(handler http.Handler, errc chan error) {
func listenWT(s *relay.Relay, errc chan error) {
slog.Info("listening on UDP https://" + envs.HOST + envs.UDP_PORT)
tlsConfig := LocalTLSConfig(envs.CERT, envs.KEY)
r := relay.New(envs.HOST, envs.UDP_PORT, handler, tlsConfig)
errc <- r.ListenAndServe()
errc <- s.WTServer.ListenAndServe()
}

func listenUDPOnDemandTLS(handler http.Handler, errc chan error) {
slog.Info("listening on UDP https://" + envs.HOST + envs.UDP_PORT + " w/ on demand tls")
tlsConfig, err := OnDemandTLSConfig()
if err != nil {
errc <- err
return
}
r := relay.New(envs.HOST, envs.UDP_PORT, handler, tlsConfig)
errc <- r.ListenAndServe()
func listenAll(s *relay.Relay, tlsConfig *tls.Config) error {
var errc chan error = make(chan error, 3)

go listenHTTP(s, errc)
go listenHTTPS(s, errc, tlsConfig)
go listenWT(s, errc)

return <-errc
}

func listenAll(handler http.Handler) error {
var errc chan error = make(chan error, 3)
func Run([]string) (err error) {
var GlobalTLSConfig *tls.Config

go listenHTTP(handler, errc)
if useLocalTLS() {
go listenUDPLocalTLS(handler, errc)
go listenHTTPSLocalTLS(handler, errc)
GlobalTLSConfig = LocalTLSConfig(envs.CERT, envs.KEY)
} else {
go listenUDPOnDemandTLS(handler, errc)
go listenHTTPSOnDemandTLS(handler, errc)
GlobalTLSConfig, err = OnDemandTLSConfig()
if err != nil {
slog.Warn("failed to get TLS config: ", err)
}
}

return <-errc
}

func Run([]string) error {
var dsm http.Handler = manager.DefaultSessionManager
s := relay.New(envs.HOST, envs.UDP_PORT, GlobalTLSConfig)

var dsm http.Handler = s.SessionManager
// Set the Alt-Svc header for UDP port discovery && http3 bootstrapping
dsm = AltSvcMiddleware(dsm)
dsm = utils.GinLoggerMiddleware(dsm)

return listenAll(dsm)
s.Next = dsm

return listenAll(s, GlobalTLSConfig)
}

func AltSvcMiddleware(next http.Handler) http.Handler {
Expand Down
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ require (
github.com/vmware-labs/wasm-workers-server v1.7.0
// github.com/webteleport/caddy-webteleport v0.0.1
github.com/webteleport/auth v0.0.8
github.com/webteleport/relay v0.3.0
github.com/webteleport/relay v0.3.2
github.com/webteleport/utils v0.2.10
github.com/webteleport/webteleport v0.4.6
github.com/webteleport/wtf v0.1.13
github.com/webteleport/webteleport v0.5.1
github.com/webteleport/wtf v0.1.14
golang.org/x/net v0.22.0
google.golang.org/grpc v1.62.1
google.golang.org/protobuf v1.33.0
Expand All @@ -67,6 +67,7 @@ require (
github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2 // indirect
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
github.com/briandowns/spinner v1.23.0 // indirect
github.com/btwiuse/wsconn v0.0.1 // indirect
github.com/bufbuild/protocompile v0.8.0 // indirect
github.com/containerd/console v1.0.4 // indirect
github.com/coreos/go-iptables v0.6.0 // indirect
Expand Down

0 comments on commit 89cd289

Please sign in to comment.