add gsc api controller for communicating with gsc
add ignore bots option fix first localization message not working
This commit is contained in:
parent
dded60a6ef
commit
a58726d872
@ -6,7 +6,7 @@
|
|||||||
<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>
|
<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>
|
||||||
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
|
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
|
||||||
<PackageId>RaidMax.IW4MAdmin.Application</PackageId>
|
<PackageId>RaidMax.IW4MAdmin.Application</PackageId>
|
||||||
<Version>2.2</Version>
|
<Version>2.2.1.0</Version>
|
||||||
<Authors>RaidMax</Authors>
|
<Authors>RaidMax</Authors>
|
||||||
<Company>Forever None</Company>
|
<Company>Forever None</Company>
|
||||||
<Product>IW4MAdmin</Product>
|
<Product>IW4MAdmin</Product>
|
||||||
@ -31,8 +31,8 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ServerGarbageCollection>true</ServerGarbageCollection>
|
<ServerGarbageCollection>true</ServerGarbageCollection>
|
||||||
<TieredCompilation>true</TieredCompilation>
|
<TieredCompilation>true</TieredCompilation>
|
||||||
<AssemblyVersion>2.2.0.0</AssemblyVersion>
|
<AssemblyVersion>2.2.1.0</AssemblyVersion>
|
||||||
<FileVersion>2.2.0.0</FileVersion>
|
<FileVersion>2.2.1.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -39,6 +39,8 @@ namespace IW4MAdmin.Application
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
ServerManager = ApplicationManager.GetInstance();
|
||||||
|
Localization.Configure.Initialize(ServerManager.GetApplicationSettings().Configuration()?.CustomLocale);
|
||||||
loc = Utilities.CurrentLocalization.LocalizationIndex;
|
loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||||
Console.CancelKeyPress += new ConsoleCancelEventHandler(OnCancelKey);
|
Console.CancelKeyPress += new ConsoleCancelEventHandler(OnCancelKey);
|
||||||
|
|
||||||
@ -47,10 +49,6 @@ namespace IW4MAdmin.Application
|
|||||||
// todo: move out
|
// todo: move out
|
||||||
ConfigurationMigration.MoveConfigFolder10518(null);
|
ConfigurationMigration.MoveConfigFolder10518(null);
|
||||||
|
|
||||||
ServerManager = ApplicationManager.GetInstance();
|
|
||||||
Localization.Configure.Initialize(ServerManager.GetApplicationSettings().Configuration()?.CustomLocale);
|
|
||||||
|
|
||||||
|
|
||||||
ServerManager.Logger.WriteInfo($"Version is {Version}");
|
ServerManager.Logger.WriteInfo($"Version is {Version}");
|
||||||
|
|
||||||
var api = API.Master.Endpoint.Get();
|
var api = API.Master.Endpoint.Get();
|
||||||
|
@ -589,7 +589,11 @@ namespace IW4MAdmin
|
|||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
#endif
|
#endif
|
||||||
var currentClients = GetPlayersAsList();
|
var currentClients = GetPlayersAsList();
|
||||||
var polledClients = await this.GetStatusAsync();
|
var polledClients = (await this.GetStatusAsync()).AsEnumerable();
|
||||||
|
if (this.Manager.GetApplicationSettings().Configuration().IgnoreBots)
|
||||||
|
{
|
||||||
|
polledClients = polledClients.Where(c => !c.IsBot);
|
||||||
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
Logger.WriteInfo($"Polling players took {(DateTime.Now - now).TotalMilliseconds}ms");
|
Logger.WriteInfo($"Polling players took {(DateTime.Now - now).TotalMilliseconds}ms");
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,6 +28,7 @@ namespace IW4MAdmin.Plugins.Login
|
|||||||
if (E.Type == GameEvent.EventType.Connect)
|
if (E.Type == GameEvent.EventType.Connect)
|
||||||
{
|
{
|
||||||
AuthorizedClients.TryAdd(E.Origin.ClientId, false);
|
AuthorizedClients.TryAdd(E.Origin.ClientId, false);
|
||||||
|
E.Origin.SetAdditionalProperty("IsLoggedIn", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (E.Type == GameEvent.EventType.Disconnect)
|
if (E.Type == GameEvent.EventType.Disconnect)
|
||||||
@ -51,9 +52,16 @@ namespace IW4MAdmin.Plugins.Login
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
if (!AuthorizedClients[E.Origin.ClientId])
|
if (!AuthorizedClients[E.Origin.ClientId])
|
||||||
|
{
|
||||||
throw new AuthorizationException(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_LOGIN_AUTH"]);
|
throw new AuthorizationException(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_LOGIN_AUTH"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
E.Origin.SetAdditionalProperty("IsLoggedIn", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ namespace SharedLibraryCore.Configuration
|
|||||||
public string DatabaseProvider { get; set; } = "sqlite";
|
public string DatabaseProvider { get; set; } = "sqlite";
|
||||||
public string ConnectionString { get; set; }
|
public string ConnectionString { get; set; }
|
||||||
public int RConPollRate { get; set; } = 5000;
|
public int RConPollRate { get; set; } = 5000;
|
||||||
|
public bool IgnoreBots { get; set; }
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
public List<ServerConfiguration> Servers { get; set; }
|
public List<ServerConfiguration> Servers { get; set; }
|
||||||
public int AutoMessagePeriod { get; set; }
|
public int AutoMessagePeriod { get; set; }
|
||||||
|
@ -402,7 +402,9 @@ namespace SharedLibraryCore.Objects
|
|||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
Dictionary<string, object> _additionalProperties;
|
Dictionary<string, object> _additionalProperties;
|
||||||
public T GetAdditionalProperty<T>(string name) => (T)_additionalProperties[name];
|
|
||||||
|
public T GetAdditionalProperty<T>(string name) => _additionalProperties.ContainsKey(name) ? (T)_additionalProperties[name] : default(T);
|
||||||
|
|
||||||
public void SetAdditionalProperty(string name, object value)
|
public void SetAdditionalProperty(string name, object value)
|
||||||
{
|
{
|
||||||
if (_additionalProperties.ContainsKey(name))
|
if (_additionalProperties.ContainsKey(name))
|
||||||
|
36
WebfrontCore/Controllers/API/GscApiController.cs
Normal file
36
WebfrontCore/Controllers/API/GscApiController.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using SharedLibraryCore;
|
||||||
|
using SharedLibraryCore.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WebfrontCore.Controllers.API
|
||||||
|
{
|
||||||
|
[Route("api/gsc/[action]")]
|
||||||
|
public class GscApiController : ApiController
|
||||||
|
{
|
||||||
|
[HttpGet("{networkId}")]
|
||||||
|
public IActionResult ClientInfo(string networkId)
|
||||||
|
{
|
||||||
|
var clientInfo = Manager.GetActiveClients()
|
||||||
|
.FirstOrDefault(c => c.NetworkId == networkId.ConvertLong());
|
||||||
|
|
||||||
|
if (clientInfo != null)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.AppendLine($"admin={clientInfo.IsPrivileged()}");
|
||||||
|
sb.AppendLine($"level={(int)clientInfo.Level}");
|
||||||
|
sb.AppendLine($"levelstring={clientInfo.Level.ToLocalizedLevelName()}");
|
||||||
|
sb.AppendLine($"connections={clientInfo.Connections}");
|
||||||
|
sb.AppendLine($"authenticated={clientInfo.GetAdditionalProperty<bool>("IsLoggedIn") == true}");
|
||||||
|
|
||||||
|
return Content(sb.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return Content("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user