mto bel.blue thanks render

This commit is contained in:
Bel LaPointe
2025-11-20 17:14:50 -07:00
parent 3b53ef938d
commit 4a0e3c15e9
12 changed files with 71 additions and 36 deletions

View File

@@ -17,9 +17,9 @@ import (
"strings"
"time"
"gitea.inhome.blapointe.com/local/rproxy3/config"
"gitea.inhome.blapointe.com/local/rproxy3/storage"
"gitea.inhome.blapointe.com/local/rproxy3/storage/packable"
"gitea.bel.blue/local/rproxy3/config"
"gitea.bel.blue/local/rproxy3/storage"
"gitea.bel.blue/local/rproxy3/storage/packable"
"github.com/google/uuid"
"golang.org/x/time/rate"
@@ -30,9 +30,10 @@ const nsRouting = "routing"
type listenerScheme int
const (
schemeHTTP listenerScheme = iota
schemeHTTPS listenerScheme = iota
schemeTCP listenerScheme = iota
schemeHTTP listenerScheme = iota
schemeHTTPS
schemeTCP
schemeTCPTLS
)
func (ls listenerScheme) String() string {
@@ -43,6 +44,8 @@ func (ls listenerScheme) String() string {
return "https"
case schemeTCP:
return "tcp"
case schemeTCPTLS:
return "tcptls"
}
return ""
}
@@ -101,15 +104,50 @@ func (s *Server) Run() error {
case schemeTCP:
addr, _ := config.GetTCP()
return s.ServeTCP(addr)
case schemeTCPTLS:
addr, _ := config.GetTCP()
cert, key, _ := config.GetSSL()
return s.ServeTCPTLS(addr, cert, key)
}
return errors.New("did not load server")
}
func (s *Server) ServeTCPTLS(addr, c, k string) error {
certificate, err := tls.LoadX509KeyPair(c, k)
if err != nil {
return err
}
certificates := []tls.Certificate{certificate}
listen, err := net.Listen("tcp", s.addr)
if err != nil {
return err
}
defer listen.Close()
tlsListener, err := tls.NewListener(listen, &tls.Config{
Certificates: certificates,
MinVersion: tls.VersionTLS12,
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},
PreferServerCipherSuites: true,
CipherSuites: []uint16{
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
},
})
return s.serveTCP(addr, listen)
}
func (s *Server) ServeTCP(addr string) error {
listen, err := net.Listen("tcp", s.addr)
if err != nil {
return err
}
defer listen.Close()
return s.serveTCP(addr, listen)
}
func (s *Server) serveTCP(addr string, listen net.Listener) error {
for {
c, err := listen.Accept()
if err != nil {
@@ -338,11 +376,15 @@ func (s *Server) alt() {
func getScheme() listenerScheme {
scheme := schemeHTTP
if _, _, ok := config.GetSSL(); ok {
_, _, ssl := config.GetSSL()
if ssl {
scheme = schemeHTTPS
}
if _, ok := config.GetTCP(); ok {
scheme = schemeTCP
if ssl {
scheme = schemeTCPTLS
}
}
return scheme
}