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
}