From 24c756a9a8328f9d9313f993ed88a20fb16cf955 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 13 Dec 2025 19:49:56 +0800 Subject: [PATCH] :wastebasket: Remove gateway got replaced by turbine one --- .../Configuration/ConfigurationController.cs | 12 -- DysonNetwork.Gateway/Dockerfile | 23 --- .../DysonNetwork.Gateway.csproj | 22 --- DysonNetwork.Gateway/Program.cs | 168 ------------------ .../Properties/launchSettings.json | 21 --- DysonNetwork.Gateway/VersionController.cs | 20 --- DysonNetwork.Gateway/appsettings.json | 16 -- DysonNetwork.Gateway/version.json | 7 - DysonNetwork.sln | 14 -- 9 files changed, 303 deletions(-) delete mode 100644 DysonNetwork.Gateway/Configuration/ConfigurationController.cs delete mode 100644 DysonNetwork.Gateway/Dockerfile delete mode 100644 DysonNetwork.Gateway/DysonNetwork.Gateway.csproj delete mode 100644 DysonNetwork.Gateway/Program.cs delete mode 100644 DysonNetwork.Gateway/Properties/launchSettings.json delete mode 100644 DysonNetwork.Gateway/VersionController.cs delete mode 100644 DysonNetwork.Gateway/appsettings.json delete mode 100644 DysonNetwork.Gateway/version.json diff --git a/DysonNetwork.Gateway/Configuration/ConfigurationController.cs b/DysonNetwork.Gateway/Configuration/ConfigurationController.cs deleted file mode 100644 index 51d89c6..0000000 --- a/DysonNetwork.Gateway/Configuration/ConfigurationController.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -[ApiController] -[Route("config")] -public class ConfigurationController(IConfiguration configuration) : ControllerBase -{ - [HttpGet] - public IActionResult Get() => Ok(configuration.GetSection("Client").Get>()); - - [HttpGet("site")] - public IActionResult GetSiteUrl() => Ok(configuration["SiteUrl"]); -} \ No newline at end of file diff --git a/DysonNetwork.Gateway/Dockerfile b/DysonNetwork.Gateway/Dockerfile deleted file mode 100644 index e83a317..0000000 --- a/DysonNetwork.Gateway/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base -USER $APP_UID -WORKDIR /app -EXPOSE 8080 -EXPOSE 8081 - -FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build -ARG BUILD_CONFIGURATION=Release -WORKDIR /src -COPY ["DysonNetwork.Gateway/DysonNetwork.Gateway.csproj", "DysonNetwork.Gateway/"] -RUN dotnet restore "DysonNetwork.Gateway/DysonNetwork.Gateway.csproj" -COPY . . -WORKDIR "/src/DysonNetwork.Gateway" -RUN dotnet build "./DysonNetwork.Gateway.csproj" -c $BUILD_CONFIGURATION -o /app/build - -FROM build AS publish -ARG BUILD_CONFIGURATION=Release -RUN dotnet publish "./DysonNetwork.Gateway.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false - -FROM base AS final -WORKDIR /app -COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "DysonNetwork.Gateway.dll"] diff --git a/DysonNetwork.Gateway/DysonNetwork.Gateway.csproj b/DysonNetwork.Gateway/DysonNetwork.Gateway.csproj deleted file mode 100644 index 821abf5..0000000 --- a/DysonNetwork.Gateway/DysonNetwork.Gateway.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - enable - enable - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - diff --git a/DysonNetwork.Gateway/Program.cs b/DysonNetwork.Gateway/Program.cs deleted file mode 100644 index 4f215d4..0000000 --- a/DysonNetwork.Gateway/Program.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System.Threading.RateLimiting; -using DysonNetwork.Shared.Http; -using Yarp.ReverseProxy.Configuration; -using Microsoft.AspNetCore.HttpOverrides; - -var builder = WebApplication.CreateBuilder(args); - -builder.AddServiceDefaults("gateway"); - -builder.ConfigureAppKestrel(builder.Configuration, maxRequestBodySize: long.MaxValue, enableGrpc: false); - -builder.Services.AddCors(options => -{ - options.AddDefaultPolicy( - policy => - { - policy.SetIsOriginAllowed(origin => true) - .AllowAnyMethod() - .AllowAnyHeader() - .AllowCredentials() - .WithExposedHeaders("X-Total"); - }); -}); - -builder.Services.AddRateLimiter(options => -{ - options.AddPolicy("fixed", context => - { - var ip = context.Connection.RemoteIpAddress?.ToString() ?? "unknown"; - - return RateLimitPartition.GetFixedWindowLimiter( - partitionKey: ip, - factory: _ => new FixedWindowRateLimiterOptions - { - PermitLimit = 120, // 120 requests... - Window = TimeSpan.FromMinutes(1), // ...per minute per IP - QueueProcessingOrder = QueueProcessingOrder.OldestFirst, - QueueLimit = 10 // allow short bursts instead of instant 503s - }); - }); - - options.OnRejected = async (context, token) => - { - // Log the rejected IP - var logger = context.HttpContext.RequestServices - .GetRequiredService() - .CreateLogger("RateLimiter"); - - var ip = context.HttpContext.Connection.RemoteIpAddress?.ToString() ?? "unknown"; - logger.LogWarning("Rate limit exceeded for IP: {IP}", ip); - - // Respond to the client - context.HttpContext.Response.StatusCode = StatusCodes.Status429TooManyRequests; - await context.HttpContext.Response.WriteAsync( - "Rate limit exceeded. Try again later.", token); - }; -}); - -var serviceNames = new[] { "ring", "pass", "drive", "sphere", "develop", "insight", "zone" }; - -var specialRoutes = new[] -{ - new RouteConfig - { - RouteId = "ring-ws", - ClusterId = "ring", - Match = new RouteMatch { Path = "/ws" } - }, - new RouteConfig - { - RouteId = "pass-openid", - ClusterId = "pass", - Match = new RouteMatch { Path = "/.well-known/openid-configuration" } - }, - new RouteConfig - { - RouteId = "pass-jwks", - ClusterId = "pass", - Match = new RouteMatch { Path = "/.well-known/jwks" } - }, - new RouteConfig - { - RouteId = "drive-tus", - ClusterId = "drive", - Match = new RouteMatch { Path = "/api/tus" } - } -}; - -var apiRoutes = serviceNames.Select(serviceName => -{ - var apiPath = serviceName switch - { - _ => $"/{serviceName}" - }; - return new RouteConfig - { - RouteId = $"{serviceName}-api", - ClusterId = serviceName, - Match = new RouteMatch { Path = $"{apiPath}/{{**catch-all}}" }, - Transforms = - [ - new Dictionary { { "PathRemovePrefix", apiPath } }, - new Dictionary { { "PathPrefix", "/api" } } - ] - }; -}); - -var swaggerRoutes = serviceNames.Select(serviceName => new RouteConfig -{ - RouteId = $"{serviceName}-swagger", - ClusterId = serviceName, - Match = new RouteMatch { Path = $"/swagger/{serviceName}/{{**catch-all}}" }, - Transforms = - [ - new Dictionary { { "PathRemovePrefix", $"/swagger/{serviceName}" } }, - new Dictionary { { "PathPrefix", "/swagger" } } - ] -}); - -var routes = specialRoutes.Concat(apiRoutes).Concat(swaggerRoutes).ToArray(); - -var clusters = serviceNames.Select(serviceName => new ClusterConfig -{ - ClusterId = serviceName, - HealthCheck = new HealthCheckConfig - { - Active = new ActiveHealthCheckConfig - { - Enabled = true, - Interval = TimeSpan.FromSeconds(10), - Timeout = TimeSpan.FromSeconds(5), - Path = "/health" - }, - Passive = new() - { - Enabled = true - } - }, - Destinations = new Dictionary - { - { "destination1", new DestinationConfig { Address = $"http://{serviceName}" } } - } -}).ToArray(); - -builder.Services - .AddReverseProxy() - .LoadFromMemory(routes, clusters) - .AddServiceDiscoveryDestinationResolver(); - -builder.Services.AddControllers(); - -var app = builder.Build(); - -var forwardedHeadersOptions = new ForwardedHeadersOptions -{ - ForwardedHeaders = ForwardedHeaders.All -}; -forwardedHeadersOptions.KnownNetworks.Clear(); -forwardedHeadersOptions.KnownProxies.Clear(); -app.UseForwardedHeaders(forwardedHeadersOptions); - -app.UseCors(); - -app.MapReverseProxy().RequireRateLimiting("fixed"); - -app.MapControllers(); - -app.Run(); diff --git a/DysonNetwork.Gateway/Properties/launchSettings.json b/DysonNetwork.Gateway/Properties/launchSettings.json deleted file mode 100644 index 55b32fa..0000000 --- a/DysonNetwork.Gateway/Properties/launchSettings.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/launchsettings.json", - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/DysonNetwork.Gateway/VersionController.cs b/DysonNetwork.Gateway/VersionController.cs deleted file mode 100644 index 9f985b8..0000000 --- a/DysonNetwork.Gateway/VersionController.cs +++ /dev/null @@ -1,20 +0,0 @@ -using DysonNetwork.Shared.Data; -using Microsoft.AspNetCore.Mvc; - -namespace DysonNetwork.Gateway; - -[ApiController] -[Route("/version")] -public class VersionController : ControllerBase -{ - [HttpGet] - public IActionResult Get() - { - return Ok(new AppVersion - { - Version = ThisAssembly.AssemblyVersion, - Commit = ThisAssembly.GitCommitId, - UpdateDate = ThisAssembly.GitCommitDate - }); - } -} diff --git a/DysonNetwork.Gateway/appsettings.json b/DysonNetwork.Gateway/appsettings.json deleted file mode 100644 index 4d8788b..0000000 --- a/DysonNetwork.Gateway/appsettings.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "Cache": { - "Serializer": "MessagePack" - }, - "AllowedHosts": "*", - "SiteUrl": "http://localhost:3000", - "Client": { - "SomeSetting": "SomeValue" - } -} \ No newline at end of file diff --git a/DysonNetwork.Gateway/version.json b/DysonNetwork.Gateway/version.json deleted file mode 100644 index 9fbf8d3..0000000 --- a/DysonNetwork.Gateway/version.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": "1.0", - "publicReleaseRefSpec": ["^refs/heads/main$"], - "cloudBuild": { - "setVersionVariables": true - } -} diff --git a/DysonNetwork.sln b/DysonNetwork.sln index b8afee8..77c9eb8 100644 --- a/DysonNetwork.sln +++ b/DysonNetwork.sln @@ -17,8 +17,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Drive", "Dyson EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Develop", "DysonNetwork.Develop\DysonNetwork.Develop.csproj", "{C577AA78-B11D-4076-89A6-1C7F0ECC04E2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Gateway", "DysonNetwork.Gateway\DysonNetwork.Gateway.csproj", "{AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Insight", "DysonNetwork.Insight\DysonNetwork.Insight.csproj", "{E603CDF2-8BA0-49AE-A1F9-BD2DA5CB983D}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Zone", "DysonNetwork.Zone\DysonNetwork.Zone.csproj", "{E255B723-CAC9-4AC8-AA3B-116CC256E63C}" @@ -105,18 +103,6 @@ Global {C577AA78-B11D-4076-89A6-1C7F0ECC04E2}.Release|x64.Build.0 = Release|Any CPU {C577AA78-B11D-4076-89A6-1C7F0ECC04E2}.Release|x86.ActiveCfg = Release|Any CPU {C577AA78-B11D-4076-89A6-1C7F0ECC04E2}.Release|x86.Build.0 = Release|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Debug|x64.ActiveCfg = Debug|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Debug|x64.Build.0 = Debug|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Debug|x86.ActiveCfg = Debug|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Debug|x86.Build.0 = Debug|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Release|Any CPU.Build.0 = Release|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Release|x64.ActiveCfg = Release|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Release|x64.Build.0 = Release|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Release|x86.ActiveCfg = Release|Any CPU - {AA4D244C-6C3A-4CD0-9DA4-5CAFFBB55085}.Release|x86.Build.0 = Release|Any CPU {E603CDF2-8BA0-49AE-A1F9-BD2DA5CB983D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E603CDF2-8BA0-49AE-A1F9-BD2DA5CB983D}.Debug|Any CPU.Build.0 = Debug|Any CPU {E603CDF2-8BA0-49AE-A1F9-BD2DA5CB983D}.Debug|x64.ActiveCfg = Debug|Any CPU