1
0
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:
chasey-dev
2025-09-03 12:55:51 +08:00
committed by GitHub
parent f2459dd8d9
commit 4d9b9e1886
4 changed files with 49 additions and 2 deletions

View File

@@ -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:")

View File

@@ -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
}

View File

@@ -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) {

View File

@@ -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"