add socks

This commit is contained in:
ginuerzh
2021-11-05 23:36:50 +08:00
parent ec8615991b
commit e8f040cbdf
29 changed files with 1210 additions and 144 deletions

View File

@ -46,7 +46,7 @@ func buildService(cfg *config.Config) (services []*service.Service) {
listener.LoggerOption(listenerLogger),
)
if err := ln.Init(metadata.MapMetadata(svc.Listener.Metadata)); err != nil {
listenerLogger.Fatal("init:", err)
listenerLogger.Fatal("init: ", err)
}
handlerLogger := log.WithFields(map[string]interface{}{
@ -61,7 +61,7 @@ func buildService(cfg *config.Config) (services []*service.Service) {
handler.LoggerOption(handlerLogger),
)
if err := h.Init(metadata.MapMetadata(svc.Handler.Metadata)); err != nil {
handlerLogger.Fatal("init:", err)
handlerLogger.Fatal("init: ", err)
}
s := (&service.Service{}).
@ -95,7 +95,7 @@ func chainFromConfig(cfg *config.ChainConfig) *chain.Chain {
connector.LoggerOption(connectorLogger),
)
if err := cr.Init(metadata.MapMetadata(v.Connector.Metadata)); err != nil {
connectorLogger.Fatal("init:", err)
connectorLogger.Fatal("init: ", err)
}
dialerLogger := log.WithFields(map[string]interface{}{
@ -108,7 +108,7 @@ func chainFromConfig(cfg *config.ChainConfig) *chain.Chain {
dialer.LoggerOption(dialerLogger),
)
if err := d.Init(metadata.MapMetadata(v.Dialer.Metadata)); err != nil {
dialerLogger.Fatal("init:", err)
dialerLogger.Fatal("init: ", err)
}
tr := (&chain.Transport{}).
@ -165,22 +165,19 @@ func selectorFromConfig(cfg *config.LoadbalancingConfig) chain.Selector {
var strategy chain.Strategy
switch cfg.Strategy {
case "round":
strategy = &chain.RoundRobinStrategy{}
strategy = chain.RoundRobinStrategy()
case "random":
strategy = &chain.RandomStrategy{}
strategy = chain.RandomStrategy()
case "fifio":
strategy = &chain.FIFOStrategy{}
strategy = chain.FIFOStrategy()
default:
strategy = &chain.RoundRobinStrategy{}
strategy = chain.RoundRobinStrategy()
}
return chain.NewSelector(
strategy,
&chain.InvalidFilter{},
&chain.FailFilter{
MaxFails: cfg.MaxFails,
FailTimeout: cfg.FailTimeout,
},
chain.InvalidFilter(),
chain.FailFilter(cfg.MaxFails, cfg.FailTimeout),
)
}

View File

@ -31,7 +31,6 @@ services:
metadata:
method: AES-256-GCM
password: gost
key: gost
readTimeout: 5s
retry: 3
listener:
@ -40,6 +39,23 @@ services:
keepAlive: 15s
chain: chain01
# bypass: bypass01
- name: socks5+tcp
url: "socks5://gost:gost@:1080"
addr: ":1080"
handler:
type: socks5
metadata:
auths:
- gost:gost
readTimeout: 5s
retry: 3
notls: true
listener:
type: tcp
metadata:
keepAlive: 15s
chain: chain-socks4
# bypass: bypass01
chains:
- name: chain01
@ -99,6 +115,20 @@ chains:
dialer:
type: tcp
metadata: {}
- name: chain-socks4
hops:
- name: hop01
nodes:
- name: node01
addr: ":8081"
url: "http://gost:gost@:8081"
# bypass: bypass01
connector:
type: socks4
metadata: {}
dialer:
type: tcp
metadata: {}
bypasses:
- name: bypass01

View File

@ -3,6 +3,7 @@ package main
import (
// Register connectors
_ "github.com/go-gost/gost/pkg/connector/http"
_ "github.com/go-gost/gost/pkg/connector/socks/v4"
_ "github.com/go-gost/gost/pkg/connector/ss"
// Register dialers
@ -10,6 +11,8 @@ import (
// Register handlers
_ "github.com/go-gost/gost/pkg/handler/http"
_ "github.com/go-gost/gost/pkg/handler/socks/v4"
_ "github.com/go-gost/gost/pkg/handler/socks/v5"
_ "github.com/go-gost/gost/pkg/handler/ss"
_ "github.com/go-gost/gost/pkg/handler/ssu"