From 4f63fcd5d2a6c9fde5925357aaa162810d2e84ef Mon Sep 17 00:00:00 2001 From: Ivan Bushchik Date: Mon, 29 Jan 2024 11:35:48 +0300 Subject: [PATCH] 0.1.4: logging things Signed-off-by: Ivan Bushchik --- Cargo.lock | 2 +- Cargo.toml | 4 ++-- README.md | 4 ++-- src/main.rs | 25 +++++++++++++++++++------ 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 569b2a9..66a0ff5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -320,7 +320,7 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lonelyradio" -version = "0.1.3" +version = "0.1.4" dependencies = [ "chrono", "clap", diff --git a/Cargo.toml b/Cargo.toml index 6bf6e25..d57cfba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "lonelyradio" description = "TCP radio for singles" -version = "0.1.3" +version = "0.1.4" edition = "2021" license = "MIT" authors = [ "Ivan Bushchik " ] @@ -10,7 +10,7 @@ repository = "https://github.com/ivabus/lonelyradio" [dependencies] rand = "0.8.5" clap = { version = "4.4.18", features = [ "derive" ] } -tokio = { version = "1.35.1", features = [ "io-util", "net", "rt-multi-thread", "rt", "macros" ] } +tokio = { version = "1.35.1", features = [ "fs", "io-util", "net", "rt-multi-thread", "rt", "macros" ] } walkdir = "2.4.0" symphonia = { version = "0.5.3", features = [ "all-codecs", "all-formats", "pcm", "symphonia-codec-pcm" ] } samplerate = "0.2.4" diff --git a/README.md b/README.md index a8b610a..e755bcd 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ cargo build -r ## Run ``` -lonelyradio [-a ] +lonelyradio [-a ] [-p] ``` -All files (recursively) will be shuffled and played back. +All files (recursively) will be shuffled and played back. Public log will be displayed to stderr, private to stdout. ### Clients diff --git a/src/main.rs b/src/main.rs index 66f6907..978151b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,11 +19,15 @@ struct Args { dir: PathBuf, #[arg(short, default_value = "0.0.0.0:5894")] address: String, + + #[arg(short, long)] + public_log: bool, } #[tokio::main] async fn main() { let listener = TcpListener::bind(Args::parse().address).await.unwrap(); + loop { let (socket, _) = listener.accept().await.unwrap(); tokio::spawn(stream(socket)); @@ -49,6 +53,7 @@ fn pick_track(tracklist: &Vec) -> &PathBuf { } async fn stream(mut s: TcpStream) { + let args = Args::parse(); let tracklist = walkdir::WalkDir::new(Args::parse().dir) .into_iter() .filter_entry(is_not_hidden) @@ -61,9 +66,19 @@ async fn stream(mut s: TcpStream) { "[{}] {} to {}:{}", Local::now().to_rfc3339(), track.to_str().unwrap(), - s.peer_addr().unwrap().ip().to_string(), + s.peer_addr().unwrap().ip(), s.peer_addr().unwrap().port() ); + + if args.public_log { + eprintln!( + "[{}] {} to {}\nc", + Local::now().to_rfc3339(), + track.to_str().unwrap(), + s.peer_addr().unwrap().port() + ); + } + let file = Box::new(std::fs::File::open(track).unwrap()); let mut hint = Hint::new(); hint.with_extension(track.extension().unwrap().to_str().unwrap()); @@ -123,11 +138,9 @@ async fn stream(mut s: TcpStream) { if result.is_err() { // Socket error -> stop return; - } else { - if result.unwrap() == 0 { - // If socket cannot accept data -> stop - return; - } + } else if result.unwrap() == 0 { + // If socket cannot accept data -> stop + return; } } continue;