mirror of
https://github.com/renorris/openfsd
synced 2026-03-22 14:35:36 +08:00
treat sysuid as string
This commit is contained in:
@@ -16,7 +16,7 @@ type ClientIdentificationPDU struct {
|
||||
MajorVersion int `validate:"min=0,max=999"`
|
||||
MinorVersion int `validate:"min=0,max=999"`
|
||||
CID int `validate:"min=100000,max=9999999"`
|
||||
SysUID int `validate:""`
|
||||
SysUID string `validate:"required,min=1,max=64"`
|
||||
InitialChallenge string `validate:"required,hexadecimal,min=2,max=32"`
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ func (p *ClientIdentificationPDU) Serialize() string {
|
||||
clientIDBytes := make([]byte, 2)
|
||||
binary.BigEndian.PutUint16(clientIDBytes, p.ClientID)
|
||||
clientIDStr := hex.EncodeToString(clientIDBytes)
|
||||
return fmt.Sprintf("$ID%s:%s:%s:%s:%d:%d:%d:%d:%s%s",
|
||||
return fmt.Sprintf("$ID%s:%s:%s:%s:%d:%d:%d:%s:%s%s",
|
||||
p.From, p.To, clientIDStr, p.ClientName, p.MajorVersion,
|
||||
p.MinorVersion, p.CID, p.SysUID, p.InitialChallenge, PacketDelimiter)
|
||||
}
|
||||
@@ -42,6 +42,7 @@ func (p *ClientIdentificationPDU) Parse(packet string) error {
|
||||
From: fields[0],
|
||||
To: fields[1],
|
||||
ClientName: fields[3],
|
||||
SysUID: fields[7],
|
||||
InitialChallenge: fields[8],
|
||||
}
|
||||
|
||||
@@ -70,10 +71,6 @@ func (p *ClientIdentificationPDU) Parse(packet string) error {
|
||||
return NewGenericFSDError(SyntaxError, fields[6], "invalid CID")
|
||||
}
|
||||
|
||||
if pdu.SysUID, err = strconv.Atoi(fields[7]); err != nil {
|
||||
return NewGenericFSDError(SyntaxError, fields[7], "invalid system UID")
|
||||
}
|
||||
|
||||
if err = V.Struct(&pdu); err != nil {
|
||||
if validatorErr := getFSDErrorFromValidatorErrors(err); err != nil {
|
||||
return validatorErr
|
||||
|
||||
@@ -28,7 +28,7 @@ func TestParseClientIdentificationPDU(t *testing.T) {
|
||||
MajorVersion: 1,
|
||||
MinorVersion: 2,
|
||||
CID: 1234567,
|
||||
SysUID: 12345678,
|
||||
SysUID: "12345678",
|
||||
InitialChallenge: "abcd1234",
|
||||
},
|
||||
wantErr: nil,
|
||||
@@ -70,10 +70,10 @@ func TestParseClientIdentificationPDU(t *testing.T) {
|
||||
wantErr: NewGenericFSDError(SyntaxError, "XY", "invalid minor version"),
|
||||
},
|
||||
{
|
||||
name: "Invalid SysUID - Non-numeric",
|
||||
packet: "$IDCLIENT:SERVER:1234:ClientName:1:2:0001234:SYSUID:abcd1234\r\n",
|
||||
name: "missing sysuid",
|
||||
packet: "$IDCLIENT:SERVER:1234:ClientName:1:2:0001234::abcdefgh\r\n",
|
||||
want: &ClientIdentificationPDU{},
|
||||
wantErr: NewGenericFSDError(SyntaxError, "SYSUID", "invalid system UID"),
|
||||
wantErr: NewGenericFSDError(SyntaxError, "", "validation error"),
|
||||
},
|
||||
{
|
||||
name: "Invalid CID - too long",
|
||||
@@ -131,7 +131,7 @@ func TestClientIdentificationPDU_Serialize(t *testing.T) {
|
||||
MajorVersion: 1,
|
||||
MinorVersion: 2,
|
||||
CID: 1234567,
|
||||
SysUID: 12345678,
|
||||
SysUID: "12345678",
|
||||
InitialChallenge: "abcd1234",
|
||||
},
|
||||
want: "$IDCLIENT:SERVER:1234:ClientName:1:2:1234567:12345678:abcd1234\r\n",
|
||||
|
||||
@@ -31,7 +31,7 @@ type clientStruct struct {
|
||||
clientName string
|
||||
majorVersion int
|
||||
minorVersion int
|
||||
sysUID int
|
||||
sysUID string
|
||||
initialChallenge string
|
||||
networkRating int
|
||||
protocolRevsion int
|
||||
@@ -119,7 +119,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -156,7 +156,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -195,7 +195,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -305,7 +305,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -420,7 +420,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -482,7 +482,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -522,7 +522,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -559,7 +559,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -590,7 +590,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -626,7 +626,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -658,7 +658,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "30984979d8caed23",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -695,7 +695,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -731,7 +731,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: protocol.NetworkRatingSUP,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -762,7 +762,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -798,7 +798,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: protocol.NetworkRatingOBS,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -834,7 +834,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: 1,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
@@ -869,7 +869,7 @@ func TestFSDClientLogic(t *testing.T) {
|
||||
clientName: "vPilot",
|
||||
majorVersion: 3,
|
||||
minorVersion: 8,
|
||||
sysUID: -99999,
|
||||
sysUID: "-99999",
|
||||
initialChallenge: "abcdef",
|
||||
networkRating: protocol.NetworkRatingOBS,
|
||||
protocolRevsion: protocol.ProtoRevisionVatsim2022,
|
||||
|
||||
@@ -75,7 +75,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -316,7 +316,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: string(lotsOfNines), // <-- Make this field 4096 bytes long
|
||||
}
|
||||
|
||||
@@ -395,7 +395,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: 9999999,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -465,7 +465,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -534,7 +534,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
@@ -604,7 +604,7 @@ func TestFSDClientLogin(t *testing.T) {
|
||||
MajorVersion: 3,
|
||||
MinorVersion: 8,
|
||||
CID: user1.CID,
|
||||
SysUID: -99999,
|
||||
SysUID: "-99999",
|
||||
InitialChallenge: "0123456789abcdef",
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user