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:
Caleb Gardner
2021-09-23 15:51:10 -05:00
parent 4596c0315a
commit f77bdf9e5c
3 changed files with 16 additions and 28 deletions
+2
View File
@@ -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
+2
View File
@@ -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=
+11 -27
View File
@@ -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)
}
}
}
}