sender: added basic file serving for sender
This commit is contained in:
parent
518e9416b7
commit
acec23a5d3
8 changed files with 93 additions and 6 deletions
40
Cargo.lock
generated
40
Cargo.lock
generated
|
|
@ -584,6 +584,12 @@ dependencies = [
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "http-range-header"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "httparse"
|
name = "httparse"
|
||||||
version = "1.8.0"
|
version = "1.8.0"
|
||||||
|
|
@ -752,6 +758,16 @@ version = "0.3.17"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mime_guess"
|
||||||
|
version = "2.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
|
||||||
|
dependencies = [
|
||||||
|
"mime",
|
||||||
|
"unicase",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "miniz_oxide"
|
name = "miniz_oxide"
|
||||||
version = "0.7.2"
|
version = "0.7.2"
|
||||||
|
|
@ -1464,12 +1480,21 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags 2.5.0",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
"futures-util",
|
||||||
"http",
|
"http",
|
||||||
"http-body",
|
"http-body",
|
||||||
"http-body-util",
|
"http-body-util",
|
||||||
|
"http-range-header",
|
||||||
|
"httpdate",
|
||||||
|
"mime",
|
||||||
|
"mime_guess",
|
||||||
|
"percent-encoding",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
"tokio",
|
||||||
|
"tokio-util",
|
||||||
"tower-layer",
|
"tower-layer",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -1548,6 +1573,15 @@ version = "0.2.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicase"
|
||||||
|
version = "2.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
|
||||||
|
dependencies = [
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-bidi"
|
name = "unicode-bidi"
|
||||||
version = "0.3.15"
|
version = "0.3.15"
|
||||||
|
|
@ -1610,6 +1644,12 @@ version = "0.8.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "version_check"
|
||||||
|
version = "0.9.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "want"
|
name = "want"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,5 @@ tracing-subscriber = "0.3.18"
|
||||||
env_logger = "0.11.3"
|
env_logger = "0.11.3"
|
||||||
log = "0.4.21"
|
log = "0.4.21"
|
||||||
dotenv = { version = "0.15.0", features = ["clap"] }
|
dotenv = { version = "0.15.0", features = ["clap"] }
|
||||||
tower-http = "0.5.2"
|
tower-http = {version = "0.5.2", features = ["fs"]}
|
||||||
axum-client-ip = "0.6.0"
|
axum-client-ip = "0.6.0"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
use crate::http_server;
|
use crate::relay::server;
|
||||||
use crate::receiver::receiver;
|
use crate::{
|
||||||
use crate::sender::sender;
|
receiver::receiver,
|
||||||
|
sender::{sender, server::serf_file},
|
||||||
|
};
|
||||||
use clap::{Parser, Subcommand};
|
use clap::{Parser, Subcommand};
|
||||||
use log::debug;
|
use log::debug;
|
||||||
|
|
||||||
|
|
@ -84,6 +86,7 @@ impl Args {
|
||||||
file.as_deref().unwrap_or("test.txt"),
|
file.as_deref().unwrap_or("test.txt"),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
serf_file(file.as_ref().unwrap()).await;
|
||||||
}
|
}
|
||||||
Some(Commands::Receive {
|
Some(Commands::Receive {
|
||||||
relay,
|
relay,
|
||||||
|
|
@ -100,7 +103,7 @@ impl Args {
|
||||||
port,
|
port,
|
||||||
listen_address,
|
listen_address,
|
||||||
}) => {
|
}) => {
|
||||||
http_server::start_server(port.as_ref(), listen_address.as_ref()).await;
|
server::start_server(port.as_ref(), listen_address.as_ref()).await;
|
||||||
}
|
}
|
||||||
Some(Commands::Config {
|
Some(Commands::Config {
|
||||||
path: _,
|
path: _,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
mod cli;
|
mod cli;
|
||||||
mod http_client;
|
mod http_client;
|
||||||
mod http_server;
|
|
||||||
mod receiver;
|
mod receiver;
|
||||||
|
mod relay;
|
||||||
mod sender;
|
mod sender;
|
||||||
mod transfer_info;
|
mod transfer_info;
|
||||||
use crate::cli::args::Args;
|
use crate::cli::args::Args;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
pub mod server;
|
||||||
|
|
@ -1 +1,2 @@
|
||||||
pub mod sender;
|
pub mod sender;
|
||||||
|
pub mod server;
|
||||||
|
|
|
||||||
42
src/sender/server.rs
Normal file
42
src/sender/server.rs
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
use crate::transfer_info::transfer_info::{TransferInfoBody, TransferInfoRequest};
|
||||||
|
use axum::{
|
||||||
|
extract::{connect_info::ConnectInfo, Json, Path, State},
|
||||||
|
http::{self, StatusCode},
|
||||||
|
response::IntoResponse,
|
||||||
|
routing::{get, post},
|
||||||
|
Router,
|
||||||
|
};
|
||||||
|
use std::{env, net::SocketAddr};
|
||||||
|
use tower_http::services::ServeFile;
|
||||||
|
use tracing::debug;
|
||||||
|
|
||||||
|
pub async fn serf_file(path: &String) {
|
||||||
|
debug!("Sender starting...");
|
||||||
|
let app_environemt = env::var("APP_ENVIRONMENT").unwrap_or("development".to_string());
|
||||||
|
let app_host = "0.0.0.0".to_string();
|
||||||
|
let app_port = "1300".to_string();
|
||||||
|
debug!("Server configured to accept connections on host {app_host}...");
|
||||||
|
debug!("Server configured to listen connections on port {app_port}...");
|
||||||
|
|
||||||
|
match app_environemt.as_str() {
|
||||||
|
"development" => {
|
||||||
|
debug!("Running in development mode");
|
||||||
|
}
|
||||||
|
"production" => {
|
||||||
|
debug!("Running in production mode");
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
debug!("Running in development mode");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let app = Router::new().route_service("/download_file", ServeFile::new(path));
|
||||||
|
let listener = tokio::net::TcpListener::bind(format!("{}:{}", app_host, app_port).to_string())
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
axum::serve(
|
||||||
|
listener,
|
||||||
|
app.into_make_service_with_connect_info::<SocketAddr>(),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue