@@ -16,7 +16,8 @@ pub struct Config {
1616 pub network : Network ,
1717 pub rest_service_addr : SocketAddr ,
1818 pub storage_dir_path : String ,
19- pub bitcoind_rpc_addr : SocketAddr ,
19+ pub bitcoind_rpc_host : String ,
20+ pub bitcoind_rpc_port : u16 ,
2021 pub bitcoind_rpc_user : String ,
2122 pub bitcoind_rpc_password : String ,
2223 pub rabbitmq_connection_string : String ,
@@ -54,7 +55,8 @@ struct DiskConfig {
5455
5556#[ derive( Deserialize , Serialize ) ]
5657struct BitcoindConfig {
57- rpc_address : Option < String > ,
58+ rpc_host : Option < String > ,
59+ rpc_port : Option < u16 > ,
5860 rpc_user : Option < String > ,
5961 rpc_password : Option < String > ,
6062}
@@ -129,8 +131,11 @@ pub struct ArgsConfig {
129131 #[ arg( long, env = "LDK_SERVER_NODE_ALIAS" ) ]
130132 node_alias : Option < String > ,
131133
132- #[ arg( long, env = "LDK_SERVER_BITCOIND_RPC_ADDRESS" ) ]
133- bitcoind_rpc_address : Option < String > ,
134+ #[ arg( long, env = "LDK_SERVER_BITCOIND_RPC_HOST" ) ]
135+ bitcoind_rpc_host : Option < String > ,
136+
137+ #[ arg( long, env = "LDK_SERVER_BITCOIND_RPC_PORT" ) ]
138+ bitcoind_rpc_port : Option < u16 > ,
134139
135140 #[ arg( long, env = "LDK_SERVER_BITCOIND_RPC_USER" ) ]
136141 bitcoind_rpc_user : Option < String > ,
@@ -239,17 +244,19 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
239244
240245 // Bitcoind
241246 let bitcoind = toml_config. as_ref ( ) . and_then ( |t| t. bitcoind . as_ref ( ) ) ;
242- let bitcoind_rpc_addr_str = match args_config
243- . bitcoind_rpc_address
247+ let bitcoind_rpc_host = match args_config
248+ . bitcoind_rpc_host
244249 . as_deref ( )
245- . or ( bitcoind. and_then ( |b| b. rpc_address . as_deref ( ) ) )
250+ . or ( bitcoind. and_then ( |b| b. rpc_host . as_deref ( ) ) )
246251 {
247- Some ( addr ) => addr ,
248- None => return Err ( missing_field_err ( "bitcoind_rpc_address " ) ) ,
252+ Some ( host ) => host . to_string ( ) ,
253+ None => return Err ( missing_field_err ( "bitcoind_rpc_host " ) ) ,
249254 } ;
250- let bitcoind_rpc_addr = SocketAddr :: from_str ( bitcoind_rpc_addr_str) . map_err ( |e| {
251- io:: Error :: new ( io:: ErrorKind :: InvalidInput , format ! ( "Invalid bitcoind_rpc_address: {}" , e) )
252- } ) ?;
255+ let bitcoind_rpc_port =
256+ match args_config. bitcoind_rpc_port . or ( bitcoind. and_then ( |b| b. rpc_port ) ) {
257+ Some ( port) => port,
258+ None => return Err ( missing_field_err ( "bitcoind_rpc_port" ) ) ,
259+ } ;
253260 let bitcoind_rpc_user = match args_config
254261 . bitcoind_rpc_user
255262 . as_deref ( )
@@ -282,7 +289,8 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
282289 network,
283290 rest_service_addr,
284291 storage_dir_path,
285- bitcoind_rpc_addr,
292+ bitcoind_rpc_host,
293+ bitcoind_rpc_port,
286294 bitcoind_rpc_user,
287295 bitcoind_rpc_password,
288296 rabbitmq_connection_string,
@@ -351,7 +359,8 @@ mod tests {
351359 dir_path = "/tmp"
352360
353361 [bitcoind]
354- rpc_address = "127.0.0.1:8332"
362+ rpc_host = "127.0.0.1"
363+ rpc_port = 8332
355364 rpc_user = "bitcoind-testuser"
356365 rpc_password = "bitcoind-testpassword"
357366
@@ -376,7 +385,8 @@ mod tests {
376385 node_network : Some ( Network :: Regtest ) ,
377386 node_listening_address : Some ( String :: from ( "localhost:3008" ) ) ,
378387 node_rest_service_address : Some ( String :: from ( "127.0.0.1:3009" ) ) ,
379- bitcoind_rpc_address : Some ( String :: from ( "127.0.1.9:18443" ) ) ,
388+ bitcoind_rpc_host : Some ( String :: from ( "127.0.1.9" ) ) ,
389+ bitcoind_rpc_port : Some ( 18443 ) ,
380390 bitcoind_rpc_user : Some ( String :: from ( "bitcoind-testuser_cli" ) ) ,
381391 bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
382392 storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
@@ -409,7 +419,8 @@ mod tests {
409419 node_network : None ,
410420 node_listening_address : None ,
411421 node_rest_service_address : None ,
412- bitcoind_rpc_address : None ,
422+ bitcoind_rpc_host : None ,
423+ bitcoind_rpc_port : None ,
413424 bitcoind_rpc_user : None ,
414425 bitcoind_rpc_password : None ,
415426 storage_dir_path : None ,
@@ -425,7 +436,8 @@ mod tests {
425436 network : Network :: Regtest ,
426437 rest_service_addr : SocketAddr :: from_str ( "127.0.0.1:3002" ) . unwrap ( ) ,
427438 storage_dir_path : "/tmp" . to_string ( ) ,
428- bitcoind_rpc_addr : SocketAddr :: from_str ( "127.0.0.1:8332" ) . unwrap ( ) ,
439+ bitcoind_rpc_host : "127.0.0.1" . to_string ( ) ,
440+ bitcoind_rpc_port : 8332 ,
429441 bitcoind_rpc_user : "bitcoind-testuser" . to_string ( ) ,
430442 bitcoind_rpc_password : "bitcoind-testpassword" . to_string ( ) ,
431443 rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -447,7 +459,8 @@ mod tests {
447459 assert_eq ! ( config. network, expected. network) ;
448460 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
449461 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
450- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
462+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
463+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
451464 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
452465 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
453466 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -466,7 +479,8 @@ mod tests {
466479 node_network : None ,
467480 node_listening_address : None ,
468481 node_rest_service_address : None ,
469- bitcoind_rpc_address : None ,
482+ bitcoind_rpc_host : None ,
483+ bitcoind_rpc_port : None ,
470484 bitcoind_rpc_user : None ,
471485 bitcoind_rpc_password : None ,
472486 storage_dir_path : None ,
@@ -508,7 +522,8 @@ mod tests {
508522 // The order here is important: it is the reverse of the validation order in `load_config`
509523 validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
510524 validate_missing ! ( "rpc_user" , missing_field_msg( "bitcoind_rpc_user" ) ) ;
511- validate_missing ! ( "rpc_address" , missing_field_msg( "bitcoind_rpc_address" ) ) ;
525+ validate_missing ! ( "rpc_port" , missing_field_msg( "bitcoind_rpc_port" ) ) ;
526+ validate_missing ! ( "rpc_host" , missing_field_msg( "bitcoind_rpc_host" ) ) ;
512527 validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
513528 validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
514529 validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -541,10 +556,8 @@ mod tests {
541556 . unwrap ( ) ,
542557 alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
543558 storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
544- bitcoind_rpc_addr : SocketAddr :: from_str (
545- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
546- )
547- . unwrap ( ) ,
559+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
560+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
548561 bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
549562 bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
550563 rabbitmq_connection_string : String :: new ( ) ,
@@ -556,7 +569,8 @@ mod tests {
556569 assert_eq ! ( config. network, expected. network) ;
557570 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
558571 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
559- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
572+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
573+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
560574 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
561575 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
562576 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -583,7 +597,8 @@ mod tests {
583597 // The order here is important: it is the reverse of the validation order in `load_config`
584598 validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
585599 validate_missing ! ( bitcoind_rpc_user, missing_field_msg( "bitcoind_rpc_user" ) ) ;
586- validate_missing ! ( bitcoind_rpc_address, missing_field_msg( "bitcoind_rpc_address" ) ) ;
600+ validate_missing ! ( bitcoind_rpc_port, missing_field_msg( "bitcoind_rpc_port" ) ) ;
601+ validate_missing ! ( bitcoind_rpc_host, missing_field_msg( "bitcoind_rpc_host" ) ) ;
587602 validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
588603 validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
589604 validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -613,10 +628,8 @@ mod tests {
613628 . unwrap ( ) ,
614629 alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
615630 storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
616- bitcoind_rpc_addr : SocketAddr :: from_str (
617- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
618- )
619- . unwrap ( ) ,
631+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
632+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
620633 bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
621634 bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
622635 rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -638,7 +651,8 @@ mod tests {
638651 assert_eq ! ( config. network, expected. network) ;
639652 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
640653 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
641- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
654+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
655+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
642656 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
643657 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
644658 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments