@@ -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 > ,
@@ -241,17 +246,18 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
241246
242247 // Bitcoind
243248 let bitcoind = toml_config. as_ref ( ) . and_then ( |t| t. bitcoind . as_ref ( ) ) ;
244- let bitcoind_rpc_addr_str = match args_config
245- . bitcoind_rpc_address
249+ let bitcoind_rpc_host = args_config
250+ . bitcoind_rpc_host
246251 . as_deref ( )
247- . or ( bitcoind. and_then ( |b| b. rpc_address . as_deref ( ) ) )
248- {
249- Some ( addr) => addr,
250- None => return Err ( missing_field_err ( "bitcoind_rpc_address" ) ) ,
251- } ;
252- let bitcoind_rpc_addr = SocketAddr :: from_str ( bitcoind_rpc_addr_str) . map_err ( |e| {
253- io:: Error :: new ( io:: ErrorKind :: InvalidInput , format ! ( "Invalid bitcoind_rpc_address: {}" , e) )
254- } ) ?;
252+ . or_else ( || bitcoind. and_then ( |b| b. rpc_host . as_deref ( ) ) )
253+ . ok_or_else ( || missing_field_err ( "bitcoind_rpc_host" ) ) ?
254+ . to_string ( ) ;
255+
256+ let bitcoind_rpc_port = args_config
257+ . bitcoind_rpc_port
258+ . or_else ( || bitcoind. and_then ( |b| b. rpc_port ) )
259+ . ok_or_else ( || missing_field_err ( "bitcoind_rpc_port" ) ) ?;
260+
255261 let bitcoind_rpc_user = args_config
256262 . bitcoind_rpc_user
257263 . as_deref ( )
@@ -281,7 +287,8 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
281287 network,
282288 rest_service_addr,
283289 storage_dir_path,
284- bitcoind_rpc_addr,
290+ bitcoind_rpc_host,
291+ bitcoind_rpc_port,
285292 bitcoind_rpc_user,
286293 bitcoind_rpc_password,
287294 rabbitmq_connection_string,
@@ -350,7 +357,8 @@ mod tests {
350357 dir_path = "/tmp"
351358
352359 [bitcoind]
353- rpc_address = "127.0.0.1:8332"
360+ rpc_host = "127.0.0.1"
361+ rpc_port = 8332
354362 rpc_user = "bitcoind-testuser"
355363 rpc_password = "bitcoind-testpassword"
356364
@@ -375,7 +383,8 @@ mod tests {
375383 node_network : Some ( Network :: Regtest ) ,
376384 node_listening_address : Some ( String :: from ( "localhost:3008" ) ) ,
377385 node_rest_service_address : Some ( String :: from ( "127.0.0.1:3009" ) ) ,
378- bitcoind_rpc_address : Some ( String :: from ( "127.0.1.9:18443" ) ) ,
386+ bitcoind_rpc_host : Some ( String :: from ( "127.0.1.9" ) ) ,
387+ bitcoind_rpc_port : Some ( 18443 ) ,
379388 bitcoind_rpc_user : Some ( String :: from ( "bitcoind-testuser_cli" ) ) ,
380389 bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
381390 storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
@@ -408,7 +417,8 @@ mod tests {
408417 node_network : None ,
409418 node_listening_address : None ,
410419 node_rest_service_address : None ,
411- bitcoind_rpc_address : None ,
420+ bitcoind_rpc_host : None ,
421+ bitcoind_rpc_port : None ,
412422 bitcoind_rpc_user : None ,
413423 bitcoind_rpc_password : None ,
414424 storage_dir_path : None ,
@@ -424,7 +434,8 @@ mod tests {
424434 network : Network :: Regtest ,
425435 rest_service_addr : SocketAddr :: from_str ( "127.0.0.1:3002" ) . unwrap ( ) ,
426436 storage_dir_path : "/tmp" . to_string ( ) ,
427- bitcoind_rpc_addr : SocketAddr :: from_str ( "127.0.0.1:8332" ) . unwrap ( ) ,
437+ bitcoind_rpc_host : "127.0.0.1" . to_string ( ) ,
438+ bitcoind_rpc_port : 8332 ,
428439 bitcoind_rpc_user : "bitcoind-testuser" . to_string ( ) ,
429440 bitcoind_rpc_password : "bitcoind-testpassword" . to_string ( ) ,
430441 rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -446,7 +457,8 @@ mod tests {
446457 assert_eq ! ( config. network, expected. network) ;
447458 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
448459 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
449- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
460+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
461+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
450462 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
451463 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
452464 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -465,7 +477,8 @@ mod tests {
465477 node_network : None ,
466478 node_listening_address : None ,
467479 node_rest_service_address : None ,
468- bitcoind_rpc_address : None ,
480+ bitcoind_rpc_host : None ,
481+ bitcoind_rpc_port : None ,
469482 bitcoind_rpc_user : None ,
470483 bitcoind_rpc_password : None ,
471484 storage_dir_path : None ,
@@ -507,7 +520,8 @@ mod tests {
507520 // The order here is important: it is the reverse of the validation order in `load_config`
508521 validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
509522 validate_missing ! ( "rpc_user" , missing_field_msg( "bitcoind_rpc_user" ) ) ;
510- validate_missing ! ( "rpc_address" , missing_field_msg( "bitcoind_rpc_address" ) ) ;
523+ validate_missing ! ( "rpc_port" , missing_field_msg( "bitcoind_rpc_port" ) ) ;
524+ validate_missing ! ( "rpc_host" , missing_field_msg( "bitcoind_rpc_host" ) ) ;
511525 validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
512526 validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
513527 validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -540,10 +554,8 @@ mod tests {
540554 . unwrap ( ) ,
541555 alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
542556 storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
543- bitcoind_rpc_addr : SocketAddr :: from_str (
544- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
545- )
546- . unwrap ( ) ,
557+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
558+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
547559 bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
548560 bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
549561 rabbitmq_connection_string : String :: new ( ) ,
@@ -555,7 +567,8 @@ mod tests {
555567 assert_eq ! ( config. network, expected. network) ;
556568 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
557569 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
558- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
570+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
571+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
559572 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
560573 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
561574 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -582,7 +595,8 @@ mod tests {
582595 // The order here is important: it is the reverse of the validation order in `load_config`
583596 validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
584597 validate_missing ! ( bitcoind_rpc_user, missing_field_msg( "bitcoind_rpc_user" ) ) ;
585- validate_missing ! ( bitcoind_rpc_address, missing_field_msg( "bitcoind_rpc_address" ) ) ;
598+ validate_missing ! ( bitcoind_rpc_port, missing_field_msg( "bitcoind_rpc_port" ) ) ;
599+ validate_missing ! ( bitcoind_rpc_host, missing_field_msg( "bitcoind_rpc_host" ) ) ;
586600 validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
587601 validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
588602 validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -612,10 +626,8 @@ mod tests {
612626 . unwrap ( ) ,
613627 alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
614628 storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
615- bitcoind_rpc_addr : SocketAddr :: from_str (
616- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
617- )
618- . unwrap ( ) ,
629+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
630+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
619631 bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
620632 bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
621633 rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -637,7 +649,8 @@ mod tests {
637649 assert_eq ! ( config. network, expected. network) ;
638650 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
639651 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
640- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
652+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
653+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
641654 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
642655 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
643656 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments