Initial working commit

This commit is contained in:
Andrew 2024-06-13 19:05:07 +07:00
commit d82edb95a9
4 changed files with 1779 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

1728
Cargo.lock generated Normal file

File diff suppressed because it is too large Load diff

10
Cargo.toml Normal file
View file

@ -0,0 +1,10 @@
[package]
name = "servant"
version = "0.1.0"
edition = "2021"
authors = ["Andrew G. <me@nuark.xyz>"]
[dependencies]
actix-web = "4.7.0"
actix-files = "0.6.6"
clap = { version = "4.5.7", features = ["derive"] }

40
src/main.rs Normal file
View file

@ -0,0 +1,40 @@
use actix_files;
use actix_web::{App, HttpServer};
use clap::{arg, command, Parser};
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct ServantArgs {
#[arg(long, default_value_t = 8080)]
port: u16,
#[arg(long, default_value_t = String::from("0.0.0.0"))]
host: String,
#[arg(long, default_value_t = String::from("/"))]
mount: String,
#[arg(long)]
serve_dir: String,
#[arg(long)]
index_file: String,
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let args = ServantArgs::parse();
let bind_addr = format!("{}:{}", args.host, args.port);
println!("Listening on http://{}", bind_addr);
HttpServer::new(move || {
App::new().default_service(
actix_files::Files::new(&args.mount, args.serve_dir.as_str())
.index_file(args.index_file.as_str()),
)
})
.bind(bind_addr)?
.run()
.await
}