@@ -6,7 +6,7 @@ use std::net::{IpAddr, SocketAddr};
6
6
use nym_http_api_client:: HickoryDnsResolver ;
7
7
use tracing:: debug;
8
8
9
- use crate :: { error:: Result , Config , Error } ;
9
+ use crate :: { error:: Result , gateway_client :: ResolvedConfig , Config , Error } ;
10
10
11
11
async fn try_resolve_hostname ( hostname : & str ) -> Result < Vec < IpAddr > > {
12
12
debug ! ( "Trying to resolve hostname: {hostname}" ) ;
@@ -28,34 +28,37 @@ async fn try_resolve_hostname(hostname: &str) -> Result<Vec<IpAddr>> {
28
28
Ok ( ips)
29
29
}
30
30
31
- pub async fn allowed_ips ( config : & Config ) -> Result < Vec < SocketAddr > > {
32
- let mut socket_addrs = vec ! [ ] ;
33
- let mut urls = vec ! [ ] ;
34
-
35
- urls. push ( config. nyxd_url ( ) ) ;
36
- urls. push ( config. api_url ( ) ) ;
37
- if let Some ( vpn_api_url) = config. nym_vpn_api_url ( ) {
38
- urls. push ( vpn_api_url) ;
39
- }
40
-
41
- for unresolved_url in urls {
42
- let port = unresolved_url
43
- . port_or_known_default ( )
44
- . ok_or ( Error :: UrlError {
45
- url : unresolved_url. clone ( ) ,
46
- reason : "missing port" . to_string ( ) ,
47
- } ) ?;
48
- let hostname = unresolved_url. host_str ( ) . ok_or ( Error :: UrlError {
31
+ async fn url_to_socket_addr ( unresolved_url : & url:: Url ) -> Result < Vec < SocketAddr > > {
32
+ let port = unresolved_url
33
+ . port_or_known_default ( )
34
+ . ok_or ( Error :: UrlError {
49
35
url : unresolved_url. clone ( ) ,
50
- reason : "missing hostname " . to_string ( ) ,
36
+ reason : "missing port " . to_string ( ) ,
51
37
} ) ?;
52
- socket_addrs. extend (
53
- try_resolve_hostname ( hostname)
54
- . await ?
55
- . into_iter ( )
56
- . map ( |ip| SocketAddr :: new ( ip, port) ) ,
57
- ) ;
58
- }
38
+ let hostname = unresolved_url. host_str ( ) . ok_or ( Error :: UrlError {
39
+ url : unresolved_url. clone ( ) ,
40
+ reason : "missing hostname" . to_string ( ) ,
41
+ } ) ?;
42
+
43
+ Ok ( try_resolve_hostname ( hostname)
44
+ . await ?
45
+ . into_iter ( )
46
+ . map ( |ip| SocketAddr :: new ( ip, port) )
47
+ . collect ( ) )
48
+ }
49
+
50
+ pub async fn resolve_config ( config : & Config ) -> Result < ResolvedConfig > {
51
+ let nyxd_socket_addrs = url_to_socket_addr ( config. nyxd_url ( ) ) . await ?;
52
+ let api_socket_addrs = url_to_socket_addr ( config. api_url ( ) ) . await ?;
53
+ let nym_vpn_api_socket_addres = if let Some ( vpn_api_url) = config. nym_vpn_api_url ( ) {
54
+ Some ( url_to_socket_addr ( vpn_api_url) . await ?)
55
+ } else {
56
+ None
57
+ } ;
59
58
60
- Ok ( socket_addrs)
59
+ Ok ( ResolvedConfig {
60
+ nyxd_socket_addrs,
61
+ api_socket_addrs,
62
+ nym_vpn_api_socket_addres,
63
+ } )
61
64
}
0 commit comments