conf: support render configure file using environment variables

This commit is contained in:
fatedier
2018-12-11 11:46:12 +08:00
parent b61cb14c8f
commit 25cfda5768
6 changed files with 167 additions and 48 deletions

View File

@ -17,7 +17,6 @@ package sub
import (
"context"
"fmt"
"io/ioutil"
"net"
"os"
"os/signal"
@ -27,7 +26,6 @@ import (
"time"
"github.com/spf13/cobra"
ini "github.com/vaughan0/go-ini"
"github.com/fatedier/frp/client"
"github.com/fatedier/frp/g"
@ -111,9 +109,9 @@ func handleSignal(svr *client.Service) {
os.Exit(0)
}
func parseClientCommonCfg(fileType int, filePath string) (err error) {
func parseClientCommonCfg(fileType int, content string) (err error) {
if fileType == CfgFileTypeIni {
err = parseClientCommonCfgFromIni(filePath)
err = parseClientCommonCfgFromIni(content)
} else if fileType == CfgFileTypeCmd {
err = parseClientCommonCfgFromCmd()
}
@ -121,8 +119,6 @@ func parseClientCommonCfg(fileType int, filePath string) (err error) {
return
}
g.GlbClientCfg.CfgFile = cfgFile
err = g.GlbClientCfg.ClientCommonConf.Check()
if err != nil {
return
@ -130,13 +126,7 @@ func parseClientCommonCfg(fileType int, filePath string) (err error) {
return
}
func parseClientCommonCfgFromIni(filePath string) (err error) {
b, err := ioutil.ReadFile(filePath)
if err != nil {
return err
}
content := string(b)
func parseClientCommonCfgFromIni(content string) (err error) {
cfg, err := config.UnmarshalClientConfFromIni(&g.GlbClientCfg.ClientCommonConf, content)
if err != nil {
return err
@ -175,17 +165,19 @@ func parseClientCommonCfgFromCmd() (err error) {
}
func runClient(cfgFilePath string) (err error) {
err = parseClientCommonCfg(CfgFileTypeIni, cfgFilePath)
var content string
content, err = config.GetRenderedConfFromFile(cfgFilePath)
if err != nil {
return
}
g.GlbClientCfg.CfgFile = cfgFilePath
err = parseClientCommonCfg(CfgFileTypeIni, content)
if err != nil {
return
}
conf, err := ini.LoadFile(cfgFilePath)
if err != nil {
return err
}
pxyCfgs, visitorCfgs, err := config.LoadAllConfFromIni(g.GlbClientCfg.User, conf, g.GlbClientCfg.Start)
pxyCfgs, visitorCfgs, err := config.LoadAllConfFromIni(g.GlbClientCfg.User, content, g.GlbClientCfg.Start)
if err != nil {
return err
}

View File

@ -16,7 +16,6 @@ package main
import (
"fmt"
"io/ioutil"
"os"
"github.com/spf13/cobra"
@ -100,7 +99,13 @@ var rootCmd = &cobra.Command{
var err error
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 {
err = parseServerCommonCfg(CfgFileTypeCmd, "")
}
@ -123,9 +128,9 @@ func Execute() {
}
}
func parseServerCommonCfg(fileType int, filePath string) (err error) {
func parseServerCommonCfg(fileType int, content string) (err error) {
if fileType == CfgFileTypeIni {
err = parseServerCommonCfgFromIni(filePath)
err = parseServerCommonCfgFromIni(content)
} else if fileType == CfgFileTypeCmd {
err = parseServerCommonCfgFromCmd()
}
@ -133,8 +138,6 @@ func parseServerCommonCfg(fileType int, filePath string) (err error) {
return
}
g.GlbServerCfg.CfgFile = filePath
err = g.GlbServerCfg.ServerCommonConf.Check()
if err != nil {
return
@ -144,13 +147,7 @@ func parseServerCommonCfg(fileType int, filePath string) (err error) {
return
}
func parseServerCommonCfgFromIni(filePath string) (err error) {
b, err := ioutil.ReadFile(filePath)
if err != nil {
return err
}
content := string(b)
func parseServerCommonCfgFromIni(content string) (err error) {
cfg, err := config.UnmarshalServerConfFromIni(&g.GlbServerCfg.ServerCommonConf, content)
if err != nil {
return err