mirror of
https://github.com/PretendoNetwork/friends.git
synced 2025-04-02 11:01:46 -04:00
70 lines
2.2 KiB
Go
70 lines
2.2 KiB
Go
package nex
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"time"
|
|
|
|
database_3ds "github.com/PretendoNetwork/friends/database/3ds"
|
|
database_wiiu "github.com/PretendoNetwork/friends/database/wiiu"
|
|
"github.com/PretendoNetwork/friends/globals"
|
|
notifications_3ds "github.com/PretendoNetwork/friends/notifications/3ds"
|
|
notifications_wiiu "github.com/PretendoNetwork/friends/notifications/wiiu"
|
|
friends_types "github.com/PretendoNetwork/friends/types"
|
|
nex "github.com/PretendoNetwork/nex-go/v2"
|
|
"github.com/PretendoNetwork/nex-go/v2/types"
|
|
_ "github.com/PretendoNetwork/nex-protocols-go/v2"
|
|
)
|
|
|
|
func StartSecureServer() {
|
|
port, _ := strconv.Atoi(os.Getenv("PN_FRIENDS_SECURE_SERVER_PORT"))
|
|
|
|
globals.SecureServer = nex.NewPRUDPServer()
|
|
globals.SecureEndpoint = nex.NewPRUDPEndPoint(1)
|
|
|
|
globals.SecureEndpoint.ServerAccount = globals.SecureServerAccount
|
|
globals.SecureEndpoint.AccountDetailsByPID = globals.AccountDetailsByPID
|
|
globals.SecureEndpoint.AccountDetailsByUsername = globals.AccountDetailsByUsername
|
|
|
|
globals.SecureEndpoint.OnConnectionEnded(func(connection *nex.PRUDPConnection) {
|
|
pid := uint32(connection.PID())
|
|
user, ok := globals.ConnectedUsers.Get(pid)
|
|
|
|
if !ok || user == nil {
|
|
return
|
|
}
|
|
|
|
platform := user.Platform
|
|
lastOnline := types.NewDateTime(0)
|
|
lastOnline.FromTimestamp(time.Now())
|
|
|
|
if platform == friends_types.WUP {
|
|
err := database_wiiu.UpdateUserLastOnlineTime(pid, lastOnline)
|
|
if err != nil {
|
|
globals.Logger.Critical(err.Error())
|
|
}
|
|
|
|
notifications_wiiu.SendUserWentOfflineGlobally(connection)
|
|
} else if platform == friends_types.CTR {
|
|
err := database_3ds.UpdateUserLastOnlineTime(pid, lastOnline)
|
|
if err != nil {
|
|
globals.Logger.Critical(err.Error())
|
|
}
|
|
|
|
notifications_3ds.SendUserWentOfflineGlobally(connection)
|
|
}
|
|
|
|
globals.ConnectedUsers.Delete(pid)
|
|
})
|
|
|
|
registerCommonSecureServerProtocols()
|
|
registerSecureServerProtocols()
|
|
|
|
globals.SecureEndpoint.IsSecureEndPoint = true
|
|
globals.SecureServer.SetFragmentSize(962)
|
|
globals.SecureServer.LibraryVersions.SetDefault(nex.NewLibraryVersion(1, 1, 0))
|
|
globals.SecureServer.SessionKeyLength = 16
|
|
globals.SecureServer.AccessKey = "ridfebb9"
|
|
globals.SecureServer.BindPRUDPEndPoint(globals.SecureEndpoint)
|
|
globals.SecureServer.Listen(port)
|
|
}
|