feat: add connection timeout

This commit is contained in:
xfy
2025-03-27 16:21:47 +08:00
parent c66a3f1322
commit e8c425d5fe
5 changed files with 6 additions and 146 deletions

View File

@ -43,67 +43,3 @@ macro_rules! insert_mime {
$map.entry($name.into()).or_insert($mime.into());
};
}
pub fn insert_default_mimes(map: &mut MIMEType) {
use crate::http::mime::*;
insert_mime!("html", TEXT_HTML, map);
insert_mime!("htm", TEXT_HTML, map);
insert_mime!("shtml", TEXT_HTML, map);
insert_mime!("css", TEXT_CSS, map);
insert_mime!("xml", TEXT_XML, map);
insert_mime!("rss", TEXT_XML, map);
insert_mime!("txt", TEXT_PLAIN, map);
insert_mime!("gif", IMAGE_GIF, map);
insert_mime!("jpg", IMAGE_JPEG, map);
insert_mime!("jpeg", IMAGE_JPEG, map);
insert_mime!("png", IMAGE_PNG, map);
insert_mime!("ico", IMAGE_ICON, map);
insert_mime!("jng", IMAGE_JNG, map);
insert_mime!("wbmp", IMAGE_WBMP, map);
insert_mime!("webp", IMAGE_WEBP, map);
insert_mime!("avif", IMAGE_AVIF, map);
insert_mime!("svg", IMAGE_SVG, map);
insert_mime!("svgz", IMAGE_SVG, map);
insert_mime!("tif", IMAGE_TIFF, map);
insert_mime!("tiff", IMAGE_TIFF, map);
insert_mime!("bmp", IMAGE_BMP, map);
insert_mime!("js", APPLICATION_JAVASCRIPT, map);
insert_mime!("wasm", APPLICATION_WASM, map);
insert_mime!("json", APPLICATION_JSON, map);
insert_mime!("jar", APPLICATION_JAVA_ARCHIVE, map);
insert_mime!("war", APPLICATION_JAVA_ARCHIVE, map);
insert_mime!("ear", APPLICATION_JAVA_ARCHIVE, map);
insert_mime!("m3u8", APPLICATION_APPLE_MPEGURL, map);
insert_mime!("bin", APPLICATION_OCTET_STREAM, map);
insert_mime!("exe", APPLICATION_OCTET_STREAM, map);
insert_mime!("dll", APPLICATION_OCTET_STREAM, map);
insert_mime!("deb", APPLICATION_OCTET_STREAM, map);
insert_mime!("dmg", APPLICATION_OCTET_STREAM, map);
insert_mime!("iso", APPLICATION_OCTET_STREAM, map);
insert_mime!("img", APPLICATION_OCTET_STREAM, map);
insert_mime!("msi", APPLICATION_OCTET_STREAM, map);
insert_mime!("msp", APPLICATION_OCTET_STREAM, map);
insert_mime!("msm", APPLICATION_OCTET_STREAM, map);
insert_mime!("woff", FONT_WOFF, map);
insert_mime!("woff2", FONT_WOFF2, map);
insert_mime!("ts", VIDEO_MP2T, map);
insert_mime!("3gpp", VIDEO_3GPP, map);
insert_mime!("3gp", VIDEO_3GPP, map);
insert_mime!("mp4", VIDEO_MP4, map);
insert_mime!("mpeg", VIDEO_MPEG, map);
insert_mime!("mpg", VIDEO_MPEG, map);
insert_mime!("mov", VIDEO_QUICKTIME, map);
insert_mime!("webm", VIDEO_WEBM, map);
insert_mime!("flv", VIDEO_X_FLV, map);
insert_mime!("m4v", VIDEO_X_M4V, map);
insert_mime!("mng", VIDEO_X_MNG, map);
insert_mime!("asx", VIDEO_X_MS_ASF, map);
insert_mime!("asf", VIDEO_X_MS_ASF, map);
insert_mime!("wmv", VIDEO_X_MS_WMV, map);
insert_mime!("avi", VIDEO_X_MSVIDEO, map);
}

View File

@ -1,78 +0,0 @@
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
#![allow(dead_code)]
macro_rules! mime {
($a:ident, $b:literal) => {
pub const $a: &str = $b;
};
}
mime!(TEXT_PLAIN, "text/plain");
mime!(TEXT_PLAIN_UTF_8, "text/plain; charset=utf-8");
mime!(TEXT_HTML, "text/html");
mime!(TEXT_HTML_UTF_8, "text/html; charset=utf-8");
mime!(TEXT_CSS, "text/css");
mime!(TEXT_CSS_UTF_8, "text/css; charset=utf-8");
mime!(TEXT_JAVASCRIPT, "text/javascript");
mime!(TEXT_XML, "text/xml");
mime!(TEXT_EVENT_STREAM, "text/event-stream");
mime!(TEXT_CSV, "text/csv");
mime!(TEXT_CSV_UTF_8, "text/csv; charset=utf-8");
mime!(TEXT_TAB_SEPARATED_VALUES, "text/tab-separated-values");
mime!(
TEXT_TAB_SEPARATED_VALUES_UTF_8,
"text/tab-separated-values; charset=utf-8"
);
mime!(TEXT_VCARD, "text/vcard");
mime!(IMAGE_JPEG, "image/jpeg");
mime!(IMAGE_GIF, "image/gif");
mime!(IMAGE_PNG, "image/png");
mime!(IMAGE_ICON, "image/x-icon");
mime!(IMAGE_JNG, "image/x-jng");
mime!(IMAGE_WBMP, "image/vnd.wap.wbmp ");
mime!(IMAGE_BMP, "image/bmp");
mime!(IMAGE_SVG, "image/svg+xml");
mime!(IMAGE_AVIF, "image/avif");
mime!(IMAGE_TIFF, "image/tiff");
mime!(IMAGE_WEBP, "image/webp");
mime!(VIDEO_3GPP, "video/3gpp");
mime!(VIDEO_MP2T, "video/mp2t");
mime!(VIDEO_MP4, "video/mp4");
mime!(VIDEO_MPEG, "video/mpeg");
mime!(VIDEO_QUICKTIME, "video/quicktime");
mime!(VIDEO_WEBM, "video/webm");
mime!(VIDEO_X_FLV, "video/x-flv");
mime!(VIDEO_X_M4V, "video/x-m4v");
mime!(VIDEO_X_MNG, "video/x-mng");
mime!(VIDEO_X_MS_ASF, "video/x-ms-asf");
mime!(VIDEO_X_MS_WMV, "video/x-ms-wmv");
mime!(VIDEO_X_MSVIDEO, "video/x-msvideo");
mime!(FONT_WOFF, "font/woff");
mime!(FONT_WOFF2, "font/woff2");
mime!(APPLICATION_JSON, "application/json");
mime!(APPLICATION_JAVASCRIPT, "application/javascript");
mime!(APPLICATION_WASM, "application/wasm");
mime!(
APPLICATION_JAVASCRIPT_UTF_8,
"application/javascript; charset=utf-8"
);
mime!(
APPLICATION_WWW_FORM_URLENCODED,
"application/x-www-form-urlencoded"
);
mime!(APPLICATION_OCTET_STREAM, "application/octet-stream");
mime!(APPLICATION_MSGPACK, "application/msgpack");
mime!(APPLICATION_PDF, "application/pdf");
mime!(APPLICATION_DNS, "application/dns-message");
mime!(APPLICATION_JAVA_ARCHIVE, "application/java-archive");
mime!(APPLICATION_APPLE_MPEGURL, "application/vnd.apple.mpegurl");
mime!(STAR_STAR, "*/*");
mime!(TEXT_STAR, "text/*");
mime!(IMAGE_STAR, "image/*");
mime!(VIDEO_STAR, "video/*");
mime!(AUDIO_STAR, "audio/*");

View File

@ -1 +0,0 @@
pub mod mime;

View File

@ -20,7 +20,6 @@ mod cli;
mod config;
mod consts;
mod error;
mod http;
mod middlewares;
mod service;
mod utils;

View File

@ -21,20 +21,24 @@ impl SettingHost {
let Some(host_route) = host_route.as_ref() else {
continue;
};
// reverse proxy
if host_route.proxy_pass.is_some() {
todo!();
continue;
// router = router.route(host_route.location.as_ref(), get(hello));
}
// static file
let Some(root) = &host_route.root else {
warn!("root field not found");
continue;
};
router = router.route_service(host_route.location.as_ref(), ServeDir::new(root));
}
router = router.layer(
ServiceBuilder::new()
.layer(middleware::from_fn(add_version))
.layer(TimeoutLayer::new(Duration::from_secs(15))),
.layer(TimeoutLayer::new(Duration::from_secs(self.timeout.into()))),
);
router = logging_route(router);