You've already forked v2ray-core
get rid of annoying firewall warnings
This commit is contained in:
@@ -26,6 +26,7 @@ type DokodemoDoor struct {
|
||||
udpHub *hub.UDPHub
|
||||
udpServer *hub.UDPServer
|
||||
listeningPort v2net.Port
|
||||
listeningAddress v2net.Address
|
||||
}
|
||||
|
||||
func NewDokodemoDoor(config *Config, space app.Space) *DokodemoDoor {
|
||||
@@ -65,25 +66,26 @@ func (this *DokodemoDoor) Close() {
|
||||
}
|
||||
}
|
||||
|
||||
func (this *DokodemoDoor) Listen(port v2net.Port) error {
|
||||
func (this *DokodemoDoor) Listen(address v2net.Address, port v2net.Port) error {
|
||||
if this.accepting {
|
||||
if this.listeningPort == port {
|
||||
if this.listeningPort == port && this.listeningAddress.Equals(address) {
|
||||
return nil
|
||||
} else {
|
||||
return proxy.ErrorAlreadyListening
|
||||
}
|
||||
}
|
||||
this.listeningPort = port
|
||||
this.listeningAddress = address
|
||||
this.accepting = true
|
||||
|
||||
if this.config.Network.HasNetwork(v2net.TCPNetwork) {
|
||||
err := this.ListenTCP(port)
|
||||
err := this.ListenTCP(address, port)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if this.config.Network.HasNetwork(v2net.UDPNetwork) {
|
||||
err := this.ListenUDP(port)
|
||||
err := this.ListenUDP(address, port)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -91,9 +93,9 @@ func (this *DokodemoDoor) Listen(port v2net.Port) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (this *DokodemoDoor) ListenUDP(port v2net.Port) error {
|
||||
func (this *DokodemoDoor) ListenUDP(address v2net.Address, port v2net.Port) error {
|
||||
this.udpServer = hub.NewUDPServer(this.packetDispatcher)
|
||||
udpHub, err := hub.ListenUDP(port, this.handleUDPPackets)
|
||||
udpHub, err := hub.ListenUDP(address, port, this.handleUDPPackets)
|
||||
if err != nil {
|
||||
log.Error("Dokodemo failed to listen on port ", port, ": ", err)
|
||||
return err
|
||||
@@ -118,8 +120,8 @@ func (this *DokodemoDoor) handleUDPResponse(dest v2net.Destination, payload *all
|
||||
this.udpHub.WriteTo(payload.Value, dest)
|
||||
}
|
||||
|
||||
func (this *DokodemoDoor) ListenTCP(port v2net.Port) error {
|
||||
tcpListener, err := hub.ListenTCP(port, this.HandleTCPConnection, nil)
|
||||
func (this *DokodemoDoor) ListenTCP(address v2net.Address, port v2net.Port) error {
|
||||
tcpListener, err := hub.ListenTCP(address, port, this.HandleTCPConnection, nil)
|
||||
if err != nil {
|
||||
log.Error("Dokodemo: Failed to listen on port ", port, ": ", err)
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user