wust校园网认证登录(web + pppoe拨号)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
canti/app/service/login.go

47 lines
1.1 KiB

package service
import (
"canti/app/model"
"canti/app/network"
"encoding/json"
"errors"
"fmt"
)
var NoNeedLogin = errors.New("no need to login")
var UserinfoError = errors.New("error happens in requesting userinfo")
var ChallengeCodeError = errors.New("error happens in requesting challenge code")
func WebLogin(username string, password string) error {
// 能直接上网的话就不用登陆了
if network.CheckNetwork(network.TestBaidu) {
return NoNeedLogin
}
ip, err := network.GetClientIp()
if err != nil || ip == "" || ip == "<nil>" {
return UserinfoError
}
fmt.Print("Got ip:")
fmt.Println(ip)
challengeCodeJson, err2 := network.RequestChallengeCode(username, ip)
if err2 != nil || challengeCodeJson == "" {
return err
}
var challengeCodeResponse model.ChallengeCodeResponse
jsonError := json.Unmarshal([]byte(challengeCodeJson), &challengeCodeResponse)
if jsonError != nil {
return jsonError
} else if challengeCodeResponse.Challenge == "" {
_ = fmt.Errorf(challengeCodeJson)
return ChallengeCodeError
}
fmt.Print(challengeCodeResponse)
return nil
}