aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/workspaces/httpworkspaces.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-06-11 15:40:11 +0200
committerGitHub Enterprise <[email protected]>2024-06-11 15:40:11 +0200
commit6c43936e06ccd834a4e69ff59b8327782dcb0a06 (patch)
tree61815fbbe350e7ea0ffed65e64e342e50c0abce7 /src/zenserver/workspaces/httpworkspaces.cpp
parent5.5.3-pre0 (diff)
downloadzen-6c43936e06ccd834a4e69ff59b8327782dcb0a06.tar.xz
zen-6c43936e06ccd834a4e69ff59b8327782dcb0a06.zip
workspaces config and fixes (#92)
* fix alias request capture * use single config file for workspaces
Diffstat (limited to 'src/zenserver/workspaces/httpworkspaces.cpp')
-rw-r--r--src/zenserver/workspaces/httpworkspaces.cpp64
1 files changed, 40 insertions, 24 deletions
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);