초기커밋
This commit is contained in:
142
UGQApiServer/ApiFilter.cs
Normal file
142
UGQApiServer/ApiFilter.cs
Normal file
@@ -0,0 +1,142 @@
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace UGQApiServer;
|
||||
|
||||
public enum UgqApiType
|
||||
{
|
||||
None,
|
||||
UgqAdmin,
|
||||
UgqIngame,
|
||||
UgqApi,
|
||||
UgqAllInOne
|
||||
}
|
||||
|
||||
public class ApiAllowSettings
|
||||
{
|
||||
public bool AllowInGameApi { get; init; } = false;
|
||||
public bool AllowWebApi { get; init; } = false;
|
||||
public bool AllowAdminApi { get; init; } = false;
|
||||
public ServerType ServerType { get; init; } = ServerType.None;
|
||||
|
||||
public ApiAllowSettings(UgqApiType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case UgqApiType.UgqAdmin:
|
||||
AllowAdminApi = true;
|
||||
ServerType = ServerType.UgqAdmin;
|
||||
break;
|
||||
case UgqApiType.UgqApi:
|
||||
AllowWebApi = true;
|
||||
ServerType = ServerType.UgqApi;
|
||||
break;
|
||||
case UgqApiType.UgqIngame:
|
||||
AllowInGameApi = true;
|
||||
ServerType = ServerType.UgqIngame;
|
||||
break;
|
||||
case UgqApiType.UgqAllInOne:
|
||||
AllowAdminApi = true;
|
||||
AllowWebApi = true;
|
||||
AllowInGameApi = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class UGQInGameApiAttribute : Attribute, IResourceFilter
|
||||
{
|
||||
public void OnResourceExecuted(ResourceExecutedContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnResourceExecuting(ResourceExecutingContext context)
|
||||
{
|
||||
var settings = context.HttpContext.RequestServices.GetService<ApiAllowSettings>();
|
||||
if (settings == null)
|
||||
{
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
else
|
||||
{
|
||||
if(settings.AllowInGameApi == false)
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class UGQWebApiAttribute : Attribute, IResourceFilter
|
||||
{
|
||||
public void OnResourceExecuted(ResourceExecutedContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnResourceExecuting(ResourceExecutingContext context)
|
||||
{
|
||||
var settings = context.HttpContext.RequestServices.GetService<ApiAllowSettings>();
|
||||
if (settings == null)
|
||||
{
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (settings.AllowWebApi == false)
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class UGQAdminApiAttribute : Attribute, IResourceFilter
|
||||
{
|
||||
public void OnResourceExecuted(ResourceExecutedContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnResourceExecuting(ResourceExecutingContext context)
|
||||
{
|
||||
var settings = context.HttpContext.RequestServices.GetService<ApiAllowSettings>();
|
||||
if (settings == null)
|
||||
{
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (settings.AllowAdminApi == false)
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class DevelopmentOnlyAttribute : Attribute, IResourceFilter
|
||||
{
|
||||
public void OnResourceExecuted(ResourceExecutedContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnResourceExecuting(ResourceExecutingContext context)
|
||||
{
|
||||
bool cmd_develop = false;
|
||||
|
||||
var cmdOptions = context.HttpContext.RequestServices.GetService<CommandLineOptions>();
|
||||
if (cmdOptions != null)
|
||||
{
|
||||
cmd_develop = cmdOptions.m_develop;
|
||||
}
|
||||
|
||||
bool isDevelopment = false;
|
||||
var env = context.HttpContext.RequestServices.GetService<IWebHostEnvironment>();
|
||||
if (env != null)
|
||||
{
|
||||
isDevelopment = env.IsDevelopment() || (env.EnvironmentName == "AWSDev") || cmd_develop;
|
||||
}
|
||||
|
||||
if (isDevelopment == false)
|
||||
context.Result = new NotFoundResult();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user