@@ -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 > ,
@@ -234,17 +239,19 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
234239
235240 // Bitcoind
236241 let bitcoind = toml_config. as_ref ( ) . and_then ( |t| t. bitcoind . as_ref ( ) ) ;
237- let bitcoind_rpc_addr_str = match args_config
238- . bitcoind_rpc_address
242+ let bitcoind_rpc_host = match args_config
243+ . bitcoind_rpc_host
239244 . as_deref ( )
240- . or ( bitcoind. and_then ( |b| b. rpc_address . as_deref ( ) ) )
245+ . or ( bitcoind. and_then ( |b| b. rpc_host . as_deref ( ) ) )
241246 {
242- Some ( addr ) => addr ,
243- None => return Err ( missing_field_err ( "bitcoind_rpc_address " ) ) ,
247+ Some ( host ) => host . to_string ( ) ,
248+ None => return Err ( missing_field_err ( "bitcoind_rpc_host " ) ) ,
244249 } ;
245- let bitcoind_rpc_addr = SocketAddr :: from_str ( bitcoind_rpc_addr_str) . map_err ( |e| {
246- io:: Error :: new ( io:: ErrorKind :: InvalidInput , format ! ( "Invalid bitcoind_rpc_address: {}" , e) )
247- } ) ?;
250+ let bitcoind_rpc_port =
251+ match args_config. bitcoind_rpc_port . or ( bitcoind. and_then ( |b| b. rpc_port ) ) {
252+ Some ( port) => port,
253+ None => return Err ( missing_field_err ( "bitcoind_rpc_port" ) ) ,
254+ } ;
248255 let bitcoind_rpc_user = match args_config
249256 . bitcoind_rpc_user
250257 . as_deref ( )
@@ -277,7 +284,8 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
277284 network,
278285 rest_service_addr,
279286 storage_dir_path,
280- bitcoind_rpc_addr,
287+ bitcoind_rpc_host,
288+ bitcoind_rpc_port,
281289 bitcoind_rpc_user,
282290 bitcoind_rpc_password,
283291 rabbitmq_connection_string,
@@ -346,7 +354,8 @@ mod tests {
346354 dir_path = "/tmp"
347355
348356 [bitcoind]
349- rpc_address = "127.0.0.1:8332"
357+ rpc_host = "127.0.0.1"
358+ rpc_port = 8332
350359 rpc_user = "bitcoind-testuser"
351360 rpc_password = "bitcoind-testpassword"
352361
@@ -371,7 +380,8 @@ mod tests {
371380 node_network : Some ( Network :: Regtest ) ,
372381 node_listening_address : Some ( String :: from ( "localhost:3008" ) ) ,
373382 node_rest_service_address : Some ( String :: from ( "127.0.0.1:3009" ) ) ,
374- bitcoind_rpc_address : Some ( String :: from ( "127.0.1.9:18443" ) ) ,
383+ bitcoind_rpc_host : Some ( String :: from ( "127.0.1.9" ) ) ,
384+ bitcoind_rpc_port : Some ( 18443 ) ,
375385 bitcoind_rpc_user : Some ( String :: from ( "bitcoind-testuser_cli" ) ) ,
376386 bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
377387 storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
@@ -404,7 +414,8 @@ mod tests {
404414 node_network : None ,
405415 node_listening_address : None ,
406416 node_rest_service_address : None ,
407- bitcoind_rpc_address : None ,
417+ bitcoind_rpc_host : None ,
418+ bitcoind_rpc_port : None ,
408419 bitcoind_rpc_user : None ,
409420 bitcoind_rpc_password : None ,
410421 storage_dir_path : None ,
@@ -420,7 +431,8 @@ mod tests {
420431 network : Network :: Regtest ,
421432 rest_service_addr : SocketAddr :: from_str ( "127.0.0.1:3002" ) . unwrap ( ) ,
422433 storage_dir_path : "/tmp" . to_string ( ) ,
423- bitcoind_rpc_addr : SocketAddr :: from_str ( "127.0.0.1:8332" ) . unwrap ( ) ,
434+ bitcoind_rpc_host : "127.0.0.1" . to_string ( ) ,
435+ bitcoind_rpc_port : 8332 ,
424436 bitcoind_rpc_user : "bitcoind-testuser" . to_string ( ) ,
425437 bitcoind_rpc_password : "bitcoind-testpassword" . to_string ( ) ,
426438 rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -442,7 +454,8 @@ mod tests {
442454 assert_eq ! ( config. network, expected. network) ;
443455 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
444456 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
445- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
457+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
458+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
446459 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
447460 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
448461 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -461,7 +474,8 @@ mod tests {
461474 node_network : None ,
462475 node_listening_address : None ,
463476 node_rest_service_address : None ,
464- bitcoind_rpc_address : None ,
477+ bitcoind_rpc_host : None ,
478+ bitcoind_rpc_port : None ,
465479 bitcoind_rpc_user : None ,
466480 bitcoind_rpc_password : None ,
467481 storage_dir_path : None ,
@@ -503,7 +517,8 @@ mod tests {
503517 // The order here is important: it is the reverse of the validation order in `load_config`
504518 validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
505519 validate_missing ! ( "rpc_user" , missing_field_msg( "bitcoind_rpc_user" ) ) ;
506- validate_missing ! ( "rpc_address" , missing_field_msg( "bitcoind_rpc_address" ) ) ;
520+ validate_missing ! ( "rpc_port" , missing_field_msg( "bitcoind_rpc_port" ) ) ;
521+ validate_missing ! ( "rpc_host" , missing_field_msg( "bitcoind_rpc_host" ) ) ;
507522 validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
508523 validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
509524 validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -536,10 +551,8 @@ mod tests {
536551 . unwrap ( ) ,
537552 alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
538553 storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
539- bitcoind_rpc_addr : SocketAddr :: from_str (
540- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
541- )
542- . unwrap ( ) ,
554+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
555+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
543556 bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
544557 bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
545558 rabbitmq_connection_string : String :: new ( ) ,
@@ -551,7 +564,8 @@ mod tests {
551564 assert_eq ! ( config. network, expected. network) ;
552565 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
553566 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
554- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
567+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
568+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
555569 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
556570 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
557571 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -578,7 +592,8 @@ mod tests {
578592 // The order here is important: it is the reverse of the validation order in `load_config`
579593 validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
580594 validate_missing ! ( bitcoind_rpc_user, missing_field_msg( "bitcoind_rpc_user" ) ) ;
581- validate_missing ! ( bitcoind_rpc_address, missing_field_msg( "bitcoind_rpc_address" ) ) ;
595+ validate_missing ! ( bitcoind_rpc_port, missing_field_msg( "bitcoind_rpc_port" ) ) ;
596+ validate_missing ! ( bitcoind_rpc_host, missing_field_msg( "bitcoind_rpc_host" ) ) ;
582597 validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
583598 validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
584599 validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -608,10 +623,8 @@ mod tests {
608623 . unwrap ( ) ,
609624 alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
610625 storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
611- bitcoind_rpc_addr : SocketAddr :: from_str (
612- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
613- )
614- . unwrap ( ) ,
626+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
627+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
615628 bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
616629 bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
617630 rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -633,7 +646,8 @@ mod tests {
633646 assert_eq ! ( config. network, expected. network) ;
634647 assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
635648 assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
636- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
649+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
650+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
637651 assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
638652 assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
639653 assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments