Allow multiple sub sections for tcp/udp server
This commit is contained in:
parent
66a69f873f
commit
2f06436fc8
@ -16,17 +16,18 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
|
||||||
|
|
||||||
"github.com/fatedier/frp/g"
|
"github.com/fatedier/frp/g"
|
||||||
"github.com/fatedier/frp/models/config"
|
"github.com/fatedier/frp/models/config"
|
||||||
"github.com/fatedier/frp/server"
|
"github.com/fatedier/frp/server"
|
||||||
"github.com/fatedier/frp/utils/log"
|
"github.com/fatedier/frp/utils/log"
|
||||||
"github.com/fatedier/frp/utils/util"
|
"github.com/fatedier/frp/utils/util"
|
||||||
|
|
||||||
|
// "github.com/fatedier/frp/utils/util"
|
||||||
"github.com/fatedier/frp/utils/version"
|
"github.com/fatedier/frp/utils/version"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/vaughan0/go-ini"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -101,20 +102,36 @@ var rootCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if cfgFile != "" {
|
if cfgFile != "" {
|
||||||
err = parseServerCommonCfg(CfgFileTypeIni, cfgFile)
|
err = parseServerCommonCfg(CfgFileTypeIni, cfgFile)
|
||||||
} else {
|
|
||||||
err = parseServerCommonCfg(CfgFileTypeCmd, "")
|
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
conf, err := ini.LoadFile(cfgFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for name := range conf {
|
||||||
|
err = parseSubServerCommonCfgFromIni(cfgFile, name)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = parseServerCommonCfg(CfgFileTypeCmd, "")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = runServer()
|
err = runServer()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -137,12 +154,12 @@ func parseServerCommonCfg(fileType int, filePath string) (err error) {
|
|||||||
|
|
||||||
g.GlbServerCfg.CfgFile = filePath
|
g.GlbServerCfg.CfgFile = filePath
|
||||||
|
|
||||||
err = g.GlbServerCfg.ServerCommonConf.Check()
|
err = g.GlbServerCfg.ServerSectionConf.Check()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
config.InitServerCfg(&g.GlbServerCfg.ServerCommonConf)
|
config.InitServerCfg(&g.GlbServerCfg.ServerSectionConf)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,11 +170,12 @@ func parseServerCommonCfgFromIni(filePath string) (err error) {
|
|||||||
}
|
}
|
||||||
content := string(b)
|
content := string(b)
|
||||||
|
|
||||||
cfg, err := config.UnmarshalServerConfFromIni(&g.GlbServerCfg.ServerCommonConf, content)
|
cfg, err := config.UnmarshalServerConfFromIni(&g.GlbServerCfg.ServerSectionConf, content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
g.GlbServerCfg.ServerCommonConf = *cfg
|
|
||||||
|
g.GlbServerCfg.ServerSectionConf = *cfg
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,14 +196,15 @@ func parseServerCommonCfgFromCmd() (err error) {
|
|||||||
g.GlbServerCfg.LogWay = logWay
|
g.GlbServerCfg.LogWay = logWay
|
||||||
g.GlbServerCfg.LogLevel = logLevel
|
g.GlbServerCfg.LogLevel = logLevel
|
||||||
g.GlbServerCfg.LogMaxDays = logMaxDays
|
g.GlbServerCfg.LogMaxDays = logMaxDays
|
||||||
g.GlbServerCfg.Token = token
|
// g.GlbServerCfg.Token = token
|
||||||
g.GlbServerCfg.AuthTimeout = authTimeout
|
g.GlbServerCfg.AuthTimeout = authTimeout
|
||||||
g.GlbServerCfg.SubDomainHost = subDomainHost
|
g.GlbServerCfg.SubDomainHost = subDomainHost
|
||||||
|
/*
|
||||||
if len(allowPorts) > 0 {
|
if len(allowPorts) > 0 {
|
||||||
// e.g. 1000-2000,2001,2002,3000-4000
|
// e.g. 1000-2000,2001,2002,3000-4000
|
||||||
ports, errRet := util.ParseRangeNumbers(allowPorts)
|
ports, errRet := util.ParseRangeNumbers(allowPorts)
|
||||||
if errRet != nil {
|
if errRet != nil {
|
||||||
err = fmt.Errorf("Parse conf error: allow_ports: %v", errRet)
|
err = fmt.Errorf("Parse cmd conf error: allow_ports: %v", errRet)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,13 +212,50 @@ func parseServerCommonCfgFromCmd() (err error) {
|
|||||||
g.GlbServerCfg.AllowPorts[int(port)] = struct{}{}
|
g.GlbServerCfg.AllowPorts[int(port)] = struct{}{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
g.GlbServerCfg.MaxPortsPerClient = maxPortsPerClient
|
g.GlbServerCfg.MaxPortsPerClient = maxPortsPerClient
|
||||||
|
|
||||||
|
cfg := config.GetDefaultSubServerConf()
|
||||||
|
cfg.Section = "common"
|
||||||
|
cfg.Token = token
|
||||||
|
if len(allowPorts) > 0 {
|
||||||
|
// e.g. 1000-2000,2001,2002,3000-4000
|
||||||
|
ports, errRet := util.ParseRangeNumbers(allowPorts)
|
||||||
|
if errRet != nil {
|
||||||
|
err = fmt.Errorf("Parse cmd conf error: allow_ports: %v", errRet)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, port := range ports {
|
||||||
|
cfg.AllowPorts[int(port)] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.GlbServerSubSectionMap["common"] = cfg
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func parseSubServerCommonCfgFromIni(filePath string, section string) (err error) {
|
||||||
|
b, err := ioutil.ReadFile(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
content := string(b)
|
||||||
|
|
||||||
|
cfg, err := config.UnmarshalSubServerConfFromIni(content, section)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
g.GlbServerSubSectionMap[section] = cfg
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func runServer() (err error) {
|
func runServer() (err error) {
|
||||||
log.InitLog(g.GlbServerCfg.LogWay, g.GlbServerCfg.LogFile, g.GlbServerCfg.LogLevel,
|
log.InitLog(g.GlbServerCfg.LogWay, g.GlbServerCfg.LogFile, g.GlbServerCfg.LogLevel, g.GlbServerCfg.LogMaxDays)
|
||||||
g.GlbServerCfg.LogMaxDays)
|
|
||||||
svr, err := server.NewService()
|
svr, err := server.NewService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user