Compare commits
	
		
			2 Commits
		
	
	
		
			v1.3.23
			...
			d59949a8c1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d59949a8c1 | |||
| 73e11d5596 | 
							
								
								
									
										536
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										536
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,7 +1,8 @@ | ||||
| [package] | ||||
| name = "expose-dir-via-http" | ||||
| version = "1.3.23" | ||||
| version = "1.1.13" | ||||
| edition = "2024" | ||||
| rust-version = "1.85" | ||||
|  | ||||
| [lints.rust] | ||||
| unsafe_code = "forbid" | ||||
|   | ||||
							
								
								
									
										2
									
								
								rust-toolchain.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								rust-toolchain.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| [toolchain] | ||||
| channel = "nightly" | ||||
							
								
								
									
										25
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -1,8 +1,6 @@ | ||||
| use std::{ | ||||
|     net::{IpAddr, SocketAddr}, | ||||
|     num::NonZeroUsize, | ||||
|     path::PathBuf, | ||||
|     sync::Arc, | ||||
|     thread::available_parallelism, | ||||
| }; | ||||
|  | ||||
| @@ -13,8 +11,8 @@ use clap::{Parser, crate_name, crate_version}; | ||||
| #[clap(name = crate_name!(), version = crate_version!())] | ||||
| struct Args { | ||||
|     /// Directory to expose | ||||
|     #[clap(default_value = ".", value_parser = parse_valid_dir)] | ||||
|     dir: PathBuf, | ||||
|     #[clap(default_value = ".")] | ||||
|     dir: String, | ||||
|  | ||||
|     /// IP address to use | ||||
|     #[clap(default_value = "0.0.0.0")] | ||||
| @@ -25,31 +23,18 @@ struct Args { | ||||
|     port: u16, | ||||
| } | ||||
|  | ||||
| fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> { | ||||
|     let path = PathBuf::from(dir); | ||||
|     match std::fs::metadata(&path) { | ||||
|         Ok(metadata) if metadata.is_dir() => Ok(path), | ||||
|         Ok(_) => Err(format!("{} is not a directory", path.display())), | ||||
|         Err(e) => Err(format!("Error accessing {}: {}", path.display(), e)), | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[actix_web::main] | ||||
| async fn main() -> std::io::Result<()> { | ||||
|     let args = Args::parse(); | ||||
|  | ||||
|     let dir = Arc::new(args.dir); | ||||
|     let dir = args.dir; | ||||
|     let sock = SocketAddr::new(args.ip, args.port); | ||||
|  | ||||
|     println!( | ||||
|         "Starting HTTP server on {sock} exposing dir {}", | ||||
|         dir.display() | ||||
|     ); | ||||
|     println!("Starting HTTP server on {sock} exposing dir {dir}"); | ||||
|  | ||||
|     HttpServer::new(move || { | ||||
|         let dir = dir.clone(); | ||||
|         App::new().service( | ||||
|             actix_files::Files::new("/", dir.as_ref()) | ||||
|             actix_files::Files::new("/", dir.clone()) | ||||
|                 .show_files_listing() | ||||
|                 .prefer_utf8(true), | ||||
|         ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user