mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-22 21:41:37 +00:00
Add origin/host validation and warning for exposed serves
This commit is contained in:
parent
1abf675949
commit
4e45cc7d0a
7 changed files with 432 additions and 9 deletions
|
|
@ -126,6 +126,10 @@ impl TestServeSession {
|
|||
&self.project_path
|
||||
}
|
||||
|
||||
pub fn port(&self) -> usize {
|
||||
self.port
|
||||
}
|
||||
|
||||
/// Waits for the `rojo serve` server to come online with expontential
|
||||
/// backoff.
|
||||
pub fn wait_to_come_online(&mut self) -> ServerInfoResponse {
|
||||
|
|
@ -241,6 +245,35 @@ impl TestServeSession {
|
|||
|
||||
Ok(deserialize_msgpack(&body).expect("Server returned malformed response"))
|
||||
}
|
||||
|
||||
/// Sends a GET to `/api/rojo` with the given extra request headers and
|
||||
/// returns the response status code. Used to exercise the Host/Origin
|
||||
/// allowlist that guards against DNS rebinding.
|
||||
pub fn api_rojo_status_with_headers(&self, headers: &[(&str, &str)]) -> reqwest::StatusCode {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = format!("http://localhost:{}/api/rojo", self.port);
|
||||
|
||||
let mut request = client.get(url);
|
||||
for (name, value) in headers {
|
||||
request = request.header(*name, *value);
|
||||
}
|
||||
|
||||
request.send().expect("Failed to send request").status()
|
||||
}
|
||||
|
||||
/// Sends a POST to `/api/open/<id>` and returns the response status code.
|
||||
/// Used to verify that the local-only gate on `/api/open` admits loopback
|
||||
/// peers (the test harness always connects over loopback).
|
||||
pub fn api_open_status(&self, id: &str) -> reqwest::StatusCode {
|
||||
let client = reqwest::blocking::Client::new();
|
||||
let url = format!("http://localhost:{}/api/open/{}", self.port, id);
|
||||
|
||||
client
|
||||
.post(url)
|
||||
.send()
|
||||
.expect("Failed to send request")
|
||||
.status()
|
||||
}
|
||||
}
|
||||
|
||||
fn serialize_msgpack<T: Serialize>(value: T) -> Result<Vec<u8>, rmp_serde::encode::Error> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue