diff --git a/Dockerfile b/Dockerfile
index f69ae64..6d4e901 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -29,6 +29,7 @@ FROM scratch
# copy the build artifact from the build stage
COPY --from=build /http_server/target/x86_64-unknown-linux-musl/release/http_server /
COPY ./www /www
+COPY ./internal /internal
EXPOSE 8080
diff --git a/internal/server-info.html b/internal/server-info.html
new file mode 100644
index 0000000..d048489
--- /dev/null
+++ b/internal/server-info.html
@@ -0,0 +1,13 @@
+
+
+
+
+ server-info
+
+
+ Server written by AustrianToast
+ Source code
+
+ AustrianToasts e-mail
+
+
diff --git a/src/main.rs b/src/main.rs
index 0548f2e..aa2a610 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -418,7 +418,6 @@ fn response_builder(
fn try_get_file(start_line: &StartLine, field_lines: &HashMap>) -> Vec {
let mut response_field_lines: HashMap> = HashMap::new();
let mut response_body: Vec = vec![];
-
let path: PathBuf = match start_line.target.as_str() {
"/" => PathBuf::from("/www/index.html"),
_ => PathBuf::from(format!("/www{}", start_line.target)),
@@ -475,6 +474,37 @@ fn try_get_file(start_line: &StartLine, field_lines: &HashMap Vec {
+ let mut response_field_lines: HashMap> = HashMap::new();
+ let mut response_body: Vec = vec![];
+ let path: PathBuf = PathBuf::from(format!("/internal{}.html", start_line.target));
+
+ match fs::read(&path) {
+ Ok(val) => {
+ val.iter().for_each(|byte| response_body.push(*byte));
+
+ response_field_lines.insert(
+ String::from("content-length"),
+ vec![response_body.len().to_string()],
+ );
+
+ let mime_type = mime_guess::from_path(&path)
+ .first()
+ .expect("Could not guess mime-type from path");
+
+ response_field_lines.insert(String::from("content-type"), vec![mime_type.to_string()]);
+
+ response_builder(
+ start_line.method,
+ "HTTP/1.1 200 ",
+ Some(response_field_lines),
+ Some(response_body),
+ )
+ }
+ Err(_) => response_builder(start_line.method, "HTTP/1.1 404 ", None, None),
+ }
+}
+
fn handle_request(mut stream: TcpStream) -> Result<(), Box> {
let mut line = String::new();
let mut reader = BufReader::new(&mut stream);
@@ -537,8 +567,8 @@ fn handle_request(mut stream: TcpStream) -> Result<(), Box> {
let response = match start_line.target.as_str() {
// For docker healtcheck. If the server can properly respond, then it must be healthy.
"/server-health" => response_builder(RequestMethods::Head, "HTTP/1.1 200 ", None, None),
- // "/server-stats" => response_builder(start_line.method, "HTTP/1.1 404 ", None, None),
- // "/server-info" => response_builder(start_line.method, "HTTP/1.1 404 ", None, None),
+ "/server-stats" => try_get_file_internal(&start_line),
+ "/server-info" => try_get_file_internal(&start_line),
_ => try_get_file(&start_line, &field_lines),
};
stream.write_all(&response)?;