@@ -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;
@@ -126,7 +127,8 @@ pub use builder::NodeBuilder as Builder;
126127use chain:: ChainSource ;
127128use config:: {
128129 default_user_config, may_announce_channel, AsyncPaymentsRole , ChannelConfig , Config ,
129- NODE_ANN_BCAST_INTERVAL , PEER_RECONNECTION_INTERVAL , RGS_SYNC_INTERVAL ,
130+ LNURL_AUTH_TIMEOUT_SECS , NODE_ANN_BCAST_INTERVAL , PEER_RECONNECTION_INTERVAL ,
131+ RGS_SYNC_INTERVAL ,
130132} ;
131133use connection:: ConnectionManager ;
132134pub use error:: Error as NodeError ;
@@ -154,6 +156,7 @@ pub use lightning_invoice;
154156pub use lightning_liquidity;
155157pub use lightning_types;
156158use liquidity:: { LSPS1Liquidity , LiquiditySource } ;
159+ use lnurl_auth:: LnurlAuth ;
157160use logger:: { log_debug, log_error, log_info, log_trace, LdkLogger , Logger } ;
158161use payment:: asynchronous:: om_mailbox:: OnionMessageMailbox ;
159162use payment:: asynchronous:: static_invoice_store:: StaticInvoiceStore ;
@@ -224,6 +227,7 @@ pub struct Node {
224227 scorer : Arc < Mutex < Scorer > > ,
225228 peer_store : Arc < PeerStore < Arc < Logger > > > ,
226229 payment_store : Arc < PaymentStore > ,
230+ lnurl_auth : Arc < LnurlAuth > ,
227231 is_running : Arc < RwLock < bool > > ,
228232 node_metrics : Arc < RwLock < NodeMetrics > > ,
229233 om_mailbox : Option < Arc < OnionMessageMailbox > > ,
@@ -1009,6 +1013,26 @@ impl Node {
10091013 ) )
10101014 }
10111015
1016+ /// Authenticates the user via [LNURL-auth] for the given LNURL string.
1017+ ///
1018+ /// [LNURL-auth]: https://github.com/lnurl/luds/blob/luds/04.md
1019+ pub fn lnurl_auth ( & self , lnurl : String ) -> Result < ( ) , Error > {
1020+ let auth = Arc :: clone ( & self . lnurl_auth ) ;
1021+ self . runtime . block_on ( async move {
1022+ let res = tokio:: time:: timeout (
1023+ Duration :: from_secs ( LNURL_AUTH_TIMEOUT_SECS ) ,
1024+ auth. authenticate ( & lnurl) ,
1025+ )
1026+ . await ;
1027+
1028+ match res {
1029+ Ok ( Ok ( ( ) ) ) => Ok ( ( ) ) ,
1030+ Ok ( Err ( e) ) => Err ( e) ,
1031+ Err ( _) => Err ( Error :: LnurlAuthTimeout ) ,
1032+ }
1033+ } )
1034+ }
1035+
10121036 /// Returns a liquidity handler allowing to request channels via the [bLIP-51 / LSPS1] protocol.
10131037 ///
10141038 /// [bLIP-51 / LSPS1]: https://github.com/lightning/blips/blob/master/blip-0051.md
0 commit comments