更新至最新代码
This commit is contained in:
parent
edaaafbf9c
commit
9e42305909
@ -16,7 +16,6 @@ package frps
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -25,6 +24,7 @@ import (
|
|||||||
"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/version"
|
"github.com/fatedier/frp/utils/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,17 +44,16 @@ var (
|
|||||||
proxyBindAddr string
|
proxyBindAddr string
|
||||||
vhostHttpPort int
|
vhostHttpPort int
|
||||||
vhostHttpsPort int
|
vhostHttpsPort int
|
||||||
|
vhostHttpTimeout int64
|
||||||
dashboardAddr string
|
dashboardAddr string
|
||||||
dashboardPort int
|
dashboardPort int
|
||||||
dashboardUser string
|
dashboardUser string
|
||||||
dashboardPwd string
|
dashboardPwd string
|
||||||
assetsDir string
|
assetsDir string
|
||||||
logFile string
|
logFile string
|
||||||
logWay string
|
|
||||||
logLevel string
|
logLevel string
|
||||||
logMaxDays int64
|
logMaxDays int64
|
||||||
token string
|
token string
|
||||||
authTimeout int64
|
|
||||||
subDomainHost string
|
subDomainHost string
|
||||||
tcpMux bool
|
tcpMux bool
|
||||||
allowPorts string
|
allowPorts string
|
||||||
@ -73,17 +72,17 @@ func init() {
|
|||||||
rootCmd.PersistentFlags().StringVarP(&proxyBindAddr, "proxy_bind_addr", "", "0.0.0.0", "proxy bind address")
|
rootCmd.PersistentFlags().StringVarP(&proxyBindAddr, "proxy_bind_addr", "", "0.0.0.0", "proxy bind address")
|
||||||
rootCmd.PersistentFlags().IntVarP(&vhostHttpPort, "vhost_http_port", "", 0, "vhost http port")
|
rootCmd.PersistentFlags().IntVarP(&vhostHttpPort, "vhost_http_port", "", 0, "vhost http port")
|
||||||
rootCmd.PersistentFlags().IntVarP(&vhostHttpsPort, "vhost_https_port", "", 0, "vhost https port")
|
rootCmd.PersistentFlags().IntVarP(&vhostHttpsPort, "vhost_https_port", "", 0, "vhost https port")
|
||||||
|
rootCmd.PersistentFlags().Int64VarP(&vhostHttpTimeout, "vhost_http_timeout", "", 60, "vhost http response header timeout")
|
||||||
rootCmd.PersistentFlags().StringVarP(&dashboardAddr, "dashboard_addr", "", "0.0.0.0", "dasboard address")
|
rootCmd.PersistentFlags().StringVarP(&dashboardAddr, "dashboard_addr", "", "0.0.0.0", "dasboard address")
|
||||||
rootCmd.PersistentFlags().IntVarP(&dashboardPort, "dashboard_port", "", 0, "dashboard port")
|
rootCmd.PersistentFlags().IntVarP(&dashboardPort, "dashboard_port", "", 0, "dashboard port")
|
||||||
rootCmd.PersistentFlags().StringVarP(&dashboardUser, "dashboard_user", "", "admin", "dashboard user")
|
rootCmd.PersistentFlags().StringVarP(&dashboardUser, "dashboard_user", "", "admin", "dashboard user")
|
||||||
rootCmd.PersistentFlags().StringVarP(&dashboardPwd, "dashboard_pwd", "", "admin", "dashboard password")
|
rootCmd.PersistentFlags().StringVarP(&dashboardPwd, "dashboard_pwd", "", "admin", "dashboard password")
|
||||||
rootCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "log file")
|
rootCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "log file")
|
||||||
rootCmd.PersistentFlags().StringVarP(&logWay, "log_way", "", "console", "log way")
|
|
||||||
rootCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
rootCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||||
rootCmd.PersistentFlags().Int64VarP(&logMaxDays, "log_max_days", "", 3, "log_max_days")
|
rootCmd.PersistentFlags().Int64VarP(&logMaxDays, "log_max_days", "", 3, "log_max_days")
|
||||||
rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||||
rootCmd.PersistentFlags().Int64VarP(&authTimeout, "auth_timeout", "", 900, "auth timeout")
|
|
||||||
rootCmd.PersistentFlags().StringVarP(&subDomainHost, "subdomain_host", "", "", "subdomain host")
|
rootCmd.PersistentFlags().StringVarP(&subDomainHost, "subdomain_host", "", "", "subdomain host")
|
||||||
|
rootCmd.PersistentFlags().StringVarP(&allowPorts, "allow_ports", "", "", "allow ports")
|
||||||
rootCmd.PersistentFlags().Int64VarP(&maxPortsPerClient, "max_ports_per_client", "", 0, "max ports per client")
|
rootCmd.PersistentFlags().Int64VarP(&maxPortsPerClient, "max_ports_per_client", "", 0, "max ports per client")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,7 +97,13 @@ var rootCmd = &cobra.Command{
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
if cfgFile != "" {
|
if cfgFile != "" {
|
||||||
err = parseServerCommonCfg(CfgFileTypeIni, cfgFile)
|
var content string
|
||||||
|
content, err = config.GetRenderedConfFromFile(cfgFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
g.GlbServerCfg.CfgFile = cfgFile
|
||||||
|
err = parseServerCommonCfg(CfgFileTypeIni, content)
|
||||||
} else {
|
} else {
|
||||||
err = parseServerCommonCfg(CfgFileTypeCmd, "")
|
err = parseServerCommonCfg(CfgFileTypeCmd, "")
|
||||||
}
|
}
|
||||||
@ -121,30 +126,9 @@ func Execute() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunFrps(cfgFile string) error {
|
func parseServerCommonCfg(fileType int, content string) (err error) {
|
||||||
if showVersion {
|
|
||||||
fmt.Println(version.Full())
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var err error
|
|
||||||
if cfgFile != "" {
|
|
||||||
err = parseServerCommonCfg(CfgFileTypeIni, cfgFile)
|
|
||||||
} else {
|
|
||||||
err = parseServerCommonCfg(CfgFileTypeCmd, "")
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = runBackgroundServer()
|
|
||||||
fmt.Println(err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func parseServerCommonCfg(fileType int, filePath string) (err error) {
|
|
||||||
if fileType == CfgFileTypeIni {
|
if fileType == CfgFileTypeIni {
|
||||||
err = parseServerCommonCfgFromIni(filePath)
|
err = parseServerCommonCfgFromIni(content)
|
||||||
} else if fileType == CfgFileTypeCmd {
|
} else if fileType == CfgFileTypeCmd {
|
||||||
err = parseServerCommonCfgFromCmd()
|
err = parseServerCommonCfgFromCmd()
|
||||||
}
|
}
|
||||||
@ -152,8 +136,6 @@ func parseServerCommonCfg(fileType int, filePath string) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
g.GlbServerCfg.CfgFile = filePath
|
|
||||||
|
|
||||||
err = g.GlbServerCfg.ServerCommonConf.Check()
|
err = g.GlbServerCfg.ServerCommonConf.Check()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@ -163,13 +145,7 @@ func parseServerCommonCfg(fileType int, filePath string) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseServerCommonCfgFromIni(filePath string) (err error) {
|
func parseServerCommonCfgFromIni(content string) (err error) {
|
||||||
b, err := ioutil.ReadFile(filePath)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
content := string(b)
|
|
||||||
|
|
||||||
cfg, err := config.UnmarshalServerConfFromIni(&g.GlbServerCfg.ServerCommonConf, content)
|
cfg, err := config.UnmarshalServerConfFromIni(&g.GlbServerCfg.ServerCommonConf, content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -186,18 +162,35 @@ func parseServerCommonCfgFromCmd() (err error) {
|
|||||||
g.GlbServerCfg.ProxyBindAddr = proxyBindAddr
|
g.GlbServerCfg.ProxyBindAddr = proxyBindAddr
|
||||||
g.GlbServerCfg.VhostHttpPort = vhostHttpPort
|
g.GlbServerCfg.VhostHttpPort = vhostHttpPort
|
||||||
g.GlbServerCfg.VhostHttpsPort = vhostHttpsPort
|
g.GlbServerCfg.VhostHttpsPort = vhostHttpsPort
|
||||||
|
g.GlbServerCfg.VhostHttpTimeout = vhostHttpTimeout
|
||||||
g.GlbServerCfg.DashboardAddr = dashboardAddr
|
g.GlbServerCfg.DashboardAddr = dashboardAddr
|
||||||
g.GlbServerCfg.DashboardPort = dashboardPort
|
g.GlbServerCfg.DashboardPort = dashboardPort
|
||||||
g.GlbServerCfg.DashboardUser = dashboardUser
|
g.GlbServerCfg.DashboardUser = dashboardUser
|
||||||
g.GlbServerCfg.DashboardPwd = dashboardPwd
|
g.GlbServerCfg.DashboardPwd = dashboardPwd
|
||||||
g.GlbServerCfg.LogFile = logFile
|
g.GlbServerCfg.LogFile = logFile
|
||||||
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.SubDomainHost = subDomainHost
|
g.GlbServerCfg.SubDomainHost = subDomainHost
|
||||||
|
if len(allowPorts) > 0 {
|
||||||
|
// e.g. 1000-2000,2001,2002,3000-4000
|
||||||
|
ports, errRet := util.ParseRangeNumbers(allowPorts)
|
||||||
|
if errRet != nil {
|
||||||
|
err = fmt.Errorf("Parse conf error: allow_ports: %v", errRet)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, port := range ports {
|
||||||
|
g.GlbServerCfg.AllowPorts[int(port)] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
g.GlbServerCfg.MaxPortsPerClient = maxPortsPerClient
|
g.GlbServerCfg.MaxPortsPerClient = maxPortsPerClient
|
||||||
|
|
||||||
|
if logFile == "console" {
|
||||||
|
g.GlbClientCfg.LogWay = "console"
|
||||||
|
} else {
|
||||||
|
g.GlbClientCfg.LogWay = "file"
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,6 +209,33 @@ func runServer() (err error) {
|
|||||||
|
|
||||||
var service *server.Service
|
var service *server.Service
|
||||||
|
|
||||||
|
func RunFrps(cfgFile string) error {
|
||||||
|
if showVersion {
|
||||||
|
fmt.Println(version.Full())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
if cfgFile != "" {
|
||||||
|
var content string
|
||||||
|
content, err = config.GetRenderedConfFromFile(cfgFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
g.GlbServerCfg.CfgFile = cfgFile
|
||||||
|
err = parseServerCommonCfg(CfgFileTypeIni, content)
|
||||||
|
} else {
|
||||||
|
err = parseServerCommonCfg(CfgFileTypeCmd, "")
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = runBackgroundServer()
|
||||||
|
fmt.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func runBackgroundServer() (err error) {
|
func runBackgroundServer() (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)
|
||||||
|
@ -98,9 +98,9 @@ func NewService() (svr *Service, err error) {
|
|||||||
VisitorManager: controller.NewVisitorManager(),
|
VisitorManager: controller.NewVisitorManager(),
|
||||||
TcpPortManager: ports.NewPortManager("tcp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
TcpPortManager: ports.NewPortManager("tcp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
||||||
UdpPortManager: ports.NewPortManager("udp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
UdpPortManager: ports.NewPortManager("udp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
||||||
Closed: true,
|
|
||||||
closedCh: make(chan bool),
|
|
||||||
},
|
},
|
||||||
|
Closed: true,
|
||||||
|
closedCh: make(chan bool),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init group controller
|
// Init group controller
|
||||||
|
Loading…
Reference in New Issue
Block a user