mirror of
https://github.com/fumiama/go-nd-portal.git
synced 2026-06-05 00:10:25 +08:00
feat: support sh campus login (#6)
- added login type: sh-edu, sh-dx, sh-cmcc
This commit is contained in:
@@ -35,7 +35,7 @@ func Main() {
|
||||
w := flag.Bool("w", false, "only display warn-or-higher-level log")
|
||||
d := flag.Bool("d", false, "display debug-level log")
|
||||
s := flag.String("s", "", "login host, auto select when empty")
|
||||
t := flag.String("t", "qsh-edu", "login type [qsh-edu | qsh-dx | qshd-dx | qshd-cmcc]")
|
||||
t := flag.String("t", "qsh-edu", "login type, \n {qsh-edu | qsh-dx | qshd-dx | qshd-cmcc | sh-edu | sh-dx | sh-cmcc}")
|
||||
flag.Parse()
|
||||
if *h {
|
||||
fmt.Println("Usage:")
|
||||
|
||||
@@ -49,16 +49,27 @@ const (
|
||||
LoginTypeQshDormDX LoginType = "qshd-dx"
|
||||
// LoginTypeQshDormCMCC cmcc in Qsh new dorm area
|
||||
LoginTypeQshDormCMCC LoginType = "qshd-cmcc"
|
||||
// LoginTypeShEdu edu in Sh
|
||||
LoginTypeShEdu LoginType = "sh-edu"
|
||||
// LoginTypeShDX dx in Sh
|
||||
LoginTypeShDX LoginType = "sh-dx"
|
||||
// LoginTypeShCMCC cmcc in Sh
|
||||
LoginTypeShCMCC LoginType = "sh-cmcc"
|
||||
)
|
||||
|
||||
// GetDefaultPortalServerIP returns default PortalServerIP by LoginType
|
||||
func (lt LoginType) GetDefaultPortalServerIP() (string, error) {
|
||||
var sIP string
|
||||
switch lt {
|
||||
// Qsh work area
|
||||
case LoginTypeQshEdu, LoginTypeQshDX:
|
||||
sIP = PortalServerIPQsh
|
||||
// Qsh new dorm area
|
||||
case LoginTypeQshDormDX, LoginTypeQshDormCMCC:
|
||||
sIP = PortalServerIPQshDorm
|
||||
// Sh
|
||||
case LoginTypeShEdu, LoginTypeShDX, LoginTypeShCMCC:
|
||||
sIP = PortalServerIPSh
|
||||
default:
|
||||
return "", ErrIllegalLoginType
|
||||
}
|
||||
@@ -70,6 +81,7 @@ func (lt LoginType) GetDefaultPortalServerIP() (string, error) {
|
||||
func (lt LoginType) ToDomainAcID() (string, string, error) {
|
||||
var domain, acid string
|
||||
switch lt {
|
||||
// Qsh work area
|
||||
case LoginTypeQshEdu:
|
||||
// qsh-edu is assumed that cant login from dorm
|
||||
domain = PortalDomainQsh
|
||||
@@ -77,12 +89,23 @@ func (lt LoginType) ToDomainAcID() (string, string, error) {
|
||||
case LoginTypeQshDX:
|
||||
domain = PortalDomainQshDX
|
||||
acid = AcIDQsh
|
||||
// Qsh new dorm area
|
||||
case LoginTypeQshDormDX:
|
||||
domain = PortalDomainQshDX
|
||||
acid = AcIDQshDorm
|
||||
case LoginTypeQshDormCMCC:
|
||||
domain = PortalDomainQshCMCC
|
||||
acid = AcIDQshDorm
|
||||
// Sh
|
||||
case LoginTypeShEdu:
|
||||
domain = PortalDomainSh
|
||||
acid = AcIDSh
|
||||
case LoginTypeShDX:
|
||||
domain = PortalDomainShDX
|
||||
acid = AcIDSh
|
||||
case LoginTypeShCMCC:
|
||||
domain = PortalDomainShCMCC
|
||||
acid = AcIDSh
|
||||
default:
|
||||
return "", "", ErrIllegalLoginType
|
||||
}
|
||||
|
||||
@@ -11,8 +11,22 @@ func TestAutoSelectServerIP(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(u.sip)
|
||||
t.Log(LoginTypeQshEdu, u.sip)
|
||||
assert.Equal(t, PortalServerIPQsh, u.sip)
|
||||
|
||||
u, err = NewPortal("2000010101001", "12345678", "", "1.2.3.4", LoginTypeQshDormDX)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(LoginTypeQshDormDX, u.sip)
|
||||
assert.Equal(t, PortalServerIPQshDorm, u.sip)
|
||||
|
||||
u, err = NewPortal("2000010101001", "12345678", "", "1.2.3.4", LoginTypeShEdu)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(LoginTypeShEdu, u.sip)
|
||||
assert.Equal(t, PortalServerIPSh, u.sip)
|
||||
}
|
||||
|
||||
func TestResolveLocalClientIP(t *testing.T) {
|
||||
|
||||
@@ -19,6 +19,8 @@ const (
|
||||
PortalServerIPQsh = "10.253.0.237"
|
||||
// PortalServerIPQshDorm default Server IP String in Qsh new dorm area
|
||||
PortalServerIPQshDorm = "10.253.0.235"
|
||||
// PortalServerIPSh default Server IP String in Sh
|
||||
PortalServerIPSh = "192.168.9.8"
|
||||
|
||||
// PortalDomainQsh PortalDomain for qsh-edu login type
|
||||
PortalDomainQsh = "@dx-uestc"
|
||||
@@ -26,6 +28,12 @@ const (
|
||||
PortalDomainQshDX = "@dx"
|
||||
// PortalDomainQshCMCC PortalDomain for qshd-cmcc login type
|
||||
PortalDomainQshCMCC = "@cmcc"
|
||||
// PortalDomainSh PortalDomain for sh-edu login type
|
||||
PortalDomainSh = "@uestc"
|
||||
// PortalDomainShDX PortalDomain for sh-dx login type
|
||||
PortalDomainShDX = "@dx"
|
||||
// PortalDomainShCMCC PortalDomain for sh-cmcc login type
|
||||
PortalDomainShCMCC = "@cmccgx"
|
||||
|
||||
// PortalGetChallenge GetChallenge URL
|
||||
PortalGetChallenge = "http://%v/cgi-bin/get_challenge?%s"
|
||||
@@ -40,6 +48,8 @@ const (
|
||||
AcIDQsh = "1"
|
||||
// AcIDQshDorm ACID for Qsh new dorm area
|
||||
AcIDQshDorm = "3"
|
||||
// AcIDSh ACID for Sh
|
||||
AcIDSh = "6"
|
||||
|
||||
// PortalCGI Auth CGI URL
|
||||
PortalCGI = "http://%v/cgi-bin/srun_portal?%s"
|
||||
|
||||
Reference in New Issue
Block a user