using hassio_onedrive_backup; using Microsoft.Extensions.Primitives; namespace onedrive_backup.Middleware { public class IncomingHassFirewallMiddleware { private readonly RequestDelegate _next; private readonly IHostEnvironment _env; private const string _allowedIP = "172.30.32.2"; public IncomingHassFirewallMiddleware(RequestDelegate next, IHostEnvironment env) { _next = next; _env = env; } public async Task InvokeAsync(HttpContext context) { var ip = context.Connection.RemoteIpAddress.MapToIPv4(); ConsoleLogger.LogVerbose($"Source IP: {ip}"); if (_env.IsDevelopment() ==false && ip.ToString().Equals(_allowedIP, StringComparison.OrdinalIgnoreCase) == false) { ConsoleLogger.LogError($"Blocking request from unauthorized source IP : {ip.ToString()}"); } // await context.Response.WriteAsync($"Request origin ({ip}) blocked."); await _next(context); } } }