@@ -96,6 +96,7 @@ pub mod graph;
9696mod hex_utils;
9797pub mod io;
9898pub mod liquidity;
99+ mod lnurl_auth;
99100pub mod logger;
100101mod message_handler;
101102pub mod payment;
@@ -124,7 +125,8 @@ pub use builder::NodeBuilder as Builder;
124125use chain:: ChainSource ;
125126use config:: {
126127 default_user_config, may_announce_channel, AsyncPaymentsRole , ChannelConfig , Config ,
127- NODE_ANN_BCAST_INTERVAL , PEER_RECONNECTION_INTERVAL , RGS_SYNC_INTERVAL ,
128+ LNURL_AUTH_TIMEOUT_SECS , NODE_ANN_BCAST_INTERVAL , PEER_RECONNECTION_INTERVAL ,
129+ RGS_SYNC_INTERVAL ,
128130} ;
129131use connection:: ConnectionManager ;
130132pub use error:: Error as NodeError ;
@@ -148,6 +150,7 @@ use lightning::util::persist::KVStoreSync;
148150use lightning:: util:: wallet_utils:: Wallet as LdkWallet ;
149151use lightning_background_processor:: process_events_async;
150152use liquidity:: { LSPS1Liquidity , LiquiditySource } ;
153+ use lnurl_auth:: LnurlAuth ;
151154use logger:: { log_debug, log_error, log_info, log_trace, LdkLogger , Logger } ;
152155use payment:: asynchronous:: om_mailbox:: OnionMessageMailbox ;
153156use payment:: asynchronous:: static_invoice_store:: StaticInvoiceStore ;
@@ -220,6 +223,7 @@ pub struct Node {
220223 scorer : Arc < Mutex < Scorer > > ,
221224 peer_store : Arc < PeerStore < Arc < Logger > > > ,
222225 payment_store : Arc < PaymentStore > ,
226+ lnurl_auth : Arc < LnurlAuth > ,
223227 is_running : Arc < RwLock < bool > > ,
224228 node_metrics : Arc < RwLock < NodeMetrics > > ,
225229 om_mailbox : Option < Arc < OnionMessageMailbox > > ,
@@ -1005,6 +1009,26 @@ impl Node {
10051009 ) )
10061010 }
10071011
1012+ /// Authenticates the user via [LNURL-auth] for the given LNURL string.
1013+ ///
1014+ /// [LNURL-auth]: https://github.com/lnurl/luds/blob/luds/04.md
1015+ pub fn lnurl_auth ( & self , lnurl : String ) -> Result < ( ) , Error > {
1016+ let auth = Arc :: clone ( & self . lnurl_auth ) ;
1017+ self . runtime . block_on ( async move {
1018+ let res = tokio:: time:: timeout (
1019+ Duration :: from_secs ( LNURL_AUTH_TIMEOUT_SECS ) ,
1020+ auth. authenticate ( & lnurl) ,
1021+ )
1022+ . await ;
1023+
1024+ match res {
1025+ Ok ( Ok ( ( ) ) ) => Ok ( ( ) ) ,
1026+ Ok ( Err ( e) ) => Err ( e) ,
1027+ Err ( _) => Err ( Error :: LnurlAuthTimeout ) ,
1028+ }
1029+ } )
1030+ }
1031+
10081032 /// Returns a liquidity handler allowing to request channels via the [bLIP-51 / LSPS1] protocol.
10091033 ///
10101034 /// [bLIP-51 / LSPS1]: https://github.com/lightning/blips/blob/master/blip-0051.md
0 commit comments