NAS: Fix error with Wiimmfi/CTGP values (#32)

This commit is contained in:
Maritoguionyo 2023-12-31 00:11:01 -07:00 committed by GitHub
parent 311eda1055
commit 61d3176e11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -38,22 +38,28 @@ func handleAuthRequest(moduleName string, w http.ResponseWriter, r *http.Request
continue
}
parsed, err := common.Base64DwcEncoding.DecodeString(values[0])
if err != nil {
logging.Error(moduleName, "Invalid POST form value:", aurora.Cyan(key).String()+":", aurora.Cyan(values[0]))
replyHTTPError(w, 400, "400 Bad Request")
return
}
value := string(parsed)
if key == "ingamesn" {
// Special handling required for the UTF-16 string
var utf16String []uint16
for i := 0; i < len(parsed)/2; i++ {
utf16String = append(utf16String, binary.BigEndian.Uint16(parsed[i*2:i*2+2]))
var value string
if !strings.HasPrefix(key, "_") {
parsed, err := common.Base64DwcEncoding.DecodeString(values[0])
if err != nil {
logging.Error(moduleName, "Invalid POST form value:", aurora.Cyan(key).String()+":", aurora.Cyan(values[0]))
replyHTTPError(w, 400, "400 Bad Request")
return
}
value = string(utf16.Decode(utf16String))
if key == "ingamesn" {
// Special handling required for the UTF-16 string
var utf16String []uint16
for i := 0; i < len(parsed)/2; i++ {
utf16String = append(utf16String, binary.BigEndian.Uint16(parsed[i*2:i*2+2]))
}
value = string(utf16.Decode(utf16String))
} else {
value = string(parsed)
}
} else {
// Values unique to CTGP/the Wiimmfi payload, for compatibility reasons. Some of these are not base64 encoded.
value = values[0]
}
logging.Info(moduleName, aurora.Cyan(key).String()+":", aurora.Cyan(value))