add sni handler

This commit is contained in:
ginuerzh
2021-11-25 23:08:03 +08:00
parent 6daf0a4d0f
commit 5b97b878fb
12 changed files with 351 additions and 56 deletions

View File

@ -1,6 +1,7 @@
package main
import (
"crypto/tls"
"flag"
"fmt"
"net/http"
@ -8,6 +9,7 @@ import (
"os"
"runtime"
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
"github.com/go-gost/gost/pkg/config"
"github.com/go-gost/gost/pkg/logger"
)
@ -64,6 +66,8 @@ func main() {
normConfig(cfg)
log = logFromConfig(cfg.Log)
if outputCfgFile != "" {
if err := cfg.WriteFile(outputCfgFile); err != nil {
log.Fatal(err)
@ -71,8 +75,6 @@ func main() {
os.Exit(0)
}
log = logFromConfig(cfg.Log)
if cfg.Profiling != nil && cfg.Profiling.Enabled {
go func() {
addr := cfg.Profiling.Addr
@ -83,6 +85,31 @@ func main() {
log.Fatal(http.ListenAndServe(addr, nil))
}()
}
tlsCfg := cfg.TLS
if tlsCfg == nil {
tlsCfg = &config.TLSConfig{
Cert: "cert.pem",
Key: "key.pem",
CA: "ca.crt",
}
}
tlsConfig, err := tls_util.LoadTLSConfig(tlsCfg.Cert, tlsCfg.Key, tlsCfg.CA)
if err != nil {
// generate random self-signed certificate.
cert, err := tls_util.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.Debug("load TLS certificate files OK")
}
tls_util.DefaultConfig = tlsConfig
services := buildService(cfg)
for _, svc := range services {
go svc.Run()

View File

@ -1,40 +1,27 @@
log:
level: debug
services:
- name: service-0
url: ss://abc:123@:18338/:18338
addr: :18338
url: udp://:10053/192.168.8.8:53,192.168.8.1:53
addr: :10053
chain: chain-0
listener:
type: tcp
metadata:
users:
- abc:123
type: udp
handler:
type: tcp
metadata:
users:
- abc:123
type: udp
forwarder:
targets:
- :18338
- 192.168.8.8:53
- 192.168.8.1:53
chains:
- name: chain-0
hops:
- name: hop-0
nodes:
- name: node-0
url: socks://abc:123@:11080?type=abc&key=value
addr: :11080
url: relay://:8420
addr: :8420
dialer:
type: tcp
metadata:
key: value
type: abc
user:
- abc:123
connector:
type: socks
metadata:
key: value
type: abc
user:
- abc:123
type: relay

View File

@ -20,6 +20,7 @@ import (
_ "github.com/go-gost/gost/pkg/handler/forward/remote"
_ "github.com/go-gost/gost/pkg/handler/http"
_ "github.com/go-gost/gost/pkg/handler/relay"
_ "github.com/go-gost/gost/pkg/handler/sni"
_ "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"