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
|
module github.com/CalebQ42/darkstorm-server
|
||||||
|
|
||||||
go 1.17
|
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"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
forward "github.com/1lann/udp-forward"
|
||||||
)
|
)
|
||||||
|
|
||||||
type link struct {
|
type link struct {
|
||||||
@@ -71,6 +73,15 @@ failWaiting:
|
|||||||
|
|
||||||
func createLink(port int, l link, failChan chan int) {
|
func createLink(port int, l link, failChan chan int) {
|
||||||
log.Println("Linking", port, "to", l.addr, "with type", l.linkType)
|
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 tcpListen net.Listener
|
||||||
var con net.Conn
|
var con net.Conn
|
||||||
var err error
|
var err error
|
||||||
@@ -82,23 +93,9 @@ func createLink(port int, l link, failChan chan int) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer tcpListen.Close()
|
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 {
|
for {
|
||||||
if l.isTCP() {
|
|
||||||
con, err = tcpListen.Accept()
|
con, err = tcpListen.Accept()
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error while trying to accept connection to port ", port, ":", err)
|
log.Println("Error while trying to accept connection to port ", port, ":", err)
|
||||||
failChan <- port
|
failChan <- port
|
||||||
@@ -110,19 +107,6 @@ func createLink(port int, l link, failChan chan int) {
|
|||||||
failChan <- port
|
failChan <- port
|
||||||
return
|
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