diff --git a/Cargo.lock b/Cargo.lock index 33074194..eb26d743 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -244,9 +244,9 @@ dependencies = [ [[package]] name = "actix-web-grants" -version = "4.0.1" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ac7af52ea0b1ae7b9381ae82a0831614b42cd8ccd1e7e45c5fc5eac355fffc" +checksum = "cf5941a5bdf4cc022ca7721dae70d9818d7b13f93040b0543cb901410c8d3172" dependencies = [ "actix-web", "protect-endpoints-proc-macro", @@ -354,9 +354,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", @@ -374,30 +374,30 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -526,7 +526,7 @@ dependencies = [ "futures-lite 2.1.0", "parking", "polling 3.3.1", - "rustix 0.38.26", + "rustix 0.38.28", "slab", "tracing", "windows-sys 0.52.0", @@ -823,9 +823,9 @@ checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" [[package]] name = "clap" -version = "4.4.10" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -833,9 +833,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.9" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -1072,9 +1072,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" dependencies = [ "powerfmt", ] @@ -1226,14 +1226,14 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ffplayout" -version = "0.20.1" +version = "0.20.2" dependencies = [ "chrono", "clap", "crossbeam-channel", "ffplayout-lib", "futures", - "itertools 0.12.0", + "itertools", "notify", "notify-debouncer-full", "rand", @@ -1248,7 +1248,7 @@ dependencies = [ [[package]] name = "ffplayout-api" -version = "0.20.1" +version = "0.20.2" dependencies = [ "actix-files", "actix-multipart", @@ -1287,7 +1287,7 @@ dependencies = [ [[package]] name = "ffplayout-lib" -version = "0.20.1" +version = "0.20.2" dependencies = [ "chrono", "crossbeam-channel", @@ -1342,14 +1342,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall", + "windows-sys 0.52.0", ] [[package]] @@ -1677,9 +1677,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1837,15 +1837,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.0" @@ -1857,9 +1848,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" @@ -2113,9 +2104,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", @@ -2299,9 +2290,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "paris" @@ -2333,7 +2324,7 @@ checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall", "smallvec", "windows-targets 0.48.5", ] @@ -2482,7 +2473,7 @@ dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite", - "rustix 0.38.26", + "rustix 0.38.28", "tracing", "windows-sys 0.52.0", ] @@ -2510,9 +2501,9 @@ dependencies = [ [[package]] name = "protect-endpoints-proc-macro" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bdc4e4341d7f37ab1c1fdbfb266060734a832695d0ef5306f5a3f9a19fac26" +checksum = "dfff647917bb00f5e9c57a5c15d95db74db5387139ac03052358e38462c86a76" dependencies = [ "darling", "proc-macro2", @@ -2594,15 +2585,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -2689,9 +2671,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.6" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", "getrandom", @@ -2773,9 +2755,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.26" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ "bitflags 2.4.1", "errno", @@ -2786,9 +2768,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring", @@ -2817,9 +2799,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -3091,11 +3073,11 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" dependencies = [ - "itertools 0.11.0", + "itertools", "nom", "unicode_categories", ] @@ -3409,8 +3391,8 @@ checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand 2.0.1", - "redox_syscall 0.4.1", - "rustix 0.38.26", + "redox_syscall", + "rustix 0.38.28", "windows-sys 0.48.0", ] @@ -3425,7 +3407,7 @@ dependencies = [ [[package]] name = "tests" -version = "0.20.1" +version = "0.20.2" dependencies = [ "chrono", "crossbeam-channel", @@ -3528,9 +3510,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", @@ -3631,9 +3613,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -3652,9 +3634,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" @@ -4048,18 +4030,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.28" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e" +checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.28" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b" +checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 6c579d06..dd6370cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ default-members = ["ffplayout-api", "ffplayout-engine", "tests"] resolver = "2" [workspace.package] -version = "0.20.1" +version = "0.20.2" license = "GPL-3.0" repository = "https://github.com/ffplayout/ffplayout" authors = ["Jonathan Baecker "] diff --git a/ffplayout-api/src/api/routes.rs b/ffplayout-api/src/api/routes.rs index 4c575d4e..5966055e 100644 --- a/ffplayout-api/src/api/routes.rs +++ b/ffplayout-api/src/api/routes.rs @@ -32,6 +32,7 @@ use regex::Regex; use serde::{Deserialize, Serialize}; use simplelog::*; use sqlx::{Pool, Sqlite}; +use tokio::task; use crate::db::{ handles, @@ -160,41 +161,46 @@ pub async fn login(pool: web::Data>, credentials: web::Json) let conn = pool.into_inner(); match handles::select_login(&conn, &credentials.username).await { Ok(mut user) => { - let pass = user.password.clone(); - let hash = PasswordHash::new(&pass).unwrap(); - user.password = "".into(); - user.salt = None; + let role = handles::select_role(&conn, &user.role_id.unwrap_or_default()) + .await + .unwrap_or(Role::Guest); - if Argon2::default() - .verify_password(credentials.password.as_bytes(), &hash) - .is_ok() - { - let role = handles::select_role(&conn, &user.role_id.unwrap_or_default()) - .await - .unwrap_or(Role::Guest); - let claims = Claims::new(user.id, user.username.clone(), role.clone()); + task::spawn_blocking(move || { + let pass = user.password.clone(); + let hash = PasswordHash::new(&pass).unwrap(); + user.password = "".into(); - if let Ok(token) = create_jwt(claims) { - user.token = Some(token); - }; + if Argon2::default() + .verify_password(credentials.password.as_bytes(), &hash) + .is_ok() + { + let claims = Claims::new(user.id, user.username.clone(), role.clone()); - info!("user {} login, with role: {role}", credentials.username); + if let Ok(token) = create_jwt(claims) { + user.token = Some(token); + }; - web::Json(UserObj { - message: "login correct!".into(), - user: Some(user), - }) - .customize() - .with_status(StatusCode::OK) - } else { - error!("Wrong password for {}!", credentials.username); - web::Json(UserObj { - message: "Wrong password!".into(), - user: None, - }) - .customize() - .with_status(StatusCode::FORBIDDEN) - } + info!("user {} login, with role: {role}", credentials.username); + + web::Json(UserObj { + message: "login correct!".into(), + user: Some(user), + }) + .customize() + .with_status(StatusCode::OK) + } else { + error!("Wrong password for {}!", credentials.username); + + web::Json(UserObj { + message: "Wrong password!".into(), + user: None, + }) + .customize() + .with_status(StatusCode::FORBIDDEN) + } + }) + .await + .unwrap() } Err(e) => { error!("Login {} failed! {e}", credentials.username); @@ -307,7 +313,7 @@ async fn update_user( .hash_password(data.password.clone().as_bytes(), &salt) .unwrap(); - fields.push_str(format!("password = '{password_hash}', salt = '{salt}'").as_str()); + fields.push_str(format!("password = '{password_hash}'").as_str()); } if handles::update_user(&pool.into_inner(), *id, fields) diff --git a/ffplayout-api/src/db/handles.rs b/ffplayout-api/src/db/handles.rs index 04eefbdd..7bbf6846 100644 --- a/ffplayout-api/src/db/handles.rs +++ b/ffplayout-api/src/db/handles.rs @@ -8,6 +8,7 @@ use argon2::{ use rand::{distributions::Alphanumeric, Rng}; use simplelog::*; use sqlx::{migrate::MigrateDatabase, sqlite::SqliteQueryResult, Pool, Sqlite}; +use tokio::task; use crate::db::{ db_pool, @@ -63,7 +64,6 @@ async fn create_schema(conn: &Pool) -> Result, id: &i32) -> Result, user: &str) -> Result { - let query = "SELECT id, mail, username, password, salt, role_id FROM user WHERE username = $1"; + let query = "SELECT id, mail, username, password, role_id FROM user WHERE username = $1"; sqlx::query_as(query).bind(user).fetch_one(conn).await } @@ -244,19 +244,23 @@ pub async fn insert_user( conn: &Pool, user: User, ) -> Result { - let salt = SaltString::generate(&mut OsRng); - let password_hash = Argon2::default() - .hash_password(user.password.clone().as_bytes(), &salt) - .unwrap(); + let password_hash = task::spawn_blocking(move || { + let salt = SaltString::generate(&mut OsRng); + let hash = Argon2::default() + .hash_password(user.password.clone().as_bytes(), &salt) + .unwrap(); - let query = - "INSERT INTO user (mail, username, password, salt, role_id) VALUES($1, $2, $3, $4, $5)"; + hash.to_string() + }) + .await + .unwrap(); + + let query = "INSERT INTO user (mail, username, password, role_id) VALUES($1, $2, $3, $4)"; sqlx::query(query) .bind(user.mail) .bind(user.username) - .bind(password_hash.to_string()) - .bind(salt.to_string()) + .bind(password_hash) .bind(user.role_id) .execute(conn) .await diff --git a/ffplayout-api/src/db/models.rs b/ffplayout-api/src/db/models.rs index 770df0c0..de1993ce 100644 --- a/ffplayout-api/src/db/models.rs +++ b/ffplayout-api/src/db/models.rs @@ -18,9 +18,6 @@ pub struct User { pub password: String, #[sqlx(default)] #[serde(skip_serializing)] - pub salt: Option, - #[sqlx(default)] - #[serde(skip_serializing)] pub role_id: Option, #[sqlx(default)] #[serde(skip_serializing)] diff --git a/ffplayout-api/src/utils/mod.rs b/ffplayout-api/src/utils/mod.rs index 0d1ab880..2e0785c3 100644 --- a/ffplayout-api/src/utils/mod.rs +++ b/ffplayout-api/src/utils/mod.rs @@ -240,7 +240,6 @@ pub async fn run_args() -> Result<(), i32> { mail: Some(args.mail.unwrap()), username: username.clone(), password: args.password.unwrap(), - salt: None, role_id: Some(1), channel_id: Some(1), token: None, diff --git a/ffplayout-engine/src/input/playlist.rs b/ffplayout-engine/src/input/playlist.rs index ba7978d0..1a5a58ba 100644 --- a/ffplayout-engine/src/input/playlist.rs +++ b/ffplayout-engine/src/input/playlist.rs @@ -601,7 +601,7 @@ pub fn gen_source( trace!("Clip out: {duration}, duration: {}", node.duration); - if node.probe.is_none() { + if node.probe.is_none() && !node.source.is_empty() { node.add_probe(true); } else { trace!("Node has a probe...") @@ -622,7 +622,7 @@ pub fn gen_source( } } else { trace!( - "clip index: {:?} | last index: {:?}", + "clip index: {} | last index: {}", node.index.unwrap_or_default(), last_index ); @@ -718,7 +718,7 @@ pub fn gen_source( } } Err(e) => { - error!("{e:?}"); + error!("{e}"); // Create colored placeholder. let (source, cmd) = gen_dummy(config, duration); diff --git a/ffplayout-frontend b/ffplayout-frontend index fdba746e..e060cbe8 160000 --- a/ffplayout-frontend +++ b/ffplayout-frontend @@ -1 +1 @@ -Subproject commit fdba746ea34aaeda78800138471415f0636e786a +Subproject commit e060cbe885a961f295fb4f6f12bc2c86b5f94192 diff --git a/lib/src/utils/json_validate.rs b/lib/src/utils/json_validate.rs index 47e11bc5..8a45ed58 100644 --- a/lib/src/utils/json_validate.rs +++ b/lib/src/utils/json_validate.rs @@ -13,8 +13,9 @@ use simplelog::*; use crate::filter::FilterType::Audio; use crate::utils::{ - errors::ProcError, loop_image, sec_to_time, seek_and_length, vec_strings, JsonPlaylist, Media, - OutputMode::Null, PlayerControl, PlayoutConfig, FFMPEG_IGNORE_ERRORS, IMAGE_FORMAT, + errors::ProcError, is_close, loop_image, sec_to_time, seek_and_length, vec_strings, + JsonPlaylist, Media, OutputMode::Null, PlayerControl, PlayoutConfig, FFMPEG_IGNORE_ERRORS, + IMAGE_FORMAT, }; /// Validate a single media file. @@ -190,6 +191,21 @@ pub fn validate_playlist( list.iter_mut().for_each(|o| { if o.source == item.source { o.probe = item.probe.clone(); + + if let Some(dur) = + item.probe.as_ref().and_then(|f| f.format.duration.clone()) + { + let probe_duration = dur.parse().unwrap_or_default(); + + if !is_close(o.duration, probe_duration, 1.2) { + error!( + "File duration differs from playlist value. File duration: {}, playlist value: {}, source {}", + sec_to_time(o.duration), sec_to_time(probe_duration), o.source + ); + + o.duration = probe_duration; + } + } } if o.audio == item.audio && item.probe_audio.is_some() { o.probe_audio = item.probe_audio.clone(); diff --git a/lib/src/utils/logging.rs b/lib/src/utils/logging.rs index e24c4c02..789c5aef 100644 --- a/lib/src/utils/logging.rs +++ b/lib/src/utils/logging.rs @@ -57,7 +57,7 @@ pub fn send_mail(cfg: &PlayoutConfig, msg: String) { // Send the mail if let Err(e) = mailer.send(&mail) { - error!("Could not send mail: {:?}", e); + error!("Could not send mail: {e}"); } } else { error!("Mail Message failed!"); diff --git a/lib/src/utils/mod.rs b/lib/src/utils/mod.rs index a2eff630..6497456b 100644 --- a/lib/src/utils/mod.rs +++ b/lib/src/utils/mod.rs @@ -133,7 +133,7 @@ impl Media { .parse() .unwrap_or_default(); } - Err(e) => error!("{e:?}"), + Err(e) => error!("{e}"), } } @@ -178,7 +178,7 @@ impl Media { } } } - Err(e) => error!("{e:?}"), + Err(e) => error!("{e}"), }; if check_audio && Path::new(&self.audio).is_file() { @@ -194,7 +194,7 @@ impl Media { .unwrap_or_default() } } - Err(e) => error!("{e:?}"), + Err(e) => error!("{e}"), } } } @@ -272,7 +272,13 @@ impl MediaProbe { video_streams: v_stream, }) } - Err(e) => Err(ProcError::Ffprobe(e)), + Err(e) => { + if !Path::new(input).is_file() { + Err(ProcError::Custom(format!("File '{input}' not exist!"))) + } else { + Err(ProcError::Ffprobe(e)) + } + } } } } @@ -768,7 +774,7 @@ fn ffmpeg_filter_and_libs(config: &mut PlayoutConfig) -> Result<(), String> { } if let Err(e) = ff_proc.wait() { - error!("{:?}", e) + error!("{e}") }; Ok(()) diff --git a/scripts/build.sh b/scripts/build.sh index 5c403003..8904a6aa 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -74,10 +74,10 @@ for target in "${targets[@]}"; do done if [[ "${#targets[@]}" == "3" ]] || [[ $targets == "x86_64-unknown-linux-musl" ]]; then - cargo deb --target=x86_64-unknown-linux-musl -p ffplayout --manifest-path=ffplayout-engine/Cargo.toml -o ffplayout_${version}_amd64.deb + cargo deb --target=x86_64-unknown-linux-musl -p ffplayout --manifest-path=ffplayout-engine/Cargo.toml -o ffplayout_${version}-1_amd64.deb cargo generate-rpm --payload-compress none --target=x86_64-unknown-linux-musl -p ffplayout-engine -o ffplayout-${version}-1.x86_64.rpm fi if [[ "${#targets[@]}" == "3" ]] || [[ $targets == "aarch64-unknown-linux-gnu" ]]; then - cargo deb --target=aarch64-unknown-linux-gnu --variant=arm64 -p ffplayout --manifest-path=ffplayout-engine/Cargo.toml -o ffplayout_${version}_arm64.deb + cargo deb --target=aarch64-unknown-linux-gnu --variant=arm64 -p ffplayout --manifest-path=ffplayout-engine/Cargo.toml -o ffplayout_${version}-1_arm64.deb fi