improve: login entry logic
This commit is contained in:
@@ -3,34 +3,19 @@ package main
|
|||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/controllers"
|
"github.com/Mmx233/BitSrunLoginGo/internal/controllers"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
logger := config.Logger
|
||||||
|
if config.Settings.Basic.Interfaces != "" {
|
||||||
|
logger.Infoln("[多网卡模式]")
|
||||||
|
}
|
||||||
|
|
||||||
if config.Settings.Guardian.Enable {
|
if config.Settings.Guardian.Enable {
|
||||||
//进入守护模式
|
//进入守护模式
|
||||||
controllers.Guardian()
|
controllers.Guardian()
|
||||||
} else {
|
} else {
|
||||||
//登录流程
|
//执行单次流程
|
||||||
var err error
|
_ = controllers.Login()
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,28 +9,12 @@ import (
|
|||||||
func Guardian() {
|
func Guardian() {
|
||||||
logger := config.Logger
|
logger := config.Logger
|
||||||
|
|
||||||
logger.Infoln("[以守护模式启动]")
|
logger.Infoln("[守护模式]")
|
||||||
|
|
||||||
GuardianDuration := time.Duration(config.Settings.Guardian.Duration) * time.Second
|
GuardianDuration := time.Duration(config.Settings.Guardian.Duration) * time.Second
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if config.Settings.Basic.Interfaces == "" { //单网卡
|
_ = Login()
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
time.Sleep(GuardianDuration)
|
time.Sleep(GuardianDuration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,21 +11,30 @@ import (
|
|||||||
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Login 登录逻辑
|
var ipLast string
|
||||||
func Login(eth *tools.Eth, debugOutput bool) error {
|
var debugTip sync.Once
|
||||||
if config.Settings.Backoff.Enable {
|
|
||||||
return backoff.NewInstance(func(ctx context.Context) error {
|
func Login() error {
|
||||||
return login(eth, debugOutput)
|
logger := config.Logger
|
||||||
}, config.BackoffConfig).Run(context.TODO())
|
if config.Settings.Basic.Interfaces == "" { //单网卡
|
||||||
} else {
|
err := LoginSingle(nil, true)
|
||||||
return login(eth, debugOutput)
|
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 {
|
func ddns(ip string, httpClient *http.Client) error {
|
||||||
return dns.Run(&dns.Config{
|
return dns.Run(&dns.Config{
|
||||||
Logger: config.Logger,
|
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
|
logger := config.Logger
|
||||||
|
|
||||||
// 登录配置初始化
|
// 登录配置初始化
|
||||||
|
|||||||
Reference in New Issue
Block a user