Skip to content

Commit

Permalink
fix: add handle GRPC accounts and setup timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
ItzSwirlz committed Jul 18, 2024
1 parent 1510f82 commit 79e33f5
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 3 deletions.
2 changes: 1 addition & 1 deletion database/connect_mongo.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func connectMongo() {
mongoContext, _ = context.WithTimeout(context.Background(), 10*time.Second)
_ = mongoClient.Connect(mongoContext)

accountDatabase = mongoClient.Database("pretendo")
accountDatabase = mongoClient.Database("pretendo_account")
pnidCollection = accountDatabase.Collection("pnids")
nexAccountsCollection = accountDatabase.Collection("nexaccounts")

Expand Down
6 changes: 6 additions & 0 deletions globals/globals.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package globals

import (
pb_account "github.com/PretendoNetwork/grpc-go/account"
pb "github.com/PretendoNetwork/grpc-go/friends"
"github.com/PretendoNetwork/nex-go/v2"
"github.com/PretendoNetwork/plogger-go"
Expand All @@ -12,6 +13,11 @@ var Logger = plogger.NewLogger()
var KerberosPassword = "password" // * Default password
var SecureServer *nex.PRUDPServer
var SecureEndpoint *nex.PRUDPEndPoint

var GRPCAccountClientConnection *grpc.ClientConn
var GRPCAccountClient pb_account.AccountClient
var GRPCAccountCommonMetadata metadata.MD

var GRPCFriendsClientConnection *grpc.ClientConn
var GRPCFriendsClient pb.FriendsClient
var GRPCFriendsCommonMetadata metadata.MD
39 changes: 39 additions & 0 deletions init.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"strconv"
"strings"

pb_account "github.com/PretendoNetwork/grpc-go/account"
pb "github.com/PretendoNetwork/grpc-go/friends"
"github.com/PretendoNetwork/plogger-go"
"github.com/PretendoNetwork/wiiu-chat-secure/database"
Expand All @@ -25,6 +26,9 @@ func init() {
}

kerberosPassword := os.Getenv("PN_WIIU_CHAT_KERBEROS_PASSWORD")
accountGRPCHost := os.Getenv("PN_WIIU_CHAT_ACCOUNT_GRPC_HOST")
accountGRPCPort := os.Getenv("PN_WIIU_CHAT_ACCOUNT_GRPC_PORT")
accountGRPCAPIKey := os.Getenv("PN_WIIU_CHAT_ACCOUNT_GRPC_API_KEY")
friendsGRPCHost := os.Getenv("PN_WIIU_CHAT_FRIENDS_GRPC_HOST")
friendsGRPCPort := os.Getenv("PN_WIIU_CHAT_FRIENDS_GRPC_PORT")
friendsGRPCAPIKey := os.Getenv("PN_WIIU_CHAT_FRIENDS_GRPC_API_KEY")
Expand Down Expand Up @@ -68,6 +72,41 @@ func init() {
"X-API-Key", friendsGRPCAPIKey,
)

// -- GRPC Account Server --

if strings.TrimSpace(accountGRPCHost) == "" {
globals.Logger.Error("PN_WIIU_CHAT_ACCOUNT_GRPC_HOST environment variable not set")
os.Exit(0)
}

if strings.TrimSpace(accountGRPCPort) == "" {
globals.Logger.Error("PN_WIIU_CHAT_ACCOUNT_GRPC_PORT environment variable not set")
os.Exit(0)
}

if port, err := strconv.Atoi(accountGRPCPort); err != nil {
globals.Logger.Errorf("PN_WIIU_CHAT_ACCOUNT_GRPC_PORT is not a valid port. Expected 0-65535, got %s", accountGRPCPort)
os.Exit(0)
} else if port < 0 || port > 65535 {
globals.Logger.Errorf("PN_WIIU_CHAT_ACCOUNT_GRPC_PORT is not a valid port. Expected 0-65535, got %s", accountGRPCPort)
os.Exit(0)
}

if strings.TrimSpace(accountGRPCAPIKey) == "" {
globals.Logger.Warning("Insecure gRPC server detected. PN_WIIU_CHAT_ACCOUNT_GRPC_API_KEY environment variable not set")
}

globals.GRPCAccountClientConnection, err = grpc.NewClient(fmt.Sprintf("dns:%s:%s", accountGRPCHost, 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_account.NewAccountClient(globals.GRPCAccountClientConnection)
globals.GRPCAccountCommonMetadata = metadata.Pairs(
"X-API-Key", accountGRPCAPIKey,
)

globals.InitAccounts()
database.ConnectAll()
}
5 changes: 3 additions & 2 deletions nex/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@ import (

func StartNEXServer() {
globals.SecureServer = nex.NewPRUDPServer()
globals.SecureServer.ByteStreamSettings.UseStructureHeader = true

globals.SecureEndpoint = nex.NewPRUDPEndPoint(1)
globals.SecureEndpoint.IsSecureEndPoint = true
globals.SecureEndpoint.ServerAccount = globals.SecureServerAccount
globals.SecureEndpoint.AccountDetailsByPID = globals.AccountDetailsByPID
globals.SecureEndpoint.AccountDetailsByUsername = globals.AccountDetailsByUsername
globals.SecureEndpoint.ServerAccount = globals.SecureServerAccount
globals.SecureServer.BindPRUDPEndPoint(globals.SecureEndpoint)
// globals.SecureServer.SetPingTimeout(65535) // TODO: what to replace with
globals.SecureEndpoint.DefaultStreamSettings.KeepAliveTimeout = 65535

globals.SecureServer.LibraryVersions.SetDefault(nex.NewLibraryVersion(3, 4, 2))
globals.SecureEndpoint.SetAccessKey("e7a47214")
Expand Down

0 comments on commit 79e33f5

Please sign in to comment.