coord poster

This commit is contained in:
Kukks
2024-05-14 09:14:43 +02:00
parent 7a30897ae2
commit 0af456a851
3 changed files with 48 additions and 2 deletions

View File

@@ -13,7 +13,7 @@
<PropertyGroup>
<Product>Coinjoin</Product>
<Description>Allows you to integrate your btcpayserver store with coinjoins.</Description>
<Version>1.0.80</Version>
<Version>1.0.81</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

View File

@@ -14,6 +14,7 @@ using BTCPayServer.Services;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using NBitcoin;
@@ -22,14 +23,18 @@ using NBitcoin.Secp256k1;
using NBXplorer;
using Newtonsoft.Json.Linq;
using NNostr.Client;
using NNostr.Client.Protocols;
using WalletWasabi.Bases;
using WalletWasabi.BitcoinCore.Rpc;
using WalletWasabi.Cache;
using WalletWasabi.Services;
using WalletWasabi.Tor.Socks5.Pool.Circuits;
using WalletWasabi.WabiSabi;
using WalletWasabi.WabiSabi.Backend;
using WalletWasabi.WabiSabi.Backend.Rounds.CoinJoinStorage;
using WalletWasabi.WabiSabi.Backend.Statistics;
using WalletWasabi.WabiSabi.Models;
using WalletWasabi.WebClients.Wasabi;
namespace WalletWasabi.Backend.Controllers;
@@ -267,6 +272,46 @@ public class WabisabiCoordinatorService : PeriodicRunner
s.UriToAdvertise is not null)
{
var k = s.GetKey();
if(s.UriToAdvertise.Scheme.StartsWith("http", StringComparison.InvariantCultureIgnoreCase))
{
//make sure the end is with plugins/wabisabi-coordinator/
var uri = new UriBuilder(s.UriToAdvertise);
uri.Path = uri.Path.Replace("plugins/wabisabi-coordinator/", "").TrimEnd('/') + "/plugins/wabisabi-coordinator/";
}
//verify the url
IWasabiHttpClientFactory factory = null;
if (s.UriToAdvertise.Scheme == "nostr" &&
s.UriToAdvertise.Host.FromNIP19Note() is NIP19.NosteProfileNote nostrProfileNote)
{
factory = new NostrWabisabiClientFactory(null, nostrProfileNote);
}
else
{
factory = new WasabiHttpClientFactory(null, () => s.UriToAdvertise);
}
try
{
var handler = factory.NewWabiSabiApiRequestHandler(Mode.SingleCircuitPerLifetime);
var resp = await handler.GetStatusAsync(RoundStateRequest.Empty, cancel);
}
finally
{
if (factory is IHostedService hs)
{
await hs.StopAsync(cancel);
}
}
_logger.LogInformation("Publishing coordinator discovery event with url {0}", s.UriToAdvertise);
await Nostr.Publish(s.NostrRelay,
new[]
{

View File

@@ -28,6 +28,7 @@ public class Nostr
Socks5HttpClientHandler? httpClientHandler,
CancellationToken cancellationToken )
{
if (!evts.Any())
return;
var ct = CancellationTokenSource
@@ -57,7 +58,7 @@ public class Nostr
Content = description??string.Empty,
Tags = new List<NostrEventTag>()
{
new() {TagIdentifier = EndpointTagIdentifier, Data = new List<string>() {new Uri(coordinatorUri, "plugins/wabisabi-coordinator/").ToString()}},
new() {TagIdentifier = EndpointTagIdentifier, Data = new List<string>() {coordinatorUri.ToString()}},
new() {TagIdentifier = TypeTagIdentifier, Data = new List<string>() { TypeTagValue}},
new() {TagIdentifier = NetworkTagIdentifier, Data = new List<string>() {currentNetwork.ChainName.ToString().ToLower()}}
}