@@ -16,7 +16,8 @@ pub struct Config {
16
16
pub network : Network ,
17
17
pub rest_service_addr : SocketAddr ,
18
18
pub storage_dir_path : String ,
19
- pub bitcoind_rpc_addr : SocketAddr ,
19
+ pub bitcoind_rpc_host : String ,
20
+ pub bitcoind_rpc_port : u16 ,
20
21
pub bitcoind_rpc_user : String ,
21
22
pub bitcoind_rpc_password : String ,
22
23
pub rabbitmq_connection_string : String ,
@@ -54,7 +55,8 @@ struct DiskConfig {
54
55
55
56
#[ derive( Deserialize , Serialize ) ]
56
57
struct BitcoindConfig {
57
- rpc_address : Option < String > ,
58
+ rpc_host : Option < String > ,
59
+ rpc_port : Option < u16 > ,
58
60
rpc_user : Option < String > ,
59
61
rpc_password : Option < String > ,
60
62
}
@@ -129,8 +131,11 @@ pub struct ArgsConfig {
129
131
#[ arg( long, env = "LDK_SERVER_NODE_ALIAS" ) ]
130
132
node_alias : Option < String > ,
131
133
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 > ,
134
139
135
140
#[ arg( long, env = "LDK_SERVER_BITCOIND_RPC_USER" ) ]
136
141
bitcoind_rpc_user : Option < String > ,
@@ -241,17 +246,18 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
241
246
242
247
// Bitcoind
243
248
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
246
251
. 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
+
255
261
let bitcoind_rpc_user = args_config
256
262
. bitcoind_rpc_user
257
263
. as_deref ( )
@@ -281,7 +287,8 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
281
287
network,
282
288
rest_service_addr,
283
289
storage_dir_path,
284
- bitcoind_rpc_addr,
290
+ bitcoind_rpc_host,
291
+ bitcoind_rpc_port,
285
292
bitcoind_rpc_user,
286
293
bitcoind_rpc_password,
287
294
rabbitmq_connection_string,
@@ -350,7 +357,8 @@ mod tests {
350
357
dir_path = "/tmp"
351
358
352
359
[bitcoind]
353
- rpc_address = "127.0.0.1:8332"
360
+ rpc_host = "127.0.0.1"
361
+ rpc_port = 8332
354
362
rpc_user = "bitcoind-testuser"
355
363
rpc_password = "bitcoind-testpassword"
356
364
@@ -375,7 +383,8 @@ mod tests {
375
383
node_network : Some ( Network :: Regtest ) ,
376
384
node_listening_address : Some ( String :: from ( "localhost:3008" ) ) ,
377
385
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 ) ,
379
388
bitcoind_rpc_user : Some ( String :: from ( "bitcoind-testuser_cli" ) ) ,
380
389
bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
381
390
storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
@@ -408,7 +417,8 @@ mod tests {
408
417
node_network : None ,
409
418
node_listening_address : None ,
410
419
node_rest_service_address : None ,
411
- bitcoind_rpc_address : None ,
420
+ bitcoind_rpc_host : None ,
421
+ bitcoind_rpc_port : None ,
412
422
bitcoind_rpc_user : None ,
413
423
bitcoind_rpc_password : None ,
414
424
storage_dir_path : None ,
@@ -424,7 +434,8 @@ mod tests {
424
434
network : Network :: Regtest ,
425
435
rest_service_addr : SocketAddr :: from_str ( "127.0.0.1:3002" ) . unwrap ( ) ,
426
436
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 ,
428
439
bitcoind_rpc_user : "bitcoind-testuser" . to_string ( ) ,
429
440
bitcoind_rpc_password : "bitcoind-testpassword" . to_string ( ) ,
430
441
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -446,7 +457,8 @@ mod tests {
446
457
assert_eq ! ( config. network, expected. network) ;
447
458
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
448
459
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) ;
450
462
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
451
463
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
452
464
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -465,7 +477,8 @@ mod tests {
465
477
node_network : None ,
466
478
node_listening_address : None ,
467
479
node_rest_service_address : None ,
468
- bitcoind_rpc_address : None ,
480
+ bitcoind_rpc_host : None ,
481
+ bitcoind_rpc_port : None ,
469
482
bitcoind_rpc_user : None ,
470
483
bitcoind_rpc_password : None ,
471
484
storage_dir_path : None ,
@@ -507,7 +520,8 @@ mod tests {
507
520
// The order here is important: it is the reverse of the validation order in `load_config`
508
521
validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
509
522
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" ) ) ;
511
525
validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
512
526
validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
513
527
validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -540,10 +554,8 @@ mod tests {
540
554
. unwrap ( ) ,
541
555
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
542
556
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 ( ) ,
547
559
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
548
560
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
549
561
rabbitmq_connection_string : String :: new ( ) ,
@@ -555,7 +567,8 @@ mod tests {
555
567
assert_eq ! ( config. network, expected. network) ;
556
568
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
557
569
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) ;
559
572
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
560
573
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
561
574
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -582,7 +595,8 @@ mod tests {
582
595
// The order here is important: it is the reverse of the validation order in `load_config`
583
596
validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
584
597
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" ) ) ;
586
600
validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
587
601
validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
588
602
validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -612,10 +626,8 @@ mod tests {
612
626
. unwrap ( ) ,
613
627
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
614
628
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 ( ) ,
619
631
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
620
632
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
621
633
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -637,7 +649,8 @@ mod tests {
637
649
assert_eq ! ( config. network, expected. network) ;
638
650
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
639
651
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) ;
641
654
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
642
655
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
643
656
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments