@@ -51,6 +51,7 @@ pub struct Config {
5151 pub lsps2_service_config : Option < LSPS2ServiceConfig > ,
5252 pub log_level : LevelFilter ,
5353 pub log_file_path : Option < String > ,
54+ pub pathfinding_scores_source_url : Option < String > ,
5455}
5556
5657#[ derive( Debug , Clone , PartialEq , Eq ) ]
@@ -87,6 +88,7 @@ struct ConfigBuilder {
8788 lsps2 : Option < LiquidityConfig > ,
8889 log_level : Option < String > ,
8990 log_file_path : Option < String > ,
91+ pathfinding_scores_source_url : Option < String > ,
9092}
9193
9294impl ConfigBuilder {
@@ -100,6 +102,8 @@ impl ConfigBuilder {
100102 self . rest_service_address =
101103 node. rest_service_address . or ( self . rest_service_address . clone ( ) ) ;
102104 self . alias = node. alias . or ( self . alias . clone ( ) ) ;
105+ self . pathfinding_scores_source_url =
106+ node. pathfinding_scores_source_url . or ( self . pathfinding_scores_source_url . clone ( ) ) ;
103107 }
104108
105109 if let Some ( storage) = toml. storage {
@@ -181,6 +185,10 @@ impl ConfigBuilder {
181185 if let Some ( storage_dir_path) = & args. storage_dir_path {
182186 self . storage_dir_path = Some ( storage_dir_path. clone ( ) ) ;
183187 }
188+
189+ if let Some ( pathfinding_scores_source_url) = & args. pathfinding_scores_source_url {
190+ self . pathfinding_scores_source_url = Some ( pathfinding_scores_source_url. clone ( ) ) ;
191+ }
184192 }
185193
186194 fn build ( self ) -> io:: Result < Config > {
@@ -330,6 +338,8 @@ impl ConfigBuilder {
330338 #[ cfg( not( feature = "experimental-lsps2-support" ) ) ]
331339 let lsps2_service_config = None ;
332340
341+ let pathfinding_scores_source_url = self . pathfinding_scores_source_url ;
342+
333343 Ok ( Config {
334344 network,
335345 listening_addrs,
@@ -344,6 +354,7 @@ impl ConfigBuilder {
344354 lsps2_service_config,
345355 log_level,
346356 log_file_path : self . log_file_path ,
357+ pathfinding_scores_source_url,
347358 } )
348359 }
349360}
@@ -369,6 +380,7 @@ struct NodeConfig {
369380 announcement_addresses : Option < Vec < String > > ,
370381 rest_service_address : Option < String > ,
371382 alias : Option < String > ,
383+ pathfinding_scores_source_url : Option < String > ,
372384}
373385
374386#[ derive( Deserialize , Serialize ) ]
@@ -539,6 +551,13 @@ pub struct ArgsConfig {
539551 help = "The path where the underlying LDK and BDK persist their data."
540552 ) ]
541553 storage_dir_path : Option < String > ,
554+
555+ #[ arg(
556+ long,
557+ env = "LDK_SERVER_PATHFINDING_SCORES_SOURCE_URL" ,
558+ help = "The external scores source that is merged into the local scoring system to improve routing."
559+ ) ]
560+ pathfinding_scores_source_url : Option < String > ,
542561}
543562
544563pub fn load_config ( args : & ArgsConfig ) -> io:: Result < Config > {
@@ -664,6 +683,7 @@ mod tests {
664683 bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
665684 storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
666685 node_alias : Some ( String :: from ( "LDK Server CLI" ) ) ,
686+ pathfinding_scores_source_url : Some ( String :: from ( "https://example.com/" ) ) ,
667687 }
668688 }
669689
@@ -679,6 +699,7 @@ mod tests {
679699 bitcoind_rpc_user : None ,
680700 bitcoind_rpc_password : None ,
681701 storage_dir_path : None ,
702+ pathfinding_scores_source_url : None ,
682703 }
683704 }
684705
@@ -745,6 +766,7 @@ mod tests {
745766 } ) ,
746767 log_level : LevelFilter :: Trace ,
747768 log_file_path : Some ( "/var/log/ldk-server.log" . to_string ( ) ) ,
769+ pathfinding_scores_source_url : None ,
748770 } ;
749771
750772 assert_eq ! ( config. listening_addrs, expected. listening_addrs) ;
@@ -760,6 +782,7 @@ mod tests {
760782 assert_eq ! ( config. lsps2_service_config. is_some( ) , expected. lsps2_service_config. is_some( ) ) ;
761783 assert_eq ! ( config. log_level, expected. log_level) ;
762784 assert_eq ! ( config. log_file_path, expected. log_file_path) ;
785+ assert_eq ! ( config. pathfinding_scores_source_url, expected. pathfinding_scores_source_url) ;
763786
764787 // Test case where only electrum is set
765788
@@ -770,6 +793,7 @@ mod tests {
770793 announcement_addresses = ["54.3.7.81:3001"]
771794 rest_service_address = "127.0.0.1:3002"
772795 alias = "LDK Server"
796+ pathfinding_scores_source_url = "https://example.com/"
773797
774798 [tls]
775799 cert_path = "/path/to/tls.crt"
@@ -820,6 +844,7 @@ mod tests {
820844 announcement_addresses = ["54.3.7.81:3001"]
821845 rest_service_address = "127.0.0.1:3002"
822846 alias = "LDK Server"
847+ pathfinding_scores_source_url = "https://example.com/"
823848
824849 [tls]
825850 cert_path = "/path/to/tls.crt"
@@ -876,6 +901,7 @@ mod tests {
876901 announcement_addresses = ["54.3.7.81:3001"]
877902 rest_service_address = "127.0.0.1:3002"
878903 alias = "LDK Server"
904+ pathfinding_scores_source_url = "https://example.com/"
879905
880906 [tls]
881907 cert_path = "/path/to/tls.crt"
@@ -1048,6 +1074,7 @@ mod tests {
10481074 lsps2_service_config : None ,
10491075 log_level : LevelFilter :: Trace ,
10501076 log_file_path : Some ( "/var/log/ldk-server.log" . to_string ( ) ) ,
1077+ pathfinding_scores_source_url : Some ( "https://example.com/" . to_string ( ) ) ,
10511078 } ;
10521079
10531080 assert_eq ! ( config. listening_addrs, expected. listening_addrs) ;
@@ -1059,6 +1086,7 @@ mod tests {
10591086 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
10601087 assert_eq ! ( config. rabbitmq_exchange_name, expected. rabbitmq_exchange_name) ;
10611088 assert ! ( config. lsps2_service_config. is_none( ) ) ;
1089+ assert_eq ! ( config. pathfinding_scores_source_url, expected. pathfinding_scores_source_url) ;
10621090 }
10631091
10641092 #[ test]
@@ -1148,6 +1176,7 @@ mod tests {
11481176 } ) ,
11491177 log_level : LevelFilter :: Trace ,
11501178 log_file_path : Some ( "/var/log/ldk-server.log" . to_string ( ) ) ,
1179+ pathfinding_scores_source_url : Some ( "https://example.com/" . to_string ( ) ) ,
11511180 } ;
11521181
11531182 assert_eq ! ( config. listening_addrs, expected. listening_addrs) ;
@@ -1160,6 +1189,7 @@ mod tests {
11601189 assert_eq ! ( config. rabbitmq_exchange_name, expected. rabbitmq_exchange_name) ;
11611190 #[ cfg( feature = "experimental-lsps2-support" ) ]
11621191 assert_eq ! ( config. lsps2_service_config. is_some( ) , expected. lsps2_service_config. is_some( ) ) ;
1192+ assert_eq ! ( config. pathfinding_scores_source_url, expected. pathfinding_scores_source_url) ;
11631193 }
11641194
11651195 #[ test]
0 commit comments