mirror of https://github.com/JAJames/RenX-UMLs.git
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
63 lines
2.0 KiB
4 years ago
|
@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
|