@@ -20,7 +20,7 @@ use tracing::instrument;
20
20
21
21
use super :: make_rust_tls;
22
22
use crate :: core:: statistics:: event:: sender:: Sender ;
23
- use crate :: core:: { self , statistics} ;
23
+ use crate :: core:: { self , statistics, whitelist } ;
24
24
use crate :: servers:: http:: server:: { HttpServer , Launcher } ;
25
25
use crate :: servers:: http:: Version ;
26
26
use crate :: servers:: registar:: ServiceRegistrationForm ;
@@ -34,10 +34,11 @@ use crate::servers::registar::ServiceRegistrationForm;
34
34
///
35
35
/// It would panic if the `config::HttpTracker` struct would contain inappropriate values.
36
36
///
37
- #[ instrument( skip( config, tracker, stats_event_sender, form) ) ]
37
+ #[ instrument( skip( config, tracker, whitelist_authorization , stats_event_sender, form) ) ]
38
38
pub async fn start_job (
39
39
config : & HttpTracker ,
40
40
tracker : Arc < core:: Tracker > ,
41
+ whitelist_authorization : Arc < whitelist:: authorization:: Authorization > ,
41
42
stats_event_sender : Arc < Option < Box < dyn Sender > > > ,
42
43
form : ServiceRegistrationForm ,
43
44
version : Version ,
@@ -49,21 +50,32 @@ pub async fn start_job(
49
50
. map ( |tls| tls. expect ( "it should have a valid http tracker tls configuration" ) ) ;
50
51
51
52
match version {
52
- Version :: V1 => Some ( start_v1 ( socket, tls, tracker. clone ( ) , stats_event_sender. clone ( ) , form) . await ) ,
53
+ Version :: V1 => Some (
54
+ start_v1 (
55
+ socket,
56
+ tls,
57
+ tracker. clone ( ) ,
58
+ whitelist_authorization. clone ( ) ,
59
+ stats_event_sender. clone ( ) ,
60
+ form,
61
+ )
62
+ . await ,
63
+ ) ,
53
64
}
54
65
}
55
66
56
67
#[ allow( clippy:: async_yields_async) ]
57
- #[ instrument( skip( socket, tls, tracker, stats_event_sender, form) ) ]
68
+ #[ instrument( skip( socket, tls, tracker, whitelist_authorization , stats_event_sender, form) ) ]
58
69
async fn start_v1 (
59
70
socket : SocketAddr ,
60
71
tls : Option < RustlsConfig > ,
61
72
tracker : Arc < core:: Tracker > ,
73
+ whitelist_authorization : Arc < whitelist:: authorization:: Authorization > ,
62
74
stats_event_sender : Arc < Option < Box < dyn statistics:: event:: sender:: Sender > > > ,
63
75
form : ServiceRegistrationForm ,
64
76
) -> JoinHandle < ( ) > {
65
77
let server = HttpServer :: new ( Launcher :: new ( socket, tls) )
66
- . start ( tracker, stats_event_sender, form)
78
+ . start ( tracker, whitelist_authorization , stats_event_sender, form)
67
79
. await
68
80
. expect ( "it should be able to start to the http tracker" ) ;
69
81
@@ -88,7 +100,9 @@ mod tests {
88
100
89
101
use crate :: bootstrap:: app:: initialize_global_services;
90
102
use crate :: bootstrap:: jobs:: http_tracker:: start_job;
91
- use crate :: core:: services:: { initialize_database, initialize_tracker, initialize_whitelist, statistics} ;
103
+ use crate :: core:: services:: { initialize_database, initialize_tracker, statistics} ;
104
+ use crate :: core:: whitelist;
105
+ use crate :: core:: whitelist:: repository:: in_memory:: InMemoryWhitelist ;
92
106
use crate :: servers:: http:: Version ;
93
107
use crate :: servers:: registar:: Registar ;
94
108
@@ -104,13 +118,24 @@ mod tests {
104
118
initialize_global_services ( & cfg) ;
105
119
106
120
let database = initialize_database ( & cfg) ;
107
- let whitelist_manager = initialize_whitelist ( database. clone ( ) ) ;
108
- let tracker = Arc :: new ( initialize_tracker ( & cfg, & database, & whitelist_manager) ) ;
121
+ let in_memory_whitelist = Arc :: new ( InMemoryWhitelist :: default ( ) ) ;
122
+ let whitelist_authorization = Arc :: new ( whitelist:: authorization:: Authorization :: new (
123
+ & cfg. core ,
124
+ & in_memory_whitelist. clone ( ) ,
125
+ ) ) ;
126
+ let tracker = Arc :: new ( initialize_tracker ( & cfg, & database, & whitelist_authorization) ) ;
109
127
110
128
let version = Version :: V1 ;
111
129
112
- start_job ( config, tracker, stats_event_sender, Registar :: default ( ) . give_form ( ) , version)
113
- . await
114
- . expect ( "it should be able to join to the http tracker start-job" ) ;
130
+ start_job (
131
+ config,
132
+ tracker,
133
+ whitelist_authorization,
134
+ stats_event_sender,
135
+ Registar :: default ( ) . give_form ( ) ,
136
+ version,
137
+ )
138
+ . await
139
+ . expect ( "it should be able to join to the http tracker start-job" ) ;
115
140
}
116
141
}
0 commit comments