From e1e32a22b03983a38e6d8fd35807fde6636e05d9 Mon Sep 17 00:00:00 2001 From: Ethan O'Brien Date: Wed, 10 Jul 2024 22:40:19 -0500 Subject: [PATCH] Correct placement of config.json file --- src/main.rs | 13 ++++++++++++- src/router/webui.rs | 4 ++-- src/sql.rs | 5 +---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 24d7219..69b8284 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,6 +17,7 @@ use actix_web::{ use crate::router::global; use json::JsonValue; use clap::Parser; +use std::fs; fn unhandled(req: HttpRequest, body: String) -> Option { if body != String::new() { @@ -221,6 +222,16 @@ pub fn get_args() -> Args { Args::parse() } +pub fn get_data_path(file_name: &str) -> String { + let args = get_args(); + let mut path = args.path; + while path.ends_with("/") { + path.pop(); + } + fs::create_dir_all(&path).unwrap(); + format!("{}/{}", path, file_name) +} + #[actix_web::main] async fn main() -> std::io::Result<()> { let args = get_args(); @@ -239,7 +250,7 @@ async fn main() -> std::io::Result<()> { println!("Server started: http://0.0.0.0:{}", port); println!("Data path is set to {}", args.path); - println!("Sif1 transfer requests will attempt to contact NPPS4 at {}", host); + println!("Sif1 transfer requests will attempt to contact NPPS4 at {}", args.npps4); if args.https { println!("Note: gree is set to https mode. http requests will fail on jp clients."); diff --git a/src/router/webui.rs b/src/router/webui.rs index b532760..813aeac 100644 --- a/src/router/webui.rs +++ b/src/router/webui.rs @@ -17,7 +17,7 @@ fn get_config() -> JsonValue { import: true, export: true }; - let contents = fs::read_to_string("config.json").unwrap_or(String::from("aaaaaaaaaaaaaaaaa")); + let contents = fs::read_to_string(crate::get_data_path("config.json")).unwrap_or(String::from("aaaaaaaaaaaaaaaaa")); let mut rv = json::parse(&contents).unwrap_or(def.clone()); for val in def.entries() { if rv[val.0] == JsonValue::Null { @@ -32,7 +32,7 @@ fn save_config(val: String) { for vall in new.entries() { current[vall.0] = vall.1.clone(); } - let mut f = File::create("config.json").unwrap(); + let mut f = File::create(crate::get_data_path("config.json")).unwrap(); f.write_all(json::stringify(current).as_bytes()).unwrap(); } diff --git a/src/sql.rs b/src/sql.rs index 9cc038a..c580112 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -1,7 +1,6 @@ use rusqlite::{Connection, params, ToSql}; use std::sync::Mutex; use json::{JsonValue, array}; -use std::fs; use crate::router::clear_rate::Live; @@ -12,9 +11,7 @@ pub struct SQLite { impl SQLite { pub fn new(path: &str, setup: fn(&SQLite)) -> SQLite { - let args = crate::get_args(); - fs::create_dir_all(&args.path).unwrap(); - let conn = Connection::open(format!("{}/{}", args.path, path)).unwrap(); + let conn = Connection::open(crate::get_data_path(path)).unwrap(); conn.execute("PRAGMA foreign_keys = ON;", ()).unwrap(); let instance = SQLite { engine: Mutex::new(conn),