mirror of
https://github.com/DefectingCat/candy
synced 2025-07-15 16:51:34 +00:00
feat: add connection timeout
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
@ -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/*");
|
@ -1 +0,0 @@
|
||||
pub mod mime;
|
@ -20,7 +20,6 @@ mod cli;
|
||||
mod config;
|
||||
mod consts;
|
||||
mod error;
|
||||
mod http;
|
||||
mod middlewares;
|
||||
mod service;
|
||||
mod utils;
|
||||
|
@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user