This commit is contained in:
Mateusz Gruszczyński committed 2026-10-07 13:40:21 +02:00
1 parent 3a2eb4fe79
commit e0194fbaff
63 files changed
+1553 -379

No files matched your search

+121
View File
@@ -30,6 +30,51 @@ const BACKEND_TABLE_COLUMNS: &[&str] = &[
"lastFailure",
"lastRecovery",
];
const VHOST_LIST_SORT_COLUMNS: &[&str] = &[
"id",
"hostname",
"status",
"listeners",
"certificate",
"backends",
];
const DOCKER_VHOST_SORT_COLUMNS: &[&str] = &[
"service",
"hostname",
"status",
"backend",
"scheme",
"published",
];
const REDIRECT_LIST_SORT_COLUMNS: &[&str] = &[
"id",
"name",
"hostname",
"status",
"target",
"rules",
"listeners",
"certificate",
];
const NOTFOUND_LIST_SORT_COLUMNS: &[&str] = &[
"id",
"name",
"hostname",
"status",
"mode",
"listeners",
"certificate",
];
const STREAM_LIST_SORT_COLUMNS: &[&str] = &[
"name",
"id",
"protocol",
"listen",
"upstream",
"status",
"maxConnections",
"idleTimeout",
];
const DASHBOARD_WIDGETS: &[&str] = &[
"requests",
"active",
@@ -98,6 +143,21 @@ fn default_backend_table_columns() -> Vec<String> {
fn default_backend_table_sort() -> String {
"vhost".to_owned()
}
fn default_vhost_list_sort() -> String {
"id".to_owned()
}
fn default_docker_vhost_sort() -> String {
"service".to_owned()
}
fn default_redirect_list_sort() -> String {
"id".to_owned()
}
fn default_notfound_list_sort() -> String {
"id".to_owned()
}
fn default_stream_list_sort() -> String {
"name".to_owned()
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
@@ -131,6 +191,26 @@ struct AdminPreferences {
backend_table_sort: String,
#[serde(default)]
backend_table_descending: bool,
#[serde(default = "default_vhost_list_sort")]
vhost_list_sort: String,
#[serde(default)]
vhost_list_descending: bool,
#[serde(default = "default_docker_vhost_sort")]
docker_vhost_sort: String,
#[serde(default)]
docker_vhost_descending: bool,
#[serde(default = "default_redirect_list_sort")]
redirect_list_sort: String,
#[serde(default)]
redirect_list_descending: bool,
#[serde(default = "default_notfound_list_sort")]
notfound_list_sort: String,
#[serde(default)]
notfound_list_descending: bool,
#[serde(default = "default_stream_list_sort")]
stream_list_sort: String,
#[serde(default)]
stream_list_descending: bool,
}
impl Default for AdminPreferences {
@@ -154,6 +234,16 @@ impl Default for AdminPreferences {
backend_table_columns: default_backend_table_columns(),
backend_table_sort: default_backend_table_sort(),
backend_table_descending: false,
vhost_list_sort: default_vhost_list_sort(),
vhost_list_descending: false,
docker_vhost_sort: default_docker_vhost_sort(),
docker_vhost_descending: false,
redirect_list_sort: default_redirect_list_sort(),
redirect_list_descending: false,
notfound_list_sort: default_notfound_list_sort(),
notfound_list_descending: false,
stream_list_sort: default_stream_list_sort(),
stream_list_descending: false,
}
}
}
@@ -323,6 +413,37 @@ fn validate_admin_preferences(preferences: &AdminPreferences) -> Result<(), ApiE
"invalid backend table sort preference".into(),
));
}
for (value, allowed, message) in [
(
&preferences.vhost_list_sort,
VHOST_LIST_SORT_COLUMNS,
"invalid vhost list sort preference",
),
(
&preferences.docker_vhost_sort,
DOCKER_VHOST_SORT_COLUMNS,
"invalid Docker vhost sort preference",
),
(
&preferences.redirect_list_sort,
REDIRECT_LIST_SORT_COLUMNS,
"invalid redirect list sort preference",
),
(
&preferences.notfound_list_sort,
NOTFOUND_LIST_SORT_COLUMNS,
"invalid 404-host sort preference",
),
(
&preferences.stream_list_sort,
STREAM_LIST_SORT_COLUMNS,
"invalid stream list sort preference",
),
] {
if !allowed.contains(&value.as_str()) {
return Err(ApiError(StatusCode::UNPROCESSABLE_ENTITY, message.into()));
}
}
Ok(())
}