Try to fix database sync with Antigravity.
This commit is contained in:
@@ -338,7 +338,7 @@ public static class NodeEndpoints
|
||||
});
|
||||
|
||||
// PUT update ACL entries
|
||||
group.MapPut("/{uuid}/acl", async (string uuid, List<AclEntryRequest> aclReqs, HttpContext context, ServerDbContext db, CertificateManager certManager) =>
|
||||
group.MapPut("/{uuid}/acl", async (string uuid, List<AclEntryRequest> aclReqs, HttpContext context, ServerDbContext db, CertificateManager certManager, PeerCache peerCache, HttpClient httpClient) =>
|
||||
{
|
||||
var username = AuthHelper.GetAuthenticatedUser(context, certManager);
|
||||
if (string.IsNullOrEmpty(username)) return Results.Unauthorized();
|
||||
@@ -431,11 +431,27 @@ public static class NodeEndpoints
|
||||
node.UpdatedAt = DateTime.UtcNow;
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using var scope = context.RequestServices.CreateScope();
|
||||
var scopeDb = scope.ServiceProvider.GetRequiredService<ServerDbContext>();
|
||||
var rsaKeyManager = scope.ServiceProvider.GetRequiredService<RsaKeyManager>();
|
||||
var configuration = scope.ServiceProvider.GetRequiredService<IConfiguration>();
|
||||
await SyncEndpoints.BroadcastNodeChangeAsync(uuid, scopeDb, peerCache, rsaKeyManager, configuration, httpClient);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error broadcasting ACL change: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
return Results.Ok(new { message = "ACLs updated successfully." });
|
||||
});
|
||||
|
||||
// POST Share a Node (generates k0 encrypted by k1 and saves in PendingShare)
|
||||
group.MapPost("/share", async (ShareNodeRequest req, HttpContext context, ServerDbContext db, CertificateManager certManager) =>
|
||||
group.MapPost("/share", async (ShareNodeRequest req, HttpContext context, ServerDbContext db, CertificateManager certManager, PeerCache peerCache, HttpClient httpClient) =>
|
||||
{
|
||||
var username = AuthHelper.GetAuthenticatedUser(context, certManager);
|
||||
if (string.IsNullOrEmpty(username)) return Results.Unauthorized();
|
||||
@@ -499,13 +515,30 @@ public static class NodeEndpoints
|
||||
});
|
||||
}
|
||||
|
||||
node.UpdatedAt = DateTime.UtcNow;
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using var scope = context.RequestServices.CreateScope();
|
||||
var scopeDb = scope.ServiceProvider.GetRequiredService<ServerDbContext>();
|
||||
var rsaKeyManager = scope.ServiceProvider.GetRequiredService<RsaKeyManager>();
|
||||
var configuration = scope.ServiceProvider.GetRequiredService<IConfiguration>();
|
||||
await SyncEndpoints.BroadcastNodeChangeAsync(req.NodeUuid, scopeDb, peerCache, rsaKeyManager, configuration, httpClient);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error broadcasting share change: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
return Results.Ok(new { message = "Share initiated successfully.", guid = req.NodeUuid });
|
||||
});
|
||||
|
||||
// POST Accept a Share (decrypts E_k1(k0) using k1 and re-encrypts using recipient's masterKey)
|
||||
group.MapPost("/accept-share", async (AcceptShareRequest req, HttpContext context, ServerDbContext db, CertificateManager certManager) =>
|
||||
group.MapPost("/accept-share", async (AcceptShareRequest req, HttpContext context, ServerDbContext db, CertificateManager certManager, PeerCache peerCache, HttpClient httpClient) =>
|
||||
{
|
||||
var username = AuthHelper.GetAuthenticatedUser(context, certManager);
|
||||
if (string.IsNullOrEmpty(username)) return Results.Unauthorized();
|
||||
@@ -563,8 +596,31 @@ public static class NodeEndpoints
|
||||
// Delete pending share
|
||||
db.PendingShares.Remove(pendingShare);
|
||||
|
||||
// Fetch the corresponding node and update UpdatedAt timestamp
|
||||
var node = await db.Nodes.FirstOrDefaultAsync(n => n.Uuid == req.NodeUuid && !n.IsDeleted);
|
||||
if (node != null)
|
||||
{
|
||||
node.UpdatedAt = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using var scope = context.RequestServices.CreateScope();
|
||||
var scopeDb = scope.ServiceProvider.GetRequiredService<ServerDbContext>();
|
||||
var rsaKeyManager = scope.ServiceProvider.GetRequiredService<RsaKeyManager>();
|
||||
var configuration = scope.ServiceProvider.GetRequiredService<IConfiguration>();
|
||||
await SyncEndpoints.BroadcastNodeChangeAsync(req.NodeUuid, scopeDb, peerCache, rsaKeyManager, configuration, httpClient);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error broadcasting accept-share change: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
return Results.Ok(new { message = "Share accepted and linked successfully." });
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user