From 8bb1ead80e521339824e68d26728e0a7376f0c40 Mon Sep 17 00:00:00 2001 From: notfire Date: Sun, 30 Mar 2025 17:35:22 -0400 Subject: [PATCH] add mastoapi route for blocked instances --- .../Controllers/Mastodon/InstanceController.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs b/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs index 05e8105f..73662bf8 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/InstanceController.cs @@ -7,7 +7,9 @@ using Iceshrimp.Backend.Controllers.Pleroma.Schemas.Entities; using Iceshrimp.Backend.Controllers.Shared.Attributes; using Iceshrimp.Backend.Core.Configuration; using Iceshrimp.Backend.Core.Database; +using Iceshrimp.Backend.Core.Database.Tables; using Iceshrimp.Backend.Core.Extensions; +using Iceshrimp.Backend.Core.Middleware; using Iceshrimp.Backend.Core.Services; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; @@ -23,6 +25,8 @@ namespace Iceshrimp.Backend.Controllers.Mastodon; [Produces(MediaTypeNames.Application.Json)] public class InstanceController( IOptions instance, + // ReSharper disable once ParameterOnlyUsedForPreconditionCheck.Local + IOptionsSnapshot security, DatabaseContext db, MetaService meta ) : ControllerBase @@ -99,6 +103,18 @@ public class InstanceController( .Select(p => new RuleEntity { Id = p.Id, Text = p.Text, Hint = p.Description }) .ToListAsync(); } + + [HttpGet("/api/v1/domain_blocks")] + [ProducesResults(HttpStatusCode.OK)] + public async Task> GetBlockedInstances() + { + if (security.Value.FederationMode == Enums.FederationMode.AllowList) + throw GracefulException.BadRequest("Federation mode is set to allowlist."); + + var q = db.BlockedInstances.OrderBy(p => p.Host).AsQueryable(); + + return await q.ToListAsync(); + } [HttpGet("/api/v1/instance/translation_languages")] [ProducesResults(HttpStatusCode.OK)]