Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@ log
# misc
.DS_Store
splatoon
settings.json
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ARG app_dir="/home/go/app"


# * Building the application
FROM golang:1.23-alpine3.20 AS build
FROM golang:1.25-alpine3.22 AS build
ARG app_dir

WORKDIR ${app_dir}
Expand All @@ -20,7 +20,7 @@ RUN --mount=type=cache,target=/go/pkg/mod/ \


# * Running the final application
FROM alpine:3.20 AS final
FROM alpine:3.22 AS final
ARG app_dir
WORKDIR ${app_dir}

Expand Down
8 changes: 8 additions & 0 deletions globals/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ func AccountDetailsByPID(pid types.PID) (*nex.Account, *nex.Error) {
}

password, errorCode := PasswordFromPID(pid)
if errorCode != 0 && LocalAuthMode {
Logger.Errorf("Password err: %v", errorCode)
password, errorCode = PasswordFromPIDLocal(pid)
}
if errorCode != 0 {
return nil, nex.NewError(errorCode, "Failed to get password from PID")
}
Expand Down Expand Up @@ -52,6 +56,10 @@ func AccountDetailsByUsername(username string) (*nex.Account, *nex.Error) {
pid := types.NewPID(uint64(pidInt))

password, errorCode := PasswordFromPID(pid)
if errorCode != 0 && LocalAuthMode {
Logger.Errorf("Password err: %v", errorCode)
password, errorCode = PasswordFromPIDLocal(pid)
}
if errorCode != 0 {
Logger.Errorf("Password err: %v", errorCode)
return nil, nex.NewError(errorCode, "Failed to get password from PID")
Expand Down
21 changes: 21 additions & 0 deletions globals/get_user_friend_pids.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package globals

import (
"context"

pbfriends "github.com/PretendoNetwork/grpc/go/friends"
"github.com/PretendoNetwork/nex-protocols-go/v2/globals"
"google.golang.org/grpc/metadata"
)

func GetUserFriendPIDs(pid uint32) []uint32 {
ctx := metadata.NewOutgoingContext(context.Background(), GRPCFriendsCommonMetadata)

response, err := GRPCFriendsClient.GetUserFriendPIDs(ctx, &pbfriends.GetUserFriendPIDsRequest{Pid: pid})
if err != nil {
globals.Logger.Error(err.Error())
return make([]uint32, 0)
}

return response.Pids
}
12 changes: 10 additions & 2 deletions globals/globals.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package globals

import (
"database/sql"
pb "github.com/PretendoNetwork/grpc-go/account"
pbaccount "github.com/PretendoNetwork/grpc/go/account"
pbfriends "github.com/PretendoNetwork/grpc/go/friends"
"github.com/PretendoNetwork/nex-go/v2"
"github.com/PretendoNetwork/nex-protocols-common-go/v2/globals"
"github.com/PretendoNetwork/plogger-go"
Expand All @@ -20,8 +21,15 @@ var SecureServer *nex.PRUDPServer
var SecureEndpoint *nex.PRUDPEndPoint

var GRPCAccountClientConnection *grpc.ClientConn
var GRPCAccountClient pb.AccountClient
var GRPCAccountClient pbaccount.AccountClient
var GRPCAccountCommonMetadata metadata.MD

var GRPCFriendsClientConnection *grpc.ClientConn
var GRPCFriendsClient pbfriends.FriendsClient
var GRPCFriendsCommonMetadata metadata.MD

var Postgres *sql.DB
var MatchmakingManager *common_globals.MatchmakingManager

var TokenAESKey []byte
var LocalAuthMode bool
43 changes: 42 additions & 1 deletion globals/password_from_pid.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@ package globals

import (
"context"
"encoding/json"
"github.com/PretendoNetwork/nex-go/v2/types"
"github.com/PretendoNetwork/nex-protocols-go/v2/globals"
"os"
"strconv"

pb "github.com/PretendoNetwork/grpc-go/account"
pb "github.com/PretendoNetwork/grpc/go/account"
"github.com/PretendoNetwork/nex-go/v2"
"google.golang.org/grpc/metadata"
)
Expand All @@ -20,3 +24,40 @@ func PasswordFromPID(pid types.PID) (string, uint32) {

return response.Password, 0
}

// This is the same format as nex-viewer's settings.json
type jsonAccount struct {
Platform string `json:"platform"`
Username string `json:"username"`
Pid float64 `json:"pid"`
Password string `json:"password"`
}

type settingsJson struct {
Accounts []jsonAccount `json:"accounts"`
}

// PasswordFromPIDLocal is an alternative NEX password validator that can be used offline
func PasswordFromPIDLocal(pid types.PID) (string, uint32) {
file, err := os.ReadFile("settings.json")
if err != nil {
Logger.Error(err.Error())
return "", nex.ResultCodes.RendezVous.InvalidUsername
}

var data *settingsJson
err = json.Unmarshal(file, &data)
if err != nil {
Logger.Error(err.Error())
return "", nex.ResultCodes.RendezVous.InvalidUsername
}

for _, account := range data.Accounts {
if account.Username == strconv.FormatUint(uint64(pid), 10) {
globals.Logger.Infof("Using local account details for %v", account.Username)
return account.Password, 0
}
}

return "", nex.ResultCodes.RendezVous.InvalidUsername
}
1 change: 0 additions & 1 deletion globals/util.go

This file was deleted.

33 changes: 16 additions & 17 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,38 +1,37 @@
module github.com/PretendoNetwork/splatoon

go 1.23.0
go 1.24.0

toolchain go1.23.2
toolchain go1.24.9

require (
github.com/PretendoNetwork/grpc-go v1.0.2
github.com/PretendoNetwork/nex-go/v2 v2.1.3
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.2.2
github.com/PretendoNetwork/grpc/go v0.0.0-20251014173731-f51013f00744
github.com/PretendoNetwork/nex-go/v2 v2.1.4
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.4.1-0.20250809110555-cf55627f0b5a
github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.1
github.com/PretendoNetwork/plogger-go v1.1.0
github.com/joho/godotenv v1.5.1
google.golang.org/grpc v1.70.0
google.golang.org/grpc v1.76.0
)

require (
github.com/PretendoNetwork/pq-extended v1.0.0 // indirect
github.com/dolthub/maphash v0.1.0 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/jwalton/go-supportscolor v1.2.0 // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/klauspost/compress v1.18.0 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/lxzan/gws v1.8.8 // 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/rasky/go-lzo v0.0.0-20200203143853-96a758eda86e // indirect
github.com/superwhiskers/crunch/v3 v3.5.7 // indirect
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f // indirect
golang.org/x/mod v0.23.0 // indirect
golang.org/x/net v0.35.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/term v0.29.0 // indirect
golang.org/x/text v0.22.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b // indirect
google.golang.org/protobuf v1.36.5 // indirect
golang.org/x/exp v0.0.0-20251017212417-90e834f514db // indirect
golang.org/x/mod v0.29.0 // indirect
golang.org/x/net v0.46.0 // indirect
golang.org/x/sys v0.37.0 // indirect
golang.org/x/term v0.36.0 // indirect
golang.org/x/text v0.30.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f // indirect
google.golang.org/protobuf v1.36.10 // indirect
)
Loading