local port for outbound conn #11
@ -70,11 +70,15 @@ func (c Configuration) Build() (*proxy.Proxy, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func buildTcp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() proxy.MacVerifier) error {
|
func buildTcp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() proxy.MacVerifier) error {
|
||||||
|
var laddr func() string
|
||||||
|
if peer.LocalPort == 0 {
|
||||||
|
laddr = func() string { return fmt.Sprintf("%s:", peer.GetLocalHost()) }
|
||||||
|
} else {
|
||||||
|
laddr = func() string { return fmt.Sprintf("%s:%d", peer.GetLocalHost(), peer.LocalPort) }
|
||||||
|
}
|
||||||
|
|
||||||
if peer.RemoteHost != "" {
|
if peer.RemoteHost != "" {
|
||||||
f, err := tcp.InitiateFlow(
|
f, err := tcp.InitiateFlow(laddr, fmt.Sprintf("%s:%d", peer.RemoteHost, peer.RemotePort))
|
||||||
func() string { return fmt.Sprintf("%s:", peer.GetLocalHost()) },
|
|
||||||
fmt.Sprintf("%s:%d", peer.RemoteHost, peer.RemotePort),
|
|
||||||
)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -86,7 +90,7 @@ func buildTcp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() p
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err := tcp.NewListener(p, fmt.Sprintf("%s:%d", peer.GetLocalHost(), peer.LocalPort), v, g)
|
err := tcp.NewListener(p, laddr(), v, g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -95,6 +99,13 @@ func buildTcp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() p
|
|||||||
}
|
}
|
||||||
|
|
||||||
func buildUdp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() proxy.MacVerifier) error {
|
func buildUdp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() proxy.MacVerifier) error {
|
||||||
|
var laddr func() string
|
||||||
|
if peer.LocalPort == 0 {
|
||||||
|
laddr = func() string { return fmt.Sprintf("%s:", peer.GetLocalHost()) }
|
||||||
|
} else {
|
||||||
|
laddr = func() string { return fmt.Sprintf("%s:%d", peer.GetLocalHost(), peer.LocalPort) }
|
||||||
|
}
|
||||||
|
|
||||||
var c func() udp.Congestion
|
var c func() udp.Congestion
|
||||||
switch peer.Congestion {
|
switch peer.Congestion {
|
||||||
case "None":
|
case "None":
|
||||||
@ -107,7 +118,7 @@ func buildUdp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() p
|
|||||||
|
|
||||||
if peer.RemoteHost != "" {
|
if peer.RemoteHost != "" {
|
||||||
f, err := udp.InitiateFlow(
|
f, err := udp.InitiateFlow(
|
||||||
func() string { return fmt.Sprintf("%s:", peer.GetLocalHost()) },
|
laddr,
|
||||||
fmt.Sprintf("%s:%d", peer.RemoteHost, peer.RemotePort),
|
fmt.Sprintf("%s:%d", peer.RemoteHost, peer.RemotePort),
|
||||||
v(),
|
v(),
|
||||||
g(),
|
g(),
|
||||||
@ -125,7 +136,7 @@ func buildUdp(p *proxy.Proxy, peer Peer, g func() proxy.MacGenerator, v func() p
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err := udp.NewListener(p, fmt.Sprintf("%s:%d", peer.GetLocalHost(), peer.LocalPort), v, g, c)
|
err := udp.NewListener(p, laddr(), v, g, c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user