✨ Add headers in reserve proxy
This commit is contained in:
		@@ -63,10 +63,28 @@ pub async fn repond_websocket(req: Builder, ws: WebSocket) -> Response {
 | 
			
		||||
pub async fn respond_hypertext(
 | 
			
		||||
    uri: String,
 | 
			
		||||
    ori: &Uri,
 | 
			
		||||
    req: &Request,
 | 
			
		||||
    method: Method,
 | 
			
		||||
    body: Body,
 | 
			
		||||
    headers: &HeaderMap,
 | 
			
		||||
) -> Result<Response, Error> {
 | 
			
		||||
    let ip = req.remote_addr().to_string();
 | 
			
		||||
    let proto = req.uri().scheme_str().unwrap();
 | 
			
		||||
    let host = req.uri().host().unwrap();
 | 
			
		||||
 | 
			
		||||
    let mut headers = headers.clone();
 | 
			
		||||
    headers.insert("Server", "RoadSign".parse().unwrap());
 | 
			
		||||
    headers.insert("X-Forward-For", ip.parse().unwrap());
 | 
			
		||||
    headers.insert("X-Forwarded-Proto", proto.parse().unwrap());
 | 
			
		||||
    headers.insert("X-Forwarded-Host", host.parse().unwrap());
 | 
			
		||||
    headers.insert("X-Real-IP", ip.parse().unwrap());
 | 
			
		||||
    headers.insert(
 | 
			
		||||
        "Forwarded",
 | 
			
		||||
        format!("by={};for={};host={};proto={}", ip, ip, host, proto)
 | 
			
		||||
            .parse()
 | 
			
		||||
            .unwrap(),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    let res = CLIENT
 | 
			
		||||
        .request(method, uri + ori.path() + ori.query().unwrap_or(""))
 | 
			
		||||
        .headers(headers.clone())
 | 
			
		||||
@@ -81,6 +99,8 @@ pub async fn respond_hypertext(
 | 
			
		||||
            result.headers().iter().for_each(|(key, val)| {
 | 
			
		||||
                res.headers_mut().insert(key, val.to_owned());
 | 
			
		||||
            });
 | 
			
		||||
            res.headers_mut()
 | 
			
		||||
                .insert("Server", "RoadSign".parse().unwrap());
 | 
			
		||||
            res.set_status(result.status());
 | 
			
		||||
            res.set_version(result.version());
 | 
			
		||||
            res.set_body(result.bytes().await.unwrap());
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ pub async fn handle(
 | 
			
		||||
                    ));
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                responder::respond_hypertext(uri, ori, method, body, headers).await
 | 
			
		||||
                responder::respond_hypertext(uri, ori, req, method, body, headers).await
 | 
			
		||||
            }
 | 
			
		||||
            DestinationType::StaticFiles => {
 | 
			
		||||
                let Ok(cfg) = end.get_static_config() else {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user