parse CapLink responses

This commit is contained in:
wish
2023-12-17 17:47:35 +11:00
parent 6686d59146
commit b8f431ae66
3 changed files with 40 additions and 8 deletions

View File

@@ -36,6 +36,12 @@
"Enabled": true, "Enabled": true,
"RawEnabled": false, "RawEnabled": false,
"OutputDir": "save-backups" "OutputDir": "save-backups"
},
"CapLink": {
"Values": [51728, 20000, 51729, 1, 20000],
"Key": "",
"Host": "",
"Port": 80
} }
}, },
"GameplayOptions": { "GameplayOptions": {

View File

@@ -114,6 +114,7 @@ type DevModeOptions struct {
EarthIDOverride int32 EarthIDOverride int32
EarthMonsterOverride []int32 EarthMonsterOverride []int32
SaveDumps SaveDumpOptions SaveDumps SaveDumpOptions
CapLink CapLinkOptions
} }
type SaveDumpOptions struct { type SaveDumpOptions struct {
@@ -122,6 +123,13 @@ type SaveDumpOptions struct {
OutputDir string OutputDir string
} }
type CapLinkOptions struct {
Values []uint16
Key string
Host string
Port int
}
// GameplayOptions has various gameplay modifiers // GameplayOptions has various gameplay modifiers
type GameplayOptions struct { type GameplayOptions struct {
FeaturedWeapons int // Number of Active Feature weapons to generate daily FeaturedWeapons int // Number of Active Feature weapons to generate daily

View File

@@ -144,14 +144,32 @@ func (s *Session) makeSignResponse(uid uint32) []byte {
s.server.db.QueryRow("SELECT psn_id FROM users WHERE id = $1", uid).Scan(&psnUser) s.server.db.QueryRow("SELECT psn_id FROM users WHERE id = $1", uid).Scan(&psnUser)
bf.WriteBytes(stringsupport.PaddedString(psnUser, 20, true)) bf.WriteBytes(stringsupport.PaddedString(psnUser, 20, true))
} }
bf.WriteUint16(0xCA10)
bf.WriteUint16(0x4E20) bf.WriteUint16(s.server.erupeConfig.DevModeOptions.CapLink.Values[0])
ps.Uint16(bf, "", false) // unk key if s.server.erupeConfig.DevModeOptions.CapLink.Values[0] == 51728 {
bf.WriteUint8(0x00) bf.WriteUint16(s.server.erupeConfig.DevModeOptions.CapLink.Values[1])
bf.WriteUint16(0xCA11) if s.server.erupeConfig.DevModeOptions.CapLink.Values[1] == 20000 || s.server.erupeConfig.DevModeOptions.CapLink.Values[1] == 20002 {
bf.WriteUint16(0x0001) ps.Uint16(bf, s.server.erupeConfig.DevModeOptions.CapLink.Key, false)
bf.WriteUint16(0x4E20) }
ps.Uint16(bf, "", false) // unk ipv4 }
caStruct := []struct {
Unk0 uint8
Unk1 uint32
Unk2 string
}{}
bf.WriteUint8(uint8(len(caStruct)))
for i := range caStruct {
bf.WriteUint8(caStruct[i].Unk0)
bf.WriteUint32(caStruct[i].Unk1)
ps.Uint8(bf, caStruct[i].Unk2, false)
}
bf.WriteUint16(s.server.erupeConfig.DevModeOptions.CapLink.Values[2])
bf.WriteUint16(s.server.erupeConfig.DevModeOptions.CapLink.Values[3])
bf.WriteUint16(s.server.erupeConfig.DevModeOptions.CapLink.Values[4])
if s.server.erupeConfig.DevModeOptions.CapLink.Values[2] == 51729 && s.server.erupeConfig.DevModeOptions.CapLink.Values[3] == 1 && s.server.erupeConfig.DevModeOptions.CapLink.Values[4] == 20000 {
ps.Uint16(bf, fmt.Sprintf(`%s:%d`, s.server.erupeConfig.DevModeOptions.CapLink.Host, s.server.erupeConfig.DevModeOptions.CapLink.Port), false)
}
bf.WriteUint32(uint32(s.server.getReturnExpiry(uid).Unix())) bf.WriteUint32(uint32(s.server.getReturnExpiry(uid).Unix()))
bf.WriteUint32(0) bf.WriteUint32(0)