diff --git a/rust/crates/zaprett/src/service.rs b/rust/crates/zaprett/src/service.rs index fa377b2..10425d4 100644 --- a/rust/crates/zaprett/src/service.rs +++ b/rust/crates/zaprett/src/service.rs @@ -8,12 +8,12 @@ use nix::sys::signal::{Signal, kill}; use nix::unistd::{Pid, Uid}; use regex::Regex; use std::borrow::Cow; +use std::io::ErrorKind; +use std::path::Path; use sysctl::{Ctl, CtlValue, Sysctl}; use sysinfo::{Pid as SysPid, System}; use tokio::fs; -use tokio::fs::File; use tokio::io::AsyncReadExt; -use std::path::Path; pub async fn start_service() -> anyhow::Result<()> { if !Uid::effective().is_root() { @@ -32,14 +32,26 @@ pub async fn start_service() -> anyhow::Result<()> { fs::create_dir_all(&tmp_dir).await?; } + let config_path = ZAPRETT_DIR_PATH.join("config.json"); let mut config_contents = String::new(); - File::open(ZAPRETT_DIR_PATH.join("config.json")) - .await - .expect("cannot open config.json") - .read_to_string(&mut config_contents) - .await?; - let config: Config = serde_json::from_str(&config_contents).expect("invalid json"); + match fs::File::open(&config_path).await { + Ok(mut file) => { + file.read_to_string(&mut config_contents).await?; + } + Err(e) if e.kind() == ErrorKind::NotFound => { + let default_config = Config::default(); + let json = serde_json::to_string_pretty(&default_config)?; + if let Some(parent) = config_path.parent() { + fs::create_dir_all(parent).await?; + } + fs::write(&config_path, &json).await?; + config_contents = json; + } + Err(e) => return Err(e.into()), + } + + let config: Config = serde_json::from_str(&config_contents)?; let start = fs::read_to_string(config.strategy()) .await diff --git a/src/com/META-INF/google/android/update-binary b/src/META-INF/com/google/android/update-binary similarity index 100% rename from src/com/META-INF/google/android/update-binary rename to src/META-INF/com/google/android/update-binary diff --git a/src/com/META-INF/google/android/updater-script b/src/META-INF/com/google/android/updater-script similarity index 100% rename from src/com/META-INF/google/android/updater-script rename to src/META-INF/com/google/android/updater-script diff --git a/src/customize.sh b/src/customize.sh index ec02a70..66cc53b 100644 --- a/src/customize.sh +++ b/src/customize.sh @@ -17,23 +17,6 @@ unzip -o "$ZIPFILE" -x 'META-INF/*' -d $MODPATH >&2 ui_print "Creating zaprett directory..." mkdir /sdcard/zaprett; mkdir /sdcard/zaprett/lists; mkdir /sdcard/zaprett/bin; mkdir /sdcard/zaprett/strategies; -ui_print "Filling configuration file if not exist..." -if [ ! -f "/sdcard/zaprett/config.json" ]; then - cat > /sdcard/zaprett/config.json << EOL - { - "active_lists": ["/sdcard/zaprett/lists/include/list-youtube.txt", "/sdcard/zaprett/lists/include/list-discord.txt"], - "active_ipsets": [], - "active_exclude_lists": [], - "active_exclude_ipsets": [], - "list_type": "whitelist", - "strategy": "", - "app_list": "whitelist", - "whitelist": [], - "blacklist": [] - } -EOL -fi - ui_print "Copying lists and binaries to /sdcard/zaprett..." cp -r $MODPATH/system/etc/zaprett/. /sdcard/zaprett/