mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-10 15:20:48 -05:00
merge
This commit is contained in:
@ -1,8 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Configuration;
|
||||
using SharedLibraryCore.Dtos;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using WebfrontCore.Controllers.API.Models;
|
||||
|
||||
@ -12,9 +16,14 @@ namespace WebfrontCore.Controllers.API
|
||||
[Route("api/[controller]")]
|
||||
public class Server : BaseController
|
||||
{
|
||||
|
||||
public Server(IManager manager) : base(manager)
|
||||
private readonly IServerDataViewer _serverDataViewer;
|
||||
private readonly ApplicationConfiguration _applicationConfiguration;
|
||||
|
||||
public Server(IManager manager, IServerDataViewer serverDataViewer,
|
||||
ApplicationConfiguration applicationConfiguration) : base(manager)
|
||||
{
|
||||
_serverDataViewer = serverDataViewer;
|
||||
_applicationConfiguration = applicationConfiguration;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
@ -110,5 +119,48 @@ namespace WebfrontCore.Controllers.API
|
||||
completedEvent.Output
|
||||
});
|
||||
}
|
||||
|
||||
[HttpGet("{id}/history")]
|
||||
public async Task<IActionResult> GetClientHistory(string id)
|
||||
{
|
||||
var foundServer = Manager.GetServers().FirstOrDefault(server => server.Id == id);
|
||||
|
||||
if (foundServer == null)
|
||||
{
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
var clientHistory = (await _serverDataViewer.ClientHistoryAsync(_applicationConfiguration.MaxClientHistoryTime,
|
||||
CancellationToken.None))?
|
||||
.FirstOrDefault(history => history.ServerId == foundServer.LegacyDatabaseId) ??
|
||||
new ClientHistoryInfo
|
||||
{
|
||||
ServerId = foundServer.LegacyDatabaseId,
|
||||
ClientCounts = new List<ClientCountSnapshot>()
|
||||
};
|
||||
|
||||
var counts = clientHistory.ClientCounts?.AsEnumerable() ?? Enumerable.Empty<ClientCountSnapshot>();
|
||||
|
||||
if (foundServer.ClientHistory.ClientCounts.Any())
|
||||
{
|
||||
counts = counts.Union(foundServer.ClientHistory.ClientCounts.Where(history =>
|
||||
history.Time > (clientHistory.ClientCounts?.LastOrDefault()?.Time ?? DateTime.MinValue)))
|
||||
.Where(history => history.Time >= DateTime.UtcNow - _applicationConfiguration.MaxClientHistoryTime);
|
||||
}
|
||||
|
||||
if (ViewBag.Maps?.Count == 0)
|
||||
{
|
||||
return Json(counts.ToList());
|
||||
}
|
||||
|
||||
var clientCountSnapshots = counts.ToList();
|
||||
foreach (var count in clientCountSnapshots)
|
||||
{
|
||||
count.MapAlias = foundServer.Maps.FirstOrDefault(map => map.Name == count.Map)?.Alias ??
|
||||
count.Map;
|
||||
}
|
||||
|
||||
return Json(clientCountSnapshots);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,50 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WebfrontCore.Controllers
|
||||
{
|
||||
[Route("dynamic")]
|
||||
public class DynamicFileController : BaseController
|
||||
{
|
||||
private static readonly IDictionary<string, string> _fileCache = new Dictionary<string, string>();
|
||||
|
||||
public DynamicFileController(IManager manager) : base(manager)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[Route("css/{fileName}")]
|
||||
public async Task<IActionResult> Css(string fileName)
|
||||
{
|
||||
if (fileName.EndsWith(".css"))
|
||||
{
|
||||
if (Utilities.IsDevelopment)
|
||||
{
|
||||
var path = Path.Join(Utilities.OperatingDirectory, "..", "..", "..", "..", "WebfrontCore", "wwwroot", "css", fileName);
|
||||
string cssData = await System.IO.File.ReadAllTextAsync(path);
|
||||
cssData = await Manager.MiddlewareActionHandler.Execute(cssData, "custom_css_accent");
|
||||
return Content(cssData, "text/css");
|
||||
}
|
||||
|
||||
if (!_fileCache.ContainsKey(fileName))
|
||||
{
|
||||
|
||||
string path = $"wwwroot{Path.DirectorySeparatorChar}css{Path.DirectorySeparatorChar}{fileName}";
|
||||
string data = await System.IO.File.ReadAllTextAsync(path);
|
||||
data = await Manager.MiddlewareActionHandler.Execute(data, "custom_css_accent");
|
||||
_fileCache.Add(fileName, data);
|
||||
}
|
||||
|
||||
return Content(_fileCache[fileName], "text/css");
|
||||
}
|
||||
|
||||
return StatusCode(400);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,104 +0,0 @@
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WebfrontCore.Middleware
|
||||
{
|
||||
public class CustomCssAccentMiddlewareAction : IMiddlewareAction<string>
|
||||
{
|
||||
private readonly List<ColorMap> ColorReplacements = new List<ColorMap>();
|
||||
|
||||
private class ColorMap
|
||||
{
|
||||
public Color Original { get; set; }
|
||||
public Color Replacement { get; set; }
|
||||
}
|
||||
|
||||
public CustomCssAccentMiddlewareAction(string originalPrimaryColor, string originalSecondaryColor, string primaryColor, string secondaryColor)
|
||||
{
|
||||
primaryColor = string.IsNullOrWhiteSpace(primaryColor) ? originalPrimaryColor : primaryColor;
|
||||
secondaryColor = string.IsNullOrWhiteSpace(secondaryColor) ? originalSecondaryColor : secondaryColor;
|
||||
try
|
||||
{
|
||||
ColorReplacements.AddRange(new[]
|
||||
{
|
||||
new ColorMap()
|
||||
{
|
||||
Original = Color.FromArgb(Convert.ToInt32(originalPrimaryColor.Substring(1).ToString(), 16)),
|
||||
Replacement = Color.FromArgb(Convert.ToInt32(primaryColor.Substring(1).ToString(), 16))
|
||||
},
|
||||
new ColorMap()
|
||||
{
|
||||
Original = Color.FromArgb(Convert.ToInt32(originalSecondaryColor.Substring(1).ToString(), 16)),
|
||||
Replacement = Color.FromArgb(Convert.ToInt32(secondaryColor.Substring(1).ToString(), 16))
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
catch (FormatException)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public Task<string> Invoke(string original)
|
||||
{
|
||||
foreach (var color in ColorReplacements)
|
||||
{
|
||||
foreach (var shade in new[] { 0, -19, -25 })
|
||||
{
|
||||
original = original
|
||||
.Replace(ColorToHex(LightenDarkenColor(color.Original, shade)), ColorToHex(LightenDarkenColor(color.Replacement, shade)), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace(ColorToDec(LightenDarkenColor(color.Original, shade)), ColorToDec(LightenDarkenColor(color.Replacement, shade)), StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
|
||||
return Task.FromResult(original);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// converts color to the hex string representation
|
||||
/// </summary>
|
||||
/// <param name="color"></param>
|
||||
/// <returns></returns>
|
||||
private string ColorToHex(Color color) => $"#{color.R.ToString("X2")}{color.G.ToString("X2")}{color.B.ToString("X2")}";
|
||||
|
||||
/// <summary>
|
||||
/// converts color to the rgb tuples representation
|
||||
/// </summary>
|
||||
/// <param name="color"></param>
|
||||
/// <returns></returns>
|
||||
private string ColorToDec(Color color) => $"{(int)color.R}, {(int)color.G}, {(int)color.B}";
|
||||
|
||||
/// <summary>
|
||||
/// lightens or darkens a color on the given amount
|
||||
/// Based off SASS darken/lighten function
|
||||
/// </summary>
|
||||
/// <param name="color"></param>
|
||||
/// <param name="amount"></param>
|
||||
/// <returns></returns>
|
||||
private Color LightenDarkenColor(Color color, float amount)
|
||||
{
|
||||
int r = color.R + (int)((amount / 100.0f) * color.R);
|
||||
|
||||
if (r > 255) r = 255;
|
||||
else if (r < 0) r = 0;
|
||||
|
||||
int g = color.G + (int)((amount / 100.0f) * color.G);
|
||||
|
||||
if (g > 255) g = 255;
|
||||
else if (g < 0) g = 0;
|
||||
|
||||
int b = color.B + (int)((amount / 100.0f) * color.B);
|
||||
|
||||
if (b > 255) b = 255;
|
||||
else if (b < 0) b = 0;
|
||||
|
||||
return Color.FromArgb(r, g, b);
|
||||
}
|
||||
}
|
||||
}
|
BIN
WebfrontCore/NUglify.dll
Normal file
BIN
WebfrontCore/NUglify.dll
Normal file
Binary file not shown.
BIN
WebfrontCore/Newtonsoft.Json.dll
Normal file
BIN
WebfrontCore/Newtonsoft.Json.dll
Normal file
Binary file not shown.
@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using SharedLibraryCore.Configuration;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using WebfrontCore.Middleware;
|
||||
|
||||
namespace WebfrontCore
|
||||
{
|
||||
@ -24,11 +23,6 @@ namespace WebfrontCore
|
||||
|
||||
public static Task GetWebHostTask(CancellationToken cancellationToken)
|
||||
{
|
||||
var config = _webHost.Services.GetRequiredService<ApplicationConfiguration>();
|
||||
Manager.MiddlewareActionHandler.Register(null,
|
||||
new CustomCssAccentMiddlewareAction("#007ACC", "#fd7e14", config.WebfrontPrimaryColor,
|
||||
config.WebfrontSecondaryColor), "custom_css_accent");
|
||||
|
||||
return _webHost?.RunAsync(cancellationToken);
|
||||
}
|
||||
|
||||
@ -41,7 +35,12 @@ namespace WebfrontCore
|
||||
.UseContentRoot(SharedLibraryCore.Utilities.OperatingDirectory)
|
||||
#endif
|
||||
.UseUrls(bindUrl)
|
||||
.UseKestrel()
|
||||
.UseKestrel(cfg =>
|
||||
{
|
||||
cfg.Limits.MaxConcurrentConnections =
|
||||
int.Parse(Environment.GetEnvironmentVariable("MaxConcurrentRequests") ?? "1");
|
||||
cfg.Limits.KeepAliveTimeout = TimeSpan.FromSeconds(30);
|
||||
})
|
||||
.ConfigureServices(registerDependenciesAction)
|
||||
.UseStartup<Startup>()
|
||||
.Build();
|
||||
|
@ -4,7 +4,6 @@ using FluentValidation.AspNetCore;
|
||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.ApplicationParts;
|
||||
using Microsoft.AspNetCore.Mvc.Razor;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@ -24,9 +23,6 @@ using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using Data.Abstractions;
|
||||
using Data.Helpers;
|
||||
using IW4MAdmin.Plugins.Stats.Helpers;
|
||||
using Stats.Client.Abstractions;
|
||||
using Stats.Config;
|
||||
using WebfrontCore.Controllers.API.Validation;
|
||||
using WebfrontCore.Middleware;
|
||||
using WebfrontCore.QueryHelpers;
|
||||
@ -50,6 +46,12 @@ namespace WebfrontCore
|
||||
.AllowAnyHeader();
|
||||
});
|
||||
});
|
||||
|
||||
services.AddStackPolicy(options =>
|
||||
{
|
||||
options.MaxConcurrentRequests = int.Parse(Environment.GetEnvironmentVariable("MaxConcurrentRequests") ?? "1");
|
||||
options.RequestQueueLimit = int.Parse(Environment.GetEnvironmentVariable("RequestQueueLimit") ?? "1");
|
||||
});
|
||||
|
||||
IEnumerable<Assembly> pluginAssemblies()
|
||||
{
|
||||
@ -132,6 +134,7 @@ namespace WebfrontCore
|
||||
app.UseMiddleware<IPWhitelist>(serviceProvider.GetService<ILogger<IPWhitelist>>(), serviceProvider.GetRequiredService<ApplicationConfiguration>().WebfrontConnectionWhitelist);
|
||||
}
|
||||
|
||||
app.UseConcurrencyLimiter();
|
||||
app.UseStaticFiles();
|
||||
app.UseAuthentication();
|
||||
app.UseCors("AllowAll");
|
||||
|
@ -1,29 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Dtos;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Data.Models;
|
||||
using Data.Models.Client.Stats;
|
||||
using IW4MAdmin.Plugins.Stats.Helpers;
|
||||
using SharedLibraryCore.Configuration;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
|
||||
namespace WebfrontCore.ViewComponents
|
||||
{
|
||||
public class ServerListViewComponent : ViewComponent
|
||||
{
|
||||
private readonly IServerDataViewer _serverDataViewer;
|
||||
private readonly ApplicationConfiguration _appConfig;
|
||||
private readonly DefaultSettings _defaultSettings;
|
||||
|
||||
public ServerListViewComponent(IServerDataViewer serverDataViewer,
|
||||
ApplicationConfiguration applicationConfiguration, DefaultSettings defaultSettings)
|
||||
public ServerListViewComponent(DefaultSettings defaultSettings)
|
||||
{
|
||||
_serverDataViewer = serverDataViewer;
|
||||
_appConfig = applicationConfiguration;
|
||||
_defaultSettings = defaultSettings;
|
||||
}
|
||||
|
||||
@ -46,25 +38,6 @@ namespace WebfrontCore.ViewComponents
|
||||
|
||||
foreach (var server in servers)
|
||||
{
|
||||
var serverId = server.GetIdForServer().Result;
|
||||
var clientHistory = _serverDataViewer.ClientHistoryAsync(_appConfig.MaxClientHistoryTime,
|
||||
CancellationToken.None).Result?
|
||||
.FirstOrDefault(history => history.ServerId == serverId) ??
|
||||
new ClientHistoryInfo
|
||||
{
|
||||
ServerId = serverId,
|
||||
ClientCounts = new List<ClientCountSnapshot>()
|
||||
};
|
||||
|
||||
var counts = clientHistory.ClientCounts?.AsEnumerable() ?? Enumerable.Empty<ClientCountSnapshot>();
|
||||
|
||||
if (server.ClientHistory.ClientCounts.Any())
|
||||
{
|
||||
counts = counts.Union(server.ClientHistory.ClientCounts.Where(history =>
|
||||
history.Time > (clientHistory.ClientCounts?.LastOrDefault()?.Time ?? DateTime.MinValue)))
|
||||
.Where(history => history.Time >= DateTime.UtcNow - _appConfig.MaxClientHistoryTime);
|
||||
}
|
||||
|
||||
serverInfo.Add(new ServerInfo
|
||||
{
|
||||
Name = server.Hostname,
|
||||
@ -76,11 +49,7 @@ namespace WebfrontCore.ViewComponents
|
||||
MaxClients = server.MaxClients,
|
||||
PrivateClientSlots = server.PrivateClientSlots,
|
||||
GameType = server.GametypeName,
|
||||
ClientHistory = new ClientHistoryInfo
|
||||
{
|
||||
ServerId = server.EndPoint,
|
||||
ClientCounts = counts.ToList()
|
||||
},
|
||||
ClientHistory = new ClientHistoryInfo(),
|
||||
Players = server.GetClientsAsList()
|
||||
.Select(client => new PlayerInfo
|
||||
{
|
||||
|
@ -82,8 +82,7 @@
|
||||
}
|
||||
|
||||
<div class="server-history">
|
||||
<div class="server-history-row m-auto bg-dark-dm bg-light-lm rounded-bottom" style="position:relative; width: 100%" id="server_history_@Model.ID" data-serverid="@Model.ID"
|
||||
data-clienthistory='@Html.Raw(Json.Serialize(Model.ClientHistory))'
|
||||
<div class="server-history-row m-auto bg-dark-dm bg-light-lm rounded-bottom" style="position:relative; width: 100%" id="server_history_@Model.ID" data-serverid="@Model.ID" data-server-endpoint="@Model.Endpoint"
|
||||
data-clienthistory-ex='@Html.Raw(Json.Serialize(Model.ClientHistory.ClientCounts))'
|
||||
data-online="@Model.Online">
|
||||
<canvas id="server_history_canvas_@Model.ID" class="rounded-bottom" height="100"></canvas>
|
||||
|
@ -25,7 +25,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<ServerGarbageCollection>false</ServerGarbageCollection>
|
||||
<ServerGarbageCollection>true</ServerGarbageCollection>
|
||||
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
|
||||
<TieredCompilation>true</TieredCompilation>
|
||||
<LangVersion>Latest</LangVersion>
|
||||
@ -47,6 +47,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BuildWebCompiler2022" Version="1.14.10" />
|
||||
<PackageReference Include="FluentValidation.AspNetCore" Version="11.2.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="6.0.16" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.8" />
|
||||
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
|
||||
</ItemGroup>
|
||||
|
669
WebfrontCore/dotnet-bundle.deps.json
Normal file
669
WebfrontCore/dotnet-bundle.deps.json
Normal file
@ -0,0 +1,669 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v6.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v6.0": {
|
||||
"dotnet-bundle/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.SourceLink.GitHub": "1.0.0",
|
||||
"NUglify": "1.17.10",
|
||||
"Newtonsoft.Json": "9.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"dotnet-bundle.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Build.Tasks.Git/1.0.0": {},
|
||||
"Microsoft.CSharp/4.0.1": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Dynamic.Runtime": "4.0.11",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.Linq": "4.1.0",
|
||||
"System.Linq.Expressions": "4.1.0",
|
||||
"System.ObjectModel": "4.0.12",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Extensions": "4.0.1",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Reflection.TypeExtensions": "4.1.0",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Runtime.InteropServices": "4.1.0",
|
||||
"System.Threading": "4.0.11"
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/1.0.1": {},
|
||||
"Microsoft.NETCore.Targets/1.0.1": {},
|
||||
"Microsoft.SourceLink.Common/1.0.0": {},
|
||||
"Microsoft.SourceLink.GitHub/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Build.Tasks.Git": "1.0.0",
|
||||
"Microsoft.SourceLink.Common": "1.0.0"
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/9.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.0.1",
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Dynamic.Runtime": "4.0.11",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.IO": "4.1.0",
|
||||
"System.Linq": "4.1.0",
|
||||
"System.Linq.Expressions": "4.1.0",
|
||||
"System.ObjectModel": "4.0.12",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Extensions": "4.0.1",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Runtime.Serialization.Primitives": "4.1.1",
|
||||
"System.Text.Encoding": "4.0.11",
|
||||
"System.Text.Encoding.Extensions": "4.0.11",
|
||||
"System.Text.RegularExpressions": "4.1.0",
|
||||
"System.Threading": "4.0.11",
|
||||
"System.Threading.Tasks": "4.0.11",
|
||||
"System.Xml.ReaderWriter": "4.0.11",
|
||||
"System.Xml.XDocument": "4.0.11"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.1.19813"
|
||||
}
|
||||
}
|
||||
},
|
||||
"NUglify/1.17.10": {
|
||||
"runtime": {
|
||||
"lib/net5.0/NUglify.dll": {
|
||||
"assemblyVersion": "1.17.10.0",
|
||||
"fileVersion": "1.17.10.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Collections/4.0.11": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.Debug/4.0.11": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.Tools/4.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Dynamic.Runtime/4.0.11": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.Linq": "4.1.0",
|
||||
"System.Linq.Expressions": "4.1.0",
|
||||
"System.ObjectModel": "4.0.12",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Emit": "4.0.1",
|
||||
"System.Reflection.Emit.ILGeneration": "4.0.1",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Reflection.TypeExtensions": "4.1.0",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Threading": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.Globalization/4.0.11": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.IO/4.1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Text.Encoding": "4.0.11",
|
||||
"System.Threading.Tasks": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.IO.FileSystem/4.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.IO": "4.1.0",
|
||||
"System.IO.FileSystem.Primitives": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Handles": "4.0.1",
|
||||
"System.Text.Encoding": "4.0.11",
|
||||
"System.Threading.Tasks": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.IO.FileSystem.Primitives/4.0.1": {
|
||||
"dependencies": {
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Linq/4.1.0": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Linq.Expressions/4.1.0": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.IO": "4.1.0",
|
||||
"System.Linq": "4.1.0",
|
||||
"System.ObjectModel": "4.0.12",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Emit": "4.0.1",
|
||||
"System.Reflection.Emit.ILGeneration": "4.0.1",
|
||||
"System.Reflection.Emit.Lightweight": "4.0.1",
|
||||
"System.Reflection.Extensions": "4.0.1",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Reflection.TypeExtensions": "4.1.0",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Threading": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.ObjectModel/4.0.12": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Threading": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.Reflection/4.1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.IO": "4.1.0",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Reflection.Emit/4.0.1": {
|
||||
"dependencies": {
|
||||
"System.IO": "4.1.0",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Emit.ILGeneration": "4.0.1",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Reflection.Emit.ILGeneration/4.0.1": {
|
||||
"dependencies": {
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Reflection.Emit.Lightweight/4.0.1": {
|
||||
"dependencies": {
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Emit.ILGeneration": "4.0.1",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Reflection.Extensions/4.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Reflection.Primitives/4.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Reflection.TypeExtensions/4.1.0": {
|
||||
"dependencies": {
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Resources.ResourceManager/4.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Runtime/4.1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1"
|
||||
}
|
||||
},
|
||||
"System.Runtime.Extensions/4.1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Runtime.Handles/4.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Runtime.InteropServices/4.1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Reflection.Primitives": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Handles": "4.0.1"
|
||||
}
|
||||
},
|
||||
"System.Runtime.Serialization.Primitives/4.1.1": {
|
||||
"dependencies": {
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Text.Encoding/4.0.11": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Text.Encoding.Extensions/4.0.11": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Text.Encoding": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.Text.RegularExpressions/4.1.0": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Threading": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.Threading/4.0.11": {
|
||||
"dependencies": {
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Threading.Tasks": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.Threading.Tasks/4.0.11": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
||||
"Microsoft.NETCore.Targets": "1.0.1",
|
||||
"System.Runtime": "4.1.0"
|
||||
}
|
||||
},
|
||||
"System.Threading.Tasks.Extensions/4.0.0": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Threading.Tasks": "4.0.11"
|
||||
}
|
||||
},
|
||||
"System.Xml.ReaderWriter/4.0.11": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.IO": "4.1.0",
|
||||
"System.IO.FileSystem": "4.0.1",
|
||||
"System.IO.FileSystem.Primitives": "4.0.1",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Runtime.InteropServices": "4.1.0",
|
||||
"System.Text.Encoding": "4.0.11",
|
||||
"System.Text.Encoding.Extensions": "4.0.11",
|
||||
"System.Text.RegularExpressions": "4.1.0",
|
||||
"System.Threading.Tasks": "4.0.11",
|
||||
"System.Threading.Tasks.Extensions": "4.0.0"
|
||||
}
|
||||
},
|
||||
"System.Xml.XDocument/4.0.11": {
|
||||
"dependencies": {
|
||||
"System.Collections": "4.0.11",
|
||||
"System.Diagnostics.Debug": "4.0.11",
|
||||
"System.Diagnostics.Tools": "4.0.1",
|
||||
"System.Globalization": "4.0.11",
|
||||
"System.IO": "4.1.0",
|
||||
"System.Reflection": "4.1.0",
|
||||
"System.Resources.ResourceManager": "4.0.1",
|
||||
"System.Runtime": "4.1.0",
|
||||
"System.Runtime.Extensions": "4.1.0",
|
||||
"System.Text.Encoding": "4.0.11",
|
||||
"System.Threading": "4.0.11",
|
||||
"System.Xml.ReaderWriter": "4.0.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"dotnet-bundle/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Microsoft.Build.Tasks.Git/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-z2fpmmt+1Jfl+ZnBki9nSP08S1/tbEOxFdsK1rSR+LBehIJz1Xv9/6qOOoGNqlwnAGGVGis1Oj6S8Kt9COEYlQ==",
|
||||
"path": "microsoft.build.tasks.git/1.0.0",
|
||||
"hashPath": "microsoft.build.tasks.git.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CSharp/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==",
|
||||
"path": "microsoft.csharp/4.0.1",
|
||||
"hashPath": "microsoft.csharp.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/1.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
|
||||
"path": "microsoft.netcore.platforms/1.0.1",
|
||||
"hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Targets/1.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
|
||||
"path": "microsoft.netcore.targets/1.0.1",
|
||||
"hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.SourceLink.Common/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-G8DuQY8/DK5NN+3jm5wcMcd9QYD90UV7MiLmdljSJixi3U/vNaeBKmmXUqI4DJCOeWizIUEh4ALhSt58mR+5eg==",
|
||||
"path": "microsoft.sourcelink.common/1.0.0",
|
||||
"hashPath": "microsoft.sourcelink.common.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.SourceLink.GitHub/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-aZyGyGg2nFSxix+xMkPmlmZSsnGQ3w+mIG23LTxJZHN+GPwTQ5FpPgDo7RMOq+Kcf5D4hFWfXkGhoGstawX13Q==",
|
||||
"path": "microsoft.sourcelink.github/1.0.0",
|
||||
"hashPath": "microsoft.sourcelink.github.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"Newtonsoft.Json/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==",
|
||||
"path": "newtonsoft.json/9.0.1",
|
||||
"hashPath": "newtonsoft.json.9.0.1.nupkg.sha512"
|
||||
},
|
||||
"NUglify/1.17.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-gWQYFaWZsYwr8Iz5dcrudn8fyWXgu5NKyPVDyGzF2peXqLLnlz65PEfIhiT0hs1VWCgCRU1Y+/mTp9zsMmFKBg==",
|
||||
"path": "nuglify/1.17.10",
|
||||
"hashPath": "nuglify.1.17.10.nupkg.sha512"
|
||||
},
|
||||
"System.Collections/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
|
||||
"path": "system.collections/4.0.11",
|
||||
"hashPath": "system.collections.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.Debug/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
|
||||
"path": "system.diagnostics.debug/4.0.11",
|
||||
"hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.Tools/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
|
||||
"path": "system.diagnostics.tools/4.0.1",
|
||||
"hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Dynamic.Runtime/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
|
||||
"path": "system.dynamic.runtime/4.0.11",
|
||||
"hashPath": "system.dynamic.runtime.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Globalization/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
|
||||
"path": "system.globalization/4.0.11",
|
||||
"hashPath": "system.globalization.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.IO/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
|
||||
"path": "system.io/4.1.0",
|
||||
"hashPath": "system.io.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.IO.FileSystem/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==",
|
||||
"path": "system.io.filesystem/4.0.1",
|
||||
"hashPath": "system.io.filesystem.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.IO.FileSystem.Primitives/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==",
|
||||
"path": "system.io.filesystem.primitives/4.0.1",
|
||||
"hashPath": "system.io.filesystem.primitives.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Linq/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
|
||||
"path": "system.linq/4.1.0",
|
||||
"hashPath": "system.linq.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Linq.Expressions/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
|
||||
"path": "system.linq.expressions/4.1.0",
|
||||
"hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.ObjectModel/4.0.12": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
|
||||
"path": "system.objectmodel/4.0.12",
|
||||
"hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
|
||||
"path": "system.reflection/4.1.0",
|
||||
"hashPath": "system.reflection.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Emit/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
|
||||
"path": "system.reflection.emit/4.0.1",
|
||||
"hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Emit.ILGeneration/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
|
||||
"path": "system.reflection.emit.ilgeneration/4.0.1",
|
||||
"hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Emit.Lightweight/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
|
||||
"path": "system.reflection.emit.lightweight/4.0.1",
|
||||
"hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Extensions/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
|
||||
"path": "system.reflection.extensions/4.0.1",
|
||||
"hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Primitives/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
|
||||
"path": "system.reflection.primitives/4.0.1",
|
||||
"hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.TypeExtensions/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
|
||||
"path": "system.reflection.typeextensions/4.1.0",
|
||||
"hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Resources.ResourceManager/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
|
||||
"path": "system.resources.resourcemanager/4.0.1",
|
||||
"hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
|
||||
"path": "system.runtime/4.1.0",
|
||||
"hashPath": "system.runtime.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.Extensions/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
|
||||
"path": "system.runtime.extensions/4.1.0",
|
||||
"hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.Handles/4.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==",
|
||||
"path": "system.runtime.handles/4.0.1",
|
||||
"hashPath": "system.runtime.handles.4.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.InteropServices/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==",
|
||||
"path": "system.runtime.interopservices/4.1.0",
|
||||
"hashPath": "system.runtime.interopservices.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.Serialization.Primitives/4.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
|
||||
"path": "system.runtime.serialization.primitives/4.1.1",
|
||||
"hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Encoding/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
|
||||
"path": "system.text.encoding/4.0.11",
|
||||
"hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Encoding.Extensions/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
|
||||
"path": "system.text.encoding.extensions/4.0.11",
|
||||
"hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Text.RegularExpressions/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
|
||||
"path": "system.text.regularexpressions/4.1.0",
|
||||
"hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"System.Threading/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
|
||||
"path": "system.threading/4.0.11",
|
||||
"hashPath": "system.threading.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Threading.Tasks/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
|
||||
"path": "system.threading.tasks/4.0.11",
|
||||
"hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Threading.Tasks.Extensions/4.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==",
|
||||
"path": "system.threading.tasks.extensions/4.0.0",
|
||||
"hashPath": "system.threading.tasks.extensions.4.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Xml.ReaderWriter/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==",
|
||||
"path": "system.xml.readerwriter/4.0.11",
|
||||
"hashPath": "system.xml.readerwriter.4.0.11.nupkg.sha512"
|
||||
},
|
||||
"System.Xml.XDocument/4.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==",
|
||||
"path": "system.xml.xdocument/4.0.11",
|
||||
"hashPath": "system.xml.xdocument.4.0.11.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
BIN
WebfrontCore/dotnet-bundle.dll
Normal file
BIN
WebfrontCore/dotnet-bundle.dll
Normal file
Binary file not shown.
BIN
WebfrontCore/dotnet-bundle.exe
Normal file
BIN
WebfrontCore/dotnet-bundle.exe
Normal file
Binary file not shown.
9
WebfrontCore/dotnet-bundle.runtimeconfig.json
Normal file
9
WebfrontCore/dotnet-bundle.runtimeconfig.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net6.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "6.0.0"
|
||||
}
|
||||
}
|
||||
}
|
@ -27,25 +27,25 @@ function getPlayerHistoryChart(playerHistory, i, width, maxClients) {
|
||||
let lastMap = '';
|
||||
|
||||
playerHistory.forEach((elem, i) => {
|
||||
if (elem.map !== lastMap) {
|
||||
if (elem.ma !== lastMap) {
|
||||
mapChange.push(i);
|
||||
lastMap = elem.map;
|
||||
lastMap = elem;
|
||||
}
|
||||
|
||||
if (elem.connectionInterrupted) {
|
||||
offlineTime.push({
|
||||
clientCount: maxClients,
|
||||
timeString: elem.timeString
|
||||
timeString: elem.ts
|
||||
});
|
||||
|
||||
onlineTime.push({
|
||||
clientCount: 0,
|
||||
timeString: elem.timeString
|
||||
timeString: elem.ts
|
||||
})
|
||||
} else {
|
||||
offlineTime.push({
|
||||
clientCount: 0,
|
||||
timeString: elem.timeString
|
||||
timeString: elem.ts
|
||||
});
|
||||
|
||||
onlineTime.push(elem)
|
||||
@ -60,9 +60,9 @@ function getPlayerHistoryChart(playerHistory, i, width, maxClients) {
|
||||
return new Chart(document.getElementById(`server_history_canvas_${i}`), {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: playerHistory.map(history => history.timeString),
|
||||
labels: playerHistory.map(history => history.ts),
|
||||
datasets: [{
|
||||
data: onlineTime.map(history => history.clientCount),
|
||||
data: onlineTime.map(history => history.cc),
|
||||
backgroundColor: fillColor,
|
||||
borderColor: primaryColor,
|
||||
borderWidth: 2,
|
||||
@ -70,7 +70,7 @@ function getPlayerHistoryChart(playerHistory, i, width, maxClients) {
|
||||
hoverBorderWidth: 2
|
||||
},
|
||||
{
|
||||
data: offlineTime.map(history => history.clientCount),
|
||||
data: offlineTime.map(history => history.cc),
|
||||
backgroundColor: createDiagonalPattern(offlineFillColor),
|
||||
borderColor: offlineFillColor,
|
||||
borderWidth: 2,
|
||||
@ -88,7 +88,7 @@ function getPlayerHistoryChart(playerHistory, i, width, maxClients) {
|
||||
callbacks: {
|
||||
// todo: localization at some point
|
||||
title: context => moment(context[0].label).local().calendar(),
|
||||
label: context => context.datasetIndex !== 1 ? `${context.value} ${_localization['WEBFRONT_SCRIPT_SERVER_PLAYERS']} | ${playerHistory[context.index].mapAlias}` : context.value === '0' ? '' : _localization['WEBFRONT_SCRIPT_SERVER_UNREACHABLE'],
|
||||
label: context => context.datasetIndex !== 1 ? `${context.value} ${_localization['WEBFRONT_SCRIPT_SERVER_PLAYERS']} | ${playerHistory[context.index].ma}` : context.value === '0' ? '' : _localization['WEBFRONT_SCRIPT_SERVER_UNREACHABLE'],
|
||||
},
|
||||
mode: 'nearest',
|
||||
intersect: false,
|
||||
@ -153,13 +153,14 @@ $(document).ready(function () {
|
||||
$(this).parent().parent().find('.server-header-ip-address').show();
|
||||
});
|
||||
|
||||
$('.server-history-row').each(function (index, element) {
|
||||
let clientHistory = $(this).data('clienthistory-ex');
|
||||
$('.server-history-row').each(async function (index, element) {
|
||||
const serverId = $(this).data('serverid');
|
||||
const serverEp = $(this).data('server-endpoint');
|
||||
setInterval(() => refreshClientActivity(serverId), 2000 + (index * 100));
|
||||
let maxClients = parseInt($('#server_header_' + serverId + ' .server-maxclients').text());
|
||||
let width = $('.server-header').first().width();
|
||||
getPlayerHistoryChart(clientHistory, serverId, width, maxClients);
|
||||
const clientHistory = await fetch(`/api/server/${serverEp}/history`);
|
||||
getPlayerHistoryChart(await clientHistory.json(), serverId, width, maxClients);
|
||||
});
|
||||
|
||||
$('.moment-date').each((index, element) => {
|
||||
|
Reference in New Issue
Block a user