diff --git a/Cargo.lock b/Cargo.lock index d1becc18..426bcdce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1027,7 +1027,7 @@ dependencies = [ [[package]] name = "ffplayout-api" -version = "0.4.1" +version = "0.4.2" dependencies = [ "actix-multipart", "actix-web", diff --git a/ffplayout-api/Cargo.toml b/ffplayout-api/Cargo.toml index 39ac5720..156e6192 100644 --- a/ffplayout-api/Cargo.toml +++ b/ffplayout-api/Cargo.toml @@ -4,7 +4,7 @@ description = "Rest API for ffplayout" license = "GPL-3.0" authors = ["Jonathan Baecker jonbae77@gmail.com"] readme = "README.md" -version = "0.4.1" +version = "0.4.2" edition = "2021" [dependencies] diff --git a/ffplayout-api/src/utils/args_parse.rs b/ffplayout-api/src/utils/args_parse.rs index 9a7e1d7d..0b3a70f2 100644 --- a/ffplayout-api/src/utils/args_parse.rs +++ b/ffplayout-api/src/utils/args_parse.rs @@ -14,6 +14,9 @@ pub struct Args { #[clap(short, long, help = "Initialize Database")] pub init: bool, + #[clap(short, long, help = "domain name for initialization")] + pub domain: Option, + #[clap(short, long, help = "Create admin user")] pub username: Option, diff --git a/ffplayout-api/src/utils/handles.rs b/ffplayout-api/src/utils/handles.rs index fcf44453..a8d31429 100644 --- a/ffplayout-api/src/utils/handles.rs +++ b/ffplayout-api/src/utils/handles.rs @@ -81,7 +81,7 @@ async fn create_schema() -> Result { result } -pub async fn db_init() -> Result<&'static str, Box> { +pub async fn db_init(domain: Option) -> Result<&'static str, Box> { let db_path = db_path()?; if !Sqlite::database_exists(&db_path).await.unwrap_or(false) { @@ -99,6 +99,11 @@ pub async fn db_init() -> Result<&'static str, Box> { let instances = db_connection().await?; + let url = match domain { + Some(d) => format!("http://{d}/live/stream.m3u8"), + None => "http://localhost/live/stream.m3u8".to_string(), + }; + let query = "CREATE TRIGGER global_row_count BEFORE INSERT ON global WHEN (SELECT COUNT(*) FROM global) >= 1 @@ -107,8 +112,7 @@ pub async fn db_init() -> Result<&'static str, Box> { END; INSERT INTO global(secret) VALUES($1); INSERT INTO settings(channel_name, preview_url, config_path, extra_extensions, timezone, service) - VALUES('Channel 1', 'http://localhost/live/preview.m3u8', - '/etc/ffplayout/ffplayout.yml', 'jpg,jpeg,png', 'UTC', 'ffplayout.service'); + VALUES('Channel 1', $2, '/etc/ffplayout/ffplayout.yml', 'jpg,jpeg,png', 'UTC', 'ffplayout.service'); INSERT INTO roles(name) VALUES('admin'), ('user'), ('guest'); INSERT INTO presets(name, text, x, y, fontsize, line_spacing, fontcolor, box, boxcolor, boxborderw, alpha, channel_id) VALUES('Default', 'Wellcome to ffplayout messenger!', '(w-text_w)/2', '(h-text_h)/2', '24', '4', '#ffffff@0xff', '0', '#000000@0x80', '4', '1.0', '1'), @@ -117,7 +121,11 @@ pub async fn db_init() -> Result<&'static str, Box> { '1', '#000000@0x80', '4', 'ifnot(ld(1),st(1,t));if(lt(t,ld(1)+1),0,if(lt(t,ld(1)+2),(t-(ld(1)+1))/1,if(lt(t,ld(1)+8),1,if(lt(t,ld(1)+9),(1-(t-(ld(1)+8)))/1,0))))', '1'), ('Scrolling Text', 'We have a very important announcement to make.', 'ifnot(ld(1),st(1,t));if(lt(t,ld(1)+1),w+4,w-w/12*mod(t-ld(1),12*(w+tw)/w))', '(h-line_h)*0.9', '24', '4', '#ffffff', '1', '#000000@0x80', '4', '1.0', '1');"; - sqlx::query(query).bind(secret).execute(&instances).await?; + sqlx::query(query) + .bind(secret) + .bind(url) + .execute(&instances) + .await?; instances.close().await; Ok("Database initialized!") diff --git a/ffplayout-api/src/utils/mod.rs b/ffplayout-api/src/utils/mod.rs index fa8171b5..0615695b 100644 --- a/ffplayout-api/src/utils/mod.rs +++ b/ffplayout-api/src/utils/mod.rs @@ -99,7 +99,7 @@ pub async fn run_args(mut args: Args) -> Result<(), i32> { } if args.init { - if let Err(e) = db_init().await { + if let Err(e) = db_init(args.domain).await { panic!("{e}"); }; diff --git a/lib/src/utils/mod.rs b/lib/src/utils/mod.rs index fc5ee454..5a78ed58 100644 --- a/lib/src/utils/mod.rs +++ b/lib/src/utils/mod.rs @@ -564,10 +564,7 @@ fn is_in_system(name: &str) -> Result<(), String> { fn ffmpeg_libs() -> Result, String> { let mut libs: Vec = vec![]; - let mut ff_proc = match Command::new("ffmpeg") - .stderr(Stdio::piped()) - .spawn() - { + let mut ff_proc = match Command::new("ffmpeg").stderr(Stdio::piped()).spawn() { Err(e) => { return Err(format!("couldn't spawn ffmpeg process: {e}")); }