From ebdd92c64c491e21b3d0b00b19d35b373932de92 Mon Sep 17 00:00:00 2001 From: g1n Date: Fri, 9 Jul 2021 05:23:09 +0000 Subject: [PATCH] Initial commit --- .gitignore | 14 ++++++++++++++ Cargo.toml | 9 +++++++++ README.md | 0 src/main.rs | 30 ++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6985cf1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..567b12b --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "gytheio" +version = "0.1.0" +authors = ["g1n "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..7faf8d1 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,30 @@ +use std::fs; +use std::io::prelude::*; +use std::net::TcpListener; +use std::net::TcpStream; + +fn main() { + let listener = TcpListener::bind("127.0.0.1:3000").unwrap(); + + for stream in listener.incoming() { + let stream = stream.unwrap(); + handle_connection(stream); + } +} + +fn handle_connection(mut stream: TcpStream) { + let mut buffer = [0; 1024]; + + stream.read(&mut buffer).unwrap(); + + let contents = fs::read_to_string("index.gmi").unwrap(); + let response = format!( + "2 text/gemini\r\n{}", + contents + ); + + stream.write(response.as_bytes()).unwrap(); + stream.flush().unwrap(); + + +}