upd bl and add libs on build

This commit is contained in:
Kukks
2023-12-11 08:41:39 +01:00
parent a8e43e9350
commit c841c5e86b
20 changed files with 122 additions and 30 deletions

View File

@@ -50,12 +50,15 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.FileSeller", "Plugins\BTCPayServer.Plugins.FileSeller\BTCPayServer.Plugins.FileSeller.csproj", "{F2D81B6A-E1EA-4900-BF9A-924D2CA951DD}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.FileSeller", "Plugins\BTCPayServer.Plugins.FileSeller\BTCPayServer.Plugins.FileSeller.csproj", "{F2D81B6A-E1EA-4900-BF9A-924D2CA951DD}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.Breez", "Plugins\BTCPayServer.Plugins.Breez\BTCPayServer.Plugins.Breez.csproj", "{5934F898-00B1-4781-BD18-04DF8685BC76}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.Breez", "Plugins\BTCPayServer.Plugins.Breez\BTCPayServer.Plugins.Breez.csproj", "{5934F898-00B1-4781-BD18-04DF8685BC76}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.DynamicReports", "Plugins\BTCPayServer.Plugins.DynamicReports\BTCPayServer.Plugins.DynamicReports.csproj", "{BCB4E68D-089F-481E-A3AE-FC9CED6AA34D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.DynamicReports", "Plugins\BTCPayServer.Plugins.DynamicReports\BTCPayServer.Plugins.DynamicReports.csproj", "{BCB4E68D-089F-481E-A3AE-FC9CED6AA34D}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.Bringin", "Plugins\BTCPayServer.Plugins.Bringin\BTCPayServer.Plugins.Bringin.csproj", "{D4AFEC95-64D4-4FC4-9AE4-B82F4C6D6E29}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.Bringin", "Plugins\BTCPayServer.Plugins.Bringin\BTCPayServer.Plugins.Bringin.csproj", "{D4AFEC95-64D4-4FC4-9AE4-B82F4C6D6E29}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.LDK", "Plugins\BTCPayServer.Plugins.LDK\BTCPayServer.Plugins.LDK.csproj", "{661DBF95-0F60-49C0-829A-C5997B44AF60}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.LDK", "Plugins\BTCPayServer.Plugins.LDK\BTCPayServer.Plugins.LDK.csproj", "{661DBF95-0F60-49C0-829A-C5997B44AF60}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BTCPayServer.Plugins.Blink", "Plugins\BTCPayServer.Plugins.Blink\BTCPayServer.Plugins.Blink.csproj", "{C0714C5C-1798-4576-9892-3CE097FDE76F}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -272,6 +275,14 @@ Global
{661DBF95-0F60-49C0-829A-C5997B44AF60}.Altcoins-Debug|Any CPU.Build.0 = Debug|Any CPU {661DBF95-0F60-49C0-829A-C5997B44AF60}.Altcoins-Debug|Any CPU.Build.0 = Debug|Any CPU
{661DBF95-0F60-49C0-829A-C5997B44AF60}.Altcoins-Release|Any CPU.ActiveCfg = Debug|Any CPU {661DBF95-0F60-49C0-829A-C5997B44AF60}.Altcoins-Release|Any CPU.ActiveCfg = Debug|Any CPU
{661DBF95-0F60-49C0-829A-C5997B44AF60}.Altcoins-Release|Any CPU.Build.0 = Debug|Any CPU {661DBF95-0F60-49C0-829A-C5997B44AF60}.Altcoins-Release|Any CPU.Build.0 = Debug|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Release|Any CPU.Build.0 = Release|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Altcoins-Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Altcoins-Debug|Any CPU.Build.0 = Debug|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Altcoins-Release|Any CPU.ActiveCfg = Debug|Any CPU
{C0714C5C-1798-4576-9892-3CE097FDE76F}.Altcoins-Release|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{B19C9F52-DC47-466D-8B5C-2D202B7B003F} = {9E04ECE9-E304-4FF2-9CBC-83256E6C6962} {B19C9F52-DC47-466D-8B5C-2D202B7B003F} = {9E04ECE9-E304-4FF2-9CBC-83256E6C6962}

View File

@@ -11,6 +11,7 @@
<Product>Bitcoin Whitepaper</Product> <Product>Bitcoin Whitepaper</Product>
<Description>This makes the Bitcoin whitepaper available on your BTCPay Server.</Description> <Description>This makes the Bitcoin whitepaper available on your BTCPay Server.</Description>
<Version>1.0.4</Version> <Version>1.0.4</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>Blink</Product> <Product>Blink</Product>
<Description>Brink Lightning support</Description> <Description>Brink Lightning support</Description>
<Version>1.0.0</Version> <Version>1.0.0</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<RootNamespace>BTCPayServer.Plugins.Blink</RootNamespace> <RootNamespace>BTCPayServer.Plugins.Blink</RootNamespace>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->

View File

@@ -27,7 +27,7 @@ public class BlinkLightningClient : ILightningClient
{ {
private readonly string _apiKey; private readonly string _apiKey;
private readonly Uri _apiEndpoint; private readonly Uri _apiEndpoint;
private readonly string _walletId; public string? WalletId { get; set; }
private readonly Network _network; private readonly Network _network;
private readonly NBXplorerDashboard _nbXplorerDashboard; private readonly NBXplorerDashboard _nbXplorerDashboard;
private readonly GraphQLHttpClient _client; private readonly GraphQLHttpClient _client;
@@ -37,15 +37,16 @@ public class BlinkLightningClient : ILightningClient
{ {
_apiKey = apiKey; _apiKey = apiKey;
_apiEndpoint = apiEndpoint; _apiEndpoint = apiEndpoint;
_walletId = walletId; WalletId = walletId;
_network = network; _network = network;
_nbXplorerDashboard = nbXplorerDashboard; _nbXplorerDashboard = nbXplorerDashboard;
_client = new GraphQLHttpClient(new GraphQLHttpClientOptions() {EndPoint = _apiEndpoint}, new NewtonsoftJsonSerializer(), httpClient); _client = new GraphQLHttpClient(new GraphQLHttpClientOptions() {EndPoint = _apiEndpoint}, new NewtonsoftJsonSerializer(), httpClient);
} }
public override string ToString() public override string ToString()
{ {
return $"type=blink;server={_apiEndpoint};api-key={_apiKey};wallet-id={_walletId}"; return $"type=blink;server={_apiEndpoint};api-key={_apiKey}{(WalletId is null? "":$";wallet-id={WalletId}")}";
} }
public async Task<LightningInvoice?> GetInvoice(string invoiceId, public async Task<LightningInvoice?> GetInvoice(string invoiceId,
@@ -73,7 +74,7 @@ query InvoiceByPaymentHash($paymentHash: PaymentHash!, $walletId: WalletId!) {
OperationName = "InvoiceByPaymentHash", OperationName = "InvoiceByPaymentHash",
Variables = new Variables = new
{ {
walletId = _walletId, walletId = WalletId,
paymentHash = invoiceId paymentHash = invoiceId
} }
}; };
@@ -146,7 +147,7 @@ query Invoices($walletId: WalletId!) {
OperationName = "Invoices", OperationName = "Invoices",
Variables = new Variables = new
{ {
walletId = _walletId walletId = WalletId
} }
}; };
var response = await _client.SendQueryAsync<dynamic>(reques, cancellation); var response = await _client.SendQueryAsync<dynamic>(reques, cancellation);
@@ -192,7 +193,7 @@ query TransactionsByPaymentHash($paymentHash: PaymentHash!, $walletId: WalletId!
OperationName = "TransactionsByPaymentHash", OperationName = "TransactionsByPaymentHash",
Variables = new Variables = new
{ {
walletId = _walletId, walletId = WalletId,
paymentHash = paymentHash paymentHash = paymentHash
} }
}; };
@@ -277,7 +278,7 @@ query Transactions($walletId: WalletId!) {
OperationName = "Transactions", OperationName = "Transactions",
Variables = new Variables = new
{ {
walletId = _walletId walletId = WalletId
} }
}; };
var response = await _client.SendQueryAsync<dynamic>(reques, cancellation); var response = await _client.SendQueryAsync<dynamic>(reques, cancellation);
@@ -318,7 +319,7 @@ mutation LnInvoiceCreate($input: LnInvoiceCreateInput!) {
{ {
input = new input = new
{ {
walletId = _walletId, walletId = WalletId,
memo = createInvoiceRequest.Description?? createInvoiceRequest.DescriptionHash?.ToString(), memo = createInvoiceRequest.Description?? createInvoiceRequest.DescriptionHash?.ToString(),
amount = (long)createInvoiceRequest.Amount.ToUnit(LightMoneyUnit.Satoshi), amount = (long)createInvoiceRequest.Amount.ToUnit(LightMoneyUnit.Satoshi),
expiresIn = (int)createInvoiceRequest.Expiry.TotalMinutes expiresIn = (int)createInvoiceRequest.Expiry.TotalMinutes
@@ -462,6 +463,38 @@ expiresIn = (int)createInvoiceRequest.Expiry.TotalMinutes
} }
} }
public async Task<(Network Network, string DefaultWalletId)> GetNetworkAndDefaultWallet(CancellationToken cancellation =default)
{
var reques = new GraphQLRequest
{
Query = @"
query GetNetworkAndDefaultWallet {
globals {
network
}
me {
defaultAccount {
defaultWalletId
}
}
}",
OperationName = "GetNetworkAndDefaultWallet"
};
var response = await _client.SendQueryAsync<dynamic>(reques, cancellation);
var defaultWalletId = (string) response.Data.me.defaultAccount.defaultWalletId;
var network = response.Data.globals.network.ToString() switch
{
"mainnet" => Network.Main,
"testnet" => Network.TestNet,
"regtest" => Network.RegTest,
_ => throw new ArgumentOutOfRangeException()
};
return (network, defaultWalletId);
}
public async Task<LightningNodeInformation> GetInfo(CancellationToken cancellation = new CancellationToken()) public async Task<LightningNodeInformation> GetInfo(CancellationToken cancellation = new CancellationToken())
{ {
@@ -504,7 +537,7 @@ query GetWallet($walletId: WalletId!) {
}", }",
OperationName = "GetWallet", OperationName = "GetWallet",
Variables = new { Variables = new {
walletId = _walletId walletId = WalletId
} }
}; };
@@ -570,7 +603,7 @@ mutation LnInvoicePaymentSend($input: LnInvoicePaymentInput!) {
OperationName = "LnInvoicePaymentSend", OperationName = "LnInvoicePaymentSend",
Variables = new { Variables = new {
input = new { input = new {
walletId = _walletId, walletId = WalletId,
paymentRequest = bolt11, paymentRequest = bolt11,
} }
} }

View File

@@ -8,13 +8,13 @@ using Network = NBitcoin.Network;
namespace BTCPayServer.Plugins.Blink; namespace BTCPayServer.Plugins.Blink;
public class BlinkLightningConnectionStringHandler : ILightningConnectionStringHandler public class BlinkLightningConnectionStringHandler : ILightningConnectionStringHandler
{ {
private readonly IHttpClientFactory _httpClientFactory; private readonly IHttpClientFactory _httpClientFactory;
private readonly NBXplorerDashboard _nbXplorerDashboard; private readonly NBXplorerDashboard _nbXplorerDashboard;
public BlinkLightningConnectionStringHandler(IHttpClientFactory httpClientFactory, NBXplorerDashboard nbXplorerDashboard) public BlinkLightningConnectionStringHandler(IHttpClientFactory httpClientFactory,
NBXplorerDashboard nbXplorerDashboard)
{ {
_httpClientFactory = httpClientFactory; _httpClientFactory = httpClientFactory;
_nbXplorerDashboard = nbXplorerDashboard; _nbXplorerDashboard = nbXplorerDashboard;
@@ -29,17 +29,20 @@ public class BlinkLightningConnectionStringHandler : ILightningConnectionStringH
error = null; error = null;
return null; return null;
} }
if (!kv.TryGetValue("server", out var server)) if (!kv.TryGetValue("server", out var server))
{ {
error = $"The key 'server' is mandatory for blink connection strings"; error = $"The key 'server' is mandatory for blink connection strings";
return null; return null;
} }
if (!Uri.TryCreate(server, UriKind.Absolute, out var uri) if (!Uri.TryCreate(server, UriKind.Absolute, out var uri)
|| uri.Scheme != "http" && uri.Scheme != "https") || uri.Scheme != "http" && uri.Scheme != "https")
{ {
error = "The key 'server' should be an URI starting by http:// or https://"; error = "The key 'server' should be an URI starting by http:// or https://";
return null; return null;
} }
bool allowInsecure = false; bool allowInsecure = false;
if (kv.TryGetValue("allowinsecure", out var allowinsecureStr)) if (kv.TryGetValue("allowinsecure", out var allowinsecureStr))
{ {
@@ -58,16 +61,12 @@ public class BlinkLightningConnectionStringHandler : ILightningConnectionStringH
error = "The key 'allowinsecure' is false, but server's Uri is not using https"; error = "The key 'allowinsecure' is false, but server's Uri is not using https";
return null; return null;
} }
if (!kv.TryGetValue("api-key", out var apiKey)) if (!kv.TryGetValue("api-key", out var apiKey))
{ {
error = "The key 'api-key' is not found"; error = "The key 'api-key' is not found";
return null; return null;
} }
if (!kv.TryGetValue("wallet-id", out var walletId))
{
error = "The key 'wallet-id' is not found";
return null;
}
error = null; error = null;
@@ -78,14 +77,47 @@ public class BlinkLightningConnectionStringHandler : ILightningConnectionStringH
client.BaseAddress = uri; client.BaseAddress = uri;
network = Network.Main; network = Network.Main;
var bclient = new BlinkLightningClient( apiKey, uri, walletId, network, _nbXplorerDashboard, client); kv.TryGetValue("wallet-id", out var walletId);
var result = bclient.GetBalance().GetAwaiter().GetResult(); var bclient = new BlinkLightningClient(apiKey, uri, walletId, network, _nbXplorerDashboard, client);
if (result is null) (Network Network, string DefaultWalletId) res;
try
{ {
error = "Invalid credentials"; res = bclient.GetNetworkAndDefaultWallet().GetAwaiter().GetResult();
if (res.Network != network)
{
error = $"The wallet is not on the right network ({res.Network.Name} instead of {network.Name})";
return null;
}
if (walletId is null && string.IsNullOrEmpty(res.DefaultWalletId))
{
error = $"The wallet-id is not set and no default wallet is set";
return null;
}
}
catch (Exception e)
{
error = $"Invalid server or api key";
return null; return null;
} }
return bclient;
if (walletId is null)
{
bclient.WalletId = res.DefaultWalletId;
}
else
{
try
{
bclient.GetBalance().GetAwaiter().GetResult();
}
catch (Exception e)
{
error = "Invalid wallet id";
return null;
}
}
return bclient;
} }
} }

View File

@@ -32,7 +32,7 @@
<code><b>type=</b>blink;<b>server=</b>https://api.blink.sv/graphql;<b>api-key</b>=blink_...;<b>wallet-id=</b>xyz</code> <code><b>type=</b>blink;<b>server=</b>https://api.blink.sv/graphql;<b>api-key</b>=blink_...;<b>wallet-id=</b>xyz</code>
</li> </li>
</ul> </ul>
<p class="my-2">Head over to the dashboard for the wallet id and and create an api key.</p> <p class="my-2">Head over to the Blink dashboard and create an api key. The wallet-id is optional and will use the default wallet otherwise.</p>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -10,6 +10,7 @@
<Product>Breez / Greenlight</Product> <Product>Breez / Greenlight</Product>
<Description>Lightwight lightning baby!</Description> <Description>Lightwight lightning baby!</Description>
<Version>1.0.0</Version> <Version>1.0.0</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>Dynamic Reports</Product> <Product>Dynamic Reports</Product>
<Description>Allows you to create custom reports using SQL.</Description> <Description>Allows you to create custom reports using SQL.</Description>
<Version>1.0.0</Version> <Version>1.0.0</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>Data Erasure</Product> <Product>Data Erasure</Product>
<Description>Allows you to erase user data from invoices after a period of time.</Description> <Description>Allows you to erase user data from invoices after a period of time.</Description>
<Version>1.0.2</Version> <Version>1.0.2</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>Dynamic Rate Limit</Product> <Product>Dynamic Rate Limit</Product>
<Description>Allows you to override the default rate limiting.</Description> <Description>Allows you to override the default rate limiting.</Description>
<Version>1.0.1</Version> <Version>1.0.1</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>Dynamic Reports</Product> <Product>Dynamic Reports</Product>
<Description>Allows you to create custom reports using SQL.</Description> <Description>Allows you to create custom reports using SQL.</Description>
<Version>1.0.1</Version> <Version>1.0.1</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>File Seller</Product> <Product>File Seller</Product>
<Description>Allows you to sell files through the point of sale/crowdfund apps.</Description> <Description>Allows you to sell files through the point of sale/crowdfund apps.</Description>
<Version>1.0.4</Version> <Version>1.0.4</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>FixedFloat</Product> <Product>FixedFloat</Product>
<Description>Allows you to embed a FixedFloat conversion screen to allow customers to pay with altcoins.</Description> <Description>Allows you to embed a FixedFloat conversion screen to allow customers to pay with altcoins.</Description>
<Version>1.1.6</Version> <Version>1.1.6</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Razor"> <Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<LangVersion>10</LangVersion> <LangVersion>10</LangVersion>
</PropertyGroup> </PropertyGroup>
@@ -10,6 +10,7 @@
<Product>LDK</Product> <Product>LDK</Product>
<Description>The way lightning's meant to be</Description> <Description>The way lightning's meant to be</Description>
<Version>1.0.0</Version> <Version>1.0.0</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -12,6 +12,7 @@
<Product>Liquid+</Product> <Product>Liquid+</Product>
<Description>Enhanced support for the liquid network.</Description> <Description>Enhanced support for the liquid network.</Description>
<Version>1.1.3</Version> <Version>1.1.3</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->

View File

@@ -12,6 +12,7 @@
<Product>Nostr </Product> <Product>Nostr </Product>
<Description>Allows you to verify your nostr account with NIP5 and zap like the rest of the crazies</Description> <Description>Allows you to verify your nostr account with NIP5 and zap like the rest of the crazies</Description>
<Version>1.1.3</Version> <Version>1.1.3</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -12,6 +12,7 @@
<Product>Prism</Product> <Product>Prism</Product>
<Description>Automated value splits for Bitcoin.</Description> <Description>Automated value splits for Bitcoin.</Description>
<Version>1.2.1</Version> <Version>1.2.1</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>SideShift</Product> <Product>SideShift</Product>
<Description>Allows you to embed a SideShift conversion screen to allow customers to pay with altcoins.</Description> <Description>Allows you to embed a SideShift conversion screen to allow customers to pay with altcoins.</Description>
<Version>1.1.13</Version> <Version>1.1.13</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -10,6 +10,7 @@
<Product>TicketTailor</Product> <Product>TicketTailor</Product>
<Description>Allows you to integrate with TicketTailor.com to sell tickets for Bitcoin</Description> <Description>Allows you to integrate with TicketTailor.com to sell tickets for Bitcoin</Description>
<Version>2.0.0</Version> <Version>2.0.0</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->
<PropertyGroup> <PropertyGroup>

View File

@@ -14,6 +14,7 @@
<Product>Coinjoin</Product> <Product>Coinjoin</Product>
<Description>Allows you to integrate your btcpayserver store with coinjoins.</Description> <Description>Allows you to integrate your btcpayserver store with coinjoins.</Description>
<Version>1.0.67</Version> <Version>1.0.67</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<!-- Plugin development properties --> <!-- Plugin development properties -->