diff --git a/cmd/main.go b/cmd/main.go index 1daaccf..a3812ce 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -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:") diff --git a/portal/portal.go b/portal/portal.go index 34bed00..16314aa 100644 --- a/portal/portal.go +++ b/portal/portal.go @@ -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 } diff --git a/portal/portal_test.go b/portal/portal_test.go index a83209b..134b198 100644 --- a/portal/portal_test.go +++ b/portal/portal_test.go @@ -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) { diff --git a/portal/server.go b/portal/server.go index c31b00c..14d8f3d 100644 --- a/portal/server.go +++ b/portal/server.go @@ -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"