You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

63 lines
2.0 KiB

@startuml
box User (Untrusted)
participant User
participant "Game Client" as Game
participant DllBind
end box
box Game Server Infrastructure (Untrusted)
participant "Game Server" as GameServer
participant RCON
end box
box Official Infrastructure (Trusted) #LightBlue
participant "DevBot" as DevBot
participant "Renegade X Website" as AuthServer
end box
Game <-> GameServer: Normal UDK Game Join
== Begin Normal Game Play ==
Game -> GameServer: HWID
group Token Validation
Game -> DllBind: StartJoinServerRequest(IP, Port)
DllBind -> DevBot: Auth Payload
note left
Note: Validation needs to go through the DevBot,
so that the DevBot can get a verifiable response
from the AuthServer. Otherwise, the ID would have
to be validated twice -- once by the game server,
and once by the DevBot.
Additionally, if the DevBot is offline, then no
response will actually be received. This means the
player is neither authenticated, nor kicked. They're
just unauthenticated by default.
end note
opt DevBot online
DevBot -> AuthServer: Validate ID Request
alt Token is valid
AuthServer --> DevBot: Validation Success
DevBot -> GameServer: Auth Success for ID
GameServer -> RCON: Auth Success for ID
else Token is bad
AuthServer --> DevBot: Validation Failure
DevBot -> GameServer: Kick Player, Reason: "Invalid Login"
GameServer -> Game: Kick Player
Game -> User: Present Login Screen
else Site Offline / Timed Out
DevBot -> GameServer: Auth Failure for ID
GameServer -> RCON: Auth Failure for ID
end
end
else Invalid Client (Client Doesn't Send Payload)
DevBot -> GameServer: Kick Player, Reason: "Invalid Login"
note right: Caused by 3 second timeout
GameServer -> Game: Kick Player, Reason: "Invalid Login"
end
@enduml