diff --git a/README.md b/README.md index 17bd554..ecf61cd 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,6 @@ All configuration options are handled via environment variables | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | | `PN_FRIENDS_CONFIG_POSTGRES_URI` | Fully qualified URI to your Postgres server (Example `postgres://username:password@localhost/friends?sslmode=disable`) | Yes | | `PN_FRIENDS_CONFIG_POSTGRES_MAX_CONNECTIONS` | Postgres server max connections | Yes | -| `PN_FRIENDS_CONFIG_AES_KEY` | AES key used in tokens provided by the account server | Yes | | `PN_FRIENDS_CONFIG_GRPC_API_KEY` | API key for your GRPC server | No (Assumed to be an open gRPC API) | | `PN_FRIENDS_CONFIG_GRPC_SERVER_PORT` | Port for the GRPC server | Yes | | `PN_FRIENDS_CONFIG_AUTHENTICATION_SERVER_PORT` | Port for the authentication server | Yes | diff --git a/database/3ds/get_friend_miis.go b/database/3ds/get_friend_miis.go index e5b209f..68f3235 100644 --- a/database/3ds/get_friend_miis.go +++ b/database/3ds/get_friend_miis.go @@ -3,6 +3,7 @@ package database_3ds import ( "github.com/PretendoNetwork/friends/database" "github.com/PretendoNetwork/nex-go/v2/types" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" "github.com/lib/pq" ) @@ -34,7 +35,7 @@ func GetFriendMiis(pids []uint32) (types.List[friends_3ds_types.FriendMii], erro mii := friends_3ds_types.NewMii() mii.Name = types.NewString(miiName) mii.ProfanityFlag = types.NewBool(miiProfanity) - mii.CharacterSet = types.NewUInt8(miiCharacterSet) + mii.CharacterSet = friends_3ds_constants.MiiCharacterSet(miiCharacterSet) mii.MiiData = types.NewBuffer(miiData) friendMii := friends_3ds_types.NewFriendMii() diff --git a/database/3ds/get_mii.go b/database/3ds/get_mii.go index ca111a8..457cdd3 100644 --- a/database/3ds/get_mii.go +++ b/database/3ds/get_mii.go @@ -5,6 +5,7 @@ import ( "github.com/PretendoNetwork/friends/database" "github.com/PretendoNetwork/nex-go/v2/types" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" ) @@ -36,7 +37,7 @@ func GetMii(pid types.PID) (friends_3ds_types.FriendMii, error) { friendMii.PID = types.NewPID(uint64(pid)) friendMii.Mii.Name = types.NewString(miiName) friendMii.Mii.ProfanityFlag = types.NewBool(miiProfanity) - friendMii.Mii.CharacterSet = types.NewUInt8(miiCharacterSet) + friendMii.Mii.CharacterSet = friends_3ds_constants.MiiCharacterSet(miiCharacterSet) friendMii.Mii.MiiData = types.NewBuffer(miiData) friendMii.ModifiedAt = types.NewDateTime(changedTime) diff --git a/database/3ds/get_user_friends.go b/database/3ds/get_user_friends.go index 1e4cc40..8881fcb 100644 --- a/database/3ds/get_user_friends.go +++ b/database/3ds/get_user_friends.go @@ -5,6 +5,7 @@ import ( "github.com/PretendoNetwork/friends/database" "github.com/PretendoNetwork/nex-go/v2/types" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" ) @@ -35,7 +36,7 @@ func GetUserFriends(pid uint32) (types.List[friends_3ds_types.FriendRelationship relationship.LFC = types.NewUInt64(0) relationship.PID = types.NewPID(uint64(pid)) - relationship.RelationshipType = types.NewUInt8(relationshipType) + relationship.RelationshipType = friends_3ds_constants.RelationshipType(relationshipType) friendRelationships = append(friendRelationships, relationship) } diff --git a/database/3ds/save_friendship.go b/database/3ds/save_friendship.go index 632bf3e..387624c 100644 --- a/database/3ds/save_friendship.go +++ b/database/3ds/save_friendship.go @@ -3,6 +3,7 @@ package database_3ds import ( "github.com/PretendoNetwork/friends/database" "github.com/PretendoNetwork/nex-go/v2/types" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" ) @@ -24,7 +25,7 @@ func SaveFriendship(senderPID uint32, recipientPID uint32) (friends_3ds_types.Fr if !found { friendRelationship.PID = types.NewPID(uint64(recipientPID)) - friendRelationship.RelationshipType = types.NewUInt8(2) // * Non-existent + friendRelationship.RelationshipType = friends_3ds_constants.RelationshipTypeInvalid return friendRelationship, nil } @@ -79,7 +80,7 @@ func SaveFriendship(senderPID uint32, recipientPID uint32) (friends_3ds_types.Fr } friendRelationship.PID = types.NewPID(uint64(recipientPID)) - friendRelationship.RelationshipType = types.NewUInt8(1) // * Complete + friendRelationship.RelationshipType = friends_3ds_constants.RelationshipTypeComplete return friendRelationship, nil } diff --git a/globals/account_details_by_pid.go b/globals/account_details_by_pid.go index b2048b2..43139eb 100644 --- a/globals/account_details_by_pid.go +++ b/globals/account_details_by_pid.go @@ -7,6 +7,7 @@ import ( pb "github.com/PretendoNetwork/grpc/go/account/v2" "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" + common_globals "github.com/PretendoNetwork/nex-protocols-common-go/v2/globals" "google.golang.org/grpc/metadata" ) @@ -23,9 +24,9 @@ func AccountDetailsByPID(pid types.PID) (*nex.Account, *nex.Error) { return GuestAccount, nil } - ctx := metadata.NewOutgoingContext(context.Background(), GRPCAccountCommonMetadata) + ctx := metadata.NewOutgoingContext(context.Background(), common_globals.GRPCAccountCommonMetadata) - response, err := GRPCAccountClient.GetNEXPassword(ctx, &pb.GetNEXPasswordRequest{Pid: uint32(pid)}) + response, err := common_globals.GRPCAccountClient.GetNEXPassword(ctx, &pb.GetNEXPasswordRequest{Pid: uint32(pid)}) if err != nil { Logger.Error(err.Error()) return nil, nex.NewError(nex.ResultCodes.RendezVous.InvalidPID, "Invalid PID") diff --git a/globals/account_details_by_username.go b/globals/account_details_by_username.go index 2095e3a..8d9dc6e 100644 --- a/globals/account_details_by_username.go +++ b/globals/account_details_by_username.go @@ -8,6 +8,7 @@ import ( pb "github.com/PretendoNetwork/grpc/go/account/v2" "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" + common_globals "github.com/PretendoNetwork/nex-protocols-common-go/v2/globals" "google.golang.org/grpc/metadata" ) @@ -36,9 +37,9 @@ func AccountDetailsByUsername(username string) (*nex.Account, *nex.Error) { // * Would always return an error even when it shouldn't. // TODO - Look into this more - ctx := metadata.NewOutgoingContext(context.Background(), GRPCAccountCommonMetadata) + ctx := metadata.NewOutgoingContext(context.Background(), common_globals.GRPCAccountCommonMetadata) - response, err := GRPCAccountClient.GetNEXPassword(ctx, &pb.GetNEXPasswordRequest{Pid: uint32(pid)}) + response, err := common_globals.GRPCAccountClient.GetNEXPassword(ctx, &pb.GetNEXPasswordRequest{Pid: uint32(pid)}) if err != nil { Logger.Error(err.Error()) return nil, nex.NewError(nex.ResultCodes.RendezVous.InvalidPID, "Invalid PID") diff --git a/globals/config.go b/globals/config.go index 4116222..2f2927e 100644 --- a/globals/config.go +++ b/globals/config.go @@ -3,7 +3,6 @@ package globals type config struct { PostgresURI string PostgresMaxConnections int64 - AESKey string GRPCAPIKey string `envconf:"optional"` GRPCServerPort uint16 AuthenticationServerPort uint16 diff --git a/globals/config_parser.go b/globals/config_parser.go index dd5260a..f25f319 100644 --- a/globals/config_parser.go +++ b/globals/config_parser.go @@ -294,6 +294,7 @@ func NewConfigParser[T any](config T) *ConfigParser[T] { "NEX": true, // * Start of our custom ones "GRPC": true, "AES": true, + "PID": true, }, allowedPluralInitialisms: map[string]bool{ "API": true, diff --git a/globals/get_user_data.go b/globals/get_user_data.go index 3f5160c..6f6b33c 100644 --- a/globals/get_user_data.go +++ b/globals/get_user_data.go @@ -4,13 +4,14 @@ import ( "context" pb "github.com/PretendoNetwork/grpc/go/account/v2" + common_globals "github.com/PretendoNetwork/nex-protocols-common-go/v2/globals" "google.golang.org/grpc/metadata" ) func GetUserData(pid uint32) (*pb.GetUserDataResponse, error) { - ctx := metadata.NewOutgoingContext(context.Background(), GRPCAccountCommonMetadata) + ctx := metadata.NewOutgoingContext(context.Background(), common_globals.GRPCAccountCommonMetadata) - response, err := GRPCAccountClient.GetUserData(ctx, &pb.GetUserDataRequest{Pid: pid}) + response, err := common_globals.GRPCAccountClient.GetUserData(ctx, &pb.GetUserDataRequest{Pid: pid}) if err != nil { return nil, err } diff --git a/globals/globals.go b/globals/globals.go index c32b000..5e86034 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -2,11 +2,9 @@ package globals import ( "github.com/PretendoNetwork/friends/types" - pb "github.com/PretendoNetwork/grpc/go/account/v2" "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/plogger-go" "google.golang.org/grpc" - "google.golang.org/grpc/metadata" ) var Logger *plogger.Logger @@ -19,7 +17,4 @@ var AuthenticationEndpoint *nex.PRUDPEndPoint var SecureServer *nex.PRUDPServer var SecureEndpoint *nex.PRUDPEndPoint var ConnectedUsers *nex.MutexMap[uint32, *types.ConnectedUser] -var AESKey []byte var GRPCAccountClientConnection *grpc.ClientConn -var GRPCAccountClient pb.AccountServiceClient -var GRPCAccountCommonMetadata metadata.MD diff --git a/go.mod b/go.mod index ed7758e..fae875b 100644 --- a/go.mod +++ b/go.mod @@ -1,47 +1,43 @@ module github.com/PretendoNetwork/friends -go 1.24.0 - -toolchain go1.24.3 +go 1.25.0 require ( github.com/PretendoNetwork/grpc/go v0.0.0-20260501210425-981c793afb28 - github.com/PretendoNetwork/nex-go/v2 v2.3.0 - github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.4.0 - github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.2 + github.com/PretendoNetwork/nex-go/v2 v2.3.1 + github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.6.0 + github.com/PretendoNetwork/nex-protocols-go/v2 v2.3.5 github.com/PretendoNetwork/plogger-go v1.1.0 github.com/PretendoNetwork/sql-manager v1.0.0 github.com/golang/protobuf v1.5.4 github.com/joho/godotenv v1.5.1 - github.com/lib/pq v1.10.9 - google.golang.org/grpc v1.78.0 + github.com/lib/pq v1.12.3 + google.golang.org/grpc v1.82.1 google.golang.org/protobuf v1.36.11 ) require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/dolthub/maphash v0.1.0 // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/jwalton/go-supportscolor v1.2.0 // indirect - github.com/klauspost/compress v1.18.3 // indirect - github.com/lxzan/gws v1.8.9 // indirect - github.com/mattn/go-colorable v0.1.14 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/klauspost/compress v1.19.0 // indirect + github.com/lxzan/gws v1.10.0 // indirect + github.com/mattn/go-colorable v0.1.15 // indirect + github.com/mattn/go-isatty v0.0.23 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.5 // indirect - github.com/prometheus/procfs v0.19.2 // indirect + github.com/prometheus/common v0.70.0 // indirect + github.com/prometheus/procfs v0.21.1 // indirect github.com/rasky/go-lzo v0.0.0-20200203143853-96a758eda86e // indirect github.com/superwhiskers/crunch/v3 v3.5.7 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/term v0.39.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 // indirect + golang.org/x/exp v0.0.0-20260709172345-9ea1abe57597 // indirect + golang.org/x/mod v0.38.0 // indirect + golang.org/x/net v0.57.0 // indirect + golang.org/x/sync v0.22.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/term v0.45.0 // indirect + golang.org/x/text v0.40.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260715232425-e75dac1f907d // indirect ) diff --git a/go.sum b/go.sum index 3bf3266..470fb5b 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,11 @@ github.com/PretendoNetwork/grpc/go v0.0.0-20260501210425-981c793afb28 h1:BHRf3HF4Wyavo1+GAzaem+dqsox/V2asr91W3YY8GbI= github.com/PretendoNetwork/grpc/go v0.0.0-20260501210425-981c793afb28/go.mod h1:L6We4KkcQeiQVPrF7iu8Zax0B1Bm0v4nssR1JOAiRFQ= -github.com/PretendoNetwork/nex-go/v2 v2.3.0 h1:CQNm/DzYhXvyzD/5l+Dxfp0/AbObuCfyfhLAeY6BejI= -github.com/PretendoNetwork/nex-go/v2 v2.3.0/go.mod h1:2xKxiTtNxGliQ80xeicc6w3D53hmunOndoB3XJxUn/8= -github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.4.0 h1:EhXj1EDbNgdg40BPx/7n1HHsAy/DayGIWthu81UNyvI= -github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.4.0/go.mod h1:tNtZly5sL3wfy4LVgybS2efm00L/wNgyvcrBV59S/YM= -github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.2 h1:RNXr0jTZZYZOZTch1e18cbx6BFfIT2IoFR9bnLd/6Ig= -github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.2/go.mod h1:+soBHmwX6ixGxj6cphLuCvfJqxcZPuowc/5e7Qi9Bz0= +github.com/PretendoNetwork/nex-go/v2 v2.3.1 h1:VGUJddSg/U/qbW52238a2utxVzwhYD/YO5ty8zV0fEE= +github.com/PretendoNetwork/nex-go/v2 v2.3.1/go.mod h1:2xKxiTtNxGliQ80xeicc6w3D53hmunOndoB3XJxUn/8= +github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.6.0 h1:i/mMiGu+Pz/txb5PoVTsU8XUD7LC0uvwBjIsF+w8q2U= +github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.6.0/go.mod h1:/u11FCCO0HQwENEvep/UwZJqXng3A/N0WONN45fDwEo= +github.com/PretendoNetwork/nex-protocols-go/v2 v2.3.5 h1:/tqg8QVXdypzqi7OatArOQKnq+Fu1RDHDgE5FJAlCCU= +github.com/PretendoNetwork/nex-protocols-go/v2 v2.3.5/go.mod h1:4+quxpxWcm1bV5LMAEjOKknuFii/CSqxLg3hAewJ0DI= github.com/PretendoNetwork/plogger-go v1.1.0 h1:x2XgyeeM8zDFGy+NcIZd3SYC2fNrVWpBBbkqTejOfiM= github.com/PretendoNetwork/plogger-go v1.1.0/go.mod h1:wpltahp91IXr9nOvWgwep8zGtUKDeCVwm+/Wa484lQ4= github.com/PretendoNetwork/sql-manager v1.0.0 h1:g0SYpQgi6Kk4ptufrLTSmDxvqaYioTcfXaDH+uXC+a0= @@ -16,10 +16,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dolthub/maphash v0.1.0 h1:bsQ7JsF4FkkWyrP3oCnFJgrCUAFbFf3kOl4L/QxPDyQ= -github.com/dolthub/maphash v0.1.0/go.mod h1:gkg4Ch4CdCDu5h6PMriVLawB7koZ+5ijb9puGMV50a4= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -34,22 +32,18 @@ github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jwalton/go-supportscolor v1.2.0 h1:g6Ha4u7Vm3LIsQ5wmeBpS4gazu0UP1DRDE8y6bre4H8= github.com/jwalton/go-supportscolor v1.2.0/go.mod h1:hFVUAZV2cWg+WFFC4v8pT2X/S2qUUBYMioBD9AINXGs= -github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw= -github.com/klauspost/compress v1.18.3/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= +github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= -github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lxzan/gws v1.8.9 h1:VU3SGUeWlQrEwfUSfokcZep8mdg/BrUF+y73YYshdBM= -github.com/lxzan/gws v1.8.9/go.mod h1:d9yHaR1eDTBHagQC6KY7ycUOaz5KWeqQtP3xu7aMK8Y= -github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ= +github.com/lib/pq v1.12.3/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= +github.com/lxzan/gws v1.10.0 h1:mNU2nqD7QEGzg9QWxUw8wNy4ByBFv2QKmKRgoLdejSA= +github.com/lxzan/gws v1.10.0/go.mod h1:gXHSCPmTGryWJ4icuqy8Yho32E4YIMHH0fkDRYJRbdc= +github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY= +github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.23 h1:cYwCQTQf3HB6xUC+BtyCLZNr7IzbOmoZbmssVNzSyiQ= +github.com/mattn/go-isatty v0.0.23/go.mod h1:nMCL3Zebbrt45jsMDgnfIwz6ydEQApk5oEI3HqDio6A= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -58,62 +52,56 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= -github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= -github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= -github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/common v0.70.0 h1:bcpru3tWPVnxGnETLgOV5jbp/JRXgYEyv65CuBLAMMI= +github.com/prometheus/common v0.70.0/go.mod h1:S/SFasQmgGiYH6C81LKCtYa8QACgthGg5zxL2udV7SY= +github.com/prometheus/procfs v0.21.1 h1:GljZCt+zSTS+NZq88cyQ1LjZ+RCHp3uVuabBWA5+OJI= +github.com/prometheus/procfs v0.21.1/go.mod h1:aB55Cww9pdSJVHk0hUf0inxWyyjPogFIjmHKYgMKmtY= github.com/rasky/go-lzo v0.0.0-20200203143853-96a758eda86e h1:dCWirM5F3wMY+cmRda/B1BiPsFtmzXqV9b0hLWtVBMs= github.com/rasky/go-lzo v0.0.0-20200203143853-96a758eda86e/go.mod h1:9leZcVcItj6m9/CfHY5Em/iBrCz7js8LcRQGTKEEv2M= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/superwhiskers/crunch/v3 v3.5.7 h1:N9RLxaR65C36i26BUIpzPXGy2f6pQ7wisu2bawbKNqg= github.com/superwhiskers/crunch/v3 v3.5.7/go.mod h1:4ub2EKgF1MAhTjoOCTU4b9uLMsAweHEa89aRrfAypXA= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= -go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= -golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= +golang.org/x/exp v0.0.0-20260709172345-9ea1abe57597 h1:qLvzZeaANDgyVOA8pyHCOStGlXn0rseXma+GQjeuv2g= +golang.org/x/exp v0.0.0-20260709172345-9ea1abe57597/go.mod h1:EdfpwwqSu+0Li0mzskwHU6FWDV3t9Q+RZDo3QMUtL3Q= +golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= +golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= +golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= +golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= -golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 h1:C4WAdL+FbjnGlpp2S+HMVhBeCq2Lcib4xZqfPNF6OoQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= +golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= +golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= +golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260715232425-e75dac1f907d h1:Jkpk39hlTZOIp3RbfvNX9R8Hv+Sw0X89nlU/xFOErsc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260715232425-e75dac1f907d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/grpc/get_user_friends_data_3ds.go b/grpc/get_user_friends_data_3ds.go index 4e1ab7d..3d0a79d 100644 --- a/grpc/get_user_friends_data_3ds.go +++ b/grpc/get_user_friends_data_3ds.go @@ -14,6 +14,7 @@ import ( "github.com/PretendoNetwork/friends/utility" pb "github.com/PretendoNetwork/grpc/go/friends/v2" "github.com/PretendoNetwork/nex-go/v2/types" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -69,7 +70,7 @@ func (s *gRPCFriendsV2Server) GetUserFriendsData3DS(ctx context.Context, in *pb. mii := friends_3ds_types.NewMii() mii.Name = types.NewString("Bandwidth") mii.ProfanityFlag = types.NewBool(false) - mii.CharacterSet = types.NewUInt8(0) + mii.CharacterSet = friends_3ds_constants.MiiCharacterSetJUE mii.MiiData = types.NewBuffer([]byte{ 0x03, 0x00, 0x00, 0x40, 0xE9, 0x55, 0xA2, 0x09, 0xE7, 0xC7, 0x41, 0x82, 0xD9, 0x7D, 0x0B, 0x2D, diff --git a/grpc/get_user_friends_data_wiiu.go b/grpc/get_user_friends_data_wiiu.go index b1e7e15..04f2ff6 100644 --- a/grpc/get_user_friends_data_wiiu.go +++ b/grpc/get_user_friends_data_wiiu.go @@ -12,6 +12,7 @@ import ( "github.com/PretendoNetwork/friends/globals" pb "github.com/PretendoNetwork/grpc/go/friends/v2" "github.com/PretendoNetwork/nex-go/v2/types" + friends_wiiu_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/constants" friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -64,7 +65,13 @@ func (s *gRPCFriendsV2Server) GetUserFriendsDataWiiU(ctx context.Context, in *pb }) bella.NNAInfo.PrincipalBasicInfo.Mii.Datetime = types.NewDateTime(0) - bella.Presence.ChangedFlags = types.NewUInt32(0x1EE) + bella.Presence.ChangedFlags = friends_wiiu_constants.PresenceChangedFlagApplicationData | + friends_wiiu_constants.PresenceChangedFlagGatheringID | + friends_wiiu_constants.PresenceChangedFlagOwnerPID | + friends_wiiu_constants.PresenceChangedFlagJoinGameMode | + friends_wiiu_constants.PresenceChangedFlagMatchmakeSystemType | + friends_wiiu_constants.PresenceChangedFlagJoinAvailabilityFlag | + friends_wiiu_constants.PresenceChangedFlagGameModeDescription // 0x1EE bella.Presence.Online = types.NewBool(true) bella.Presence.GameKey = friends_wiiu_types.NewGameKey() bella.Presence.Unknown1 = types.NewUInt8(0) diff --git a/init.go b/init.go index 9d85e48..2736dba 100644 --- a/init.go +++ b/init.go @@ -4,20 +4,16 @@ import ( "crypto/md5" "crypto/rand" "encoding/hex" - "fmt" "os" "strings" "github.com/PretendoNetwork/friends/database" "github.com/PretendoNetwork/friends/globals" "github.com/PretendoNetwork/friends/types" - pb "github.com/PretendoNetwork/grpc/go/account/v2" "github.com/PretendoNetwork/nex-go/v2" nex_types "github.com/PretendoNetwork/nex-go/v2/types" + common_globals "github.com/PretendoNetwork/nex-protocols-common-go/v2/globals" "github.com/PretendoNetwork/plogger-go" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials/insecure" - "google.golang.org/grpc/metadata" "github.com/joho/godotenv" ) @@ -47,11 +43,6 @@ func init() { globals.AuthenticationServerAccount = nex.NewAccount(nex_types.NewPID(1), "Quazal Authentication", globals.KerberosPassword, false) globals.SecureServerAccount = nex.NewAccount(nex_types.NewPID(2), "Quazal Rendez-Vous", globals.KerberosPassword, false) globals.GuestAccount = nex.NewAccount(nex_types.NewPID(100), "guest", "MMQea3n!fsik", false) - globals.AESKey, err = hex.DecodeString(globals.Config.AESKey) - if err != nil { - globals.Logger.Criticalf("Failed to decode AES key: %v", err) - os.Exit(0) - } if strings.TrimSpace(globals.Config.GRPCAPIKey) == "" { globals.Logger.Warning("Insecure gRPC server detected. PN_FRIENDS_CONFIG_GRPC_API_KEY environment variable not set") @@ -61,16 +52,7 @@ func init() { globals.Logger.Warning("Insecure gRPC server detected. PN_FRIENDS_CONFIG_ACCOUNT_GRPC_API_KEY environment variable not set") } - globals.GRPCAccountClientConnection, err = grpc.NewClient(fmt.Sprintf("%s:%d", globals.Config.AccountGRPCHost, globals.Config.AccountGRPCPort), grpc.WithTransportCredentials(insecure.NewCredentials())) - if err != nil { - globals.Logger.Criticalf("Failed to connect to account gRPC server: %v", err) - os.Exit(0) - } - - globals.GRPCAccountClient = pb.NewAccountServiceClient(globals.GRPCAccountClientConnection) - globals.GRPCAccountCommonMetadata = metadata.Pairs( - "X-API-Key", globals.Config.AccountGRPCAPIKey, - ) + common_globals.ConnectToAccountGRPC(globals.Config.AccountGRPCHost, globals.Config.AccountGRPCPort, globals.Config.AccountGRPCAPIKey) if strings.TrimSpace(globals.Config.MiiDecryptKey) == "" { globals.Logger.Warning("PN_FRIENDS_CONFIG_MII_DECRYPT_KEY environment variable not set. 3DS Mii data cannot be decrypted") diff --git a/nex/account-management/nintendo_create_account.go b/nex/account-management/nintendo_create_account.go index ad53625..d058efa 100644 --- a/nex/account-management/nintendo_create_account.go +++ b/nex/account-management/nintendo_create_account.go @@ -20,13 +20,12 @@ func NintendoCreateAccount(err error, packet nex.PacketInterface, callID uint32, return nil, nex.NewError(nex.ResultCodes.Core.InvalidArgument, err.Error()) } - decryptedToken, nexError := utility.ValidateNintendoCreateAccountToken(oAuthData) + pid, nexError := utility.ValidateNintendoCreateAccountToken(oAuthData) if nexError != nil { globals.Logger.Error(nexError.Error()) return nil, nexError } - pid := types.NewPID(uint64(decryptedToken.UserPID)) pidString := strconv.FormatUint(uint64(pid), 10) mac := hmac.New(md5.New, []byte(globals.Config.PIDHmacKey)) diff --git a/nex/friends-3ds/update_preference.go b/nex/friends-3ds/update_preference.go index 71d5edc..e5ad089 100644 --- a/nex/friends-3ds/update_preference.go +++ b/nex/friends-3ds/update_preference.go @@ -7,6 +7,7 @@ import ( nex "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" ) @@ -27,7 +28,7 @@ func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, publ if !showGame { emptyPresence := friends_3ds_types.NewNintendoPresence() emptyPresence.GameKey = friends_3ds_types.NewGameKey() - emptyPresence.ChangedFlags = types.NewUInt32(0xFFFFFFFF) // * All flags + emptyPresence.ChangedFlags = friends_3ds_constants.PresenceChangedFlag(0xFFFFFFFF) // * All flags notifications_3ds.SendPresenceUpdate(connection, emptyPresence) } diff --git a/nex/friends-3ds/update_presence.go b/nex/friends-3ds/update_presence.go index 60d5f25..7bffddc 100644 --- a/nex/friends-3ds/update_presence.go +++ b/nex/friends-3ds/update_presence.go @@ -7,6 +7,7 @@ import ( nex "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds" + friends_3ds_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/constants" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" ) @@ -24,7 +25,7 @@ func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presen if !showGame { currentPresence = friends_3ds_types.NewNintendoPresence() currentPresence.GameKey = friends_3ds_types.NewGameKey() - currentPresence.ChangedFlags = types.NewUInt32(0xFFFFFFFF) // * All flags + currentPresence.ChangedFlags = friends_3ds_constants.PresenceChangedFlag(0xFFFFFFFF) // * All flags } go notifications_3ds.SendPresenceUpdate(connection, currentPresence) diff --git a/nex/friends-wiiu/add_friend_request.go b/nex/friends-wiiu/add_friend_request.go index 486f999..d192302 100644 --- a/nex/friends-wiiu/add_friend_request.go +++ b/nex/friends-wiiu/add_friend_request.go @@ -10,6 +10,7 @@ import ( nex "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu" + friends_wiiu_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/constants" friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types" ) @@ -91,7 +92,7 @@ func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid friendInfo.NNAInfo.Unknown2 = types.NewUInt8(0) friendInfo.Presence = friends_wiiu_types.NewNintendoPresenceV2() - friendInfo.Presence.ChangedFlags = types.NewUInt32(0) + friendInfo.Presence.ChangedFlags = friends_wiiu_constants.PresenceChangedFlagNone friendInfo.Presence.Online = types.NewBool(false) friendInfo.Presence.GameKey = gameKey // * Maybe this is reused? friendInfo.Presence.Unknown1 = types.NewUInt8(0) diff --git a/nex/friends-wiiu/update_and_get_all_information.go b/nex/friends-wiiu/update_and_get_all_information.go index de1e2f7..361c9b5 100644 --- a/nex/friends-wiiu/update_and_get_all_information.go +++ b/nex/friends-wiiu/update_and_get_all_information.go @@ -9,6 +9,7 @@ import ( nex "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu" + friends_wiiu_constants "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/constants" friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types" ) @@ -129,7 +130,13 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui }) bella.NNAInfo.PrincipalBasicInfo.Mii.Datetime = types.NewDateTime(0) - bella.Presence.ChangedFlags = types.NewUInt32(0x1EE) + bella.Presence.ChangedFlags = friends_wiiu_constants.PresenceChangedFlagApplicationData | + friends_wiiu_constants.PresenceChangedFlagGatheringID | + friends_wiiu_constants.PresenceChangedFlagOwnerPID | + friends_wiiu_constants.PresenceChangedFlagJoinGameMode | + friends_wiiu_constants.PresenceChangedFlagMatchmakeSystemType | + friends_wiiu_constants.PresenceChangedFlagJoinAvailabilityFlag | + friends_wiiu_constants.PresenceChangedFlagGameModeDescription // 0x1EE bella.Presence.Online = types.NewBool(true) bella.Presence.GameKey = friends_wiiu_types.NewGameKey() bella.Presence.Unknown1 = types.NewUInt8(0) diff --git a/nex/secure-connection/register_ex.go b/nex/secure-connection/register_ex.go index ac9cb66..c85995e 100644 --- a/nex/secure-connection/register_ex.go +++ b/nex/secure-connection/register_ex.go @@ -28,7 +28,7 @@ func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs pidConnectionID := types.NewUInt32(0) urlPublic := types.NewString("") - errorCode := common_globals.ValidatePretendoLoginData(connection.PID(), hCustomData, globals.AESKey) + errorCode := common_globals.ValidatePNLoginData(connection.PID(), hCustomData, []string{"00003200"}) if errorCode != nil { common_globals.Logger.Error(errorCode.Message) retval = types.NewQResultError(errorCode.ResultCode) @@ -50,16 +50,16 @@ func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs // * Station reports itself as being non-public (local) if localStation == nil && !stationURL.IsPublic() { - localStation = &stationURL + localStation = stationURL.CopyRef().(*types.StationURL) } // * Still did not find the station, trying heuristics if localStation == nil && natf == constants.UnknownNATFiltering && natm == constants.UnknownNATMapping { - localStation = &stationURL + localStation = stationURL.CopyRef().(*types.StationURL) } if publicStation == nil && stationURL.IsPublic() { - publicStation = &stationURL + publicStation = stationURL.CopyRef().(*types.StationURL) } } @@ -69,7 +69,7 @@ func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs } if publicStation == nil { - publicStation = localStation + publicStation = localStation.CopyRef().(*types.StationURL) var address string var port uint16 diff --git a/notifications/3ds/send_comment_update.go b/notifications/3ds/send_comment_update.go index 0aff7d2..baddfc4 100644 --- a/notifications/3ds/send_comment_update.go +++ b/notifications/3ds/send_comment_update.go @@ -9,6 +9,7 @@ import ( "github.com/PretendoNetwork/nex-go/v2/constants" "github.com/PretendoNetwork/nex-go/v2/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) @@ -17,7 +18,7 @@ func SendCommentUpdate(connection *nex.PRUDPConnection, comment string) { notificationEvent.StrParam = types.NewString(comment) eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(3) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendCommentUpdated3DS eventObject.SenderPID = connection.PID() eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral) diff --git a/notifications/3ds/send_favorite_update.go b/notifications/3ds/send_favorite_update.go index 03ebf34..28c6451 100644 --- a/notifications/3ds/send_favorite_update.go +++ b/notifications/3ds/send_favorite_update.go @@ -10,12 +10,13 @@ import ( "github.com/PretendoNetwork/nex-go/v2/types" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) func SendFavoriteUpdate(connection *nex.PRUDPConnection, gameKey friends_3ds_types.GameKey) { eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(2) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendFavoriteGameUpdated3DS eventObject.SenderPID = connection.PID() eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = gameKey.Copy().(friends_3ds_types.GameKey) diff --git a/notifications/3ds/send_friendship_completed.go b/notifications/3ds/send_friendship_completed.go index 6e6b98b..c44cd6b 100644 --- a/notifications/3ds/send_friendship_completed.go +++ b/notifications/3ds/send_friendship_completed.go @@ -6,6 +6,7 @@ import ( "github.com/PretendoNetwork/nex-go/v2/constants" "github.com/PretendoNetwork/nex-go/v2/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) @@ -16,7 +17,7 @@ func SendFriendshipCompleted(connection *nex.PRUDPConnection, senderPID types.PI notificationEvent.U64Param2 = types.NewUInt64(uint64(types.NewDateTime(0).Now())) // * Friendship timestamp eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(7) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendshipCompleted3DS eventObject.SenderPID = senderPID eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral) diff --git a/notifications/3ds/send_mii_notification.go b/notifications/3ds/send_mii_notification.go index daa9dfc..ec62e25 100644 --- a/notifications/3ds/send_mii_notification.go +++ b/notifications/3ds/send_mii_notification.go @@ -9,6 +9,7 @@ import ( "github.com/PretendoNetwork/nex-go/v2/constants" "github.com/PretendoNetwork/nex-go/v2/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) @@ -16,7 +17,7 @@ func SendMiiUpdateNotification(connection *nex.PRUDPConnection) { notificationEvent := nintendo_notifications_types.NewNintendoNotificationEventGeneral() eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(5) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendMiiChanged3DS eventObject.SenderPID = connection.PID() eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral) diff --git a/notifications/3ds/send_presence_update.go b/notifications/3ds/send_presence_update.go index ed9a205..8262165 100644 --- a/notifications/3ds/send_presence_update.go +++ b/notifications/3ds/send_presence_update.go @@ -10,12 +10,13 @@ import ( "github.com/PretendoNetwork/nex-go/v2/types" friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) func SendPresenceUpdate(connection *nex.PRUDPConnection, presence friends_3ds_types.NintendoPresence) { eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(1) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendPresenceUpdated3DS eventObject.SenderPID = connection.PID() eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = presence.Copy().(friends_3ds_types.NintendoPresence) diff --git a/notifications/3ds/send_user_went_offline.go b/notifications/3ds/send_user_went_offline.go index 288b419..1cda4c7 100644 --- a/notifications/3ds/send_user_went_offline.go +++ b/notifications/3ds/send_user_went_offline.go @@ -9,6 +9,7 @@ import ( "github.com/PretendoNetwork/nex-go/v2/constants" "github.com/PretendoNetwork/nex-go/v2/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) @@ -31,7 +32,7 @@ func SendUserWentOffline(connection *nex.PRUDPConnection, pid types.PID) { notificationEvent := nintendo_notifications_types.NewNintendoNotificationEventGeneral() eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(10) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendOffline eventObject.SenderPID = connection.PID() eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral) diff --git a/notifications/wiiu/send_friend_request.go b/notifications/wiiu/send_friend_request.go index e312f93..7daa18b 100644 --- a/notifications/wiiu/send_friend_request.go +++ b/notifications/wiiu/send_friend_request.go @@ -7,12 +7,13 @@ import ( "github.com/PretendoNetwork/nex-go/v2/types" friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) func SendFriendRequest(connection *nex.PRUDPConnection, friendRequestNotificationData friends_wiiu_types.FriendRequest) { eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(27) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendRequestReceivedWiiU eventObject.SenderPID = friendRequestNotificationData.PrincipalInfo.PID.Copy().(types.PID) eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = friendRequestNotificationData.Copy().(friends_wiiu_types.FriendRequest) diff --git a/notifications/wiiu/send_friend_request_accepted.go b/notifications/wiiu/send_friend_request_accepted.go index 5f25c80..1ae8a36 100644 --- a/notifications/wiiu/send_friend_request_accepted.go +++ b/notifications/wiiu/send_friend_request_accepted.go @@ -7,12 +7,13 @@ import ( "github.com/PretendoNetwork/nex-go/v2/types" friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) func SendFriendRequestAccepted(connection *nex.PRUDPConnection, friendInfo friends_wiiu_types.FriendInfo) { eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(30) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendRequestAcceptedWiiU eventObject.SenderPID = friendInfo.NNAInfo.PrincipalBasicInfo.PID.Copy().(types.PID) eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = friendInfo.Copy().(friends_wiiu_types.FriendInfo) diff --git a/notifications/wiiu/send_friendship_removed.go b/notifications/wiiu/send_friendship_removed.go index de759e4..dbe7f99 100644 --- a/notifications/wiiu/send_friendship_removed.go +++ b/notifications/wiiu/send_friendship_removed.go @@ -6,6 +6,7 @@ import ( "github.com/PretendoNetwork/nex-go/v2/constants" "github.com/PretendoNetwork/nex-go/v2/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) @@ -13,7 +14,7 @@ func SendFriendshipRemoved(connection *nex.PRUDPConnection, senderPID types.PID) nintendoNotificationEventGeneral := nintendo_notifications_types.NewNintendoNotificationEventGeneral() eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(26) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendshipCanceledWiiU eventObject.SenderPID = senderPID.Copy().(types.PID) eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = nintendoNotificationEventGeneral.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral) diff --git a/notifications/wiiu/send_presence_update.go b/notifications/wiiu/send_presence_update.go index 29ab765..a20182c 100644 --- a/notifications/wiiu/send_presence_update.go +++ b/notifications/wiiu/send_presence_update.go @@ -9,12 +9,13 @@ import ( "github.com/PretendoNetwork/nex-go/v2/types" friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) func SendPresenceUpdate(presence friends_wiiu_types.NintendoPresenceV2) { eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(24) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendStartedTitleWiiU eventObject.SenderPID = presence.PID.Copy().(types.PID) eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = presence.Copy().(friends_wiiu_types.NintendoPresenceV2) diff --git a/notifications/wiiu/send_user_went_offline.go b/notifications/wiiu/send_user_went_offline.go index 63ef669..66c2c17 100644 --- a/notifications/wiiu/send_user_went_offline.go +++ b/notifications/wiiu/send_user_went_offline.go @@ -8,6 +8,7 @@ import ( "github.com/PretendoNetwork/nex-go/v2/constants" "github.com/PretendoNetwork/nex-go/v2/types" nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications" + nintendo_notifications_constants "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/constants" nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types" ) @@ -37,7 +38,7 @@ func SendUserWentOffline(connection *nex.PRUDPConnection, pid types.PID) { nintendoNotificationEventGeneral.StrParam = types.NewString("") eventObject := nintendo_notifications_types.NewNintendoNotificationEvent() - eventObject.Type = types.NewUInt32(10) + eventObject.Type = nintendo_notifications_constants.NotificationTypeFriendOffline eventObject.SenderPID = connection.PID().Copy().(types.PID) eventObject.DataHolder = types.NewDataHolder() eventObject.DataHolder.Object = nintendoNotificationEventGeneral.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral) diff --git a/utility/authentication.go b/utility/authentication.go index 11ff686..e8d78bd 100644 --- a/utility/authentication.go +++ b/utility/authentication.go @@ -1,21 +1,22 @@ package utility import ( - "encoding/base64" + "context" "fmt" - "strings" "time" "github.com/PretendoNetwork/nex-go/v2" "github.com/PretendoNetwork/nex-go/v2/types" common_globals "github.com/PretendoNetwork/nex-protocols-common-go/v2/globals" account_management_types "github.com/PretendoNetwork/nex-protocols-go/v2/account-management/types" + pb "github.com/PretendoNetwork/grpc/go/account/v2" + "google.golang.org/grpc/metadata" "github.com/PretendoNetwork/friends/globals" ) -// ValidateNintendoCreateAccountToken validates the given Pretendo token for account creation -func ValidateNintendoCreateAccountToken(token types.DataHolder) (*common_globals.NEXToken, *nex.Error) { +// ValidateNintendoCreateAccountToken validates the given Pretendo Network token for account creation +func ValidateNintendoCreateAccountToken(token types.DataHolder) (types.PID, *nex.Error) { var tokenBase64 string tokenDataType := token.Object.DataObjectID().(types.String) @@ -29,42 +30,43 @@ func ValidateNintendoCreateAccountToken(token types.DataHolder) (*common_globals accountExtraInfo := token.Object.Copy().(account_management_types.AccountExtraInfo) tokenBase64 = string(accountExtraInfo.NEXToken) - tokenBase64 = strings.Replace(tokenBase64, ".", "+", -1) - tokenBase64 = strings.Replace(tokenBase64, "-", "/", -1) - tokenBase64 = strings.Replace(tokenBase64, "*", "=", -1) default: globals.Logger.Errorf("Invalid token data type %s!", tokenDataType) - return nil, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, fmt.Sprintf("Invalid token data type %s!", tokenDataType)) + return 0, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, fmt.Sprintf("Invalid token data type %s!", tokenDataType)) } - encryptedToken, err := base64.StdEncoding.DecodeString(tokenBase64) + ctx := metadata.NewOutgoingContext(context.Background(), common_globals.GRPCAccountCommonMetadata) + + response, err := common_globals.GRPCAccountClient.ExchangeNEXTokenForUserData(ctx, &pb.ExchangeNEXTokenForUserDataRequest{ + GameServerIds: []string{"00003200"}, + Token: tokenBase64, + }) if err != nil { - globals.Logger.Error(err.Error()) - return nil, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, err.Error()) + return 0, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, err.Error()) } - decryptedToken, nexError := common_globals.DecryptToken(encryptedToken, globals.AESKey) - if nexError != nil { - return nil, nexError + // * The account server database separates all the token types into their own + // * collections, so a non-NEX token (even if valid) should still return no + // * data here. But sanity the types check anyway just in case + if response.TokenInfo.TokenType != 3 { // * 3 = NEX + return 0, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, "Invalid token") } - // Check for NEX token type - if decryptedToken.TokenType != 3 { - return nil, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, "Invalid token type") + if response.TokenInfo.SystemType != 1 && response.TokenInfo.SystemType != 2 { // * 1 = WUP, 2 = CTR + return 0, nex.NewError(nex.ResultCodes.Authentication.ValidationFailed, "Invalid token") } - // Expire time is in milliseconds - expireTime := time.Unix(int64(decryptedToken.ExpireTime / 1000), 0) - - if expireTime.Before(time.Now()) { - return nil, nex.NewError(nex.ResultCodes.Authentication.TokenExpired, "Token expired") + // * If the token is expired, the account server database will have deleted it, + // * but sanity check anyway just in case + if response.TokenInfo.ExpireTime != nil && response.TokenInfo.ExpireTime.AsTime().Before(time.Now()) { + return 0, nex.NewError(nex.ResultCodes.Authentication.TokenExpired, "Token expired") } // PID isn't checked since account creation is done with a guest account - if decryptedToken.AccessLevel < 0 { - return nil, nex.NewError(nex.ResultCodes.RendezVous.AccountDisabled, fmt.Sprintf("Account %d is banned", decryptedToken.UserPID)) + if response.NexAccount.AccessLevel < 0 { + return 0, nex.NewError(nex.ResultCodes.RendezVous.AccountDisabled, fmt.Sprintf("Account %d is banned", response.NexAccount.Pid)) } - return decryptedToken, nil + return types.NewPID(uint64(response.NexAccount.Pid)), nil }