@@ -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 > ,
@@ -244,17 +249,19 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
244
249
245
250
// Bitcoind
246
251
let bitcoind = toml_config. as_ref ( ) . and_then ( |t| t. bitcoind . as_ref ( ) ) ;
247
- let bitcoind_rpc_addr_str = match args_config
248
- . bitcoind_rpc_address
252
+ let bitcoind_rpc_host = match args_config
253
+ . bitcoind_rpc_host
249
254
. as_deref ( )
250
- . or ( bitcoind. and_then ( |b| b. rpc_address . as_deref ( ) ) )
255
+ . or ( bitcoind. and_then ( |b| b. rpc_host . as_deref ( ) ) )
251
256
{
252
- Some ( addr ) => addr ,
253
- None => return Err ( missing_field_err ( "bitcoind_rpc_address " ) ) ,
257
+ Some ( host ) => host . to_string ( ) ,
258
+ None => return Err ( missing_field_err ( "bitcoind_rpc_host " ) ) ,
254
259
} ;
255
- let bitcoind_rpc_addr = SocketAddr :: from_str ( bitcoind_rpc_addr_str) . map_err ( |e| {
256
- io:: Error :: new ( io:: ErrorKind :: InvalidInput , format ! ( "Invalid bitcoind_rpc_address: {}" , e) )
257
- } ) ?;
260
+ let bitcoind_rpc_port =
261
+ match args_config. bitcoind_rpc_port . or ( bitcoind. and_then ( |b| b. rpc_port ) ) {
262
+ Some ( port) => port,
263
+ None => return Err ( missing_field_err ( "bitcoind_rpc_port" ) ) ,
264
+ } ;
258
265
let bitcoind_rpc_user = match args_config
259
266
. bitcoind_rpc_user
260
267
. as_deref ( )
@@ -287,7 +294,8 @@ pub fn load_config(args_config: &ArgsConfig) -> io::Result<Config> {
287
294
network,
288
295
rest_service_addr,
289
296
storage_dir_path,
290
- bitcoind_rpc_addr,
297
+ bitcoind_rpc_host,
298
+ bitcoind_rpc_port,
291
299
bitcoind_rpc_user,
292
300
bitcoind_rpc_password,
293
301
rabbitmq_connection_string,
@@ -346,7 +354,8 @@ mod tests {
346
354
dir_path = "/tmp"
347
355
348
356
[bitcoind]
349
- rpc_address = "127.0.0.1:8332"
357
+ rpc_host = "127.0.0.1"
358
+ rpc_port = 8332
350
359
rpc_user = "bitcoind-testuser"
351
360
rpc_password = "bitcoind-testpassword"
352
361
@@ -371,7 +380,8 @@ mod tests {
371
380
node_network : Some ( Network :: Regtest ) ,
372
381
node_listening_address : Some ( String :: from ( "localhost:3008" ) ) ,
373
382
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 ) ,
375
385
bitcoind_rpc_user : Some ( String :: from ( "bitcoind-testuser_cli" ) ) ,
376
386
bitcoind_rpc_password : Some ( String :: from ( "bitcoind-testpassword_cli" ) ) ,
377
387
storage_dir_path : Some ( String :: from ( "/tmp_cli" ) ) ,
@@ -404,7 +414,8 @@ mod tests {
404
414
node_network : None ,
405
415
node_listening_address : None ,
406
416
node_rest_service_address : None ,
407
- bitcoind_rpc_address : None ,
417
+ bitcoind_rpc_host : None ,
418
+ bitcoind_rpc_port : None ,
408
419
bitcoind_rpc_user : None ,
409
420
bitcoind_rpc_password : None ,
410
421
storage_dir_path : None ,
@@ -420,7 +431,8 @@ mod tests {
420
431
network : Network :: Regtest ,
421
432
rest_service_addr : SocketAddr :: from_str ( "127.0.0.1:3002" ) . unwrap ( ) ,
422
433
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 ,
424
436
bitcoind_rpc_user : "bitcoind-testuser" . to_string ( ) ,
425
437
bitcoind_rpc_password : "bitcoind-testpassword" . to_string ( ) ,
426
438
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -442,7 +454,8 @@ mod tests {
442
454
assert_eq ! ( config. network, expected. network) ;
443
455
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
444
456
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) ;
446
459
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
447
460
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
448
461
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -461,7 +474,8 @@ mod tests {
461
474
node_network : None ,
462
475
node_listening_address : None ,
463
476
node_rest_service_address : None ,
464
- bitcoind_rpc_address : None ,
477
+ bitcoind_rpc_host : None ,
478
+ bitcoind_rpc_port : None ,
465
479
bitcoind_rpc_user : None ,
466
480
bitcoind_rpc_password : None ,
467
481
storage_dir_path : None ,
@@ -503,7 +517,8 @@ mod tests {
503
517
// The order here is important: it is the reverse of the validation order in `load_config`
504
518
validate_missing ! ( "rpc_password" , missing_field_msg( "bitcoind_rpc_password" ) ) ;
505
519
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" ) ) ;
507
522
validate_missing ! ( "dir_path" , missing_field_msg( "storage_dir_path" ) ) ;
508
523
validate_missing ! ( "rest_service_address" , missing_field_msg( "rest_service_address" ) ) ;
509
524
validate_missing ! ( "listening_address" , missing_field_msg( "node_listening_address" ) ) ;
@@ -536,10 +551,8 @@ mod tests {
536
551
. unwrap ( ) ,
537
552
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
538
553
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 ( ) ,
543
556
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
544
557
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
545
558
rabbitmq_connection_string : String :: new ( ) ,
@@ -551,7 +564,8 @@ mod tests {
551
564
assert_eq ! ( config. network, expected. network) ;
552
565
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
553
566
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) ;
555
569
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
556
570
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
557
571
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
@@ -578,7 +592,8 @@ mod tests {
578
592
// The order here is important: it is the reverse of the validation order in `load_config`
579
593
validate_missing ! ( bitcoind_rpc_password, missing_field_msg( "bitcoind_rpc_password" ) ) ;
580
594
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" ) ) ;
582
597
validate_missing ! ( storage_dir_path, missing_field_msg( "storage_dir_path" ) ) ;
583
598
validate_missing ! ( node_rest_service_address, missing_field_msg( "rest_service_address" ) ) ;
584
599
validate_missing ! ( node_listening_address, missing_field_msg( "node_listening_address" ) ) ;
@@ -608,10 +623,8 @@ mod tests {
608
623
. unwrap ( ) ,
609
624
alias : Some ( parse_alias ( args_config. node_alias . as_deref ( ) . unwrap ( ) ) ) ,
610
625
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 ( ) ,
615
628
bitcoind_rpc_user : args_config. bitcoind_rpc_user . unwrap ( ) ,
616
629
bitcoind_rpc_password : args_config. bitcoind_rpc_password . unwrap ( ) ,
617
630
rabbitmq_connection_string : "rabbitmq_connection_string" . to_string ( ) ,
@@ -633,7 +646,8 @@ mod tests {
633
646
assert_eq ! ( config. network, expected. network) ;
634
647
assert_eq ! ( config. rest_service_addr, expected. rest_service_addr) ;
635
648
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) ;
637
651
assert_eq ! ( config. bitcoind_rpc_user, expected. bitcoind_rpc_user) ;
638
652
assert_eq ! ( config. bitcoind_rpc_password, expected. bitcoind_rpc_password) ;
639
653
assert_eq ! ( config. rabbitmq_connection_string, expected. rabbitmq_connection_string) ;
0 commit comments