fix:增加config属性

1、能自定义是否在启动前检查网络
2、增加demo模式
This commit is contained in:
Mmx
2021-03-17 17:59:31 +08:00
parent cbc0d562aa
commit 39bbc30d9c
5 changed files with 43 additions and 22 deletions

5
Global/global.go Normal file
View File

@@ -0,0 +1,5 @@
package Global
import "Mmx/Modles"
var Config *Modles.Config

View File

@@ -1,6 +1,12 @@
package Modles package Modles
type Config struct { type Settings struct {
From LoginForm QuitIfNetOk bool `json:"quit_if_net_ok"`
Meta LoginMeta DemoMode bool `json:"demo_mode"`
}
type Config struct {
From LoginForm `json:"from"`
Meta LoginMeta `json:"meta"`
Settings Settings `json:"settings"`
} }

View File

@@ -1,6 +1,7 @@
package Util package Util
import ( import (
"Mmx/Global"
"Mmx/Modles" "Mmx/Modles"
"fmt" "fmt"
"os" "os"
@@ -55,6 +56,8 @@ func (a *config) Init() *Modles.LoginInfo {
os.Exit(3) os.Exit(3)
} }
Global.Config = &c
return a.Generate( return a.Generate(
&c.From, &c.From,
&c.Meta, &c.Meta,

View File

@@ -1,11 +1,13 @@
package Util package Util
import ( import (
"Mmx/Global"
"crypto/md5" "crypto/md5"
"crypto/sha1" "crypto/sha1"
"errors" "errors"
"fmt" "fmt"
"io" "io"
"os"
"regexp" "regexp"
) )
@@ -45,3 +47,14 @@ func Sha1(content string) string {
bs := h.Sum(nil) bs := h.Sum(nil)
return fmt.Sprintf("%x\n", bs) return fmt.Sprintf("%x\n", bs)
} }
func ErrHandler(err error) {
if err != nil {
fmt.Println("Error occurred")
if Global.Config.Settings.DemoMode {
panic(err)
}
fmt.Println(err)
os.Exit(3)
}
}

32
main.go
View File

@@ -1,33 +1,27 @@
package main package main
import ( import (
"Mmx/Global"
"Mmx/Request" "Mmx/Request"
"Mmx/Util" "Mmx/Util"
"encoding/json" "encoding/json"
"fmt" "fmt"
) )
func ErrHandler(err error) {
if err != nil {
fmt.Println("Error occurred")
panic(err)
}
}
func main() { func main() {
if Util.Checker.NetOk() { G := Util.Config.Init()
if Global.Config.Settings.QuitIfNetOk && Util.Checker.NetOk() {
fmt.Println("There's no need to login") fmt.Println("There's no need to login")
return return
} }
G := Util.Config.Init()
fmt.Println("Step1: Get local ip returned from srun server.") fmt.Println("Step1: Get local ip returned from srun server.")
{ {
body, err := Request.Get(G.UrlLoginPage, nil) body, err := Request.Get(G.UrlLoginPage, nil)
ErrHandler(err) Util.ErrHandler(err)
G.Ip, err = Util.GetIp(body) G.Ip, err = Util.GetIp(body)
ErrHandler(err) Util.ErrHandler(err)
} }
fmt.Println("Step2: Get token by resolving challenge result.") fmt.Println("Step2: Get token by resolving challenge result.")
{ {
@@ -36,11 +30,11 @@ func main() {
"username": G.Form.UserName, "username": G.Form.UserName,
"ip": G.Ip, "ip": G.Ip,
}) })
ErrHandler(err) Util.ErrHandler(err)
G.Token, err = Util.GetToken(data) G.Token, err = Util.GetToken(data)
ErrHandler(err) Util.ErrHandler(err)
} }
fmt.Println("Step3: Loggin and resolve response.") fmt.Println("Step3: Login and resolve response.")
{ {
info, err := json.Marshal(map[string]string{ info, err := json.Marshal(map[string]string{
"username": G.Form.UserName, "username": G.Form.UserName,
@@ -49,7 +43,7 @@ func main() {
"acid": G.Meta.Acid, "acid": G.Meta.Acid,
"enc_ver": G.Meta.Enc, "enc_ver": G.Meta.Enc,
}) })
ErrHandler(err) Util.ErrHandler(err)
G.EncryptedInfo = "{SRBX1}" + Util.Base64(Util.XEncode(string(info), G.Token)) G.EncryptedInfo = "{SRBX1}" + Util.Base64(Util.XEncode(string(info), G.Token))
G.Md5 = Util.Md5(G.Token) G.Md5 = Util.Md5(G.Token)
G.EncryptedMd5 = "{MD5}" + G.Md5 G.EncryptedMd5 = "{MD5}" + G.Md5
@@ -80,9 +74,9 @@ func main() {
"double_stack": "0", "double_stack": "0",
"_": "1602812428675", "_": "1602812428675",
}) })
ErrHandler(err) Util.ErrHandler(err)
G.LoginResult, err = Util.GetResult(res) G.LoginResult, err = Util.GetResult(res)
ErrHandler(err) Util.ErrHandler(err)
} }
fmt.Println("The loggin result is: " + G.LoginResult) fmt.Println("The login result is: " + G.LoginResult)
} }