1
0
mirror of https://github.com/fumiama/go-nd-portal.git synced 2026-06-30 08:00:27 +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") w := flag.Bool("w", false, "only display warn-or-higher-level log")
d := flag.Bool("d", false, "display debug-level log") d := flag.Bool("d", false, "display debug-level log")
s := flag.String("s", "", "login host, auto select when empty") 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() flag.Parse()
if *h { if *h {
fmt.Println("Usage:") fmt.Println("Usage:")

View File

@@ -49,16 +49,27 @@ const (
LoginTypeQshDormDX LoginType = "qshd-dx" LoginTypeQshDormDX LoginType = "qshd-dx"
// LoginTypeQshDormCMCC cmcc in Qsh new dorm area // LoginTypeQshDormCMCC cmcc in Qsh new dorm area
LoginTypeQshDormCMCC LoginType = "qshd-cmcc" 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 // GetDefaultPortalServerIP returns default PortalServerIP by LoginType
func (lt LoginType) GetDefaultPortalServerIP() (string, error) { func (lt LoginType) GetDefaultPortalServerIP() (string, error) {
var sIP string var sIP string
switch lt { switch lt {
// Qsh work area
case LoginTypeQshEdu, LoginTypeQshDX: case LoginTypeQshEdu, LoginTypeQshDX:
sIP = PortalServerIPQsh sIP = PortalServerIPQsh
// Qsh new dorm area
case LoginTypeQshDormDX, LoginTypeQshDormCMCC: case LoginTypeQshDormDX, LoginTypeQshDormCMCC:
sIP = PortalServerIPQshDorm sIP = PortalServerIPQshDorm
// Sh
case LoginTypeShEdu, LoginTypeShDX, LoginTypeShCMCC:
sIP = PortalServerIPSh
default: default:
return "", ErrIllegalLoginType return "", ErrIllegalLoginType
} }
@@ -70,6 +81,7 @@ func (lt LoginType) GetDefaultPortalServerIP() (string, error) {
func (lt LoginType) ToDomainAcID() (string, string, error) { func (lt LoginType) ToDomainAcID() (string, string, error) {
var domain, acid string var domain, acid string
switch lt { switch lt {
// Qsh work area
case LoginTypeQshEdu: case LoginTypeQshEdu:
// qsh-edu is assumed that cant login from dorm // qsh-edu is assumed that cant login from dorm
domain = PortalDomainQsh domain = PortalDomainQsh
@@ -77,12 +89,23 @@ func (lt LoginType) ToDomainAcID() (string, string, error) {
case LoginTypeQshDX: case LoginTypeQshDX:
domain = PortalDomainQshDX domain = PortalDomainQshDX
acid = AcIDQsh acid = AcIDQsh
// Qsh new dorm area
case LoginTypeQshDormDX: case LoginTypeQshDormDX:
domain = PortalDomainQshDX domain = PortalDomainQshDX
acid = AcIDQshDorm acid = AcIDQshDorm
case LoginTypeQshDormCMCC: case LoginTypeQshDormCMCC:
domain = PortalDomainQshCMCC domain = PortalDomainQshCMCC
acid = AcIDQshDorm acid = AcIDQshDorm
// Sh
case LoginTypeShEdu:
domain = PortalDomainSh
acid = AcIDSh
case LoginTypeShDX:
domain = PortalDomainShDX
acid = AcIDSh
case LoginTypeShCMCC:
domain = PortalDomainShCMCC
acid = AcIDSh
default: default:
return "", "", ErrIllegalLoginType return "", "", ErrIllegalLoginType
} }

View File

@@ -11,8 +11,22 @@ func TestAutoSelectServerIP(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
t.Log(u.sip) t.Log(LoginTypeQshEdu, u.sip)
assert.Equal(t, PortalServerIPQsh, 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) { func TestResolveLocalClientIP(t *testing.T) {

View File

@@ -19,6 +19,8 @@ const (
PortalServerIPQsh = "10.253.0.237" PortalServerIPQsh = "10.253.0.237"
// PortalServerIPQshDorm default Server IP String in Qsh new dorm area // PortalServerIPQshDorm default Server IP String in Qsh new dorm area
PortalServerIPQshDorm = "10.253.0.235" 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 PortalDomain for qsh-edu login type
PortalDomainQsh = "@dx-uestc" PortalDomainQsh = "@dx-uestc"
@@ -26,6 +28,12 @@ const (
PortalDomainQshDX = "@dx" PortalDomainQshDX = "@dx"
// PortalDomainQshCMCC PortalDomain for qshd-cmcc login type // PortalDomainQshCMCC PortalDomain for qshd-cmcc login type
PortalDomainQshCMCC = "@cmcc" 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 GetChallenge URL
PortalGetChallenge = "http://%v/cgi-bin/get_challenge?%s" PortalGetChallenge = "http://%v/cgi-bin/get_challenge?%s"
@@ -40,6 +48,8 @@ const (
AcIDQsh = "1" AcIDQsh = "1"
// AcIDQshDorm ACID for Qsh new dorm area // AcIDQshDorm ACID for Qsh new dorm area
AcIDQshDorm = "3" AcIDQshDorm = "3"
// AcIDSh ACID for Sh
AcIDSh = "6"
// PortalCGI Auth CGI URL // PortalCGI Auth CGI URL
PortalCGI = "http://%v/cgi-bin/srun_portal?%s" PortalCGI = "http://%v/cgi-bin/srun_portal?%s"