整理代码,进一步将加载代码移动到machine中

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent cd572fdd92
commit 68c5edbbe7
6 changed files with 82 additions and 114 deletions

View File

@@ -503,8 +503,7 @@ func interactively_hotLoadConfigFile(m *machine.M) {
fmt.Printf("你输入了 %s\n", fpath)
var confMode int
var simpleConf proxy.SimpleConf
confMode, simpleConf, _, err = defaultMachine.LoadConfig(fpath, "", "")
confMode, err = defaultMachine.LoadConfig(fpath, "", "")
if err != nil {
log.Printf("can not load standard config file: %s\n", err)
@@ -525,7 +524,7 @@ func interactively_hotLoadConfigFile(m *machine.M) {
case proxy.StandardMode:
m.LoadStandardConf()
case proxy.SimpleMode:
result := m.HotLoadSimpleConf(simpleConf)
result := m.LoadSimpleConf(true)
if result < 0 {
utils.PrintStr("添加失败!当前状态:\n")
utils.PrintStr(delimiter)

View File

@@ -1,6 +0,0 @@
package main
// var (
// standardConf proxy.StandardConf
// appConf *machine.AppConf
// )

View File

@@ -15,7 +15,6 @@ import (
"github.com/pkg/profile"
"go.uber.org/zap"
"github.com/e1732a364fed/v2ray_simple/httpLayer"
"github.com/e1732a364fed/v2ray_simple/machine"
"github.com/e1732a364fed/v2ray_simple/netLayer"
"github.com/e1732a364fed/v2ray_simple/proxy"
@@ -178,7 +177,6 @@ func mainFunc() (result int) {
}
var configMode int
var fallback *httpLayer.ClassicFallback
var loadConfigErr error
@@ -195,15 +193,7 @@ func mainFunc() (result int) {
}
var simpleConf proxy.SimpleConf
configMode, simpleConf, fallback, loadConfigErr = defaultMachine.LoadConfig(configFileName, listenURL, dialURL)
if loadConfigErr == nil {
defaultMachine.SetupAppConf()
}
configMode, loadConfigErr = defaultMachine.LoadConfig(configFileName, listenURL, dialURL)
if utils.LogOutFileName == defaultLogFile {
@@ -238,7 +228,6 @@ func mainFunc() (result int) {
ce.Write(zap.Error(loadConfigErr))
} else {
log.Print(willExitStr)
}
return -1
@@ -257,34 +246,16 @@ func mainFunc() (result int) {
fmt.Printf("UseReadv:%t\n", netLayer.UseReadv)
}
if fallback != nil {
defaultMachine.RoutingEnv.Fallback = fallback
}
//load inServers and RoutingEnv
switch configMode {
case proxy.SimpleMode:
result, _ = defaultMachine.LoadSimpleServer(simpleConf)
result = defaultMachine.LoadSimpleConf(false)
if result < 0 {
return result
}
case proxy.StandardMode:
defaultMachine.SetupListen()
}
// load outClients
switch configMode {
case proxy.SimpleMode:
result, defaultMachine.DefaultOutClient = defaultMachine.LoadSimpleClient(simpleConf)
if result < 0 {
return result
}
case proxy.StandardMode:
defaultMachine.SetupListenAndRoute()
defaultMachine.SetupDial()
}
runPreCommands()
@@ -314,17 +285,13 @@ func mainFunc() (result int) {
}
if defaultMachine.EnableApiServer {
defaultMachine.ApiServerConf = defaultApiServerConf
defaultMachine.TryRunApiServer()
}
if interactive_mode {
if runCli != nil {
runCli()
}
interactive_mode = false

View File

@@ -57,53 +57,53 @@ func LoadVSConfFromBs(bs []byte) (sc proxy.StandardConf, ac *AppConf, err error)
}
func SetupByAppConf(ac *AppConf) {
if ac != nil {
if ac == nil {
return
}
if ac.LogFile != nil && utils.GivenFlags["lf"] == nil {
utils.LogOutFileName = *ac.LogFile
if ac.LogFile != nil && utils.GivenFlags["lf"] == nil {
utils.LogOutFileName = *ac.LogFile
}
if ac.LogLevel != nil && utils.GivenFlags["ll"] == nil {
utils.LogLevel = *ac.LogLevel
}
if ac.NoReadV && utils.GivenFlags["readv"] == nil {
netLayer.UseReadv = false
}
if ac.UDP_timeout != nil {
if minutes := *ac.UDP_timeout; minutes > 0 {
netLayer.UDP_timeout = time.Minute * time.Duration(minutes)
}
}
if ac.DialTimeoutSeconds != nil {
if s := *ac.DialTimeoutSeconds; s > 0 {
netLayer.DialTimeout = time.Duration(s) * time.Second
}
}
if ac.LogLevel != nil && utils.GivenFlags["ll"] == nil {
utils.LogLevel = *ac.LogLevel
}
if ac.NoReadV && utils.GivenFlags["readv"] == nil {
netLayer.UseReadv = false
if ac.ReadTimeoutSeconds != nil {
if s := *ac.ReadTimeoutSeconds; s > 0 {
proxy.CommonReadTimeout = time.Duration(s) * time.Second
}
}
if ac.UDP_timeout != nil {
if minutes := *ac.UDP_timeout; minutes > 0 {
netLayer.UDP_timeout = time.Minute * time.Duration(minutes)
}
}
if ac.DialTimeoutSeconds != nil {
if s := *ac.DialTimeoutSeconds; s > 0 {
netLayer.DialTimeout = time.Duration(s) * time.Second
}
}
if ac.ReadTimeoutSeconds != nil {
if s := *ac.ReadTimeoutSeconds; s > 0 {
proxy.CommonReadTimeout = time.Duration(s) * time.Second
}
}
if ac.GeoipFile != nil {
netLayer.GeoipFileName = *ac.GeoipFile
}
if ac.GeositeFolder != nil {
netLayer.GeositeFolder = *ac.GeositeFolder
}
if ac.GeoipFile != nil {
netLayer.GeoipFileName = *ac.GeoipFile
}
if ac.GeositeFolder != nil {
netLayer.GeositeFolder = *ac.GeositeFolder
}
}
// 先检查configFileName是否存在存在就尝试加载文件到 standardConf or simpleConf否则尝试 listenURL, dialURL 参数.
// 若 返回的是 simpleConf, 则还可能返回 mainFallback.
func (m *M) LoadConfig(configFileName, listenURL, dialURL string) (confMode int, simpleConf proxy.SimpleConf, mainFallback *httpLayer.ClassicFallback, err error) {
// 先检查configFileName是否存在存在就尝试加载文件到 standardConf or simpleConf否则尝试通过 listenURL, dialURL 参数 创建simpleConf
func (m *M) LoadConfig(configFileName, listenURL, dialURL string) (confMode int, err error) {
fpath := utils.GetFilePath(configFileName)
if fpath != "" {
@@ -124,13 +124,19 @@ func (m *M) LoadConfig(configFileName, listenURL, dialURL string) (confMode int,
}
confMode = proxy.StandardMode
m.setupAppConf()
}
} else {
var mainFallback *httpLayer.ClassicFallback
confMode = proxy.SimpleMode
simpleConf, mainFallback, err = proxy.LoadSimpleConf_byFile(fpath)
m.simpleConf, mainFallback, err = proxy.LoadSimpleConf_byFile(fpath)
if mainFallback != nil {
m.RoutingEnv.Fallback = mainFallback
}
}
@@ -142,7 +148,7 @@ url:
log.Printf("trying listenURL and dialURL \n")
confMode = proxy.SimpleMode
simpleConf, err = proxy.LoadSimpleConf_byUrl(listenURL, dialURL)
m.simpleConf, err = proxy.LoadSimpleConf_byUrl(listenURL, dialURL)
} else {
log.Println(proxy.ErrStrNoListenUrl)
@@ -154,46 +160,42 @@ url:
return
}
func (m *M) SetupAppConf() {
func (m *M) setupAppConf() {
SetupByAppConf(m.appConf)
}
func (defaultMachine *M) SetupListen() {
if defaultMachine.appConf != nil {
defaultMachine.DefaultUUID = defaultMachine.appConf.DefaultUUID
func (m *M) SetupListenAndRoute() {
var myCountryISO_3166 string
if m.appConf != nil {
myCountryISO_3166 = m.appConf.MyCountryISO_3166
m.DefaultUUID = m.appConf.DefaultUUID
}
//虽然标准模式支持多个Server目前先只考虑一个
//多个Server存在的话则必须要用 tag指定路由; 然后我们需在预先阶段就判断好tag指定的路由
if len(defaultMachine.standardConf.Listen) < 1 {
if len(m.standardConf.Listen) < 1 {
utils.Warn("no listen in config settings")
return
}
defaultMachine.LoadListenConf(defaultMachine.standardConf.Listen, false)
m.LoadListenConf(m.standardConf.Listen, false)
if len(defaultMachine.standardConf.Fallbacks) > 0 {
defaultMachine.ParseFallbacksAtSymbol(defaultMachine.standardConf.Fallbacks)
}
var myCountryISO_3166 string
if defaultMachine.appConf != nil {
myCountryISO_3166 = defaultMachine.appConf.MyCountryISO_3166
if len(m.standardConf.Fallbacks) > 0 {
m.ParseFallbacksAtSymbol(m.standardConf.Fallbacks)
}
defaultMachine.RoutingEnv = proxy.LoadEnvFromStandardConf(&defaultMachine.standardConf, myCountryISO_3166)
m.RoutingEnv = proxy.LoadEnvFromStandardConf(&m.standardConf, myCountryISO_3166)
}
func (defaultMachine *M) SetupDial() {
if len(defaultMachine.standardConf.Dial) < 1 {
func (m *M) SetupDial() {
if len(m.standardConf.Dial) < 1 && m.DefaultOutClient == nil {
utils.Warn("no dial in config settings, will add 'direct'")
defaultMachine.SetDefaultDirectClient()
m.SetDefaultDirectClient()
return
}
defaultMachine.LoadDialConf(defaultMachine.standardConf.Dial)
m.LoadDialConf(m.standardConf.Dial)
}
func (m *M) LoadStandardConf() {
if len(m.standardConf.Dial) > 0 {

View File

@@ -111,29 +111,34 @@ func (m *M) HotDeleteServer(index int) {
m.listenCloserList = utils.TrimSlice(m.listenCloserList, index)
}
func (m *M) HotLoadSimpleConf(simpleConf proxy.SimpleConf) (result int) {
func (m *M) LoadSimpleConf(hot bool) (result int) {
var ser proxy.Server
result, ser = m.LoadSimpleServer(simpleConf)
result, ser = m.loadSimpleServer(m.simpleConf)
if result < 0 {
return
}
var cli proxy.Client
result, cli = m.LoadSimpleClient(simpleConf)
result, cli = m.loadSimpleClient(m.simpleConf)
if result < 0 {
return
}
lis := v2ray_simple.ListenSer(ser, cli, &m.RoutingEnv, &m.GlobalInfo)
if lis != nil {
m.listenCloserList = append(m.listenCloserList, lis)
if hot {
lis := v2ray_simple.ListenSer(ser, cli, &m.RoutingEnv, &m.GlobalInfo)
if lis != nil {
m.listenCloserList = append(m.listenCloserList, lis)
} else {
result = -1
}
} else {
result = -1
m.DefaultOutClient = cli
}
return
}
// load failed if result <0,
func (m *M) LoadSimpleServer(simpleConf proxy.SimpleConf) (result int, server proxy.Server) {
func (m *M) loadSimpleServer(simpleConf proxy.SimpleConf) (result int, server proxy.Server) {
var e error
server, e = proxy.ServerFromURL(simpleConf.ListenUrl)
if e != nil {
@@ -160,7 +165,7 @@ func (m *M) LoadSimpleServer(simpleConf proxy.SimpleConf) (result int, server pr
return
}
func (m *M) LoadSimpleClient(simpleConf proxy.SimpleConf) (result int, client proxy.Client) {
func (m *M) loadSimpleClient(simpleConf proxy.SimpleConf) (result int, client proxy.Client) {
var e error
client, e = proxy.ClientFromURL(simpleConf.DialUrl)
if e != nil {

View File

@@ -25,6 +25,7 @@ type M struct {
DefaultUUID string
standardConf proxy.StandardConf
simpleConf proxy.SimpleConf
appConf *AppConf
v2ray_simple.GlobalInfo