Исправление: том ./mods:/lampac/mods в compose и копии 10 модулей с enable:true; конфиг без SkipModules

This commit is contained in:
2026-10-02 12:11:49 +03:00
parent 8dcbc6bc52
commit 7b8e28b3bf
151 changed files with 68625 additions and 44 deletions
+64
View File
@@ -0,0 +1,64 @@
using Microsoft.AspNetCore.Http;
using Shared.Models.Events;
using Shared.Models.Module;
using Shared.Models.Module.Interfaces;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace DatabaseEditor;
public class ModInit : IModuleLoaded
{
public static string modpath;
static readonly Func<bool, EventMiddleware, Task<bool>> MiddlewareHandler = OnMiddleware;
public void Loaded(InitspaceModel initspace)
{
modpath = initspace.path;
EventListener.MiddlewareAsync += MiddlewareHandler;
}
public void Dispose()
{
EventListener.MiddlewareAsync -= MiddlewareHandler;
}
static async Task<bool> OnMiddleware(bool first, EventMiddleware e)
{
if (first || !HttpMethods.IsGet(e.httpContext.Request.Method))
return true;
string path = (e.httpContext.Request.Path.Value ?? string.Empty).TrimEnd('/');
if (!string.Equals(path, "/weblog", StringComparison.OrdinalIgnoreCase))
return true;
string weblogPath = Path.Combine(AppContext.BaseDirectory, "module", "WebLog", "index.html");
if (!File.Exists(weblogPath))
return true;
string html = File.ReadAllText(weblogPath, Encoding.UTF8);
if (!html.Contains("href=\"/database-editor\"", StringComparison.OrdinalIgnoreCase))
{
const string activeLink = "<a href=\"/weblog\" aria-current=\"page\">Weblog</a>";
const string databaseLink = activeLink + "\n <a href=\"/database-editor\">Базы</a>";
if (html.Contains(activeLink, StringComparison.Ordinal))
html = html.Replace(activeLink, databaseLink, StringComparison.Ordinal);
else
{
const string navEnd = "</nav>";
int navIndex = html.IndexOf(navEnd, StringComparison.OrdinalIgnoreCase);
if (navIndex >= 0)
html = html.Insert(navIndex, "<a href=\"/database-editor\">Базы</a>\n ");
}
}
e.httpContext.Response.Headers["Cache-Control"] = "no-store, no-cache, must-revalidate";
e.httpContext.Response.ContentType = "text/html; charset=utf-8";
await e.httpContext.Response.WriteAsync(html, e.httpContext.RequestAborted);
return false;
}
}