fix:修复DNS缓存导致的网络检查不正确的问题

This commit is contained in:
Mmx
2021-03-17 22:28:02 +08:00
parent 2a2fc9643f
commit dd9f0b3a96
5 changed files with 28 additions and 7 deletions

View File

@@ -17,6 +17,7 @@ type LoginInfo struct {
UrlLoginPage string UrlLoginPage string
UrlGetChallengeApi string UrlGetChallengeApi string
UrlLoginApi string UrlLoginApi string
UrlCheckApi string
Ip string Ip string
Token string Token string

View File

@@ -1,18 +1,36 @@
package Util package Util
import ( import (
"Mmx/Request"
"fmt"
"net" "net"
"time"
) )
type checker struct{} type checker struct{}
var Checker checker var Checker checker
func (checker) NetOk() bool { func (checker) NetOk(url string) bool {
if ip, err := net.LookupIP("www.msftconnecttest.com"); err != nil { if ip, err := net.LookupIP("www.msftconnecttest.com"); err != nil { //通过DNS确认是否在线
return false return false
} else if len(ip) == 0 || ip[0].String() != "13.107.4.52" { } else if len(ip) == 0 || ip[0].String() != "13.107.4.52" {
return false return false
} }
{ //有些路由器有DNS缓存故进行进一步确认
body, err := Request.Get(url, map[string]string{
"callback": "jQuery1635413",
"_": fmt.Sprint(time.Now().UnixNano()),
})
ErrHandler(err)
r, err := GetResult(body)
if err != nil {
ErrHandler(err)
}
if r != "ok" {
return false
}
}
return true return true
} }

View File

@@ -20,6 +20,7 @@ func (*config) Generate(Form *Modles.LoginForm, Meta *Modles.LoginMeta) *Modles.
UrlLoginPage: "http://" + Form.Domain + "/srun_portal_success", UrlLoginPage: "http://" + Form.Domain + "/srun_portal_success",
UrlGetChallengeApi: "http://" + Form.Domain + "/cgi-bin/get_challenge", UrlGetChallengeApi: "http://" + Form.Domain + "/cgi-bin/get_challenge",
UrlLoginApi: "http://" + Form.Domain + "/cgi-bin/srun_portal", UrlLoginApi: "http://" + Form.Domain + "/cgi-bin/srun_portal",
UrlCheckApi: "http://" + Form.Domain + "/cgi-bin/rad_user_info",
Meta: Meta, Meta: Meta,
Form: &Modles.LoginForm{ Form: &Modles.LoginForm{
UserName: Form.UserName + "@cmcc", UserName: Form.UserName + "@cmcc",

View File

@@ -37,8 +37,8 @@ func GetResult(body string) (string, error) {
func Md5(content string) string { func Md5(content string) string {
w := md5.New() w := md5.New()
_, _ = io.WriteString(w, content) //将str写入到w中 _, _ = io.WriteString(w, content)
return fmt.Sprintf("%x", w.Sum(nil)) //w.Sum(nil)将w的hash转成[]byte格式 return fmt.Sprintf("%x", w.Sum(nil))
} }
func Sha1(content string) string { func Sha1(content string) string {

View File

@@ -6,13 +6,14 @@ import (
"Mmx/Util" "Mmx/Util"
"encoding/json" "encoding/json"
"fmt" "fmt"
"time"
) )
func main() { func main() {
fmt.Println("Step0: 检查状态…") fmt.Println("Step0: 检查状态…")
G := Util.Config.Init() G := Util.Config.Init()
if Global.Config.Settings.QuitIfNetOk && Util.Checker.NetOk() { if Global.Config.Settings.QuitIfNetOk && Util.Checker.NetOk(G.UrlCheckApi) {
fmt.Println("网络正常,程序退出") fmt.Println("网络正常,程序退出")
return return
} }
@@ -56,7 +57,7 @@ func main() {
G.EncryptedChkstr = Util.Sha1(chkstr) G.EncryptedChkstr = Util.Sha1(chkstr)
res, err := Request.Get(G.UrlLoginApi, map[string]string{ res, err := Request.Get(G.UrlLoginApi, map[string]string{
"callback": "jQuery1124011576657442209481_1602812074032", "callback": "jQuery112401157665",
"action": "login", "action": "login",
"username": G.Form.UserName, "username": G.Form.UserName,
"password": G.EncryptedMd5, "password": G.EncryptedMd5,
@@ -69,7 +70,7 @@ func main() {
"os": "Windows 10", "os": "Windows 10",
"name": "windows", "name": "windows",
"double_stack": "0", "double_stack": "0",
"_": "1602812428675", "_": fmt.Sprint(time.Now().UnixNano()),
}) })
Util.ErrHandler(err) Util.ErrHandler(err)
G.LoginResult, err = Util.GetResult(res) G.LoginResult, err = Util.GetResult(res)