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
19 changes: 9 additions & 10 deletions GenOnlineService/Controllers/CheckLogin/CheckLoginController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,23 @@ public CheckLoginController(IDbContextFactory<AppDbContext> dbFactory)

[HttpPost]
//public async Task<APIResult> Post([FromHeader(Name = "CF-Connecting-IP")] string? ipAddress)
public async Task<APIResult> Post()
public async Task<APIResult> Post(
[FromRoute] string environment,
[FromRoute(Name = "contract_version")] string contractVersion)
{
using (var reader = new StreamReader(HttpContext.Request.Body))
{
string jsonData = await reader.ReadToEndAsync();

bool bSecureWS = true;
//if (ipCountry2LISO.ToLower() == "ru")
{
//bSecureWS = false;
}

POST_CheckLogin_Result result = (POST_CheckLogin_Result)await Post_InternalHandler(jsonData, IPHelpers.NormalizeIP(HttpContext.Connection.RemoteIpAddress?.ToString()), bSecureWS);
POST_CheckLogin_Result result = (POST_CheckLogin_Result)await Post_InternalHandler(
jsonData,
IPHelpers.NormalizeIP(HttpContext.Connection.RemoteIpAddress?.ToString()),
Program.BuildWebSocketUrl(Request, environment, contractVersion));
return result;
}
}

public async Task<APIResult> Post_InternalHandler(string jsonData, string ipAddr, bool bSecureWS, bool bIsMonitor = false)
public async Task<APIResult> Post_InternalHandler(string jsonData, string ipAddr, string webSocketUrl, bool bIsMonitor = false)
{
POST_CheckLogin_Result result = new POST_CheckLogin_Result();

Expand Down Expand Up @@ -218,7 +217,7 @@ public async Task<APIResult> Post_InternalHandler(string jsonData, string ipAddr
result.refresh_token = refreshtoken;
result.user_id = user_id;
result.display_name = strDisplayName;
result.ws_uri = Program.GetWebSocketAddress(bSecureWS);
result.ws_uri = webSocketUrl;

// clear cached data, its a new session and the client reconnects its
// websocket using the ws_uri below - must be awaited so the teardown
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,24 +60,23 @@ public LoginWithToken(IDbContextFactory<AppDbContext> dbFactory)

[HttpPost(Name = "PostLoginWithToken")]
//public async Task<APIResult> Post([FromHeader(Name = "CF-Connecting-IP")] string? ipAddress)
public async Task<APIResult> Post()
public async Task<APIResult> Post(
[FromRoute] string environment,
[FromRoute(Name = "contract_version")] string contractVersion)
{
using (var reader = new StreamReader(HttpContext.Request.Body))
{
string jsonData = await reader.ReadToEndAsync();

bool bSecureWS = true;
//if (ipCountry2LISO.ToLower() == "ru")
{
//bSecureWS = false;
}

POST_LoginWithToken_Result result = (POST_LoginWithToken_Result)await Post_InternalHandler(jsonData, IPHelpers.NormalizeIP(HttpContext.Connection.RemoteIpAddress?.ToString()), bSecureWS);
POST_LoginWithToken_Result result = (POST_LoginWithToken_Result)await Post_InternalHandler(
jsonData,
IPHelpers.NormalizeIP(HttpContext.Connection.RemoteIpAddress?.ToString()),
Program.BuildWebSocketUrl(Request, environment, contractVersion));
return result;
}
}

public async Task<APIResult> Post_InternalHandler(string jsonData, string ipAddr, bool bSecureWS, bool bWasMonitor = false)
public async Task<APIResult> Post_InternalHandler(string jsonData, string ipAddr, string webSocketUrl, bool bWasMonitor = false)
{
if (bWasMonitor)
{
Expand Down Expand Up @@ -164,7 +163,7 @@ public async Task<APIResult> Post_InternalHandler(string jsonData, string ipAddr
result.user_id = user_id;
result.display_name = strDisplayName;

result.ws_uri = Program.GetWebSocketAddress(bSecureWS);
result.ws_uri = webSocketUrl;

// This endpoint re-establishes a session, so tear down any state the previous
// one left behind (lobby membership, matchmaking, cached session data). Must
Expand Down
12 changes: 8 additions & 4 deletions GenOnlineService/Controllers/Monitoring/MonitoringController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,9 @@ public async Task<APIResult> Monitor_Database()
[Route("LoginWithToken")]
[Authorize(Roles = "Monitor")]
[HttpGet]
public async Task<APIResult?> Monitor_LoginWithToken()
public async Task<APIResult?> Monitor_LoginWithToken(
[FromRoute] string environment,
[FromRoute(Name = "contract_version")] string contractVersion)
{
if (!this.User.IsInRole("Monitor"))
{
Expand All @@ -224,7 +226,7 @@ public async Task<APIResult> Monitor_Database()
var factory = scope.ServiceProvider.GetRequiredService<IDbContextFactory<AppDbContext>>();

GenOnlineService.Controllers.LoginWithToken.LoginWithToken loginWithTokenController = new GenOnlineService.Controllers.LoginWithToken.LoginWithToken(factory);
GenOnlineService.Controllers.LoginWithToken.POST_LoginWithToken_Result internalResult = (GenOnlineService.Controllers.LoginWithToken.POST_LoginWithToken_Result)await loginWithTokenController.Post_InternalHandler("{\"challenge\": \"abc\", \"token\": \"iamatest\", \"client_id\": \"gen_online_60hz\"}", IPAddress.Loopback.ToString(), true);
GenOnlineService.Controllers.LoginWithToken.POST_LoginWithToken_Result internalResult = (GenOnlineService.Controllers.LoginWithToken.POST_LoginWithToken_Result)await loginWithTokenController.Post_InternalHandler("{\"challenge\": \"abc\", \"token\": \"iamatest\", \"client_id\": \"gen_online_60hz\"}", IPAddress.Loopback.ToString(), Program.BuildWebSocketUrl(Request, environment, contractVersion));
return internalResult;
}
catch
Expand Down Expand Up @@ -291,7 +293,9 @@ public APIResult Monitor_Uptime()
[Route("CheckLogin")]
[Authorize(Roles = "Monitor")]
[HttpGet]
public async Task<APIResult?> Monitor_CheckLogin()
public async Task<APIResult?> Monitor_CheckLogin(
[FromRoute] string environment,
[FromRoute(Name = "contract_version")] string contractVersion)
{
if (!this.User.IsInRole("Monitor"))
{
Expand All @@ -302,7 +306,7 @@ public APIResult Monitor_Uptime()
try
{
GenOnlineService.Controllers.CheckLoginController checkLoginController = new GenOnlineService.Controllers.CheckLoginController(_dbFactory);
APIResult internalResult = await checkLoginController.Post_InternalHandler("{\"challenge\": \"abc\", \"nonce\": \"def\", \"code\": \"iamatest\", \"client_id\": \"gen_online_30hz\"}", IPAddress.Loopback.ToString(), true);
APIResult internalResult = await checkLoginController.Post_InternalHandler("{\"challenge\": \"abc\", \"nonce\": \"def\", \"code\": \"iamatest\", \"client_id\": \"gen_online_30hz\"}", IPAddress.Loopback.ToString(), Program.BuildWebSocketUrl(Request, environment, contractVersion));
return internalResult;
}
catch
Expand Down
2 changes: 2 additions & 0 deletions GenOnlineService/Controllers/WebSocket/WebSocketController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ private struct WSMessageEnvelope
public int msg_id { get; set; }
}

[Route("/env/{environment}/contract/{contract_version}/ws")]
// TODO: Remove the unscoped route after existing clients have migrated.
[Route("/ws")]
[Authorize(Roles = "GameClient,ChatClient,GameLauncher")]
public async Task Get([FromHeader(Name = "is-reconnect")] bool bIsReconnect)
Expand Down
Loading
Loading