From e09ec088818d812c17589d57e550d85793474e76 Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Fri, 20 Sep 2024 18:20:57 +0800 Subject: [PATCH] add sid for connector log --- connector/direct/connector.go | 2 + connector/forward/connector.go | 2 + connector/http/connector.go | 2 + connector/http2/connector.go | 2 + connector/relay/connector.go | 2 + connector/serial/connector.go | 2 + connector/sni/connector.go | 2 + connector/socks/v4/connector.go | 2 + connector/socks/v5/connector.go | 2 + connector/ss/connector.go | 2 + connector/ss/udp/connector.go | 2 + connector/sshd/connector.go | 2 + connector/tcp/connector.go | 2 + connector/tunnel/connector.go | 1 + connector/unix/connector.go | 2 + handler/forward/local/handler.go | 3 +- handler/forward/remote/handler.go | 3 +- handler/http/handler.go | 2 +- handler/tunnel/entrypoint.go | 2 +- internal/util/forward/forward.go | 25 ++----- internal/util/tls/tls.go | 115 ++++++++++++++++++++++++------ recorder/recorder.go | 9 +++ 22 files changed, 142 insertions(+), 46 deletions(-) diff --git a/connector/direct/connector.go b/connector/direct/connector.go index bba20520..b1a12812 100644 --- a/connector/direct/connector.go +++ b/connector/direct/connector.go @@ -6,6 +6,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -57,6 +58,7 @@ func (c *directConnector) Connect(ctx context.Context, _ net.Conn, network, addr "local": localAddr, "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/forward/connector.go b/connector/forward/connector.go index 3a9aa4cf..eef4c510 100644 --- a/connector/forward/connector.go +++ b/connector/forward/connector.go @@ -6,6 +6,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -38,6 +39,7 @@ func (c *forwardConnector) Connect(ctx context.Context, conn net.Conn, network, "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/http/connector.go b/connector/http/connector.go index 60e659aa..deeafdf4 100644 --- a/connector/http/connector.go +++ b/connector/http/connector.go @@ -14,6 +14,7 @@ import ( "github.com/go-gost/core/connector" "github.com/go-gost/core/logger" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/internal/util/socks" "github.com/go-gost/x/registry" ) @@ -48,6 +49,7 @@ func (c *httpConnector) Connect(ctx context.Context, conn net.Conn, network, add "remote": conn.RemoteAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/http2/connector.go b/connector/http2/connector.go index 4a31dfb6..8629c145 100644 --- a/connector/http2/connector.go +++ b/connector/http2/connector.go @@ -15,6 +15,7 @@ import ( "github.com/go-gost/core/connector" "github.com/go-gost/core/logger" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -48,6 +49,7 @@ func (c *http2Connector) Connect(ctx context.Context, conn net.Conn, network, ad "remote": conn.RemoteAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/relay/connector.go b/connector/relay/connector.go index cfd4251c..8b9801a8 100644 --- a/connector/relay/connector.go +++ b/connector/relay/connector.go @@ -10,6 +10,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" "github.com/go-gost/relay" + ctxvalue "github.com/go-gost/x/ctx" relay_util "github.com/go-gost/x/internal/util/relay" "github.com/go-gost/x/registry" ) @@ -44,6 +45,7 @@ func (c *relayConnector) Connect(ctx context.Context, conn net.Conn, network, ad "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/serial/connector.go b/connector/serial/connector.go index c775738f..462cd0bb 100644 --- a/connector/serial/connector.go +++ b/connector/serial/connector.go @@ -6,6 +6,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -38,6 +39,7 @@ func (c *serialConnector) Connect(ctx context.Context, conn net.Conn, network, a "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/sni/connector.go b/connector/sni/connector.go index 714f1678..909886ba 100644 --- a/connector/sni/connector.go +++ b/connector/sni/connector.go @@ -6,6 +6,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -39,6 +40,7 @@ func (c *sniConnector) Connect(ctx context.Context, conn net.Conn, network, addr "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/socks/v4/connector.go b/connector/socks/v4/connector.go index bb7f28a9..01db2cc8 100644 --- a/connector/socks/v4/connector.go +++ b/connector/socks/v4/connector.go @@ -11,6 +11,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" "github.com/go-gost/gosocks4" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -45,6 +46,7 @@ func (c *socks4Connector) Connect(ctx context.Context, conn net.Conn, network, a "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/socks/v5/connector.go b/connector/socks/v5/connector.go index 2d8ef171..4d09591a 100644 --- a/connector/socks/v5/connector.go +++ b/connector/socks/v5/connector.go @@ -12,6 +12,7 @@ import ( "github.com/go-gost/core/logger" md "github.com/go-gost/core/metadata" "github.com/go-gost/gosocks5" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/internal/util/socks" "github.com/go-gost/x/registry" ) @@ -97,6 +98,7 @@ func (c *socks5Connector) Connect(ctx context.Context, conn net.Conn, network, a "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/ss/connector.go b/connector/ss/connector.go index bc36397b..65860f84 100644 --- a/connector/ss/connector.go +++ b/connector/ss/connector.go @@ -10,6 +10,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" "github.com/go-gost/gosocks5" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/internal/util/ss" "github.com/go-gost/x/registry" "github.com/shadowsocks/go-shadowsocks2/core" @@ -56,6 +57,7 @@ func (c *ssConnector) Connect(ctx context.Context, conn net.Conn, network, addre "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/ss/udp/connector.go b/connector/ss/udp/connector.go index d44f6321..f89531a6 100644 --- a/connector/ss/udp/connector.go +++ b/connector/ss/udp/connector.go @@ -8,6 +8,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/internal/util/relay" "github.com/go-gost/x/internal/util/ss" "github.com/go-gost/x/registry" @@ -55,6 +56,7 @@ func (c *ssuConnector) Connect(ctx context.Context, conn net.Conn, network, addr "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/sshd/connector.go b/connector/sshd/connector.go index 4bf363fa..928da07a 100644 --- a/connector/sshd/connector.go +++ b/connector/sshd/connector.go @@ -7,6 +7,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" ssh_util "github.com/go-gost/x/internal/util/ssh" "github.com/go-gost/x/registry" ) @@ -40,6 +41,7 @@ func (c *sshdConnector) Connect(ctx context.Context, conn net.Conn, network, add "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/tcp/connector.go b/connector/tcp/connector.go index 17169b25..5e90d05b 100644 --- a/connector/tcp/connector.go +++ b/connector/tcp/connector.go @@ -6,6 +6,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -38,6 +39,7 @@ func (c *tcpConnector) Connect(ctx context.Context, conn net.Conn, network, addr "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/tunnel/connector.go b/connector/tunnel/connector.go index ac0624e2..39afa5dd 100644 --- a/connector/tunnel/connector.go +++ b/connector/tunnel/connector.go @@ -43,6 +43,7 @@ func (c *tunnelConnector) Connect(ctx context.Context, conn net.Conn, network, a "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/connector/unix/connector.go b/connector/unix/connector.go index 2de6360a..fc945a1e 100644 --- a/connector/unix/connector.go +++ b/connector/unix/connector.go @@ -6,6 +6,7 @@ import ( "github.com/go-gost/core/connector" md "github.com/go-gost/core/metadata" + ctxvalue "github.com/go-gost/x/ctx" "github.com/go-gost/x/registry" ) @@ -38,6 +39,7 @@ func (c *unixConnector) Connect(ctx context.Context, conn net.Conn, network, add "local": conn.LocalAddr().String(), "network": network, "address": address, + "sid": string(ctxvalue.SidFromContext(ctx)), }) log.Debugf("connect %s/%s", address, network) diff --git a/handler/forward/local/handler.go b/handler/forward/local/handler.go index 3fe3b37b..d9b1779a 100644 --- a/handler/forward/local/handler.go +++ b/handler/forward/local/handler.go @@ -36,7 +36,7 @@ import ( ) const ( - defaultBodySize = 1024 * 1024 * 10 // 10MB + defaultBodySize = 1024 * 1024 // 1MB ) func init() { @@ -126,6 +126,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn, opts ...hand if _, ok := conn.(net.PacketConn); ok { network = "udp" } + ro.Network = network var rw io.ReadWriter = conn var host string diff --git a/handler/forward/remote/handler.go b/handler/forward/remote/handler.go index cefc51b3..89de7c15 100644 --- a/handler/forward/remote/handler.go +++ b/handler/forward/remote/handler.go @@ -38,7 +38,7 @@ import ( ) const ( - defaultBodySize = 1024 * 1024 * 10 // 10MB + defaultBodySize = 1024 * 1024 // 1MB ) func init() { @@ -127,6 +127,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn, opts ...hand if _, ok := conn.(net.PacketConn); ok { network = "udp" } + ro.Network = network localAddr := convertAddr(conn.LocalAddr()) diff --git a/handler/http/handler.go b/handler/http/handler.go index 438b26f0..faabed6e 100644 --- a/handler/http/handler.go +++ b/handler/http/handler.go @@ -40,7 +40,7 @@ import ( ) const ( - defaultBodySize = 1024 * 1024 * 10 // 10MB + defaultBodySize = 1024 * 1024 // 1MB ) func init() { diff --git a/handler/tunnel/entrypoint.go b/handler/tunnel/entrypoint.go index 0ced1560..ead436de 100644 --- a/handler/tunnel/entrypoint.go +++ b/handler/tunnel/entrypoint.go @@ -31,7 +31,7 @@ import ( ) const ( - defaultBodySize = 1024 * 1024 * 10 // 10MB + defaultBodySize = 1024 * 1024 // 1MB ) type entrypoint struct { diff --git a/internal/util/forward/forward.go b/internal/util/forward/forward.go index 17b007b6..bad50adf 100644 --- a/internal/util/forward/forward.go +++ b/internal/util/forward/forward.go @@ -25,7 +25,7 @@ func Sniffing(ctx context.Context, rdw io.ReadWriter) (rw io.ReadWriter, host st if err == nil && hdr[0] == dissector.Handshake && (tlsVersion >= tls.VersionTLS10 && tlsVersion <= tls.VersionTLS13) { - rw, host, err = sniffSNI(ctx, rw) + rw, host, err = sniffSNI(rw) protocol = ProtoTLS return } @@ -48,32 +48,19 @@ func Sniffing(ctx context.Context, rdw io.ReadWriter) (rw io.ReadWriter, host st return } -func sniffSNI(ctx context.Context, rw io.ReadWriter) (io.ReadWriter, string, error) { +func sniffSNI(rw io.ReadWriter) (io.ReadWriter, string, error) { buf := new(bytes.Buffer) - host, err := getServerName(ctx, io.TeeReader(rw, buf)) + host, err := getServerName(io.TeeReader(rw, buf)) rw = xio.NewReadWriter(io.MultiReader(buf, rw), rw) return rw, host, err } -func getServerName(ctx context.Context, r io.Reader) (host string, err error) { - record, err := dissector.ReadRecord(r) +func getServerName(r io.Reader) (host string, err error) { + clientHello, err := dissector.ParseClientHello(r) if err != nil { return } - - clientHello := dissector.ClientHelloMsg{} - if err = clientHello.Decode(record.Opaque); err != nil { - return - } - - for _, ext := range clientHello.Extensions { - if ext.Type() == dissector.ExtServerName { - snExtension := ext.(*dissector.ServerNameExtension) - host = snExtension.Name - break - } - } - + host = clientHello.ServerName return } diff --git a/internal/util/tls/tls.go b/internal/util/tls/tls.go index eef4fc85..df62aa31 100644 --- a/internal/util/tls/tls.go +++ b/internal/util/tls/tls.go @@ -6,6 +6,7 @@ import ( "fmt" "net" "os" + "strconv" "strings" "time" @@ -20,7 +21,9 @@ const ( VersionTLS13 = "VersionTLS13" ) +// Cipher suites from https://pkg.go.dev/crypto/tls#pkg-constants const ( + // TLS 1.0 - 1.2 cipher suites. TLS_RSA_WITH_RC4_128_SHA = "TLS_RSA_WITH_RC4_128_SHA" TLS_RSA_WITH_3DES_EDE_CBC_SHA = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" TLS_RSA_WITH_AES_128_CBC_SHA = "TLS_RSA_WITH_AES_128_CBC_SHA" @@ -43,8 +46,74 @@ const ( TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" + + // TLS 1.3 cipher suites. + TLS_AES_128_GCM_SHA256 = "TLS_AES_128_GCM_SHA256" + TLS_AES_256_GCM_SHA384 = "TLS_AES_256_GCM_SHA384" + TLS_CHACHA20_POLY1305_SHA256 = "TLS_CHACHA20_POLY1305_SHA256" + + // TLS_FALLBACK_SCSV isn't a standard cipher suite but an indicator + // that the client is doing version fallback. See RFC 7507. + TLS_FALLBACK_SCSV = "TLS_FALLBACK_SCSV" ) +var ( + cipherSuites = map[uint16]string{ + tls.TLS_RSA_WITH_RC4_128_SHA: TLS_RSA_WITH_RC4_128_SHA, + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA: TLS_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA: TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA: TLS_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA256: TLS_RSA_WITH_AES_128_CBC_SHA256, + tls.TLS_RSA_WITH_AES_128_GCM_SHA256: TLS_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_RSA_WITH_AES_256_GCM_SHA384: TLS_RSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA: TLS_ECDHE_RSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, + tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, + + tls.TLS_AES_128_GCM_SHA256: TLS_AES_128_GCM_SHA256, + tls.TLS_AES_256_GCM_SHA384: TLS_AES_256_GCM_SHA384, + tls.TLS_CHACHA20_POLY1305_SHA256: TLS_CHACHA20_POLY1305_SHA256, + } + + versions = map[uint16]string{ + tls.VersionSSL30: "sslv3", + tls.VersionTLS10: "tls1.0", + tls.VersionTLS11: "tls1.1", + tls.VersionTLS12: "tls1.2", + tls.VersionTLS13: "tls1.3", + } +) + +type CipherSuite uint16 + +func (cs CipherSuite) String() string { + if v, ok := cipherSuites[uint16(cs)]; ok { + return v + } + return strconv.Itoa(int(cs)) +} + +type Version uint16 + +func (ver Version) String() string { + if v, ok := versions[uint16(ver)]; ok { + return v + } + return strconv.Itoa(int(ver)) +} + // LoadDefaultConfig loads the certificate from cert & key files and optional CA file. func LoadDefaultConfig(certFile, keyFile, caFile string) (*tls.Config, error) { cert, err := tls.LoadX509KeyPair(certFile, keyFile) @@ -175,50 +244,50 @@ func SetTLSOptions(cfg *tls.Config, opts *config.TLSOptions) { cfg.MaxVersion = tls.VersionTLS13 } for _, v := range opts.CipherSuites { - switch strings.ToLower(v) { - case strings.ToLower(TLS_RSA_WITH_RC4_128_SHA): + switch strings.ToUpper(v) { + case TLS_RSA_WITH_RC4_128_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_RC4_128_SHA) - case strings.ToLower(TLS_RSA_WITH_3DES_EDE_CBC_SHA): + case TLS_RSA_WITH_3DES_EDE_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA) - case strings.ToLower(TLS_RSA_WITH_AES_128_CBC_SHA): + case TLS_RSA_WITH_AES_128_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_AES_128_CBC_SHA) - case strings.ToLower(TLS_RSA_WITH_AES_256_CBC_SHA): + case TLS_RSA_WITH_AES_256_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_AES_256_CBC_SHA) - case strings.ToLower(TLS_RSA_WITH_AES_128_CBC_SHA256): + case TLS_RSA_WITH_AES_128_CBC_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_AES_128_CBC_SHA256) - case strings.ToLower(TLS_RSA_WITH_AES_128_GCM_SHA256): + case TLS_RSA_WITH_AES_128_GCM_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_AES_128_GCM_SHA256) - case strings.ToLower(TLS_RSA_WITH_AES_256_GCM_SHA384): + case TLS_RSA_WITH_AES_256_GCM_SHA384: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_RSA_WITH_AES_256_GCM_SHA384) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_RC4_128_SHA): + case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA): + case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA): + case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA) - case strings.ToLower(TLS_ECDHE_RSA_WITH_RC4_128_SHA): + case TLS_ECDHE_RSA_WITH_RC4_128_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA) - case strings.ToLower(TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA): + case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA) - case strings.ToLower(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA): + case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) - case strings.ToLower(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA): + case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256): + case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256) - case strings.ToLower(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256): + case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) - case strings.ToLower(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256): + case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256): + case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) - case strings.ToLower(TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384): + case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384): + case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384) - case strings.ToLower(TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256): + case TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256) - case strings.ToLower(TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256): + case TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: cfg.CipherSuites = append(cfg.CipherSuites, tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256) } } diff --git a/recorder/recorder.go b/recorder/recorder.go index 752819c3..782d71c8 100644 --- a/recorder/recorder.go +++ b/recorder/recorder.go @@ -38,6 +38,14 @@ type HTTPRecorderObject struct { Response HTTPResponseRecorderObject `json:"response"` } +type TLSRecorderObject struct { + ServerName string `json:"serverName"` + CipherSuite string `json:"cipherSuite"` + CompressionMethod uint8 `json:"compressionMethod"` + Proto string `json:"proto"` + Version string `json:"version"` +} + type DNSRecorderObject struct { ID int `json:"id"` Name string `json:"name"` @@ -58,6 +66,7 @@ type HandlerRecorderObject struct { ClientIP string `json:"clientIP"` ClientID string `json:"clientID,omitempty"` HTTP *HTTPRecorderObject `json:"http,omitempty"` + TLS *TLSRecorderObject `json:"tls,omitempty"` DNS *DNSRecorderObject `json:"dns,omitempty"` Err string `json:"err,omitempty"` Duration time.Duration `json:"duration"`