diff --git a/Cargo.lock b/Cargo.lock index 11f491e..291a6db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -521,6 +521,12 @@ dependencies = [ "libc", ] +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + [[package]] name = "futures" version = "0.3.28" @@ -1369,7 +1375,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared", - "rand", + "rand 0.8.5", ] [[package]] @@ -1431,6 +1437,19 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi", +] + [[package]] name = "rand" version = "0.8.5" @@ -1439,7 +1458,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1449,9 +1468,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + [[package]] name = "rand_core" version = "0.6.4" @@ -1461,6 +1495,15 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -1542,6 +1585,15 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + [[package]] name = "reqwest" version = "0.11.18" @@ -1619,7 +1671,7 @@ dependencies = [ "num_cpus", "parking_lot", "pin-project-lite", - "rand", + "rand 0.8.5", "ref-cast", "rocket_codegen", "rocket_http", @@ -1931,6 +1983,7 @@ dependencies = [ "rocket", "rocket_dyn_templates", "rust-s3", + "tempdir", ] [[package]] @@ -2060,6 +2113,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tempdir" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" +dependencies = [ + "rand 0.4.6", + "remove_dir_all", +] + [[package]] name = "tempfile" version = "3.6.0" @@ -2088,7 +2151,7 @@ dependencies = [ "percent-encoding", "pest", "pest_derive", - "rand", + "rand 0.8.5", "regex", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index f117929..e594759 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,3 +16,4 @@ lazy_static = "1.4" rocket = { git = "https://github.com/SergioBenitez/Rocket", rev = "v0.5.0-rc.3" } rocket_dyn_templates = { git = "https://github.com/SergioBenitez/Rocket.git", rev = "v0.5.0-rc.3", features = ["tera"] } rust-s3 = { version = "0.32", default-features = false, features = ["tokio-rustls-tls"] } +tempdir = "0.3" diff --git a/src/main.rs b/src/main.rs index 11096f8..9e16865 100644 --- a/src/main.rs +++ b/src/main.rs @@ -60,6 +60,10 @@ lazy_static! { .expect("Cannot find or authenticate to S3 bucket") }; static ref FILEVIEW_TEMPLATE: &'static str = std::include_str!("../templates/index.html.tera"); + + // Workaround for https://github.com/SergioBenitez/Rocket/issues/1792 + static ref EMPTY_DIR: tempdir::TempDir = tempdir::TempDir::new("serves3") + .expect("Unable to create an empty temporary folder, is the whole FS read-only?"); } #[derive(Responder)] @@ -182,7 +186,10 @@ async fn s3_fileview(path: &PathBuf) -> Result, Error> { #[rocket::launch] fn rocket() -> _ { eprintln!("Proxying to {} for {}", BUCKET.host(), BUCKET.name()); - rocket::build() + + let config_figment = rocket::Config::figment().merge(("template_dir", EMPTY_DIR.path())); // We compile the templates in anyway. + + rocket::custom(config_figment) .mount("/", rocket::routes![index]) .attach(Template::custom(|engines| { engines