@@ -24,6 +24,7 @@ use parking_lot::RwLock;
24
24
use reqwest:: { header:: HeaderMap , redirect:: Policy , Client } ;
25
25
use serde:: { Deserialize , Serialize } ;
26
26
use tokio:: net:: TcpListener ;
27
+ use tower:: ServiceBuilder ;
27
28
use tower_http:: services:: ServeDir ;
28
29
use tracing_subscriber:: { layer:: SubscriberExt , util:: SubscriberInitExt } ;
29
30
@@ -75,21 +76,25 @@ async fn main() {
75
76
. precompressed_zstd ( )
76
77
. fallback ( handle_404. with_state ( state. clone ( ) ) ) ;
77
78
let app = Router :: new ( )
78
- . route ( "/" , get ( root) )
79
- . route_with_tsr ( "/api/" , get ( api_info) )
80
- . route_with_tsr ( "/ping/:edition/:hostname" , get ( ping_page) )
81
79
. route ( "/ping/redirect" , get ( ping_redirect) )
82
- . route ( "/internal/ping-frame/:edition/:hostname" , get ( ping_frame) )
83
- . route ( "/internal/ping-markup/:edition/:hostname" , get ( ping_markup) )
84
80
. route ( "/api/:address" , get ( handle_java_ping) )
85
81
. route ( "/api/java/:address" , get ( handle_java_ping) )
86
82
. route ( "/api/bedrock/:address" , get ( handle_bedrock_ping) )
87
83
. route ( "/api/java/" , get ( no_address) )
88
84
. route ( "/api/bedrock/" , get ( no_address) )
89
85
. route ( "/api/services" , get ( services:: handle_mcstatus) )
90
- . layer ( axum:: middleware:: from_fn ( noindex_cache) )
86
+ . layer ( axum:: middleware:: from_fn ( noindex) )
87
+ . route ( "/" , get ( root) )
88
+ . route_with_tsr ( "/api/" , get ( api_info) )
89
+ . route_with_tsr ( "/ping/:edition/:hostname" , get ( ping_page) )
90
+ . route ( "/internal/ping-frame/:edition/:hostname" , get ( ping_frame) )
91
+ . route ( "/internal/ping-markup/:edition/:hostname" , get ( ping_markup) )
91
92
. fallback_service ( serve_dir)
92
- . layer ( axum:: middleware:: from_fn ( csp) )
93
+ . layer (
94
+ ServiceBuilder :: new ( )
95
+ . layer ( axum:: middleware:: from_fn ( csp) )
96
+ . layer ( axum:: middleware:: from_fn ( cache) ) ,
97
+ )
93
98
. with_state ( state) ;
94
99
let socket_address = SocketAddr :: from ( ( [ 0 , 0 , 0 , 0 ] , port) ) ;
95
100
let tcp = TcpListener :: bind ( socket_address) . await . unwrap ( ) ;
@@ -120,12 +125,10 @@ static CSP_VALUE: HeaderValue = HeaderValue::from_static(
120
125
base-uri 'none';",
121
126
) ;
122
127
123
- async fn noindex_cache ( req : Request , next : Next ) -> Response {
128
+ async fn noindex ( req : Request , next : Next ) -> Response {
124
129
let mut resp = next. run ( req) . await ;
125
130
resp. headers_mut ( )
126
131
. insert ( ROBOTS_NAME . clone ( ) , ROBOTS_VALUE . clone ( ) ) ;
127
- resp. headers_mut ( )
128
- . insert ( CACHE_CONTROL , CACHE_CONTROL_AGE . clone ( ) ) ;
129
132
resp
130
133
}
131
134
@@ -136,6 +139,13 @@ async fn csp(req: Request, next: Next) -> Response {
136
139
resp
137
140
}
138
141
142
+ async fn cache ( req : Request , next : Next ) -> Response {
143
+ let mut resp = next. run ( req) . await ;
144
+ resp. headers_mut ( )
145
+ . insert ( CACHE_CONTROL , CACHE_CONTROL_AGE . clone ( ) ) ;
146
+ resp
147
+ }
148
+
139
149
#[ derive( Template ) ]
140
150
#[ template( path = "index.html" ) ]
141
151
pub struct RootTemplate {
0 commit comments