settings.rs
1 /* This file is part of DarkFi (https://dark.fi) 2 * 3 * Copyright (C) 2020-2025 Dyne.org foundation 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU Affero General Public License as 7 * published by the Free Software Foundation, either version 3 of the 8 * License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Affero General Public License for more details. 14 * 15 * You should have received a copy of the GNU Affero General Public License 16 * along with this program. If not, see <https://www.gnu.org/licenses/>. 17 */ 18 19 use structopt::StructOpt; 20 use structopt_toml::{serde::Deserialize, StructOptToml}; 21 22 use darkfi::{ 23 cli_desc, dht::DhtSettingsOpt, net::settings::SettingsOpt, rpc::settings::RpcSettingsOpt, 24 }; 25 26 use crate::pow::PowSettingsOpt; 27 28 pub const CONFIG_FILE: &str = "fud_config.toml"; 29 pub const CONFIG_FILE_CONTENTS: &str = include_str!("../fud_config.toml"); 30 31 #[derive(Clone, Debug, Deserialize, StructOpt, StructOptToml)] 32 #[serde(default)] 33 #[structopt(name = "fud", about = cli_desc!())] 34 pub struct Args { 35 #[structopt(short, parse(from_occurrences))] 36 /// Increase verbosity (-vvv supported) 37 pub verbose: u8, 38 39 #[structopt(short, long)] 40 /// Configuration file to use 41 pub config: Option<String>, 42 43 #[structopt(long)] 44 /// Set log file path to output daemon logs into 45 pub log: Option<String>, 46 47 #[structopt(long, default_value = "~/.local/share/darkfi/fud")] 48 /// Base directory for filesystem storage 49 pub base_dir: String, 50 51 #[structopt(short, long)] 52 /// Default path to store downloaded files (defaults to <base_dir>/downloads) 53 pub downloads_path: Option<String>, 54 55 #[structopt(long, default_value = "60")] 56 /// Chunk transfer timeout in seconds 57 pub chunk_timeout: u64, 58 59 #[structopt(flatten)] 60 /// Network settings 61 pub net: SettingsOpt, 62 63 #[structopt(flatten)] 64 /// JSON-RPC settings 65 pub rpc: RpcSettingsOpt, 66 67 #[structopt(flatten)] 68 /// DHT settings 69 pub dht: DhtSettingsOpt, 70 71 #[structopt(flatten)] 72 /// PoW settings 73 pub pow: PowSettingsOpt, 74 }