Add geoip config reading

This commit is contained in:
Edward Shen 2021-07-14 22:32:05 -04:00
parent d4d22ec674
commit acf6dc1cb1
Signed by: edward
GPG key ID: 19182661E818369F
2 changed files with 25 additions and 2 deletions

View file

@ -55,6 +55,13 @@ server_settings:
# presence of multiple IPs. # presence of multiple IPs.
# external_ip: ~ # external_ip: ~
# Settings for geo IP analytics
metric_settings:
# Whether to enable geo IP analytics
# enable_geoip: false
# geoip_license_key: none
# These settings are unique to the Rust client, and may be ignored or behave # These settings are unique to the Rust client, and may be ignored or behave
# differently from the official client. # differently from the official client.
extended_options: extended_options:
@ -88,4 +95,4 @@ extended_options:
# when the MD@H program is stopped, all cached files are irrecoverable. # when the MD@H program is stopped, all cached files are irrecoverable.
# Practically speaking, this isn't all too useful (and definitely hurts # Practically speaking, this isn't all too useful (and definitely hurts
# performance), but for peace of mind, this may be useful. # performance), but for peace of mind, this may be useful.
# ephemeral_disk_encryption: false # ephemeral_disk_encryption: false

View file

@ -91,6 +91,7 @@ pub struct Config {
pub unstable_options: Vec<UnstableOptions>, pub unstable_options: Vec<UnstableOptions>,
pub override_upstream: Option<Url>, pub override_upstream: Option<Url>,
pub enable_metrics: bool, pub enable_metrics: bool,
pub geoip_license_key: Option<ClientSecret>,
} }
impl Config { impl Config {
@ -184,6 +185,13 @@ impl Config {
// Unstable options (and related) should never be in yaml config // Unstable options (and related) should never be in yaml config
unstable_options: cli_args.unstable_options, unstable_options: cli_args.unstable_options,
override_upstream: cli_args.override_upstream, override_upstream: cli_args.override_upstream,
geoip_license_key: file_args.metric_settings.and_then(|args| {
if args.enable_geoip.unwrap_or_default() {
args.geoip_license_key
} else {
None
}
}),
} }
} }
} }
@ -230,7 +238,8 @@ struct YamlArgs {
// Naming is legacy // Naming is legacy
max_cache_size_in_mebibytes: Mebibytes, max_cache_size_in_mebibytes: Mebibytes,
server_settings: YamlServerSettings, server_settings: YamlServerSettings,
// This implementation custom options metric_settings: Option<YamlMetricSettings>,
// This implementation's custom options
extended_options: Option<YamlExtendedOptions>, extended_options: Option<YamlExtendedOptions>,
} }
@ -247,6 +256,12 @@ struct YamlServerSettings {
external_ip: Option<IpAddr>, external_ip: Option<IpAddr>,
} }
#[derive(Deserialize)]
struct YamlMetricSettings {
enable_geoip: Option<bool>,
geoip_license_key: Option<ClientSecret>,
}
#[derive(Deserialize, Default)] #[derive(Deserialize, Default)]
struct YamlExtendedOptions { struct YamlExtendedOptions {
memory_quota: Option<Mebibytes>, memory_quota: Option<Mebibytes>,
@ -393,6 +408,7 @@ mod config {
hostname: None, hostname: None,
external_ip: None, external_ip: None,
}, },
metric_settings: None,
extended_options: Some(YamlExtendedOptions { extended_options: Some(YamlExtendedOptions {
memory_quota: Some(Mebibytes::new(50)), memory_quota: Some(Mebibytes::new(50)),
cache_type: Some(CacheType::Lru), cache_type: Some(CacheType::Lru),