some error codes in handler
This commit is contained in:
parent
769affa1b6
commit
177d12b5b8
3 changed files with 24 additions and 7 deletions
|
@ -1,6 +1,8 @@
|
||||||
mod server;
|
mod server;
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let server = server::Server::new("gemini://localhost");
|
let wwwRoot = Path::new("/var/www/gemini/");
|
||||||
|
let server = server::Server::new("gemini://localhost", &wwwRoot);
|
||||||
server.serve();
|
server.serve();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,17 @@
|
||||||
use url::Url;
|
|
||||||
use crate::server::response;
|
use crate::server::response;
|
||||||
use crate::server::ServerConfig;
|
use crate::server::ServerConfig;
|
||||||
|
use std::path::Path;
|
||||||
|
use url::Url;
|
||||||
|
|
||||||
pub fn handle(config: &ServerConfig, url: Url) -> Option<response::Response> {
|
pub fn handle(config: &ServerConfig, url: Url) -> Option<response::Response> {
|
||||||
Some(response::invalid_protocol())
|
if url.scheme() != "gemini" {
|
||||||
|
return Some(response::invalid_protocol());
|
||||||
|
}
|
||||||
|
|
||||||
|
let path = Path::new(url.path());
|
||||||
|
if !path.has_root() {
|
||||||
|
return Some(response::not_understood());
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,17 +2,19 @@ use crate::server::response::Response;
|
||||||
use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod, SslStream};
|
use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod, SslStream};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::{SocketAddr, TcpListener, TcpStream};
|
use std::net::{SocketAddr, TcpListener, TcpStream};
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
|
use std::sync::Arc;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
use std::sync::Arc;
|
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
pub mod response;
|
|
||||||
pub mod handler;
|
pub mod handler;
|
||||||
|
pub mod response;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ServerConfig {
|
pub struct ServerConfig {
|
||||||
defaultHost: Url,
|
defaultHost: Url,
|
||||||
|
wwwRoot: PathBuf,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Server {
|
pub struct Server {
|
||||||
|
@ -21,8 +23,11 @@ pub struct Server {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Server {
|
impl Server {
|
||||||
pub fn new(host: &str) -> Server {
|
pub fn new(host: &str, wwwRoot: &Path) -> Server {
|
||||||
let config = ServerConfig{defaultHost: Url::parse(host).unwrap()};
|
let config = ServerConfig {
|
||||||
|
defaultHost: Url::parse(host).unwrap(),
|
||||||
|
wwwRoot: PathBuf::from(wwwRoot),
|
||||||
|
};
|
||||||
|
|
||||||
Server {
|
Server {
|
||||||
acceptor: build_acceptor(),
|
acceptor: build_acceptor(),
|
||||||
|
|
Loading…
Reference in a new issue