1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use clap::{Args, ValueEnum};
use serde::Deserialize;
#[derive(Default, ValueEnum, Deserialize, Clone, Debug)]
pub enum Profile {
Info,
#[default]
Normal,
Intrusive,
Passive,
Full,
}
#[derive(Deserialize, Debug, Default)]
#[serde(default)]
pub struct Config {
pub file: std::path::PathBuf,
pub verbosity: Verbosity,
pub profile: Profile,
pub passive_include: Vec<String>,
pub passive_exclude: Vec<String>,
pub active_include: Vec<String>,
pub active_exclude: Vec<String>,
pub servers_override: Vec<String>,
pub security: Vec<Auth>,
pub ignore_tls_errors: bool,
pub no_color: bool,
}
#[derive(ValueEnum, Deserialize, Clone, Debug, Default, PartialOrd, PartialEq)]
pub enum Verbosity {
Quiet,
#[default]
Normal,
Verbose,
Debug,
}
#[derive(Args, Deserialize, Debug, Clone)]
pub struct Auth {
#[arg(long = "type", value_enum)]
auth_type: AuthType,
#[arg(long = "value")]
auth_value: String,
#[arg(long = "scope")]
auth_scope: Option<String>,
}
#[derive(ValueEnum, Deserialize, Clone, Debug)]
pub enum AuthType {
Basic,
Bearer,
Header,
Cookie,
}