From 962aa31eac93aa5828d7844fe9f11db57c817dfa Mon Sep 17 00:00:00 2001 From: zwiterrion Date: Mon, 10 Mar 2025 13:21:08 +0100 Subject: [PATCH] fix #814 --- cli/src/commands/cms.rs | 10 +++++----- cli/src/commands/environments.rs | 16 ++++------------ cli/src/commands/watch.rs | 12 ++++++++---- cli/src/models/folder.rs | 4 ++-- cli/src/utils.rs | 7 +++++++ 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/cli/src/commands/cms.rs b/cli/src/commands/cms.rs index 3a7856350..89d341752 100644 --- a/cli/src/commands/cms.rs +++ b/cli/src/commands/cms.rs @@ -21,7 +21,7 @@ use crate::{ }, models::folder::{Ext, SourceExtension}, process, - utils::absolute_path, + utils::{absolute_path, new_custom_ini_file}, CmsCommands, Commands, }; @@ -319,7 +319,7 @@ fn get_home() -> DaikokuResult { } fn read(last_attempt: bool) -> DaikokuResult { - let mut config = Ini::new(); + let mut config = new_custom_ini_file(); match config.load(&get_path()?) { Ok(_) => Ok(config), @@ -332,7 +332,7 @@ fn read(last_attempt: bool) -> DaikokuResult { } fn remove_cms() -> DaikokuResult<()> { - let mut config = Ini::new(); + let mut config = new_custom_ini_file(); config.clear(); match config.write(&get_path()?) { Ok(_) => { @@ -574,7 +574,7 @@ pub(crate) fn create_api_folder( created.push(item.human_readable_id.clone()); - let mut config: Ini = Ini::new(); + let mut config: Ini = new_custom_ini_file(); config.set(&"default", "id", Some(item._id.clone())); let _ = config.write(file_path.clone().join(".daikoku_data")); @@ -619,7 +619,7 @@ pub(crate) fn create_mail_folder( .clone() .join(get_mail_page_path(&item._id.clone().replace(".", "-"), is_root_mail).unwrap()); - let mut config: Ini = Ini::new(); + let mut config: Ini = new_custom_ini_file(); config.set(&"default", "id", Some(item._id.clone())); diff --git a/cli/src/commands/environments.rs b/cli/src/commands/environments.rs index f6b890f4e..840ab5306 100644 --- a/cli/src/commands/environments.rs +++ b/cli/src/commands/environments.rs @@ -5,7 +5,7 @@ use crate::{ error::{DaikokuCliError, DaikokuResult}, logger, }, - utils::apply_credentials_mask, + utils::{apply_credentials_mask, new_custom_ini_file}, EnvironmentsCommands, }; use configparser::ini::Ini; @@ -71,7 +71,7 @@ fn get_secrets_path() -> DaikokuResult { } fn read_environments() -> DaikokuResult { - let mut config = Ini::new(); + let mut config = new_custom_ini_file(); match config.load(&get_environments_path()?) { Ok(_) => Ok(config), @@ -80,7 +80,7 @@ fn read_environments() -> DaikokuResult { } fn read_secrets() -> DaikokuResult { - let mut config = Ini::new(); + let mut config = new_custom_ini_file(); match config.load(&get_secrets_path()?) { Ok(_) => Ok(config), @@ -252,14 +252,6 @@ async fn configure(apikey: Option, cookie: Option) -> DaikokuRes Ok(()) } -pub(crate) fn format_cookie(str: String) -> String { - if str.starts_with("daikoku-session=") { - str.to_string() - } else { - format!("daikoku-session={}", str) - } -} - pub(crate) fn read_cookie_from_environment(failed_if_not_present: bool) -> DaikokuResult { let config: Ini = read_environments()?; @@ -267,7 +259,7 @@ pub(crate) fn read_cookie_from_environment(failed_if_not_present: bool) -> Daiko let secrets: Ini = read_secrets()?; secrets .get(&environment, "cookie") - .map(|cookie| Ok(format_cookie(cookie))) + .map(Ok) .unwrap_or(if failed_if_not_present { Err(DaikokuCliError::Configuration( "Missing cookie on default environment. Run daikoku login".to_string(), diff --git a/cli/src/commands/watch.rs b/cli/src/commands/watch.rs index e83103dd0..bc8b8d42b 100644 --- a/cli/src/commands/watch.rs +++ b/cli/src/commands/watch.rs @@ -307,8 +307,6 @@ async fn forward_api_call( let status = status.as_u16(); - println!("{:?}", _headers); - if status >= 300 && status < 400 { Ok(Response::new(Full::new(Bytes::from( "Authentication needed! Refresh this page once done", @@ -405,8 +403,14 @@ async fn render_page( let mut builder = reqwest::Client::new() .post(url) .header(header::HOST, host) - .header(header::CONTENT_TYPE, "application/json") - .body(body); + .header(header::CONTENT_TYPE, "application/json"); + + + if let Ok(cookie) = read_cookie_from_environment(false) { + builder = builder.header(header::COOKIE, cookie); + } + + builder = builder.body(body); if authentication && page.authenticated() { match read_cookie_from_environment(true) { diff --git a/cli/src/models/folder.rs b/cli/src/models/folder.rs index 5f07e6c07..6eea36a60 100644 --- a/cli/src/models/folder.rs +++ b/cli/src/models/folder.rs @@ -9,7 +9,7 @@ use std::{ str::FromStr, }; -use crate::logging::error::{DaikokuCliError, DaikokuResult}; +use crate::{logging::error::{DaikokuCliError, DaikokuResult}, utils::new_custom_ini_file}; #[derive(Serialize, Deserialize, Clone, Debug, Default)] pub(crate) struct CmsFile { @@ -158,7 +158,7 @@ fn read_api_folder(path: &PathBuf) -> DaikokuResult> { ".daikoku_data".to_string(), ".metadata".to_string(), ); - let mut data = Ini::new(); + let mut data = new_custom_ini_file(); let data = Ini::read(&mut data, daikoku_data_file.content).map_err(|_err| { DaikokuCliError::FileSystem(format!( "unable to read daikoku_data file in {:#?}", diff --git a/cli/src/utils.rs b/cli/src/utils.rs index ff8727d9d..61ffefa9e 100644 --- a/cli/src/utils.rs +++ b/cli/src/utils.rs @@ -3,6 +3,7 @@ use std::{ path::{Path, PathBuf}, }; +use configparser::ini::{Ini, IniDefault}; use http_body_util::BodyExt; use std::io::Read; @@ -79,3 +80,9 @@ pub(crate) fn apply_credentials_mask(credential: &String, show_full_credentials: credential.as_str()[1..10].to_string() + "*******" } } + +pub(crate) fn new_custom_ini_file() -> Ini { + let mut defaults: IniDefault = Default::default(); + defaults.comment_symbols = vec![]; + Ini::new_from_defaults(defaults) +}