summary refs log tree commit diff
diff options
context:
space:
mode:
m---------LibMatrix0
-rw-r--r--ModAS.Server/AppServiceRegistration.cs4
-rw-r--r--ModAS.Server/Controllers/DebugController.cs2
-rw-r--r--ModAS.Server/Controllers/TransactionsController.cs15
-rw-r--r--ModAS.Server/Program.cs4
-rw-r--r--ModAS.Server/Services/AuthenticatedHomeserverProviderService.cs16
6 files changed, 30 insertions, 11 deletions
diff --git a/LibMatrix b/LibMatrix
-Subproject 14bcb748a853f7cd2afce40477bd2b0cb14ad7e
+Subproject 314f7044f62b92c49abe2d5c7422c6cf3430b02
diff --git a/ModAS.Server/AppServiceRegistration.cs b/ModAS.Server/AppServiceRegistration.cs
index fbf323a..63dabba 100644
--- a/ModAS.Server/AppServiceRegistration.cs
+++ b/ModAS.Server/AppServiceRegistration.cs
@@ -10,10 +10,10 @@ public class AppServiceRegistration {
     private const string ExtendedValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~+/";
 
     [JsonPropertyName("as_token")]
-    public string AsToken { get; set; } = RandomNumberGenerator.GetString(ExtendedValidChars, RandomNumberGenerator.GetInt32(512, 1024));
+    public string AppServiceToken { get; set; } = RandomNumberGenerator.GetString(ExtendedValidChars, RandomNumberGenerator.GetInt32(512, 1024));
 
     [JsonPropertyName("hs_token")]
-    public string HsToken { get; set; } = RandomNumberGenerator.GetString(ExtendedValidChars, RandomNumberGenerator.GetInt32(512, 1024));
+    public string HomeserverToken { get; set; } = RandomNumberGenerator.GetString(ExtendedValidChars, RandomNumberGenerator.GetInt32(512, 1024));
 
     [JsonPropertyName("id")]
     public string Id { get; set; } = "ModAS-"+RandomNumberGenerator.GetString(ValidChars, 5);
diff --git a/ModAS.Server/Controllers/DebugController.cs b/ModAS.Server/Controllers/DebugController.cs
index 39bff65..d3c7ad0 100644
--- a/ModAS.Server/Controllers/DebugController.cs
+++ b/ModAS.Server/Controllers/DebugController.cs
@@ -40,7 +40,7 @@ public class DebugController(ModASConfiguration config, AuthenticatedHomeserverP
                     await ahs.GetJoinedRooms();
                 }
                 catch (MatrixException e) {
-                    if(e is {ErrorCode: "M_FORBIDDEN"}) continue;
+                    if (e is { ErrorCode: "M_FORBIDDEN" }) continue;
                     throw;
                 }
 
diff --git a/ModAS.Server/Controllers/TransactionsController.cs b/ModAS.Server/Controllers/TransactionsController.cs
new file mode 100644
index 0000000..8e4e018
--- /dev/null
+++ b/ModAS.Server/Controllers/TransactionsController.cs
@@ -0,0 +1,15 @@
+using System.IO.Pipelines;
+using Microsoft.AspNetCore.Mvc;
+using ModAS.Server;
+
+namespace WebApplication1.Controllers;
+
+[ApiController]
+public class TransactionsController(AppServiceRegistration asr) : ControllerBase {
+    [HttpPut(" /_matrix/app/v1/transactions/{txnId}")]
+    public async Task<IActionResult> PutTransactions(string txnId) {
+        if(!Request.Headers.ContainsKey("Authorization") || Request.Headers["Authorization"] != asr.HomeserverToken) return Unauthorized();
+        await Request.Body.CopyToAsync(Console.OpenStandardOutput());
+        return Ok(new{});
+    }
+}
\ No newline at end of file
diff --git a/ModAS.Server/Program.cs b/ModAS.Server/Program.cs
index cba8d69..da44ca8 100644
--- a/ModAS.Server/Program.cs
+++ b/ModAS.Server/Program.cs
@@ -29,8 +29,8 @@ builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
 
 builder.Services.AddSingleton<ModASConfiguration>();
 
-builder.Services.AddScoped<AuthenticationService>();
-builder.Services.AddScoped<AuthenticatedHomeserverProviderService>();
+builder.Services.AddSingleton<AuthenticationService>();
+builder.Services.AddSingleton<AuthenticatedHomeserverProviderService>();
 // builder.Services.AddScoped<UserContextService>();
 
 builder.Services.AddSingleton<TieredStorageService>(x => {
diff --git a/ModAS.Server/Services/AuthenticatedHomeserverProviderService.cs b/ModAS.Server/Services/AuthenticatedHomeserverProviderService.cs
index fa8e00a..1ceb095 100644
--- a/ModAS.Server/Services/AuthenticatedHomeserverProviderService.cs
+++ b/ModAS.Server/Services/AuthenticatedHomeserverProviderService.cs
@@ -1,3 +1,4 @@
+using System.Collections.Concurrent;
 using ArcaneLibs.Extensions;
 using LibMatrix;
 using LibMatrix.Homeservers;
@@ -14,14 +15,17 @@ public class AuthenticatedHomeserverProviderService(
     AppServiceRegistration asRegistration
     ) {
     public HttpContext? _context = request.HttpContext;
-    public Dictionary<string, AuthenticatedHomeserverGeneric> KnownUsers { get; set; } = new();
+    public ConcurrentDictionary<string, AuthenticatedHomeserverGeneric> KnownUsers { get; set; } = new();
 
     public async Task<AuthenticatedHomeserverGeneric> GetImpersonatedHomeserver(string mxid) {
-        if (KnownUsers.TryGetValue(mxid, out var homeserver)) return homeserver;
-        var hs = await homeserverProviderService.GetAuthenticatedWithToken(config.ServerName, asRegistration.AsToken, config.HomeserverUrl);
-        await hs.SetImpersonate(mxid);
-        KnownUsers.TryAdd(mxid, hs);
-        return hs;
+        if (!KnownUsers.TryGetValue(mxid, out var homeserver)) {
+            homeserver = await homeserverProviderService.GetAuthenticatedWithToken(config.ServerName, asRegistration.AppServiceToken, config.HomeserverUrl);
+            KnownUsers.TryAdd(mxid, homeserver);
+        }
+        //var hs = await homeserverProviderService.GetAuthenticatedWithToken(config.ServerName, asRegistration.AsToken, config.HomeserverUrl);
+        await homeserver.SetImpersonate(mxid);
+        // KnownUsers.TryAdd(mxid, homeserver);
+        return homeserver;
     }
     
     public async Task<AuthenticatedHomeserverGeneric> GetHomeserver() {