Quellcode durchsuchen

only build for linux

v2ray vor 9 Jahren
Ursprung
Commit
679d646571
3 geänderte Dateien mit 42 neuen und 20 gelöschten Zeilen
  1. 0 20
      proxy/dokodemo/dokodemo.go
  2. 30 0
      proxy/dokodemo/sockopt_linux.go
  3. 12 0
      proxy/dokodemo/sockopt_other.go

+ 0 - 20
proxy/dokodemo/dokodemo.go

@@ -2,7 +2,6 @@ package dokodemo
 
 import (
 	"sync"
-	"syscall"
 
 	"github.com/v2ray/v2ray-core/app"
 	"github.com/v2ray/v2ray-core/app/dispatcher"
@@ -15,8 +14,6 @@ import (
 	"github.com/v2ray/v2ray-core/transport/hub"
 )
 
-const SO_ORIGINAL_DST = 80
-
 type DokodemoDoor struct {
 	tcpMutex         sync.RWMutex
 	udpMutex         sync.RWMutex
@@ -172,23 +169,6 @@ func (this *DokodemoDoor) HandleTCPConnection(conn *hub.Connection) {
 	inputFinish.Lock()
 }
 
-func GetOriginalDestination(conn *hub.Connection) v2net.Destination {
-	fd, err := conn.SysFd()
-	if err != nil {
-		log.Info("Dokodemo: Failed to get original destination: ", err)
-		return nil
-	}
-
-	addr, err := syscall.GetsockoptIPv6Mreq(fd, syscall.IPPROTO_IP, SO_ORIGINAL_DST)
-	if err != nil {
-		log.Info("Dokodemo: Failed to call getsockopt: ", err)
-		return nil
-	}
-	ip := v2net.IPAddress(addr.Multiaddr[4:8])
-	port := uint16(addr.Multiaddr[2])<<8 + uint16(addr.Multiaddr[3])
-	return v2net.TCPDestination(ip, v2net.Port(port))
-}
-
 func init() {
 	internal.MustRegisterInboundHandlerCreator("dokodemo-door",
 		func(space app.Space, rawConfig interface{}, meta *proxy.InboundHandlerMeta) (proxy.InboundHandler, error) {

+ 30 - 0
proxy/dokodemo/sockopt_linux.go

@@ -0,0 +1,30 @@
+// +build linux
+
+package dokodemo
+
+import (
+	"syscall"
+
+	"github.com/v2ray/v2ray-core/common/log"
+	v2net "github.com/v2ray/v2ray-core/common/net"
+	"github.com/v2ray/v2ray-core/transport/hub"
+)
+
+const SO_ORIGINAL_DST = 80
+
+func GetOriginalDestination(conn *hub.Connection) v2net.Destination {
+	fd, err := conn.SysFd()
+	if err != nil {
+		log.Info("Dokodemo: Failed to get original destination: ", err)
+		return nil
+	}
+
+	addr, err := syscall.GetsockoptIPv6Mreq(fd, syscall.IPPROTO_IP, SO_ORIGINAL_DST)
+	if err != nil {
+		log.Info("Dokodemo: Failed to call getsockopt: ", err)
+		return nil
+	}
+	ip := v2net.IPAddress(addr.Multiaddr[4:8])
+	port := uint16(addr.Multiaddr[2])<<8 + uint16(addr.Multiaddr[3])
+	return v2net.TCPDestination(ip, v2net.Port(port))
+}

+ 12 - 0
proxy/dokodemo/sockopt_other.go

@@ -0,0 +1,12 @@
+// +build !linux
+
+package dokodemo
+
+import (
+	v2net "github.com/v2ray/v2ray-core/common/net"
+	"github.com/v2ray/v2ray-core/transport/hub"
+)
+
+func GetOriginalDestination(conn *hub.Connection) v2net.Destination {
+	return nil
+}