Switch /setip
from PUT to GET, add logging, update response formats
This commit is contained in:
@@ -19,29 +19,33 @@ if (app.Environment.IsDevelopment())
|
|||||||
|
|
||||||
List<Route> routes = new List<Route>();
|
List<Route> routes = new List<Route>();
|
||||||
|
|
||||||
app.MapPut("/setip/{path}/{port}/{apiKey}", async (IYamlParser yamlParser ,HttpContext context, string path, UInt16 port, string apiKey) =>
|
app.MapGet("/setip/{path}/{port}/{apiKey}", async (IYamlParser yamlParser ,HttpContext context, string path, UInt16 port, string apiKey) =>
|
||||||
{
|
{
|
||||||
var rules = await yamlParser.GetRules();
|
var rules = await yamlParser.GetRules();
|
||||||
|
app.Logger.LogInformation($"New setip request for {path} with port {port}.");
|
||||||
var ruleValid = rules.Any(r => r.path == path && r.apiKey == apiKey);
|
var ruleValid = rules.Any(r => r.path == path && r.apiKey == apiKey);
|
||||||
if (!ruleValid)
|
if (!ruleValid)
|
||||||
{
|
{
|
||||||
|
app.Logger.LogInformation($"Invalid rule for {path} with port {port}.");
|
||||||
return Results.StatusCode(StatusCodes.Status403Forbidden);
|
return Results.StatusCode(StatusCodes.Status403Forbidden);
|
||||||
}
|
}
|
||||||
var clientIp = context.Connection.RemoteIpAddress;
|
var clientIp = context.Connection.RemoteIpAddress;
|
||||||
if (clientIp is null) return Results.BadRequest("Could not get the client ip address");
|
if (clientIp is null)
|
||||||
|
{
|
||||||
|
app.Logger.LogInformation($"Could not get the client ip address for {path} with port {port}.");
|
||||||
|
return Results.BadRequest("Could not get the client ip address");
|
||||||
|
}
|
||||||
routes.Add(new Route
|
routes.Add(new Route
|
||||||
{
|
{
|
||||||
ipAddress = clientIp,
|
ipAddress = clientIp,
|
||||||
path = path,
|
path = path,
|
||||||
port = port
|
port = port
|
||||||
});
|
});
|
||||||
return Results.Created();
|
return Results.Ok($"goto/{path}");
|
||||||
});
|
});
|
||||||
|
|
||||||
app.MapGet("/goto/{path}", (string path) =>
|
app.MapGet("/goto/{path}", (string path) =>
|
||||||
{
|
{
|
||||||
var ruleExists = routes.Any(r => r.path == path);
|
|
||||||
if (!ruleExists) Results.NoContent();
|
|
||||||
var redirectRoute = routes.FirstOrDefault(r => r.path == path);
|
var redirectRoute = routes.FirstOrDefault(r => r.path == path);
|
||||||
if (redirectRoute is null) return Task.FromResult(Results.NotFound());
|
if (redirectRoute is null) return Task.FromResult(Results.NotFound());
|
||||||
return Task.FromResult(Results.Redirect($"http://{redirectRoute.ipAddress}:{redirectRoute.port}"));
|
return Task.FromResult(Results.Redirect($"http://{redirectRoute.ipAddress}:{redirectRoute.port}"));
|
||||||
|
Reference in New Issue
Block a user