improve: login entry logic
This commit is contained in:
@@ -3,34 +3,19 @@ package main
|
||||
import (
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/controllers"
|
||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||
)
|
||||
|
||||
func main() {
|
||||
logger := config.Logger
|
||||
if config.Settings.Basic.Interfaces != "" {
|
||||
logger.Infoln("[多网卡模式]")
|
||||
}
|
||||
|
||||
if config.Settings.Guardian.Enable {
|
||||
//进入守护模式
|
||||
controllers.Guardian()
|
||||
} else {
|
||||
//登录流程
|
||||
var err error
|
||||
logger := config.Logger
|
||||
if config.Settings.Basic.Interfaces == "" { //单网卡
|
||||
if err = controllers.Login(nil, false); err != nil {
|
||||
logger.Errorln("登录出错: ", err)
|
||||
if !config.Settings.Log.DebugLevel {
|
||||
logger.Infoln("开启调试日志 (debug_level) 获取详细信息")
|
||||
}
|
||||
return
|
||||
}
|
||||
} else { //多网卡
|
||||
logger.Infoln("多网卡模式")
|
||||
interfaces, _ := tools.GetInterfaceAddr(logger, config.Settings.Basic.Interfaces)
|
||||
for _, eth := range interfaces {
|
||||
logger.Infoln("使用网卡: ", eth.Name)
|
||||
if err = controllers.Login(ð, false); err != nil {
|
||||
config.Logger.Errorf("网卡 %s 登录出错: %v", eth.Name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
//执行单次流程
|
||||
_ = controllers.Login()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package controllers
|
||||
|
||||
import (
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -10,28 +9,12 @@ import (
|
||||
func Guardian() {
|
||||
logger := config.Logger
|
||||
|
||||
logger.Infoln("[以守护模式启动]")
|
||||
logger.Infoln("[守护模式]")
|
||||
|
||||
GuardianDuration := time.Duration(config.Settings.Guardian.Duration) * time.Second
|
||||
|
||||
for {
|
||||
if config.Settings.Basic.Interfaces == "" { //单网卡
|
||||
err := Login(nil, true)
|
||||
if err != nil {
|
||||
logger.Errorln("登录出错: ", err)
|
||||
}
|
||||
} else { //多网卡
|
||||
interfaces, err := tools.GetInterfaceAddr(logger, config.Settings.Basic.Interfaces)
|
||||
if err == nil {
|
||||
for _, eth := range interfaces {
|
||||
logger.Debugf("使用 %s 网口登录 ", eth.Name)
|
||||
err = Login(ð, true)
|
||||
if err != nil {
|
||||
logger.Errorln("网口 ", eth.Name+" 登录出错: ", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_ = Login()
|
||||
time.Sleep(GuardianDuration)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,21 +11,30 @@ import (
|
||||
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||
"net/http"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// Login 登录逻辑
|
||||
func Login(eth *tools.Eth, debugOutput bool) error {
|
||||
if config.Settings.Backoff.Enable {
|
||||
return backoff.NewInstance(func(ctx context.Context) error {
|
||||
return login(eth, debugOutput)
|
||||
}, config.BackoffConfig).Run(context.TODO())
|
||||
} else {
|
||||
return login(eth, debugOutput)
|
||||
var ipLast string
|
||||
var debugTip sync.Once
|
||||
|
||||
func Login() error {
|
||||
logger := config.Logger
|
||||
if config.Settings.Basic.Interfaces == "" { //单网卡
|
||||
err := LoginSingle(nil, true)
|
||||
if err != nil {
|
||||
logger.Errorln("登录出错: ", err)
|
||||
debugTip.Do(func() {
|
||||
if !config.Settings.Log.DebugLevel {
|
||||
logger.Infoln("开启调试日志 (debug_level) 获取详细信息")
|
||||
}
|
||||
})
|
||||
}
|
||||
return err
|
||||
} else { //多网卡
|
||||
return LoginInterfaces()
|
||||
}
|
||||
}
|
||||
|
||||
var ipLast string
|
||||
|
||||
func ddns(ip string, httpClient *http.Client) error {
|
||||
return dns.Run(&dns.Config{
|
||||
Logger: config.Logger,
|
||||
@@ -38,7 +47,37 @@ func ddns(ip string, httpClient *http.Client) error {
|
||||
})
|
||||
}
|
||||
|
||||
func login(eth *tools.Eth, debugOutput bool) error {
|
||||
func LoginInterfaces() error {
|
||||
logger := config.Logger
|
||||
interfaces, err := tools.GetInterfaceAddr(logger, config.Settings.Basic.Interfaces)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var errCount int
|
||||
for _, eth := range interfaces {
|
||||
logger.Infoln("使用网卡: ", eth.Name)
|
||||
if err := LoginSingle(ð, false); err != nil {
|
||||
config.Logger.Errorf("网卡 %s 登录出错: %v", eth.Name, err)
|
||||
errCount++
|
||||
}
|
||||
}
|
||||
if errCount > 0 {
|
||||
return errors.New("multi interface login not completely succeed")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func LoginSingle(eth *tools.Eth, debugOutput bool) error {
|
||||
if config.Settings.Backoff.Enable {
|
||||
return backoff.NewInstance(func(ctx context.Context) error {
|
||||
return doLogin(eth, debugOutput)
|
||||
}, config.BackoffConfig).Run(context.TODO())
|
||||
} else {
|
||||
return doLogin(eth, debugOutput)
|
||||
}
|
||||
}
|
||||
|
||||
func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
logger := config.Logger
|
||||
|
||||
// 登录配置初始化
|
||||
|
||||
Reference in New Issue
Block a user