@@ -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 ,
@@ -505,7 +518,8 @@ mod tests {
505
518
// The order here is important: it is the reverse of the validation order in `load_config`
506
519
validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
507
520
validate_missing ! ( "rpc_user" , missing_field_msg( "bitcoind_rpc_user" ) ) ;
508
- validate_missing ! ( "rpc_address" , missing_field_msg( "bitcoind_rpc_address" ) ) ;
521
+ validate_missing ! ( "rpc_port" , missing_field_msg( "bitcoind_rpc_port" ) ) ;
522
+ validate_missing ! ( "rpc_host" , missing_field_msg( "bitcoind_rpc_host" ) ) ;
509
523
validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
510
524
validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
511
525
validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -538,10 +552,8 @@ mod tests {
538
552
. unwrap ( ) ,
539
553
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
540
554
storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
541
- bitcoind_rpc_addr : SocketAddr :: from_str (
542
- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
543
- )
544
- . unwrap ( ) ,
555
+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
556
+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
545
557
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
546
558
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
547
559
rabbitmq_connection_string : String :: new ( ) ,
@@ -553,7 +565,8 @@ mod tests {
553
565
assert_eq ! ( config. network, expected. network) ;
554
566
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
555
567
assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
556
- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
568
+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
569
+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
557
570
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
558
571
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
559
572
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -580,7 +593,8 @@ mod tests {
580
593
// The order here is important: it is the reverse of the validation order in `load_config`
581
594
validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
582
595
validate_missing ! ( bitcoind_rpc_user, missing_field_msg( "bitcoind_rpc_user" ) ) ;
583
- validate_missing ! ( bitcoind_rpc_address, missing_field_msg( "bitcoind_rpc_address" ) ) ;
596
+ validate_missing ! ( bitcoind_rpc_port, missing_field_msg( "bitcoind_rpc_port" ) ) ;
597
+ validate_missing ! ( bitcoind_rpc_host, missing_field_msg( "bitcoind_rpc_host" ) ) ;
584
598
validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
585
599
validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
586
600
validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -610,10 +624,8 @@ mod tests {
610
624
. unwrap ( ) ,
611
625
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
612
626
storage_dir_path : args_config. storage_dir_path . unwrap ( ) ,
613
- bitcoind_rpc_addr : SocketAddr :: from_str (
614
- args_config. bitcoind_rpc_address . as_deref ( ) . unwrap ( ) ,
615
- )
616
- . unwrap ( ) ,
627
+ bitcoind_rpc_host : args_config. bitcoind_rpc_host . unwrap ( ) ,
628
+ bitcoind_rpc_port : args_config. bitcoind_rpc_port . unwrap ( ) ,
617
629
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
618
630
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
619
631
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -635,7 +647,8 @@ mod tests {
635
647
assert_eq ! ( config. network, expected. network) ;
636
648
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
637
649
assert_eq ! ( config. storage_dir_path, expected. storage_dir_path) ;
638
- assert_eq ! ( config. bitcoind_rpc_addr, expected. bitcoind_rpc_addr) ;
650
+ assert_eq ! ( config. bitcoind_rpc_host, expected. bitcoind_rpc_host) ;
651
+ assert_eq ! ( config. bitcoind_rpc_port, expected. bitcoind_rpc_port) ;
639
652
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
640
653
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
641
654
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments