Compare commits
2 commits
5fdbe8dfee
...
b0a2f7ec7c
Author | SHA1 | Date | |
---|---|---|---|
|
b0a2f7ec7c | ||
|
78cd45d68a |
12
Cargo.lock
generated
12
Cargo.lock
generated
|
@ -320,6 +320,17 @@ dependencies = [
|
|||
"askama_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "askama_actix"
|
||||
version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c52f74f8382a142ecfc052100b21abc33f2c069e20fe345808e7ed914b179449"
|
||||
dependencies = [
|
||||
"actix-web",
|
||||
"askama",
|
||||
"askama_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "askama_derive"
|
||||
version = "0.11.2"
|
||||
|
@ -1582,6 +1593,7 @@ dependencies = [
|
|||
"actix-web",
|
||||
"actix-web-actors",
|
||||
"askama",
|
||||
"askama_actix",
|
||||
"bytes",
|
||||
"bytesize",
|
||||
"crc32fast",
|
||||
|
|
|
@ -14,6 +14,7 @@ actix-http = "3.0.4"
|
|||
actix-web = "4.0.1"
|
||||
actix-web-actors = "4.1.0"
|
||||
askama = "0.11.1"
|
||||
askama_actix = "0.13"
|
||||
bytes = "1.1.0"
|
||||
bytesize = "1.1.0"
|
||||
crc32fast = "1.3.2"
|
||||
|
|
18
flake.lock
18
flake.lock
|
@ -33,11 +33,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1653060744,
|
||||
"narHash": "sha256-kfRusllRumpt33J1hPV+CeCCylCXEU7e0gn2/cIM7cY=",
|
||||
"lastModified": 1655306633,
|
||||
"narHash": "sha256-nv4FfWWV/dEelByjXJtJkoDPOHIsKfLq50RN3Hqq5Yk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "dfd82985c273aac6eced03625f454b334daae2e8",
|
||||
"rev": "b1957596ff1c7aa8c55c4512b7ad1c9672502e8e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -77,11 +77,11 @@
|
|||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1653273659,
|
||||
"narHash": "sha256-dHXYaNL1axhZZyiZXxt1WKhvZrYXq7bjCs3y5VjgyGI=",
|
||||
"lastModified": 1655347556,
|
||||
"narHash": "sha256-JZ06EaeHi9sbbO3n8qYZ8KzDfSbDlPVRHI6Pw4sAxRE=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "0fa3e01da1ce98e3b40063b8e2678095943402b1",
|
||||
"rev": "1cc3dc5aec863c2f724a46f7086fb011004a4e6e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -92,11 +92,11 @@
|
|||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1652776076,
|
||||
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
34
src/main.rs
34
src/main.rs
|
@ -6,12 +6,13 @@ mod zip;
|
|||
|
||||
use std::{fmt::Debug, path::PathBuf, str::FromStr};
|
||||
|
||||
use actix_http::StatusCode;
|
||||
use actix_web::{
|
||||
error::InternalError, get, middleware::Logger, post, web, App, HttpRequest, HttpResponse,
|
||||
HttpServer, Responder,
|
||||
};
|
||||
use actix_web_actors::ws;
|
||||
use askama::Template;
|
||||
use askama_actix::{Template, TemplateToResponse};
|
||||
use bytesize::ByteSize;
|
||||
use log::{error, warn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
@ -55,19 +56,15 @@ pub fn log_auth_failure(ip_addr: &str) {
|
|||
|
||||
#[derive(Template)]
|
||||
#[template(path = "index.html")]
|
||||
struct IndexPage<'a> {
|
||||
cachebuster: &'a str,
|
||||
struct IndexPage {
|
||||
cachebuster: String,
|
||||
}
|
||||
|
||||
#[get("/")]
|
||||
async fn index(data: web::Data<AppState>) -> impl Responder {
|
||||
HttpResponse::Ok().body(
|
||||
IndexPage {
|
||||
cachebuster: &data.config.cachebuster,
|
||||
cachebuster: data.config.cachebuster.clone(),
|
||||
}
|
||||
.render()
|
||||
.unwrap(),
|
||||
)
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
@ -129,8 +126,7 @@ async fn handle_download(
|
|||
.into_response(&req))
|
||||
} else {
|
||||
let offsets = info.contents.as_deref().map(zip::file_data_offsets);
|
||||
Ok(HttpResponse::Ok().body(
|
||||
DownloadPage {
|
||||
Ok(DownloadPage {
|
||||
info: DownloadInfo {
|
||||
file: info,
|
||||
code: code.clone(),
|
||||
|
@ -139,9 +135,7 @@ async fn handle_download(
|
|||
},
|
||||
cachebuster: &data.config.cachebuster,
|
||||
}
|
||||
.render()
|
||||
.unwrap(),
|
||||
))
|
||||
.to_response())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -188,17 +182,13 @@ fn not_found<T>(req: HttpRequest, data: web::Data<AppState>, report: bool) -> ac
|
|||
let ip_addr = get_ip_addr(&req, data.config.reverse_proxy);
|
||||
log_auth_failure(&ip_addr);
|
||||
}
|
||||
Err(InternalError::from_response(
|
||||
"Download not found",
|
||||
HttpResponse::NotFound().body(
|
||||
NotFoundPage {
|
||||
let mut resp = NotFoundPage {
|
||||
cachebuster: &data.config.cachebuster,
|
||||
}
|
||||
.render()
|
||||
.unwrap(),
|
||||
),
|
||||
)
|
||||
.into())
|
||||
.to_response();
|
||||
*resp.status_mut() = StatusCode::NOT_FOUND;
|
||||
|
||||
Err(InternalError::from_response("Download not found", resp).into())
|
||||
}
|
||||
|
||||
#[get("/upload")]
|
||||
|
|
Loading…
Reference in a new issue