update imports

This commit is contained in:
ginuerzh
2022-04-04 12:47:07 +08:00
parent 810f9f4d8f
commit 1b31c80d2c
7 changed files with 85 additions and 186 deletions

View File

@ -9,9 +9,9 @@ import (
"strings" "strings"
"time" "time"
"github.com/go-gost/core/metadata"
"github.com/go-gost/core/registry"
"github.com/go-gost/x/config" "github.com/go-gost/x/config"
"github.com/go-gost/x/metadata"
"github.com/go-gost/x/registry"
) )
var ( var (
@ -87,11 +87,12 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
nodes = append(nodes, nodeCfg) nodes = append(nodes, nodeCfg)
} }
md := metadata.MapMetadata(nodeConfig.Connector.Metadata) mc := nodeConfig.Connector.Metadata
md := metadata.NewMetadata(mc)
hopConfig := &config.HopConfig{ hopConfig := &config.HopConfig{
Name: fmt.Sprintf("hop-%d", i), Name: fmt.Sprintf("hop-%d", i),
Selector: parseSelector(md), Selector: parseSelector(mc),
Nodes: nodes, Nodes: nodes,
} }
@ -111,7 +112,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
hopConfig.Bypass = bypassCfg.Name hopConfig.Bypass = bypassCfg.Name
cfg.Bypasses = append(cfg.Bypasses, bypassCfg) cfg.Bypasses = append(cfg.Bypasses, bypassCfg)
md.Del("bypass") delete(mc, "bypass")
} }
if v := metadata.GetString(md, "resolver"); v != "" { if v := metadata.GetString(md, "resolver"); v != "" {
resolverCfg := &config.ResolverConfig{ resolverCfg := &config.ResolverConfig{
@ -130,7 +131,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
hopConfig.Resolver = resolverCfg.Name hopConfig.Resolver = resolverCfg.Name
cfg.Resolvers = append(cfg.Resolvers, resolverCfg) cfg.Resolvers = append(cfg.Resolvers, resolverCfg)
md.Del("resolver") delete(mc, "resolver")
} }
if v := metadata.GetString(md, "hosts"); v != "" { if v := metadata.GetString(md, "hosts"); v != "" {
hostsCfg := &config.HostsConfig{ hostsCfg := &config.HostsConfig{
@ -151,18 +152,18 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
hopConfig.Hosts = hostsCfg.Name hopConfig.Hosts = hostsCfg.Name
cfg.Hosts = append(cfg.Hosts, hostsCfg) cfg.Hosts = append(cfg.Hosts, hostsCfg)
md.Del("hosts") delete(mc, "hosts")
} }
if v := metadata.GetString(md, "interface"); v != "" { if v := metadata.GetString(md, "interface"); v != "" {
hopConfig.Interface = v hopConfig.Interface = v
md.Del("interface") delete(mc, "interface")
} }
if v := metadata.GetInt(md, "so_mark"); v > 0 { if v := metadata.GetInt(md, "so_mark"); v > 0 {
hopConfig.SockOpts = &config.SockOptsConfig{ hopConfig.SockOpts = &config.SockOptsConfig{
Mark: v, Mark: v,
} }
md.Del("so_mark") delete(mc, "so_mark")
} }
chain.Hops = append(chain.Hops, hopConfig) chain.Hops = append(chain.Hops, hopConfig)
@ -188,10 +189,11 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
cfg.Services = append(cfg.Services, service) cfg.Services = append(cfg.Services, service)
md := metadata.MapMetadata(service.Handler.Metadata) mh := service.Handler.Metadata
md := metadata.NewMetadata(mh)
if v := metadata.GetInt(md, "retries"); v > 0 { if v := metadata.GetInt(md, "retries"); v > 0 {
service.Handler.Retries = v service.Handler.Retries = v
md.Del("retries") delete(mh, "retries")
} }
if v := metadata.GetString(md, "admission"); v != "" { if v := metadata.GetString(md, "admission"); v != "" {
admCfg := &config.AdmissionConfig{ admCfg := &config.AdmissionConfig{
@ -209,7 +211,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
service.Admission = admCfg.Name service.Admission = admCfg.Name
cfg.Admissions = append(cfg.Admissions, admCfg) cfg.Admissions = append(cfg.Admissions, admCfg)
md.Del("admission") delete(mh, "admission")
} }
if v := metadata.GetString(md, "bypass"); v != "" { if v := metadata.GetString(md, "bypass"); v != "" {
bypassCfg := &config.BypassConfig{ bypassCfg := &config.BypassConfig{
@ -227,7 +229,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
service.Bypass = bypassCfg.Name service.Bypass = bypassCfg.Name
cfg.Bypasses = append(cfg.Bypasses, bypassCfg) cfg.Bypasses = append(cfg.Bypasses, bypassCfg)
md.Del("bypass") delete(mh, "bypass")
} }
if v := metadata.GetString(md, "resolver"); v != "" { if v := metadata.GetString(md, "resolver"); v != "" {
resolverCfg := &config.ResolverConfig{ resolverCfg := &config.ResolverConfig{
@ -246,7 +248,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
service.Resolver = resolverCfg.Name service.Resolver = resolverCfg.Name
cfg.Resolvers = append(cfg.Resolvers, resolverCfg) cfg.Resolvers = append(cfg.Resolvers, resolverCfg)
md.Del("resolver") delete(mh, "resolver")
} }
if v := metadata.GetString(md, "hosts"); v != "" { if v := metadata.GetString(md, "hosts"); v != "" {
hostsCfg := &config.HostsConfig{ hostsCfg := &config.HostsConfig{
@ -267,7 +269,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
} }
service.Hosts = hostsCfg.Name service.Hosts = hostsCfg.Name
cfg.Hosts = append(cfg.Hosts, hostsCfg) cfg.Hosts = append(cfg.Hosts, hostsCfg)
md.Del("hosts") delete(mh, "hosts")
} }
} }
@ -324,12 +326,13 @@ func buildServiceConfig(url *url.URL) (*config.ServiceConfig, error) {
auth.Password, _ = url.User.Password() auth.Password, _ = url.User.Password()
} }
md := metadata.MapMetadata{} m := map[string]any{}
for k, v := range url.Query() { for k, v := range url.Query() {
if len(v) > 0 { if len(v) > 0 {
md[k] = v[0] m[k] = v[0]
} }
} }
md := metadata.NewMetadata(m)
if sa := metadata.GetString(md, "auth"); sa != "" { if sa := metadata.GetString(md, "auth"); sa != "" {
au, err := parseAuthFromCmd(sa) au, err := parseAuthFromCmd(sa)
@ -338,16 +341,16 @@ func buildServiceConfig(url *url.URL) (*config.ServiceConfig, error) {
} }
auth = au auth = au
} }
md.Del("auth") delete(m, "auth")
tlsConfig := &config.TLSConfig{ tlsConfig := &config.TLSConfig{
CertFile: metadata.GetString(md, "certFile"), CertFile: metadata.GetString(md, "certFile"),
KeyFile: metadata.GetString(md, "keyFile"), KeyFile: metadata.GetString(md, "keyFile"),
CAFile: metadata.GetString(md, "caFile"), CAFile: metadata.GetString(md, "caFile"),
} }
md.Del("certFile") delete(m, "certFile")
md.Del("keyFile") delete(m, "keyFile")
md.Del("caFile") delete(m, "caFile")
if tlsConfig.CertFile == "" { if tlsConfig.CertFile == "" {
tlsConfig = nil tlsConfig = nil
@ -358,28 +361,28 @@ func buildServiceConfig(url *url.URL) (*config.ServiceConfig, error) {
} }
if v := metadata.GetString(md, "interface"); v != "" { if v := metadata.GetString(md, "interface"); v != "" {
svc.Interface = v svc.Interface = v
md.Del("interface") delete(m, "interface")
} }
if v := metadata.GetInt(md, "so_mark"); v > 0 { if v := metadata.GetInt(md, "so_mark"); v > 0 {
svc.SockOpts = &config.SockOptsConfig{ svc.SockOpts = &config.SockOptsConfig{
Mark: v, Mark: v,
} }
md.Del("so_mark") delete(m, "so_mark")
} }
if svc.Forwarder != nil { if svc.Forwarder != nil {
svc.Forwarder.Selector = parseSelector(md) svc.Forwarder.Selector = parseSelector(m)
} }
svc.Handler = &config.HandlerConfig{ svc.Handler = &config.HandlerConfig{
Type: handler, Type: handler,
Auth: auth, Auth: auth,
Metadata: md, Metadata: m,
} }
svc.Listener = &config.ListenerConfig{ svc.Listener = &config.ListenerConfig{
Type: listener, Type: listener,
TLS: tlsConfig, TLS: tlsConfig,
Metadata: md, Metadata: m,
} }
if svc.Handler.Type == "sshd" { if svc.Handler.Type == "sshd" {
@ -426,12 +429,13 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) {
auth.Password, _ = url.User.Password() auth.Password, _ = url.User.Password()
} }
md := metadata.MapMetadata{} m := map[string]any{}
for k, v := range url.Query() { for k, v := range url.Query() {
if len(v) > 0 { if len(v) > 0 {
md[k] = v[0] m[k] = v[0]
} }
} }
md := metadata.NewMetadata(m)
if sauth := metadata.GetString(md, "auth"); sauth != "" && auth == nil { if sauth := metadata.GetString(md, "auth"); sauth != "" && auth == nil {
au, err := parseAuthFromCmd(sauth) au, err := parseAuthFromCmd(sauth)
@ -440,7 +444,7 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) {
} }
auth = au auth = au
} }
md.Del("auth") delete(m, "auth")
tlsConfig := &config.TLSConfig{ tlsConfig := &config.TLSConfig{
CertFile: metadata.GetString(md, "certFile"), CertFile: metadata.GetString(md, "certFile"),
@ -452,11 +456,11 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) {
if tlsConfig.ServerName == "" { if tlsConfig.ServerName == "" {
tlsConfig.ServerName = url.Hostname() tlsConfig.ServerName = url.Hostname()
} }
md.Del("certFile") delete(m, "certFile")
md.Del("keyFile") delete(m, "keyFile")
md.Del("caFile") delete(m, "caFile")
md.Del("secure") delete(m, "secure")
md.Del("serverName") delete(m, "serverName")
if !tlsConfig.Secure && tlsConfig.CertFile == "" && tlsConfig.CAFile == "" { if !tlsConfig.Secure && tlsConfig.CertFile == "" && tlsConfig.CAFile == "" {
tlsConfig = nil tlsConfig = nil
@ -465,12 +469,12 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) {
node.Connector = &config.ConnectorConfig{ node.Connector = &config.ConnectorConfig{
Type: connector, Type: connector,
Auth: auth, Auth: auth,
Metadata: md, Metadata: m,
} }
node.Dialer = &config.DialerConfig{ node.Dialer = &config.DialerConfig{
Type: dialer, Type: dialer,
TLS: tlsConfig, TLS: tlsConfig,
Metadata: md, Metadata: m,
} }
if node.Connector.Type == "sshd" { if node.Connector.Type == "sshd" {
@ -523,7 +527,8 @@ func parseAuthFromCmd(sa string) (*config.AuthConfig, error) {
}, nil }, nil
} }
func parseSelector(md metadata.MapMetadata) *config.SelectorConfig { func parseSelector(m map[string]any) *config.SelectorConfig {
md := metadata.NewMetadata(m)
strategy := metadata.GetString(md, "strategy") strategy := metadata.GetString(md, "strategy")
maxFails := metadata.GetInt(md, "maxFails") maxFails := metadata.GetInt(md, "maxFails")
failTimeout := metadata.GetDuration(md, "failTimeout") failTimeout := metadata.GetDuration(md, "failTimeout")
@ -540,9 +545,9 @@ func parseSelector(md metadata.MapMetadata) *config.SelectorConfig {
failTimeout = time.Second failTimeout = time.Second
} }
md.Del("strategy") delete(m, "strategy")
md.Del("maxFails") delete(m, "maxFails")
md.Del("failTimeout") delete(m, "failTimeout")
return &config.SelectorConfig{ return &config.SelectorConfig{
Strategy: strategy, Strategy: strategy,

View File

@ -6,11 +6,12 @@ import (
"github.com/go-gost/core/logger" "github.com/go-gost/core/logger"
metrics "github.com/go-gost/core/metrics/service" metrics "github.com/go-gost/core/metrics/service"
"github.com/go-gost/core/registry"
"github.com/go-gost/core/service" "github.com/go-gost/core/service"
"github.com/go-gost/x/api" "github.com/go-gost/x/api"
"github.com/go-gost/x/config" "github.com/go-gost/x/config"
"github.com/go-gost/x/config/parsing" "github.com/go-gost/x/config/parsing"
xlogger "github.com/go-gost/x/logger"
"github.com/go-gost/x/registry"
) )
func buildService(cfg *config.Config) (services []service.Service) { func buildService(cfg *config.Config) (services []service.Service) {
@ -94,15 +95,15 @@ func logFromConfig(cfg *config.LogConfig) logger.Logger {
if cfg == nil { if cfg == nil {
cfg = &config.LogConfig{} cfg = &config.LogConfig{}
} }
opts := []logger.LoggerOption{ opts := []xlogger.LoggerOption{
logger.FormatLoggerOption(logger.LogFormat(cfg.Format)), xlogger.FormatLoggerOption(logger.LogFormat(cfg.Format)),
logger.LevelLoggerOption(logger.LogLevel(cfg.Level)), xlogger.LevelLoggerOption(logger.LogLevel(cfg.Level)),
} }
var out io.Writer = os.Stderr var out io.Writer = os.Stderr
switch cfg.Output { switch cfg.Output {
case "none", "null": case "none", "null":
return logger.Nop() return xlogger.Nop()
case "stdout": case "stdout":
out = os.Stdout out = os.Stdout
case "stderr", "": case "stderr", "":
@ -115,9 +116,9 @@ func logFromConfig(cfg *config.LogConfig) logger.Logger {
out = f out = f
} }
} }
opts = append(opts, logger.OutputLoggerOption(out)) opts = append(opts, xlogger.OutputLoggerOption(out))
return logger.NewLogger(opts...) return xlogger.NewLogger(opts...)
} }
func buildAPIService(cfg *config.APIConfig) (service.Service, error) { func buildAPIService(cfg *config.APIConfig) (service.Service, error) {

View File

@ -11,10 +11,12 @@ import (
"github.com/go-gost/core/logger" "github.com/go-gost/core/logger"
"github.com/go-gost/core/metrics" "github.com/go-gost/core/metrics"
"github.com/go-gost/x/config" "github.com/go-gost/x/config"
"github.com/go-gost/x/config/parsing"
xlogger "github.com/go-gost/x/logger"
) )
var ( var (
log = logger.Default() log logger.Logger
cfgFile string cfgFile string
outputFormat string outputFormat string
@ -43,6 +45,9 @@ func init() {
version, runtime.Version(), runtime.GOOS, runtime.GOARCH) version, runtime.Version(), runtime.GOOS, runtime.GOARCH)
os.Exit(0) os.Exit(0)
} }
log = xlogger.NewLogger()
logger.SetDefault(log)
} }
func main() { func main() {
@ -127,7 +132,7 @@ func main() {
} }
} }
buildDefaultTLSConfig(cfg.TLS) parsing.BuildDefaultTLSConfig(cfg.TLS)
services := buildService(cfg) services := buildService(cfg)
for _, svc := range services { for _, svc := range services {

View File

@ -1,33 +1,14 @@
package main package main
import ( import (
// core components // Register connectors
_ "github.com/go-gost/core/connector/forward" _ "github.com/go-gost/x/connector/forward"
_ "github.com/go-gost/core/connector/http" _ "github.com/go-gost/x/connector/http"
_ "github.com/go-gost/core/connector/socks/v4"
_ "github.com/go-gost/core/connector/socks/v5"
_ "github.com/go-gost/core/dialer/tcp"
_ "github.com/go-gost/core/dialer/tls"
_ "github.com/go-gost/core/dialer/udp"
_ "github.com/go-gost/core/handler/auto"
_ "github.com/go-gost/core/handler/forward/local"
_ "github.com/go-gost/core/handler/forward/remote"
_ "github.com/go-gost/core/handler/http"
_ "github.com/go-gost/core/handler/socks/v4"
_ "github.com/go-gost/core/handler/socks/v5"
_ "github.com/go-gost/core/listener/rtcp"
_ "github.com/go-gost/core/listener/rudp"
_ "github.com/go-gost/core/listener/tcp"
_ "github.com/go-gost/core/listener/tls"
_ "github.com/go-gost/core/listener/udp"
// extended components
_ "github.com/go-gost/x/connector/http2" _ "github.com/go-gost/x/connector/http2"
_ "github.com/go-gost/x/connector/relay" _ "github.com/go-gost/x/connector/relay"
_ "github.com/go-gost/x/connector/sni" _ "github.com/go-gost/x/connector/sni"
_ "github.com/go-gost/x/connector/socks/v4"
_ "github.com/go-gost/x/connector/socks/v5"
_ "github.com/go-gost/x/connector/ss" _ "github.com/go-gost/x/connector/ss"
_ "github.com/go-gost/x/connector/ss/udp" _ "github.com/go-gost/x/connector/ss/udp"
_ "github.com/go-gost/x/connector/sshd" _ "github.com/go-gost/x/connector/sshd"
@ -48,15 +29,24 @@ import (
_ "github.com/go-gost/x/dialer/quic" _ "github.com/go-gost/x/dialer/quic"
_ "github.com/go-gost/x/dialer/ssh" _ "github.com/go-gost/x/dialer/ssh"
_ "github.com/go-gost/x/dialer/sshd" _ "github.com/go-gost/x/dialer/sshd"
_ "github.com/go-gost/x/dialer/tcp"
_ "github.com/go-gost/x/dialer/tls"
_ "github.com/go-gost/x/dialer/udp"
_ "github.com/go-gost/x/dialer/ws" _ "github.com/go-gost/x/dialer/ws"
// Register handlers // Register handlers
_ "github.com/go-gost/x/handler/auto"
_ "github.com/go-gost/x/handler/dns" _ "github.com/go-gost/x/handler/dns"
_ "github.com/go-gost/x/handler/forward/local"
_ "github.com/go-gost/x/handler/forward/remote"
_ "github.com/go-gost/x/handler/http"
_ "github.com/go-gost/x/handler/http2" _ "github.com/go-gost/x/handler/http2"
_ "github.com/go-gost/x/handler/redirect/tcp" _ "github.com/go-gost/x/handler/redirect/tcp"
_ "github.com/go-gost/x/handler/redirect/udp" _ "github.com/go-gost/x/handler/redirect/udp"
_ "github.com/go-gost/x/handler/relay" _ "github.com/go-gost/x/handler/relay"
_ "github.com/go-gost/x/handler/sni" _ "github.com/go-gost/x/handler/sni"
_ "github.com/go-gost/x/handler/socks/v4"
_ "github.com/go-gost/x/handler/socks/v5"
_ "github.com/go-gost/x/handler/ss" _ "github.com/go-gost/x/handler/ss"
_ "github.com/go-gost/x/handler/ss/udp" _ "github.com/go-gost/x/handler/ss/udp"
_ "github.com/go-gost/x/handler/sshd" _ "github.com/go-gost/x/handler/sshd"
@ -80,9 +70,14 @@ import (
_ "github.com/go-gost/x/listener/quic" _ "github.com/go-gost/x/listener/quic"
_ "github.com/go-gost/x/listener/redirect/tcp" _ "github.com/go-gost/x/listener/redirect/tcp"
_ "github.com/go-gost/x/listener/redirect/udp" _ "github.com/go-gost/x/listener/redirect/udp"
_ "github.com/go-gost/x/listener/rtcp"
_ "github.com/go-gost/x/listener/rudp"
_ "github.com/go-gost/x/listener/ssh" _ "github.com/go-gost/x/listener/ssh"
_ "github.com/go-gost/x/listener/sshd" _ "github.com/go-gost/x/listener/sshd"
_ "github.com/go-gost/x/listener/tap" _ "github.com/go-gost/x/listener/tap"
_ "github.com/go-gost/x/listener/tcp"
_ "github.com/go-gost/x/listener/tls"
_ "github.com/go-gost/x/listener/tun" _ "github.com/go-gost/x/listener/tun"
_ "github.com/go-gost/x/listener/udp"
_ "github.com/go-gost/x/listener/ws" _ "github.com/go-gost/x/listener/ws"
) )

View File

@ -1,107 +0,0 @@
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/tls"
"crypto/x509"
"crypto/x509/pkix"
"encoding/pem"
"math/big"
"time"
tls_util "github.com/go-gost/core/common/util/tls"
"github.com/go-gost/x/config"
)
func buildDefaultTLSConfig(cfg *config.TLSConfig) {
if cfg == nil {
cfg = &config.TLSConfig{
CertFile: "cert.pem",
KeyFile: "key.pem",
}
}
tlsConfig, err := loadConfig(cfg.CertFile, cfg.KeyFile)
if err != nil {
// generate random self-signed certificate.
cert, err := genCertificate()
if err != nil {
log.Fatal(err)
}
tlsConfig = &tls.Config{
Certificates: []tls.Certificate{cert},
}
log.Warn("load TLS certificate files failed, use random generated certificate")
} else {
log.Info("load TLS certificate files OK")
}
tls_util.DefaultConfig = tlsConfig
}
func loadConfig(certFile, keyFile string) (*tls.Config, error) {
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
return nil, err
}
cfg := &tls.Config{
Certificates: []tls.Certificate{cert},
}
return cfg, nil
}
func genCertificate() (cert tls.Certificate, err error) {
rawCert, rawKey, err := generateKeyPair()
if err != nil {
return
}
return tls.X509KeyPair(rawCert, rawKey)
}
func generateKeyPair() (rawCert, rawKey []byte, err error) {
// Create private key and self-signed certificate
// Adapted from https://golang.org/src/crypto/tls/generate_cert.go
priv, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
return
}
validFor := time.Hour * 24 * 365 * 10 // ten years
notBefore := time.Now()
notAfter := notBefore.Add(validFor)
serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
if err != nil {
return
}
template := x509.Certificate{
SerialNumber: serialNumber,
Subject: pkix.Name{
Organization: []string{"gost"},
},
NotBefore: notBefore,
NotAfter: notAfter,
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
BasicConstraintsValid: true,
}
template.DNSNames = append(template.DNSNames, "gost.run")
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
if err != nil {
return
}
rawCert = pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
privBytes, err := x509.MarshalPKCS8PrivateKey(priv)
if err != nil {
return
}
rawKey = pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: privBytes})
return
}

4
go.mod
View File

@ -5,8 +5,8 @@ go 1.18
replace github.com/templexxx/cpu v0.0.7 => github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a replace github.com/templexxx/cpu v0.0.7 => github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a
require ( require (
github.com/go-gost/core v0.0.0-20220331130633-fc1e6e8ff2a6 github.com/go-gost/core v0.0.0-20220404042802-3cfb5fe2ca14
github.com/go-gost/x v0.0.0-20220402133839-eef1b9176f59 github.com/go-gost/x v0.0.0-20220404044539-6aa1cc740156
) )
require ( require (

8
go.sum
View File

@ -119,8 +119,8 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gost/core v0.0.0-20220331130633-fc1e6e8ff2a6 h1:KHk0dL+sRK7NlkdC7nx2vSegMLmHPfqmN1ycc29FTaw= github.com/go-gost/core v0.0.0-20220404042802-3cfb5fe2ca14 h1:XxaaYRfY/zXi0xOn6zeBdfKhj8h5Io3jDN4GzFETX8A=
github.com/go-gost/core v0.0.0-20220331130633-fc1e6e8ff2a6/go.mod h1:oga1T7DJPJM+DpiQaZvTES9P9jvybRSgR/V5j+sEDpg= github.com/go-gost/core v0.0.0-20220404042802-3cfb5fe2ca14/go.mod h1:/LzdiQ+0+3FMhyqw0phjFjXFdOa1fcQR5/bL/7ripCs=
github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s= github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s=
github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc= github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc=
github.com/go-gost/gosocks5 v0.3.1-0.20211109033403-d894d75b7f09 h1:A95M6UWcfZgOuJkQ7QLfG0Hs5peWIUSysCDNz4pfe04= github.com/go-gost/gosocks5 v0.3.1-0.20211109033403-d894d75b7f09 h1:A95M6UWcfZgOuJkQ7QLfG0Hs5peWIUSysCDNz4pfe04=
@ -129,8 +129,8 @@ github.com/go-gost/relay v0.1.1-0.20211123134818-8ef7fd81ffd7 h1:itaaJhQJ19kUXEB
github.com/go-gost/relay v0.1.1-0.20211123134818-8ef7fd81ffd7/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8= github.com/go-gost/relay v0.1.1-0.20211123134818-8ef7fd81ffd7/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8=
github.com/go-gost/tls-dissector v0.0.2-0.20211125135007-2b5d5bd9c07e h1:73NGqAs22ey3wJkIYVD/ACEoovuIuOlEzQTEoqrO5+U= github.com/go-gost/tls-dissector v0.0.2-0.20211125135007-2b5d5bd9c07e h1:73NGqAs22ey3wJkIYVD/ACEoovuIuOlEzQTEoqrO5+U=
github.com/go-gost/tls-dissector v0.0.2-0.20211125135007-2b5d5bd9c07e/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs= github.com/go-gost/tls-dissector v0.0.2-0.20211125135007-2b5d5bd9c07e/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs=
github.com/go-gost/x v0.0.0-20220402133839-eef1b9176f59 h1:B1d3MHm5jd6+I/T86ilkSg5mEUScBJO5JcnofLmjws0= github.com/go-gost/x v0.0.0-20220404044539-6aa1cc740156 h1:Vh48o3X5zZRT5e50wgLGr1GNnHqHV/GRVUnpMc4hrwU=
github.com/go-gost/x v0.0.0-20220402133839-eef1b9176f59/go.mod h1:leUsfOfh52v8QkEOWRLTAM4tbQaYYWIWfd9UfLB+tkg= github.com/go-gost/x v0.0.0-20220404044539-6aa1cc740156/go.mod h1:ZcHIO92IOsnu7K723MCN+aNVgwuRTgYN5pBvQku4o8s=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=