1
0
Fork 0
mirror of https://github.com/dadada/portfs.git synced 2025-06-07 17:43:56 +02:00

If file exists for port name, serve file

This commit is contained in:
Tim Schubert 2019-05-30 23:24:32 +02:00
parent 97ee529bc7
commit 38e6841f53

View file

@ -1,8 +1,32 @@
use std::net::{TcpListener, TcpStream, SocketAddr};
use std::io::Result;
use std::fs::File;
use std::io::Write;
use std::io;
use std::path::Path;
fn handle_client(stream: TcpStream, addr: SocketAddr) {
println!("Hello, world!");
fn handle_client(mut stream: TcpStream, addr: SocketAddr) {
println!("Received connection from {:?}", addr.port());
let mut filename = addr.port().to_string();
if Path::new(&filename).exists() {
let mut buffer = File::open(&filename).unwrap();
match io::copy(&mut buffer, &mut stream) {
Ok(_written) => (),
Err(e) => println!("Failed to file {:?} to TCP stream: {:?}", filename, e),
}
} else {
let mut buffer = File::create(&filename).unwrap();
match io::copy(&mut stream, &mut buffer) {
Ok(_written) => {
filename.push('\n');
match stream.write_all(filename.as_bytes()) {
Err(e) => println!("Error writing to socket {:?}", e),
_ => (),
}
}
Err(e) => println!("Failed to write TCP stream to file {:?} failed with {:?}", filename, e),
}
}
}
fn main() -> Result<()> {