Compare commits
	
		
			139 Commits
		
	
	
		
			v1.1.11
			...
			e71fc550d8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e71fc550d8 | |||
| fbffe2e41e | |||
| b39471c3e6 | |||
| b3d22a46c2 | |||
| 063b02de28 | |||
| 72aade793a | |||
| 6cfa63320f | |||
| b62350eeb2 | |||
| 65cdb05e19 | |||
| 842c69cd76 | |||
| fd98f00d18 | |||
| 9633618fc8 | |||
| 5ace1ebf79 | |||
| 6775b8d64d | |||
| 70e5ab14df | |||
| 223237682d | |||
| 045a4a3fb5 | |||
| 78bae40cc5 | |||
| 39809e5e83 | |||
| 1c47f16884 | |||
| 9090a57729 | |||
| 6c814953a8 | |||
| faad370167 | |||
| 098d270dcd | |||
| f8f8c12d7e | |||
| 75ae8b634e | |||
| 1bc7e2da76 | |||
| db9237f6dd | |||
| 0f668d8be0 | |||
| af54cdf66a | |||
| 09f7625ab2 | |||
| 46da5afd20 | |||
| 5f484e6a0e | |||
| 17c9ccf25d | |||
| 9813e6ec6d | |||
| 8d2a6a3b57 | |||
| 32d7b30461 | |||
| f048a4b3da | |||
| 1e6bc9b6fd | |||
| f8a279c77b | |||
| 783e14c49c | |||
| ed9296e910 | |||
| 75e3a13aad | |||
| 017e3360c6 | |||
| b2f9ca7d7d | |||
| 29babb9914 | |||
| 65d9f55e19 | |||
| 5bf863be1c | |||
| c59d94af2f | |||
| f7c3c7c60b | |||
| 91f4879ba4 | |||
| 1247a86ccb | |||
| df2095d214 | |||
| fcac2394f9 | |||
| b1d916961a | |||
| f48b79e87f | |||
| 2cef444441 | |||
| b356dca31d | |||
| c715626fc3 | |||
| bda8d7816b | |||
| ed6115f5ea | |||
| 4a7c5dd1d7 | |||
| bc19aca540 | |||
| f30b4e2535 | |||
| 3ff516ed1f | |||
| 394e332aa9 | |||
| 6ae0990a54 | |||
| 35356915fe | |||
| 86169cb345 | |||
| c3f74e076f | |||
| 244be2e41e | |||
| 80db486dc9 | |||
| 9792d64f69 | |||
| a51035dbda | |||
| e66ef328a1 | |||
| e44eb495ac | |||
| 73cd4a27ac | |||
| 6b050f3a05 | |||
| 8b94b630be | |||
| e35b0c9fd9 | |||
| b5a2c750c5 | |||
| c7b0ca62f6 | |||
| 34457d1cc1 | |||
| e286e24d61 | |||
| 9c1336b50c | |||
| 54e8015773 | |||
| 30874a97f7 | |||
| 05142358e1 | |||
| 9f6891b4d5 | |||
| 9c52aa8833 | |||
| 0e244ebadd | |||
| 6ade932389 | |||
| 7dc14a83cf | |||
| 7a6da447ab | |||
| 69a0948cf7 | |||
| a738845b99 | |||
| fc8caf5f70 | |||
| 9fed0f99fa | |||
| 363d0f65a3 | |||
| 2df79f2cd9 | |||
| 89ab6fbe53 | |||
| f41fcb201b | |||
| c0284f8f76 | |||
| 8416ed51e7 | |||
| 238f452531 | |||
| 5836b71635 | |||
| 4e83bfe815 | |||
| 462910f6db | |||
| 3a4a9dc1f1 | |||
| 1750a14fdf | |||
| 1c2616fc0c | |||
| 14e2878dea | |||
| 9461368fa9 | |||
| 8ae92de0f3 | |||
| 2ae69ed152 | |||
| 5ac30a6a5a | |||
| 979bab809c | |||
| 844dfd9e3a | |||
| ac3e4f38a2 | |||
| 5145c3cb29 | |||
| cc95f0c163 | |||
| 4954098f53 | |||
| c60eca2808 | |||
| 0f24b879bd | |||
| 9963cceb59 | |||
| f80e465b40 | |||
| 6d18869c57 | |||
| 72b4fb147e | |||
| f8d170f8c3 | |||
| 0d18904e33 | |||
| bab14f394c | |||
| 75e5c4448c | |||
| ceb1472040 | |||
| c9d0a7fabc | |||
| 107f20222d | |||
| 778b245d56 | |||
| fbf1c5b9d3 | |||
| 442cb9b825 | |||
| 83e64db434 | 
							
								
								
									
										810
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										810
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,7 +1,7 @@ | |||||||
| [package] | [package] | ||||||
| name = "expose-dir-via-http" | name = "expose-dir-via-http" | ||||||
| version = "1.1.11" | version = "1.3.40" | ||||||
| edition = "2021" | edition = "2024" | ||||||
|  |  | ||||||
| [lints.rust] | [lints.rust] | ||||||
| unsafe_code = "forbid" | unsafe_code = "forbid" | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -1,18 +1,20 @@ | |||||||
| use std::{ | use std::{ | ||||||
|     net::{IpAddr, SocketAddr}, |     net::{IpAddr, SocketAddr}, | ||||||
|     num::NonZeroUsize, |     num::NonZeroUsize, | ||||||
|  |     path::PathBuf, | ||||||
|  |     sync::Arc, | ||||||
|     thread::available_parallelism, |     thread::available_parallelism, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| use actix_web::{App, HttpServer}; | use actix_web::{App, HttpServer}; | ||||||
| use clap::{crate_name, crate_version, Parser}; | use clap::{Parser, crate_name, crate_version}; | ||||||
|  |  | ||||||
| #[derive(Parser, Debug)] | #[derive(Parser, Debug)] | ||||||
| #[clap(name = crate_name!(), version = crate_version!())] | #[clap(name = crate_name!(), version = crate_version!())] | ||||||
| struct Args { | struct Args { | ||||||
|     /// Directory to expose |     /// Directory to expose | ||||||
|     #[clap(default_value = ".")] |     #[clap(default_value = ".", value_parser = parse_valid_dir)] | ||||||
|     dir: String, |     dir: PathBuf, | ||||||
|  |  | ||||||
|     /// IP address to use |     /// IP address to use | ||||||
|     #[clap(default_value = "0.0.0.0")] |     #[clap(default_value = "0.0.0.0")] | ||||||
| @@ -23,18 +25,31 @@ struct Args { | |||||||
|     port: u16, |     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] | #[actix_web::main] | ||||||
| async fn main() -> std::io::Result<()> { | async fn main() -> std::io::Result<()> { | ||||||
|     let args = Args::parse(); |     let args = Args::parse(); | ||||||
|  |  | ||||||
|     let dir = args.dir; |     let dir = Arc::new(args.dir); | ||||||
|     let sock = SocketAddr::new(args.ip, args.port); |     let sock = SocketAddr::new(args.ip, args.port); | ||||||
|  |  | ||||||
|     println!("Starting HTTP server on {sock} exposing dir {dir}"); |     println!( | ||||||
|  |         "Starting HTTP server on {sock} exposing dir {}", | ||||||
|  |         dir.display() | ||||||
|  |     ); | ||||||
|  |  | ||||||
|     HttpServer::new(move || { |     HttpServer::new(move || { | ||||||
|  |         let dir = dir.clone(); | ||||||
|         App::new().service( |         App::new().service( | ||||||
|             actix_files::Files::new("/", dir.clone()) |             actix_files::Files::new("/", dir.as_ref()) | ||||||
|                 .show_files_listing() |                 .show_files_listing() | ||||||
|                 .prefer_utf8(true), |                 .prefer_utf8(true), | ||||||
|         ) |         ) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user