From 6c43936e06ccd834a4e69ff59b8327782dcb0a06 Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Tue, 11 Jun 2024 15:40:11 +0200 Subject: workspaces config and fixes (#92) * fix alias request capture * use single config file for workspaces --- src/zenserver/workspaces/httpworkspaces.cpp | 64 ++++++++++++++++++----------- 1 file changed, 40 insertions(+), 24 deletions(-) (limited to 'src/zenserver/workspaces/httpworkspaces.cpp') diff --git a/src/zenserver/workspaces/httpworkspaces.cpp b/src/zenserver/workspaces/httpworkspaces.cpp index 534b72bd5..7242b2fba 100644 --- a/src/zenserver/workspaces/httpworkspaces.cpp +++ b/src/zenserver/workspaces/httpworkspaces.cpp @@ -265,7 +265,15 @@ HttpWorkspacesService::ChunkInfoRequest(HttpRouterRequest& Req) HttpContentType::kText, fmt::format("Invalid share id '{}'", Req.GetCapture(2))); } - ChunkInfoRequest(Req, WorkspaceId, ShareId); + const Oid ChunkId = Oid::TryFromHexString(Req.GetCapture(3)); + if (ChunkId == Oid::Zero) + { + m_WorkspacesStats.BadRequestCount++; + return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, + HttpContentType::kText, + fmt::format("Invalid chunk id '{}'", Req.GetCapture(3))); + } + ChunkInfoRequest(Req, WorkspaceId, ShareId, ChunkId); } void @@ -334,7 +342,15 @@ HttpWorkspacesService::ChunkRequest(HttpRouterRequest& Req) HttpContentType::kText, fmt::format("Invalid share id '{}'", Req.GetCapture(2))); } - ChunkRequest(Req, WorkspaceId, ShareId); + const Oid ChunkId = Oid::TryFromHexString(Req.GetCapture(3)); + if (ChunkId == Oid::Zero) + { + m_WorkspacesStats.BadRequestCount++; + return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, + HttpContentType::kText, + fmt::format("Invalid chunk id '{}'", Req.GetCapture(3))); + } + ChunkRequest(Req, WorkspaceId, ShareId, ChunkId); } void @@ -507,7 +523,15 @@ HttpWorkspacesService::ShareAliasChunkInfoRequest(HttpRouterRequest& Req) { return ServerRequest.WriteResponse(HttpResponseCode::NotFound); } - ChunkInfoRequest(Req, WorkspaceAndShareId.value().WorkspaceId, WorkspaceAndShareId.value().ShareId); + const Oid ChunkId = Oid::TryFromHexString(Req.GetCapture(2)); + if (ChunkId == Oid::Zero) + { + m_WorkspacesStats.BadRequestCount++; + return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, + HttpContentType::kText, + fmt::format("Invalid chunk id '{}'", Req.GetCapture(2))); + } + ChunkInfoRequest(Req, WorkspaceAndShareId.value().WorkspaceId, WorkspaceAndShareId.value().ShareId, ChunkId); } void @@ -564,7 +588,15 @@ HttpWorkspacesService::ShareAliasChunkRequest(HttpRouterRequest& Req) { return ServerRequest.WriteResponse(HttpResponseCode::NotFound); } - ChunkRequest(Req, WorkspaceAndShareId.value().WorkspaceId, WorkspaceAndShareId.value().ShareId); + const Oid ChunkId = Oid::TryFromHexString(Req.GetCapture(2)); + if (ChunkId == Oid::Zero) + { + m_WorkspacesStats.BadRequestCount++; + return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, + HttpContentType::kText, + fmt::format("Invalid chunk id '{}'", Req.GetCapture(2))); + } + ChunkRequest(Req, WorkspaceAndShareId.value().WorkspaceId, WorkspaceAndShareId.value().ShareId, ChunkId); } void @@ -671,18 +703,10 @@ HttpWorkspacesService::FilesRequest(HttpRouterRequest& Req, const Oid& Workspace } void -HttpWorkspacesService::ChunkInfoRequest(HttpRouterRequest& Req, const Oid& WorkspaceId, const Oid& ShareId) +HttpWorkspacesService::ChunkInfoRequest(HttpRouterRequest& Req, const Oid& WorkspaceId, const Oid& ShareId, const Oid& ChunkId) { - HttpServerRequest& ServerRequest = Req.ServerRequest(); - const Oid ChunkId = Oid::TryFromHexString(Req.GetCapture(3)); - if (ChunkId == Oid::Zero) - { - m_WorkspacesStats.BadRequestCount++; - return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, - HttpContentType::kText, - fmt::format("Invalid chunk id '{}'", Req.GetCapture(3))); - } - Workspaces::ShareFile File = m_Workspaces.GetWorkspaceShareChunkInfo(WorkspaceId, ShareId, ChunkId, GetSmallWorkerPool()); + HttpServerRequest& ServerRequest = Req.ServerRequest(); + Workspaces::ShareFile File = m_Workspaces.GetWorkspaceShareChunkInfo(WorkspaceId, ShareId, ChunkId, GetSmallWorkerPool()); if (File.Id != Oid::Zero) { CbObjectWriter Response; @@ -836,17 +860,9 @@ HttpWorkspacesService::EntriesRequest(HttpRouterRequest& Req, const Oid& Workspa } void -HttpWorkspacesService::ChunkRequest(HttpRouterRequest& Req, const Oid& WorkspaceId, const Oid& ShareId) +HttpWorkspacesService::ChunkRequest(HttpRouterRequest& Req, const Oid& WorkspaceId, const Oid& ShareId, const Oid& ChunkId) { HttpServerRequest& ServerRequest = Req.ServerRequest(); - const Oid ChunkId = Oid::TryFromHexString(Req.GetCapture(3)); - if (ChunkId == Oid::Zero) - { - m_WorkspacesStats.BadRequestCount++; - return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, - HttpContentType::kText, - fmt::format("Invalid chunk id '{}'", Req.GetCapture(3))); - } uint64_t Offset = 0; uint64_t Size = ~(0ull); -- cgit v1.2.3