added barrier escape NAT support

This commit is contained in:
2023-03-01 17:26:14 +00:00
parent c88b4343ce
commit 2d2c083744
2 changed files with 258 additions and 237 deletions

View File

@@ -8,7 +8,7 @@ import (
// EscapeNAT Func to escape NAT
// - 1 port for server
// - 2 port for barrierKVM
func EscapeNAT(ScreenSharePort, GameplayServerPort string) (ServerPort string, ScreensharePort string, barrierKVMport string, err error) {
func EscapeNAT(ScreenSharePort, GameplayServerPort string) (ServerPort string, ScreensharePort string, err error) {
// Get free port from P2PRC server node
serverPort, err := frp.GetFRPServerPort("http://64.227.168.102:8088")
@@ -39,8 +39,12 @@ func EscapeNAT(ScreenSharePort, GameplayServerPort string) (ServerPort string, S
return
}
return
}
func EscapeNATBarrier() (barrierKVMport string, err error) {
// Get free port from P2PRC server node
serverPort, err = frp.GetFRPServerPort("http://64.227.168.102:8088")
serverPort, err := frp.GetFRPServerPort("http://64.227.168.102:8088")
if err != nil {
return

31
main.go
View File

@@ -17,6 +17,7 @@ import (
func main() {
addr := flag.String("addr", "0.0.0.0", "Listen address")
//port := flag.String("port", "8888", "port for running the server")
barrier := flag.Bool("barrier", false, "set external port barrier")
tls := flag.Bool("tls", false, "Use TLS")
setconfig := flag.Bool("setconfig", false, "Generates a config file")
certFile := flag.String("certFile", "files/server.crt", "TLS cert file")
@@ -43,6 +44,27 @@ func main() {
return
}
Config, err := config.ConfigInit()
if err != nil {
log.Fatalln(err)
}
// if barrier flag is provided
if *barrier {
natBarrier, err := core.EscapeNATBarrier()
if err != nil {
fmt.Println(err)
return
}
Config.NATEscapeBarrierPort = natBarrier
err = Config.WriteConfig()
if err != nil {
return
}
fmt.Println(Config.IPAddress + ":" + Config.NATEscapeBarrierPort)
return
}
// Print out room information
if *roomInfo {
room, err := core.ReadRoomsFile()
@@ -87,13 +109,8 @@ func main() {
return
}
Config, err := config.ConfigInit()
if err != nil {
log.Fatalln(err)
}
// running implementation to escape NAT
GameServerPort, ScreenSharePort, barrireKVM, err := core.EscapeNAT(Config.InternalScreenSharePort, Config.InternalGameServerPort)
GameServerPort, ScreenSharePort, err := core.EscapeNAT(Config.InternalScreenSharePort, Config.InternalGameServerPort)
if err != nil {
log.Fatalln(err)
}
@@ -101,7 +118,7 @@ func main() {
Config.IPAddress = "64.227.168.102"
Config.NATEscapeGameServerPort = GameServerPort
Config.NATEscapeScreenSharePort = ScreenSharePort
Config.NATEscapeBarrierPort = barrireKVM
Config.NATEscapeBarrierPort = ""
err = Config.WriteConfig()
if err != nil {