From dd9f0b3a9603f2c6bc7baf79b43eecb9bf6c2803 Mon Sep 17 00:00:00 2001 From: Mmx <1624045573@qq.com> Date: Wed, 17 Mar 2021 22:28:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DDNS=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E7=BD=91=E7=BB=9C=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Modles/login.go | 1 + Util/checker.go | 22 ++++++++++++++++++++-- Util/config.go | 1 + Util/util.go | 4 ++-- main.go | 7 ++++--- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/Modles/login.go b/Modles/login.go index 4ee5dda..8ddce90 100644 --- a/Modles/login.go +++ b/Modles/login.go @@ -17,6 +17,7 @@ type LoginInfo struct { UrlLoginPage string UrlGetChallengeApi string UrlLoginApi string + UrlCheckApi string Ip string Token string diff --git a/Util/checker.go b/Util/checker.go index b27f2dc..949d915 100644 --- a/Util/checker.go +++ b/Util/checker.go @@ -1,18 +1,36 @@ package Util import ( + "Mmx/Request" + "fmt" "net" + "time" ) type checker struct{} var Checker checker -func (checker) NetOk() bool { - if ip, err := net.LookupIP("www.msftconnecttest.com"); err != nil { +func (checker) NetOk(url string) bool { + if ip, err := net.LookupIP("www.msftconnecttest.com"); err != nil { //通过DNS确认是否在线 return false } else if len(ip) == 0 || ip[0].String() != "13.107.4.52" { 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 } diff --git a/Util/config.go b/Util/config.go index 3b0864f..df1105e 100644 --- a/Util/config.go +++ b/Util/config.go @@ -20,6 +20,7 @@ func (*config) Generate(Form *Modles.LoginForm, Meta *Modles.LoginMeta) *Modles. UrlLoginPage: "http://" + Form.Domain + "/srun_portal_success", UrlGetChallengeApi: "http://" + Form.Domain + "/cgi-bin/get_challenge", UrlLoginApi: "http://" + Form.Domain + "/cgi-bin/srun_portal", + UrlCheckApi: "http://" + Form.Domain + "/cgi-bin/rad_user_info", Meta: Meta, Form: &Modles.LoginForm{ UserName: Form.UserName + "@cmcc", diff --git a/Util/util.go b/Util/util.go index e7c1105..a9c6725 100644 --- a/Util/util.go +++ b/Util/util.go @@ -37,8 +37,8 @@ func GetResult(body string) (string, error) { func Md5(content string) string { w := md5.New() - _, _ = io.WriteString(w, content) //将str写入到w中 - return fmt.Sprintf("%x", w.Sum(nil)) //w.Sum(nil)将w的hash转成[]byte格式 + _, _ = io.WriteString(w, content) + return fmt.Sprintf("%x", w.Sum(nil)) } func Sha1(content string) string { diff --git a/main.go b/main.go index c9a5e3f..57acc2b 100644 --- a/main.go +++ b/main.go @@ -6,13 +6,14 @@ import ( "Mmx/Util" "encoding/json" "fmt" + "time" ) func main() { fmt.Println("Step0: 检查状态…") G := Util.Config.Init() - if Global.Config.Settings.QuitIfNetOk && Util.Checker.NetOk() { + if Global.Config.Settings.QuitIfNetOk && Util.Checker.NetOk(G.UrlCheckApi) { fmt.Println("网络正常,程序退出") return } @@ -56,7 +57,7 @@ func main() { G.EncryptedChkstr = Util.Sha1(chkstr) res, err := Request.Get(G.UrlLoginApi, map[string]string{ - "callback": "jQuery1124011576657442209481_1602812074032", + "callback": "jQuery112401157665", "action": "login", "username": G.Form.UserName, "password": G.EncryptedMd5, @@ -69,7 +70,7 @@ func main() { "os": "Windows 10", "name": "windows", "double_stack": "0", - "_": "1602812428675", + "_": fmt.Sprint(time.Now().UnixNano()), }) Util.ErrHandler(err) G.LoginResult, err = Util.GetResult(res)