@@ -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 > ,
@@ -239,17 +244,19 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
239
244
240
245
// Bitcoind
241
246
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
244
249
. as_deref ( )
245
- . or ( bitcoind. and_then ( |b| b. rpc_address . as_deref ( ) ) )
250
+ . or ( bitcoind. and_then ( |b| b. rpc_host . as_deref ( ) ) )
246
251
{
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 " ) ) ,
249
254
} ;
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
+ } ;
253
260
let bitcoind_rpc_user = match args_config
254
261
. bitcoind_rpc_user
255
262
. as_deref ( )
@@ -282,7 +289,8 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
282
289
network,
283
290
rest_service_addr,
284
291
storage_dir_path,
285
- bitcoind_rpc_addr,
292
+ bitcoind_rpc_host,
293
+ bitcoind_rpc_port,
286
294
bitcoind_rpc_user,
287
295
bitcoind_rpc_password,
288
296
rabbitmq_connection_string,
@@ -351,7 +359,8 @@ mod tests {
351
359
dir_path = "/tmp"
352
360
353
361
[bitcoind]
354
- rpc_address = "127.0.0.1:8332"
362
+ rpc_host = "127.0.0.1"
363
+ rpc_port = 8332
355
364
rpc_user = "bitcoind-testuser"
356
365
rpc_password = "bitcoind-testpassword"
357
366
@@ -376,7 +385,8 @@ mod tests {
376
385
node_network : Some ( Network :: Regtest ) ,
377
386
node_listening_address : Some ( String :: from ( "localhost:3008" ) ) ,
378
387
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 ) ,
380
390
bitcoind_rpc_user : Some ( String :: from ( "bitcoind-testuser_cli" ) ) ,
381
391
bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
382
392
storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
@@ -409,7 +419,8 @@ mod tests {
409
419
node_network : None ,
410
420
node_listening_address : None ,
411
421
node_rest_service_address : None ,
412
- bitcoind_rpc_address : None ,
422
+ bitcoind_rpc_host : None ,
423
+ bitcoind_rpc_port : None ,
413
424
bitcoind_rpc_user : None ,
414
425
bitcoind_rpc_password : None ,
415
426
storage_dir_path : None ,
@@ -425,7 +436,8 @@ mod tests {
425
436
network : Network :: Regtest ,
426
437
rest_service_addr : SocketAddr :: from_str ( "127.0.0.1:3002" ) . unwrap ( ) ,
427
438
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 ,
429
441
bitcoind_rpc_user : "bitcoind-testuser" . to_string ( ) ,
430
442
bitcoind_rpc_password : "bitcoind-testpassword" . to_string ( ) ,
431
443
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -447,7 +459,8 @@ mod tests {
447
459
assert_eq ! ( config. network, expected. network) ;
448
460
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
449
461
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) ;
451
464
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
452
465
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
453
466
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -466,7 +479,8 @@ mod tests {
466
479
node_network : None ,
467
480
node_listening_address : None ,
468
481
node_rest_service_address : None ,
469
- bitcoind_rpc_address : None ,
482
+ bitcoind_rpc_host : None ,
483
+ bitcoind_rpc_port : None ,
470
484
bitcoind_rpc_user : None ,
471
485
bitcoind_rpc_password : None ,
472
486
storage_dir_path : None ,
@@ -508,7 +522,8 @@ mod tests {
508
522
// The order here is important: it is the reverse of the validation order in `load_config`
509
523
validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
510
524
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" ) ) ;
512
527
validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
513
528
validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
514
529
validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -541,10 +556,8 @@ mod tests {
541
556
. unwrap ( ) ,
542
557
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
543
558
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 ( ) ,
548
561
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
549
562
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
550
563
rabbitmq_connection_string : String :: new ( ) ,
@@ -556,7 +569,8 @@ mod tests {
556
569
assert_eq ! ( config. network, expected. network) ;
557
570
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
558
571
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) ;
560
574
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
561
575
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
562
576
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -583,7 +597,8 @@ mod tests {
583
597
// The order here is important: it is the reverse of the validation order in `load_config`
584
598
validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
585
599
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" ) ) ;
587
602
validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
588
603
validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
589
604
validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -613,10 +628,8 @@ mod tests {
613
628
. unwrap ( ) ,
614
629
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
615
630
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 ( ) ,
620
633
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
621
634
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
622
635
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -638,7 +651,8 @@ mod tests {
638
651
assert_eq ! ( config. network, expected. network) ;
639
652
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
640
653
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) ;
642
656
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
643
657
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
644
658
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments