mirror of
https://github.com/p4gefau1t/trojan-go.git
synced 2026-10-19 16:15:38 +00:00
add tls layer, fix websocket hostname
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/shadowsocks"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/simplesocks"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/socks"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/tls"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/transport"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/trojan"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/websocket"
|
||||
@@ -18,8 +19,11 @@ import (
|
||||
const Name = "CLIENT"
|
||||
|
||||
// GenerateClientTree generate general outbound protocol stack
|
||||
func GenerateClientTree(muxEnabled bool, wsEnabled bool, ssEnabled bool, routerEnabled bool) []string {
|
||||
func GenerateClientTree(transportPlugin bool, muxEnabled bool, wsEnabled bool, ssEnabled bool, routerEnabled bool) []string {
|
||||
clientStack := []string{transport.Name}
|
||||
if !transportPlugin {
|
||||
clientStack = append(clientStack, tls.Name)
|
||||
}
|
||||
if wsEnabled {
|
||||
clientStack = append(clientStack, websocket.Name)
|
||||
}
|
||||
@@ -40,7 +44,7 @@ func init() {
|
||||
proxy.RegisterProxyCreator(Name, func(ctx context.Context) (*proxy.Proxy, error) {
|
||||
cfg := config.FromContext(ctx, Name).(*Config)
|
||||
serverStack := []string{socks.Name}
|
||||
clientStack := GenerateClientTree(cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, cfg.Router.Enabled)
|
||||
clientStack := GenerateClientTree(cfg.TransportPlugin.Enabled, cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, cfg.Router.Enabled)
|
||||
c, err := proxy.CreateClientStack(ctx, clientStack)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -18,11 +18,16 @@ type ShadowsocksConfig struct {
|
||||
Enabled bool `json,yaml:"enabled"`
|
||||
}
|
||||
|
||||
type TransportPluginConfig struct {
|
||||
Enabled bool `json,yaml:"enabled"`
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
Mux MuxConfig `json,yaml:"mux"`
|
||||
Websocket WebsocketConfig `json,yaml:"websocket"`
|
||||
Router RouterConfig `json,yaml:"router"`
|
||||
Shadowsocks ShadowsocksConfig `json,yaml:"shadowsocks"`
|
||||
Mux MuxConfig `json,yaml:"mux"`
|
||||
Websocket WebsocketConfig `json,yaml:"websocket"`
|
||||
Router RouterConfig `json,yaml:"router"`
|
||||
Shadowsocks ShadowsocksConfig `json,yaml:"shadowsocks"`
|
||||
TransportPlugin TransportPluginConfig `json:"transport_plugin" yaml:"transport-plugin"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
@@ -15,7 +15,7 @@ func init() {
|
||||
proxy.RegisterProxyCreator(Name, func(ctx context.Context) (*proxy.Proxy, error) {
|
||||
cfg := config.FromContext(ctx, Name).(*client.Config)
|
||||
serverStack := []string{dokodemo.Name}
|
||||
clientStack := client.GenerateClientTree(cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, cfg.Router.Enabled)
|
||||
clientStack := client.GenerateClientTree(cfg.TransportPlugin.Enabled, cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, cfg.Router.Enabled)
|
||||
c, err := proxy.CreateClientStack(ctx, clientStack)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ func init() {
|
||||
proxy.RegisterProxyCreator(Name, func(ctx context.Context) (*proxy.Proxy, error) {
|
||||
cfg := config.FromContext(ctx, Name).(*client.Config)
|
||||
serverStack := []string{tproxy.Name}
|
||||
clientStack := client.GenerateClientTree(cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, false)
|
||||
clientStack := client.GenerateClientTree(cfg.TransportPlugin.Enabled, cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, false)
|
||||
c, err := proxy.CreateClientStack(ctx, clientStack)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -5,11 +5,12 @@ import (
|
||||
"github.com/p4gefau1t/trojan-go/config"
|
||||
"github.com/p4gefau1t/trojan-go/proxy"
|
||||
"github.com/p4gefau1t/trojan-go/proxy/client"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/freedom"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/mux"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/raw"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/router"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/shadowsocks"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/simplesocks"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/tls"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/transport"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/trojan"
|
||||
"github.com/p4gefau1t/trojan-go/tunnel/websocket"
|
||||
@@ -24,10 +25,11 @@ func init() {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
clientStack := []string{raw.Name}
|
||||
clientStack := []string{freedom.Name}
|
||||
if cfg.Router.Enabled {
|
||||
clientStack = []string{raw.Name, router.Name}
|
||||
clientStack = []string{freedom.Name, router.Name}
|
||||
}
|
||||
|
||||
root := &proxy.Node{
|
||||
Name: transport.Name,
|
||||
Next: make(map[string]*proxy.Node),
|
||||
@@ -36,6 +38,10 @@ func init() {
|
||||
Server: s,
|
||||
}
|
||||
|
||||
if !cfg.TransportPlugin.Enabled {
|
||||
root = root.BuildNext(tls.Name)
|
||||
}
|
||||
|
||||
trojanSubTree := root
|
||||
if cfg.Shadowsocks.Enabled {
|
||||
trojanSubTree = trojanSubTree.BuildNext(shadowsocks.Name)
|
||||
|
||||
Reference in New Issue
Block a user