mirror of
https://github.com/luscis/openlan.git
synced 2025-10-21 08:00:30 +08:00
clone from danieldin95
This commit is contained in:
28
pkg/proxy/ss/tcp_linux.go
Executable file
28
pkg/proxy/ss/tcp_linux.go
Executable file
@@ -0,0 +1,28 @@
|
||||
package ss
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/shadowsocks/go-shadowsocks2/nfutil"
|
||||
"github.com/shadowsocks/go-shadowsocks2/socks"
|
||||
)
|
||||
|
||||
func getOrigDst(c net.Conn, ipv6 bool) (socks.Addr, error) {
|
||||
if tc, ok := c.(*net.TCPConn); ok {
|
||||
addr, err := nfutil.GetOrigDst(tc, ipv6)
|
||||
return socks.ParseAddr(addr.String()), err
|
||||
}
|
||||
panic("not a TCP connection")
|
||||
}
|
||||
|
||||
// Listen on addr for netfilter redirected TCP connections
|
||||
func redirLocal(addr, server string, shadow func(net.Conn) net.Conn) {
|
||||
logf("TCP redirect %s <-> %s", addr, server)
|
||||
tcpLocal(addr, server, shadow, func(c net.Conn) (socks.Addr, error) { return getOrigDst(c, false) })
|
||||
}
|
||||
|
||||
// Listen on addr for netfilter redirected TCP IPv6 connections.
|
||||
func redir6Local(addr, server string, shadow func(net.Conn) net.Conn) {
|
||||
logf("TCP6 redirect %s <-> %s", addr, server)
|
||||
tcpLocal(addr, server, shadow, func(c net.Conn) (socks.Addr, error) { return getOrigDst(c, true) })
|
||||
}
|
Reference in New Issue
Block a user