Basic server
This commit is contained in:
parent
771dca26f2
commit
11e8cc5ad5
4 changed files with 64 additions and 3 deletions
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "FediverseServer"
|
||||||
|
version = "0.1.0"
|
11
src/404.html
Normal file
11
src/404.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Ouch!</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>404</h1>
|
||||||
|
<p>Page not found.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
11
src/index.html
Normal file
11
src/index.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Hello!</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello!</h1>
|
||||||
|
<p>Hi from Rust</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
38
src/main.rs
38
src/main.rs
|
@ -1,5 +1,37 @@
|
||||||
use std::net;
|
#![allow(non_snake_case)]
|
||||||
|
use std::net::{TcpListener, TcpStream};
|
||||||
|
use std::io::{BufReader, prelude::*};
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
fn main() {
|
fn main() -> std::io::Result<()> {
|
||||||
println!("Hello, world!");
|
let TCPlistener = TcpListener::bind("127.0.0.1:8080").unwrap();
|
||||||
|
for Stream in TCPlistener.incoming() {
|
||||||
|
ServePage(Stream?);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ServePage(mut Stream: TcpStream) {
|
||||||
|
// Identifying information.
|
||||||
|
let Buffer = BufReader::new(&Stream);
|
||||||
|
let HTTPrequest: Vec<_> = Buffer.lines().map(|result| result.unwrap()).take_while(|line| !line.is_empty()).collect();
|
||||||
|
println!("{HTTPrequest:#?}");
|
||||||
|
|
||||||
|
// Response.
|
||||||
|
#[allow(unused_assignments)]
|
||||||
|
let mut Status : &str = "";
|
||||||
|
#[allow(unused_assignments)]
|
||||||
|
let mut Contents : String = "".to_string();
|
||||||
|
|
||||||
|
if HTTPrequest[0] == "GET / HTTP/1.1" {
|
||||||
|
Status = "HTTP/1.1 200 OK";
|
||||||
|
Contents = fs::read_to_string("src/index.html").unwrap();
|
||||||
|
} else {
|
||||||
|
Status = "HTTP/1.1 404 Not Found";
|
||||||
|
Contents = fs::read_to_string("src/404.html").unwrap();
|
||||||
|
}
|
||||||
|
let Length = Contents.len();
|
||||||
|
let Response : String = format!("{Status}\r\nContent-Length: {Length}\r\n\r\n{Contents}");
|
||||||
|
|
||||||
|
Stream.write_all(Response.as_bytes()).unwrap();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue