added route to auto create FRP port

This commit is contained in:
2023-01-17 18:14:47 +00:00
parent 120654a901
commit 1cd4fa87d7
4 changed files with 709 additions and 702 deletions

View File

@@ -1,48 +1,45 @@
package frp
import (
configP2PRC "git.sr.ht/~akilan1999/p2p-rendering-computation/config"
"github.com/fatedier/frp/pkg/config"
"github.com/fatedier/frp/server"
"strconv"
"github.com/fatedier/frp/pkg/config"
"github.com/fatedier/frp/server"
"github.com/phayes/freeport"
)
// TODO: Implement a way to
// check if ports are taken
type Server struct {
address string
port int
address string
port int
}
// StartFRPProxyFromConfig starts
// StartFRPProxyFromRandom starts
// reverse proxy server based on
// the port provided in the config file
// field FRPServerPort.
func StartFRPProxyFromConfig() error {
// gets current configuration
config, err := configP2PRC.ConfigInit()
if err != nil {
return err
}
// a random port generated
func StartFRPProxyFromRandom() (int, error) {
// gets current configuration
//config, err := configP2PRC.ConfigInit()
//if err != nil {
// return err
//}
var s Server
s.address = "0.0.0.0"
// Converting config port to int
port, err := strconv.Atoi(config.FRPServerPort)
if err != nil {
return err
}
s.port = port
var s Server
s.address = "0.0.0.0"
// start FRP server
// use random port
OpenPorts, err := freeport.GetFreePorts(1)
if err != nil {
return 0, err
}
err = s.StartFRPServer()
if err != nil {
return err
}
s.port = OpenPorts[0]
return nil
// start FRP server
go s.StartFRPServer()
return OpenPorts[0], nil
}
@@ -51,22 +48,22 @@ func StartFRPProxyFromConfig() error {
// This function starts a server that can act as a reverse
// proxy for nodes behind NAT.
func (s *Server) StartFRPServer() error {
baseConfig := config.GetDefaultServerConf()
baseConfig.BindAddr = s.address
baseConfig := config.GetDefaultServerConf()
baseConfig.BindAddr = s.address
//TODO look into later for dashboard
//baseConfig.DashboardAddr = "127.0.0.1"
//baseConfig.DashboardPort = 8754
//baseConfig.DashboardUser = "admin"
//baseConfig.DashboardPwd = "admin"
//TODO look into later for dashboard
//baseConfig.DashboardAddr = "127.0.0.1"
//baseConfig.DashboardPort = 8754
//baseConfig.DashboardUser = "admin"
//baseConfig.DashboardPwd = "admin"
// todo change to make it a dynamic port
baseConfig.BindPort = s.port
service, err := server.NewService(baseConfig)
if err != nil {
return err
}
// todo change to make it a dynamic port
baseConfig.BindPort = s.port
service, err := server.NewService(baseConfig)
if err != nil {
return err
}
service.Run()
return nil
service.Run()
return nil
}