This commit is contained in:
naskya 2024-07-01 11:02:19 +09:00
parent 988688c8d9
commit 9a891a5126
Signed by: naskya
GPG key ID: 712D413B3A9FED5C

View file

@ -250,7 +250,9 @@ async fn read_old_config(base_dir: &Path) -> Result<(HashMap<String, Yaml>, Meta
.ok_or(Error::InvalidConfig("db.host"))?, .ok_or(Error::InvalidConfig("db.host"))?,
db.get(&Yaml::String("port".to_string())) db.get(&Yaml::String("port".to_string()))
.and_then(|v| v.as_i64()) .and_then(|v| v.as_i64())
.ok_or(Error::InvalidConfig("db.port"))? as u16, .ok_or(Error::InvalidConfig("db.port"))?
.try_into()
.map_err(|_| Error::InvalidConfig("Invalid `db.port` number"))?,
db.get(&Yaml::String("user".to_string())) db.get(&Yaml::String("user".to_string()))
.and_then(|v| v.as_str()) .and_then(|v| v.as_str())
.ok_or(Error::InvalidConfig("db.user"))?, .ok_or(Error::InvalidConfig("db.user"))?,
@ -311,9 +313,13 @@ fn create_new_server_config(
let id = id.as_hash().ok_or(Error::InvalidConfig("cuid"))?; let id = id.as_hash().ok_or(Error::InvalidConfig("cuid"))?;
Some(server::Id { Some(server::Id {
length: match id.get(&Yaml::String("length".to_string())) { length: match id.get(&Yaml::String("length".to_string())) {
Some(length) => { Some(length) => Some(
Some(length.as_i64().ok_or(Error::InvalidConfig("cuid.length"))? as u8) length
} .as_i64()
.ok_or(Error::InvalidConfig("cuid.length"))?
.try_into()
.map_err(|_| Error::InvalidConfig("Invalid `cuid.length` number"))?,
),
None => None, None => None,
}, },
fingerprint: match id.get(&Yaml::String("fingerprint".to_string())) { fingerprint: match id.get(&Yaml::String("fingerprint".to_string())) {
@ -342,7 +348,9 @@ fn create_new_server_config(
.as_i64() .as_i64()
.ok_or(Error::InvalidConfig("`maxFileSize` is not an integer"))? .ok_or(Error::InvalidConfig("`maxFileSize` is not an integer"))?
/ 1_000_000; / 1_000_000;
file.max_size = Some(max_size_mb as u64); file.max_size = Some(max_size_mb.try_into().map_err(|_| {
Error::InvalidConfig("Invalid `maxFileSize` number (negative or too big)")
})?);
} }
if let Some(proxy_remote_files) = default_yml.get("proxyRemoteFiles") { if let Some(proxy_remote_files) = default_yml.get("proxyRemoteFiles") {
let proxy_remote_files = proxy_remote_files.as_bool().ok_or(Error::InvalidConfig( let proxy_remote_files = proxy_remote_files.as_bool().ok_or(Error::InvalidConfig(
@ -424,7 +432,7 @@ fn create_new_server_config(
None => None, None => None,
}; };
let mut server_config = server::Config { let server_config = server::Config {
config_revision: Revision::V1, config_revision: Revision::V1,
server_info: Some(server::ServerInfo { server_info: Some(server::ServerInfo {
name: meta.name.to_owned(), name: meta.name.to_owned(),
@ -456,7 +464,9 @@ fn create_new_server_config(
port: default_yml port: default_yml
.get("port") .get("port")
.and_then(|v| v.as_i64()) .and_then(|v| v.as_i64())
.ok_or(Error::InvalidConfig("port"))? as u16, .ok_or(Error::InvalidConfig("port"))?
.try_into()
.map_err(|_| Error::InvalidConfig("Invalid `port` number"))?,
}, },
http_proxy, http_proxy,
media_proxy, media_proxy,
@ -472,7 +482,9 @@ fn create_new_server_config(
port: db port: db
.get(&Yaml::String("port".to_string())) .get(&Yaml::String("port".to_string()))
.and_then(|v| v.as_i64()) .and_then(|v| v.as_i64())
.ok_or(Error::InvalidConfig("db.port"))? as u16, .ok_or(Error::InvalidConfig("db.port"))?
.try_into()
.map_err(|_| Error::InvalidConfig("Invalid `db.port` number"))?,
user: db user: db
.get(&Yaml::String("user".to_string())) .get(&Yaml::String("user".to_string()))
.and_then(|v| v.as_str()) .and_then(|v| v.as_str())
@ -498,7 +510,9 @@ fn create_new_server_config(
port: redis port: redis
.get(&Yaml::String("port".to_string())) .get(&Yaml::String("port".to_string()))
.and_then(|v| v.as_i64()) .and_then(|v| v.as_i64())
.ok_or(Error::InvalidConfig("redis.port"))? as u16, .ok_or(Error::InvalidConfig("redis.port"))?
.try_into()
.map_err(|_| Error::InvalidConfig("Invalid `redis.port` number"))?,
user: match redis.get(&Yaml::String("user".to_string())) { user: match redis.get(&Yaml::String("user".to_string())) {
Some(user) => Some( Some(user) => Some(
user.as_str() user.as_str()
@ -516,7 +530,12 @@ fn create_new_server_config(
None => None, None => None,
}, },
index: match redis.get(&Yaml::String("db".to_string())) { index: match redis.get(&Yaml::String("db".to_string())) {
Some(db) => Some(db.as_i64().ok_or(Error::InvalidConfig("redis.db"))? as u8), Some(db) => Some(
db.as_i64()
.ok_or(Error::InvalidConfig("redis.db"))?
.try_into()
.map_err(|_| Error::InvalidConfig("Invalid `redis.db` number"))?,
),
None => None, None => None,
}, },
prefix: match redis.get(&Yaml::String("prefix".to_string())) { prefix: match redis.get(&Yaml::String("prefix".to_string())) {