Skip to content

Commit

Permalink
馃悰 Fix parsing of log-console and server-tls (#267)
Browse files Browse the repository at this point in the history
  • Loading branch information
mokeyish committed Apr 13, 2024
1 parent fdaee5f commit 020d4dd
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ impl App {
cfg.log_size(),
cfg.log_num(),
cfg.audit_file_mode().into(),
cfg.log_config().console.unwrap_or_default(),
))
} else {
None
Expand Down
3 changes: 3 additions & 0 deletions src/config/log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ use crate::{infra::file_mode::FileMode, third_ext::serde_opt_str};

#[derive(Debug, Default, Serialize, Deserialize)]
pub struct LogConfig {
/// enable output log to console
pub console: Option<bool>,

/// set log level
///
/// log-level [level], level=fatal, error, warn, notice, info, debug
Expand Down
2 changes: 2 additions & 0 deletions src/config/parser/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ pub enum OneConfig {
IgnoreIp(IpNet),
Listener(ListenerConfig),
LocalTtl(u64),
LogConsole(bool),
LogNum(u64),
LogSize(Byte),
LogLevel(Level),
Expand Down Expand Up @@ -190,6 +191,7 @@ pub fn parse_config(input: &str) -> IResult<&str, OneConfig> {
map(parse_item("domain"), OneConfig::Domain),
map(parse_item("hosts-file"), OneConfig::HostsFile),
map(parse_item("local-ttl"), OneConfig::LocalTtl),
map(parse_item("log-console"), OneConfig::LogConsole),
map(parse_item("log-file-mode"), OneConfig::LogFileMode),
map(parse_item("log-file"), OneConfig::LogFile),
map(parse_item("log-filter"), OneConfig::LogFilter),
Expand Down
32 changes: 31 additions & 1 deletion src/config/parser/nameserver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,16 @@ impl NomParser for NameServerInfo {
pair(proto, take_till1(|c: char| c.is_whitespace())),
|(a, b)| {
let url: String = [a, b].concat();
DnsUrl::from_str(&url)
match DnsUrl::from_str(&url) {
Ok(url) => Ok(url),
Err(err) => {
let url: String = [a, "[", b, "]"].concat();
match DnsUrl::from_str(&url) {
Ok(url) => Ok(url),
_ => Err(err),
}
}
}
},
)
};
Expand Down Expand Up @@ -240,6 +249,27 @@ mod tests {
}
))
);

assert_eq!(
NameServerInfo::parse("server-tls 2606:4700:4700::1111"),
Ok((
"",
NameServerInfo {
server: DnsUrl::from_str("tls://[2606:4700:4700::1111]").unwrap(),
group: Default::default(),
blacklist_ip: Default::default(),
whitelist_ip: Default::default(),
check_edns: Default::default(),
exclude_default_group: Default::default(),
proxy: None,
bootstrap_dns: Default::default(),
resolve_group: None,
edns_client_subnet: None,
so_mark: None,
interface: None,
}
))
);
}

#[test]
Expand Down
1 change: 1 addition & 0 deletions src/dns_conf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -772,6 +772,7 @@ impl RuntimeConfigBuilder {
RrTtlReplyMax(v) => self.rr_ttl_reply_max = Some(v),
Listener(listener) => self.listeners.push(listener),
LocalTtl(v) => self.local_ttl = Some(v),
LogConsole(v) => self.log.console = Some(v),
LogNum(v) => self.log.num = Some(v),
LogLevel(v) => self.log.level = Some(v),
LogFile(v) => self.log.file = Some(v),
Expand Down
7 changes: 6 additions & 1 deletion src/log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ pub fn init_global_default<P: AsRef<Path>>(
size: u64,
num: u64,
mode: Option<u32>,
to_console: bool,
) -> DefaultGuard {
let file = MappedFile::open(path.as_ref(), size, Some(num as usize), mode);

Expand All @@ -42,7 +43,11 @@ pub fn init_global_default<P: AsRef<Path>>(
false
});

let console_level = *CONSOLE_LEVEL.get_or_init(|| Level::INFO);
let console_level = if to_console {
level
} else {
*CONSOLE_LEVEL.get_or_init(|| Level::INFO)
};
let console_writer = io::stdout.with_max_level(console_level);

let dispatch = if writable {
Expand Down

0 comments on commit 020d4dd

Please sign in to comment.