From 8ae9e59d9d6d4848fd3be142e0337567f9d488e9 Mon Sep 17 00:00:00 2001 From: d11n Date: Thu, 21 Dec 2023 15:42:17 +0100 Subject: [PATCH] Lightning Address: Use lowercased username when resolving (#5579) * Lightning Address: Use lowercased username when resolving * Use static NormalizeUsername --- .../Controllers/LightningAddressService.cs | 13 ++++++------- BTCPayServer/Controllers/UILNURLController.cs | 2 +- BTCPayServer/Plugins/LightningAddressResolver.cs | 9 +++++++++ BTCPayServer/Plugins/LightningAddresssResolver.cs | 14 -------------- 4 files changed, 16 insertions(+), 22 deletions(-) create mode 100644 BTCPayServer/Plugins/LightningAddressResolver.cs delete mode 100644 BTCPayServer/Plugins/LightningAddresssResolver.cs diff --git a/BTCPayServer/Controllers/LightningAddressService.cs b/BTCPayServer/Controllers/LightningAddressService.cs index aabfcad0a..a551d4f8b 100644 --- a/BTCPayServer/Controllers/LightningAddressService.cs +++ b/BTCPayServer/Controllers/LightningAddressService.cs @@ -48,16 +48,11 @@ public class LightningAddressService { return await _memoryCache.GetOrCreateAsync(GetKey(username), async entry => { - var result = await Get(new LightningAddressQuery { Usernames = new[] { username } }); + var result = await Get(new LightningAddressQuery { Usernames = new[] { NormalizeUsername(username) } }); return result.FirstOrDefault(); }); } - private string NormalizeUsername(string username) - { - return username.ToLowerInvariant(); - } - public async Task Set(LightningAddressData data) { data.Username = NormalizeUsername(data.Username); @@ -115,8 +110,12 @@ public class LightningAddressService await context.AddAsync(data); } + public static string NormalizeUsername(string username) + { + return username.ToLowerInvariant(); + } - private string GetKey(string username) + private static string GetKey(string username) { username = NormalizeUsername(username); return $"{nameof(LightningAddressService)}_{username}"; diff --git a/BTCPayServer/Controllers/UILNURLController.cs b/BTCPayServer/Controllers/UILNURLController.cs index d03379d6e..7534deed5 100644 --- a/BTCPayServer/Controllers/UILNURLController.cs +++ b/BTCPayServer/Controllers/UILNURLController.cs @@ -373,7 +373,7 @@ namespace BTCPayServer if (string.IsNullOrEmpty(username)) return NotFound("Unknown username"); - LNURLPayRequest lnurlRequest = null; + LNURLPayRequest lnurlRequest; // Check core and fall back to lookup Lightning Address via plugins var lightningAddressSettings = await _lightningAddressService.ResolveByAddress(username); diff --git a/BTCPayServer/Plugins/LightningAddressResolver.cs b/BTCPayServer/Plugins/LightningAddressResolver.cs new file mode 100644 index 000000000..3a115aade --- /dev/null +++ b/BTCPayServer/Plugins/LightningAddressResolver.cs @@ -0,0 +1,9 @@ +using LNURL; + +namespace BTCPayServer.Plugins; + +public class LightningAddressResolver(string username) +{ + public string Username { get; set; } = LightningAddressService.NormalizeUsername(username); + public LNURLPayRequest LNURLPayRequest { get; set; } +} diff --git a/BTCPayServer/Plugins/LightningAddresssResolver.cs b/BTCPayServer/Plugins/LightningAddresssResolver.cs deleted file mode 100644 index ab60e2a0e..000000000 --- a/BTCPayServer/Plugins/LightningAddresssResolver.cs +++ /dev/null @@ -1,14 +0,0 @@ -using LNURL; - -namespace BTCPayServer.Plugins; - -public class LightningAddressResolver -{ - public string Username { get; set; } - public LNURLPayRequest LNURLPayRequest { get; set; } - - public LightningAddressResolver(string username) - { - Username = username; - } -}