This commit is contained in:
naskya 2024-07-01 10:47:13 +09:00
parent 528d725cf8
commit 770b488a91
Signed by: naskya
GPG key ID: 712D413B3A9FED5C
2 changed files with 33 additions and 3 deletions

View file

@ -364,6 +364,36 @@ fn create_new_server_config(
} }
}; };
let http_proxy_bypass_hosts = match default_yml.get("proxyBypassHosts") {
Some(hosts) => Some(
hosts
.as_vec()
.ok_or(Error::InvalidConfig("proxyBypassHosts is not an array"))?
.iter()
.map(|host| {
host.as_str()
.ok_or(Error::InvalidConfig(
"proxyBypassHosts contains non-string items",
))
.map(|s| s.to_owned())
})
.collect::<Result<Vec<String>, Error>>()?,
),
None => None,
};
let http_proxy = match default_yml.get("proxyUrl") {
Some(url) => Some(server::Proxy {
enabled: true,
url: url
.as_str()
.ok_or(Error::InvalidConfig("proxyUrl is not a string"))?
.to_string(),
bypass_hosts: http_proxy_bypass_hosts,
}),
None => None,
};
let mut server_config = server::Config { let mut server_config = server::Config {
config_revision: Revision::V1, config_revision: Revision::V1,
server_info: Some(server::ServerInfo { server_info: Some(server::ServerInfo {
@ -373,7 +403,7 @@ fn create_new_server_config(
contact_info: meta.maintainer_email.to_owned(), contact_info: meta.maintainer_email.to_owned(),
open_registrations: !meta.disable_registration, open_registrations: !meta.disable_registration,
repository_url, repository_url,
default_reaction: meta.default_reaction.to_owned(), default_reaction: Some(meta.default_reaction.to_owned()),
}), }),
timeline: Some(server::Timeline { timeline: Some(server::Timeline {
local: !meta.disable_local_timeline, local: !meta.disable_local_timeline,
@ -398,7 +428,7 @@ fn create_new_server_config(
.and_then(|v| v.as_i64()) .and_then(|v| v.as_i64())
.ok_or(Error::InvalidConfig("port"))? as u16, .ok_or(Error::InvalidConfig("port"))? as u16,
}, },
http_proxy: todo!(), http_proxy,
media_proxy: todo!(), media_proxy: todo!(),
summaly_proxy: todo!(), summaly_proxy: todo!(),
smtp_proxy: todo!(), smtp_proxy: todo!(),

View file

@ -59,7 +59,7 @@ pub struct Proxy {
pub enabled: bool, pub enabled: bool,
#[validate(url)] #[validate(url)]
pub url: String, pub url: String,
pub allowlist: Option<Vec<String>>, pub bypass_hosts: Option<Vec<String>>,
} }
#[derive(Deserialize, Serialize, Validate, Debug, Clone)] #[derive(Deserialize, Serialize, Validate, Debug, Clone)]