fix CGI support
This commit is contained in:
parent
1da65dcfeb
commit
a533ebbeaf
|
@ -42,11 +42,18 @@ impl Handler {
|
|||
}
|
||||
};
|
||||
|
||||
if let Err(why) = std::fs::metadata(&path) {
|
||||
log::error!("can't find {:?}: {}", path, why);
|
||||
return Ok(Response::not_found());
|
||||
}
|
||||
|
||||
let filtered_env: HashMap<String, String> = std::env::vars()
|
||||
.filter(|&(ref k, _)| k == "TERM" || k == "TZ" || k == "LANG" || k == "PATH")
|
||||
.collect();
|
||||
|
||||
let output = Command::new(path.clone())
|
||||
let remote_host = format!("{}", r.addr);
|
||||
|
||||
let output = Command::new(&path)
|
||||
.env_clear()
|
||||
.envs(filtered_env)
|
||||
.env("GATEWAY_INTERFACE", "CGI/1.1")
|
||||
|
@ -59,8 +66,8 @@ impl Handler {
|
|||
.env("SERVER_NAME", r.url.host_str().unwrap())
|
||||
.env("SERVER_HOSTNAME", r.url.host_str().unwrap())
|
||||
.env("SERVER_PORT", format!("{}", r.url.port().unwrap_or(1965)))
|
||||
.env("REMOTE_HOST", "127.0.0.1")
|
||||
.env("REMOTE_ADDR", "127.0.0.1")
|
||||
.env("REMOTE_HOST", &remote_host)
|
||||
.env("REMOTE_ADDR", remote_host)
|
||||
.env("TLS_CIPHER", "Secure")
|
||||
.env("TLS_VERSION", "TLSv1.3")
|
||||
.output()?;
|
||||
|
|
|
@ -15,6 +15,7 @@ use url::Url;
|
|||
#[allow(dead_code)]
|
||||
pub struct Request {
|
||||
pub url: Url,
|
||||
pub addr: SocketAddr,
|
||||
pub certs: Option<Vec<Certificate>>,
|
||||
}
|
||||
|
||||
|
@ -103,6 +104,7 @@ async fn handle_request(
|
|||
|
||||
let req = Request {
|
||||
url: url,
|
||||
addr: addr,
|
||||
certs: None,
|
||||
};
|
||||
handle(h, req, &mut stream, addr).await;
|
||||
|
@ -155,7 +157,7 @@ async fn parse_request<R: Read + Unpin>(mut stream: R) -> Result<Url> {
|
|||
Url::parse(request)?
|
||||
};
|
||||
|
||||
// Validate the URL. TODO: Check the hostname and port.
|
||||
// Validate the URL.
|
||||
Ok(url)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue