UDP forwarding working now
This is using a library, which I'm not too happy about, but it'll work for the moment
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
module github.com/CalebQ42/darkstorm-server
|
||||
|
||||
go 1.17
|
||||
|
||||
require github.com/1lann/udp-forward v0.0.0-20191015034046-6b774a53ea39 // indirect
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
github.com/1lann/udp-forward v0.0.0-20191015034046-6b774a53ea39 h1:wAEqazqaAqb7wwijTl14KruBl7cvYytD3SkhXT9v5zs=
|
||||
github.com/1lann/udp-forward v0.0.0-20191015034046-6b774a53ea39/go.mod h1:zK6NTEHRcxPf9N4gcm0WXvE8RpsJfg/a8hMSW6dAQ0c=
|
||||
@@ -10,6 +10,8 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
forward "github.com/1lann/udp-forward"
|
||||
)
|
||||
|
||||
type link struct {
|
||||
@@ -71,6 +73,15 @@ failWaiting:
|
||||
|
||||
func createLink(port int, l link, failChan chan int) {
|
||||
log.Println("Linking", port, "to", l.addr, "with type", l.linkType)
|
||||
if l.isUDP() {
|
||||
_, err := forward.Forward(":"+strconv.Itoa(port), l.addr, forward.DefaultTimeout)
|
||||
if err != nil {
|
||||
log.Println("Error with udp forwarder on port", port, ":", err)
|
||||
failChan <- port
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
var tcpListen net.Listener
|
||||
var con net.Conn
|
||||
var err error
|
||||
@@ -82,23 +93,9 @@ func createLink(port int, l link, failChan chan int) {
|
||||
return
|
||||
}
|
||||
defer tcpListen.Close()
|
||||
} else if l.isUDP() {
|
||||
var addr *net.UDPAddr
|
||||
addr, err = net.ResolveUDPAddr(l.linkType, ":"+strconv.Itoa(port))
|
||||
if err != nil {
|
||||
log.Println("Error while parsing port", port, ":", err)
|
||||
failChan <- port
|
||||
return
|
||||
}
|
||||
con, err = net.ListenUDP(l.linkType, addr)
|
||||
if err != nil {
|
||||
log.Println("Error while listening to port", port, ":", err)
|
||||
}
|
||||
}
|
||||
for {
|
||||
if l.isTCP() {
|
||||
con, err = tcpListen.Accept()
|
||||
}
|
||||
if err != nil {
|
||||
log.Println("Error while trying to accept connection to port ", port, ":", err)
|
||||
failChan <- port
|
||||
@@ -110,19 +107,6 @@ func createLink(port int, l link, failChan chan int) {
|
||||
failChan <- port
|
||||
return
|
||||
}
|
||||
if l.isUDP() {
|
||||
var addr *net.UDPAddr
|
||||
addr, err = net.ResolveUDPAddr(l.linkType, ":"+strconv.Itoa(port))
|
||||
if err != nil {
|
||||
log.Println("Error while parsing port", port, ":", err)
|
||||
failChan <- port
|
||||
return
|
||||
}
|
||||
con, err = net.ListenUDP(l.linkType, addr)
|
||||
if err != nil {
|
||||
log.Println("Error while listening to port", port, ":", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user