Browse Source

Serve files

master
Garrit Franke 4 years ago
parent
commit
0786061c24
  1. 1
      index.gmi
  2. 37
      src/main.rs

1
index.gmi

@ -0,0 +1 @@
Hello from index.gmi

37
src/main.rs

@ -12,9 +12,11 @@ use std::thread;
use url::Url;
fn main() {
let mut file = File::open("identity.pfx").unwrap();
let mut file =
File::open("identity.pfx").expect("File identity.pfx not found in current directory");
let mut identity = vec![];
file.read_to_end(&mut identity).unwrap();
file.read_to_end(&mut identity)
.expect("Cannot read identity.pfx");
let identity = Identity::from_pkcs12(&identity, "qqqq").unwrap();
// 1965 is the standard port for gemini
@ -31,9 +33,9 @@ fn main() {
match stream {
Ok(stream) => {
let acceptor = acceptor.clone();
thread::spawn(move || {
let stream = acceptor.accept(stream).unwrap();
handle_client(stream);
thread::spawn(move || match acceptor.accept(stream) {
Ok(stream) => handle_client(stream),
Err(e) => println!("Can't handle stream: {}", e),
});
}
Err(_e) => println!("Error: {}", _e),
@ -67,9 +69,32 @@ fn handle_client(mut stream: TlsStream<TcpStream>) {
response.extend("\r\n".as_bytes());
response.extend("Hello World!".as_bytes());
let file_path = request
.path()
.chars()
.next()
.map(|c| &request.path()[c.len_utf8()..])
.unwrap();
println!("Reading {}", file_path);
let mut file = File::open(file_path).unwrap();
if let Err(e) = file.read_to_end(&mut response) {
println!("Could not read file {}", file_path);
}
if let Err(e) = stream.write(&response) {
println!("Could not write to stream: {}", e);
}
}
fn crop_letters(s: &mut String, pos: usize) {
match s.char_indices().nth(pos) {
Some((pos, _)) => {
s.drain(..pos);
}
None => {
s.clear();
}
}
}

Loading…
Cancel
Save