treat sysuid as string

This commit is contained in:
Reese Norris
2024-10-22 18:27:06 -07:00
parent 52bce0edf2
commit 1857df46f0
4 changed files with 35 additions and 38 deletions

View File

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

View File

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

View File

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

View File

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