backend: blocked pairing server with duplicate name
This commit is contained in:
@@ -292,7 +292,11 @@ async fn send_client_pairing_secret(
|
|||||||
|
|
||||||
#[craft]
|
#[craft]
|
||||||
impl crate::config::ConfigFile {
|
impl crate::config::ConfigFile {
|
||||||
#[craft(endpoint(status_codes(StatusCode::OK, StatusCode::INTERNAL_SERVER_ERROR)))]
|
#[craft(endpoint(status_codes(
|
||||||
|
StatusCode::OK,
|
||||||
|
StatusCode::BAD_REQUEST,
|
||||||
|
StatusCode::INTERNAL_SERVER_ERROR
|
||||||
|
)))]
|
||||||
pub async fn post_pair(
|
pub async fn post_pair(
|
||||||
self: ::std::sync::Arc<Self>,
|
self: ::std::sync::Arc<Self>,
|
||||||
body: salvo::oapi::extract::JsonBody<PostPairParams>,
|
body: salvo::oapi::extract::JsonBody<PostPairParams>,
|
||||||
@@ -305,6 +309,30 @@ impl crate::config::ConfigFile {
|
|||||||
name: params.name,
|
name: params.name,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let reader = self.read().await;
|
||||||
|
|
||||||
|
let servers = match reader.servers() {
|
||||||
|
Ok(s) => s,
|
||||||
|
Err(e) => {
|
||||||
|
error!("Could not get servers: {e}");
|
||||||
|
return Err(AppError {
|
||||||
|
status_code: StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
|
description: "Pairing failed".to_string(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if servers.contains_key(&server.name) {
|
||||||
|
error!(
|
||||||
|
"Could not pair server with name {}, server with that name already exists.",
|
||||||
|
server.name
|
||||||
|
);
|
||||||
|
return Err(AppError {
|
||||||
|
status_code: StatusCode::BAD_REQUEST,
|
||||||
|
description: format!("Server with name {} already exists.", server.name),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
let unique_id = match self.read().await.unique_id() {
|
let unique_id = match self.read().await.unique_id() {
|
||||||
Ok(u) => u,
|
Ok(u) => u,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user