aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorboasting-squirrel <boasting.squirrel@gmail.com>2019-02-13 17:51:51 +0000
committerboasting-squirrel <boasting.squirrel@gmail.com>2019-02-13 17:51:51 +0000
commitd410b27e85ffa653a64d10bcd6b43cc5f64fe5d9 (patch)
tree50bed1bf017347115b70db35c5034ae46695f182
parentFixed Clippy warnings (diff)
downloadminiserve-d410b27e85ffa653a64d10bcd6b43cc5f64fe5d9.tar.gz
miniserve-d410b27e85ffa653a64d10bcd6b43cc5f64fe5d9.zip
Removed config.rs and put back actix config in main.rs
Diffstat (limited to '')
-rw-r--r--src/args.rs5
-rw-r--r--src/auth.rs6
-rw-r--r--src/config.rs57
-rw-r--r--src/listing.rs4
-rw-r--r--src/main.rs57
5 files changed, 59 insertions, 70 deletions
diff --git a/src/args.rs b/src/args.rs
index a3a440e..64ff3e6 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -1,5 +1,4 @@
use crate::auth;
-use crate::config;
use crate::listing;
use clap::{crate_authors, crate_description, crate_name, crate_version};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
@@ -38,7 +37,7 @@ fn is_valid_auth(auth: String) -> Result<(), String> {
.map(|_| ())
}
-pub fn parse_args() -> config::MiniserveConfig {
+pub fn parse_args() -> crate::MiniserveConfig {
use clap::{App, AppSettings, Arg};
let matches = App::new(crate_name!())
@@ -152,7 +151,7 @@ pub fn parse_args() -> config::MiniserveConfig {
let reverse_sort = matches.is_present("reverse");
- config::MiniserveConfig {
+ crate::MiniserveConfig {
verbose,
path: PathBuf::from(path.unwrap_or(".")),
port,
diff --git a/src/auth.rs b/src/auth.rs
index 5d0bcaa..e39305c 100644
--- a/src/auth.rs
+++ b/src/auth.rs
@@ -2,8 +2,6 @@ use actix_web::http::header;
use actix_web::middleware::{Middleware, Response};
use actix_web::{HttpRequest, HttpResponse, Result};
-use crate::config;
-
pub struct Auth;
pub enum BasicAuthError {
@@ -34,10 +32,10 @@ pub fn parse_basic_auth(
})
}
-impl Middleware<config::MiniserveConfig> for Auth {
+impl Middleware<crate::MiniserveConfig> for Auth {
fn response(
&self,
- req: &HttpRequest<config::MiniserveConfig>,
+ req: &HttpRequest<crate::MiniserveConfig>,
resp: HttpResponse,
) -> Result<Response> {
if let Some(ref required_auth) = req.state().auth {
diff --git a/src/config.rs b/src/config.rs
deleted file mode 100644
index 4c345ba..0000000
--- a/src/config.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-use actix_web::{fs, App};
-use std::net::IpAddr;
-
-use crate::auth;
-use crate::listing;
-
-#[derive(Clone, Debug)]
-pub struct MiniserveConfig {
- pub verbose: bool,
- pub path: std::path::PathBuf,
- pub port: u16,
- pub interfaces: Vec<IpAddr>,
- pub auth: Option<auth::BasicAuthParams>,
- pub path_explicitly_chosen: bool,
- pub no_symlinks: bool,
- pub random_route: Option<String>,
- pub sort_method: listing::SortingMethods,
- pub reverse_sort: bool,
-}
-
-pub fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> {
- let s = {
- let path = &app.state().path;
- let no_symlinks = app.state().no_symlinks;
- let random_route = app.state().random_route.clone();
- let sort_method = app.state().sort_method;
- let reverse_sort = app.state().reverse_sort;
- if path.is_file() {
- None
- } else {
- Some(
- fs::StaticFiles::new(path)
- .expect("Couldn't create path")
- .show_files_listing()
- .files_listing_renderer(move |dir, req| {
- listing::directory_listing(
- dir,
- req,
- no_symlinks,
- random_route.clone(),
- sort_method,
- reverse_sort,
- )
- }),
- )
- }
- };
-
- let random_route = app.state().random_route.clone().unwrap_or_default();
- let full_route = format!("/{}", random_route);
-
- if let Some(s) = s {
- app.handler(&full_route, s)
- } else {
- app.resource(&full_route, |r| r.f(listing::file_handler))
- }
-}
diff --git a/src/listing.rs b/src/listing.rs
index c955191..aeddd7d 100644
--- a/src/listing.rs
+++ b/src/listing.rs
@@ -8,8 +8,6 @@ use std::io;
use std::path::Path;
use std::str::FromStr;
-use crate::config;
-
#[derive(Clone, Copy, Debug)]
pub enum SortingMethods {
Natural,
@@ -69,7 +67,7 @@ impl FromStr for SortingMethods {
}
}
-pub fn file_handler(req: &HttpRequest<config::MiniserveConfig>) -> Result<fs::NamedFile> {
+pub fn file_handler(req: &HttpRequest<crate::MiniserveConfig>) -> Result<fs::NamedFile> {
let path = &req.state().path;
Ok(fs::NamedFile::open(path)?)
}
diff --git a/src/main.rs b/src/main.rs
index 633ab84..080124d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,4 @@
-use actix_web::{middleware, server, App};
+use actix_web::{fs, middleware, server, App};
use clap::crate_version;
use simplelog::{Config, LevelFilter, TermLogger};
use std::io::{self, Write};
@@ -9,9 +9,22 @@ use yansi::{Color, Paint};
mod args;
mod auth;
-mod config;
mod listing;
+#[derive(Clone, Debug)]
+pub struct MiniserveConfig {
+ pub verbose: bool,
+ pub path: std::path::PathBuf,
+ pub port: u16,
+ pub interfaces: Vec<IpAddr>,
+ pub auth: Option<auth::BasicAuthParams>,
+ pub path_explicitly_chosen: bool,
+ pub no_symlinks: bool,
+ pub random_route: Option<String>,
+ pub sort_method: listing::SortingMethods,
+ pub reverse_sort: bool,
+}
+
fn main() {
if cfg!(windows) && !Paint::enable_windows_ascii() {
Paint::disable();
@@ -43,7 +56,7 @@ fn main() {
App::with_state(inside_config.clone())
.middleware(auth::Auth)
.middleware(middleware::Logger::default())
- .configure(config::configure_app)
+ .configure(configure_app)
})
.bind(
miniserve_config
@@ -138,3 +151,41 @@ fn main() {
let _ = sys.run();
}
+
+pub fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> {
+ let s = {
+ let path = &app.state().path;
+ let no_symlinks = app.state().no_symlinks;
+ let random_route = app.state().random_route.clone();
+ let sort_method = app.state().sort_method;
+ let reverse_sort = app.state().reverse_sort;
+ if path.is_file() {
+ None
+ } else {
+ Some(
+ fs::StaticFiles::new(path)
+ .expect("Couldn't create path")
+ .show_files_listing()
+ .files_listing_renderer(move |dir, req| {
+ listing::directory_listing(
+ dir,
+ req,
+ no_symlinks,
+ random_route.clone(),
+ sort_method,
+ reverse_sort,
+ )
+ }),
+ )
+ }
+ };
+
+ let random_route = app.state().random_route.clone().unwrap_or_default();
+ let full_route = format!("/{}", random_route);
+
+ if let Some(s) = s {
+ app.handler(&full_route, s)
+ } else {
+ app.resource(&full_route, |r| r.f(listing::file_handler))
+ }
+}