Last active
November 28, 2022 23:40
-
-
Save njhsi/8d8c90168c27ec6824514ed9b17e6332 to your computer and use it in GitHub Desktop.
patch for v2ray-plugin to enable reverse port tunnel (server8000 -> client8000)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/main.go b/main.go | |
index 2212ddf..1ecab32 100644 | |
--- a/main.go | |
+++ b/main.go | |
@@ -19,6 +19,8 @@ import ( | |
"v2ray.com/core/app/dispatcher" | |
"v2ray.com/core/app/proxyman" | |
+ "v2ray.com/core/app/reverse" | |
+ "v2ray.com/core/app/router" | |
_ "v2ray.com/core/app/proxyman/inbound" | |
_ "v2ray.com/core/app/proxyman/outbound" | |
@@ -209,8 +211,21 @@ func generateConfig() (*core.Config, error) { | |
proxyAddress = net.ParseAddress("v1.mux.cool") | |
} | |
localAddrs := parseLocalAddr(*localAddr) | |
- inbounds := make([]*core.InboundHandlerConfig, len(localAddrs)) | |
- | |
+ inbounds := make([]*core.InboundHandlerConfig, len(localAddrs)+1) | |
+ inbounds[len(localAddrs)] = &core.InboundHandlerConfig{ | |
+ Tag: "external", | |
+ ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ | |
+ PortRange: net.SinglePortRange(8000), | |
+ Listen: net.NewIPOrDomain(net.LocalHostIP), | |
+ }), | |
+ ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ | |
+ Address: net.NewIPOrDomain(net.LocalHostIP), | |
+ Port: uint32(8000), | |
+ NetworkList: &net.NetworkList{ | |
+ Network: []net.Network{net.Network_TCP}, | |
+ }, | |
+ }), | |
+ } | |
for i := 0; i < len(localAddrs); i++ { | |
inbounds[i] = &core.InboundHandlerConfig{ | |
ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ | |
@@ -230,7 +245,26 @@ func generateConfig() (*core.Config, error) { | |
Outbound: []*core.OutboundHandlerConfig{{ | |
ProxySettings: outboundProxy, | |
}}, | |
- App: apps, | |
+ App: append(apps, serial.ToTypedMessage(&reverse.Config{ | |
+ PortalConfig: []*reverse.PortalConfig{{ | |
+ Tag: "portal", | |
+ Domain: "test.v2ray.com", | |
+ }}, | |
+ }), | |
+ serial.ToTypedMessage(&router.Config{ | |
+ Rule: []*router.RoutingRule{ | |
+ { | |
+ Domain: []*router.Domain{{Type: router.Domain_Full, Value: "test.v2ray.com"},}, | |
+ TargetTag: &router.RoutingRule_Tag{ Tag: "portal", }, | |
+ }, | |
+ { | |
+ InboundTag: []string{"external"}, | |
+ TargetTag: &router.RoutingRule_Tag{ Tag: "portal", }, | |
+ }, | |
+ }, | |
+ }), | |
+ ), | |
+ | |
}, nil | |
} else { | |
senderConfig := proxyman.SenderConfig{StreamSettings: &streamConfig} | |
@@ -251,8 +285,31 @@ func generateConfig() (*core.Config, error) { | |
Outbound: []*core.OutboundHandlerConfig{{ | |
SenderSettings: serial.ToTypedMessage(&senderConfig), | |
ProxySettings: outboundProxy, | |
+ Tag: "tunnel", | |
+ }, { | |
+ Tag: "freedom", | |
+ ProxySettings: serial.ToTypedMessage(&freedom.Config{}), | |
}}, | |
- App: apps, | |
+ App: append(apps, | |
+ serial.ToTypedMessage(&reverse.Config{ | |
+ BridgeConfig: []*reverse.BridgeConfig{{ | |
+ Tag: "bridge", | |
+ Domain: "test.v2ray.com", | |
+ }}, | |
+ }), | |
+ serial.ToTypedMessage(&router.Config{ | |
+ Rule: []*router.RoutingRule{ | |
+ { | |
+ Domain: []*router.Domain{{Type: router.Domain_Full, Value: "test.v2ray.com"},}, | |
+ TargetTag: &router.RoutingRule_Tag{ Tag: "tunnel", }, | |
+ }, | |
+ { | |
+ InboundTag: []string{"bridge"}, | |
+ TargetTag: &router.RoutingRule_Tag{ Tag: "freedom", }, | |
+ }, | |
+ }, | |
+ }), | |
+ ), | |
}, nil | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment