mto bel.blue thanks render
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user