aboutsummaryrefslogtreecommitdiff
path: root/zenserver
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-03-21 12:42:45 +0100
committerDan Engelbrecht <[email protected]>2022-03-21 12:42:45 +0100
commitd35df614722024ccdb746332eceda2b7a6cd0b80 (patch)
tree57203b27fd9fd76a62b066140a0a7cf307012eb4 /zenserver
parentMissing return statement in websocket.h (diff)
downloadzen-d35df614722024ccdb746332eceda2b7a6cd0b80.tar.xz
zen-d35df614722024ccdb746332eceda2b7a6cd0b80.zip
clang-format
Diffstat (limited to 'zenserver')
-rw-r--r--zenserver/compute/apply.cpp8
-rw-r--r--zenserver/frontend/frontend.cpp108
-rw-r--r--zenserver/frontend/frontend.h12
-rw-r--r--zenserver/frontend/zipfs.cpp151
-rw-r--r--zenserver/frontend/zipfs.h16
-rw-r--r--zenserver/zenserver.cpp2
6 files changed, 151 insertions, 146 deletions
diff --git a/zenserver/compute/apply.cpp b/zenserver/compute/apply.cpp
index 044078aa4..694e9f662 100644
--- a/zenserver/compute/apply.cpp
+++ b/zenserver/compute/apply.cpp
@@ -174,10 +174,10 @@ SandboxedFunctionJob::GrantNamedObjectAccess(PWSTR ObjectName, SE_OBJECT_TYPE Ob
.grfAccessMode = GRANT_ACCESS,
.grfInheritance = grfInhericance,
.Trustee = {.pMultipleTrustee = nullptr,
- .MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE,
- .TrusteeForm = TRUSTEE_IS_SID,
- .TrusteeType = TRUSTEE_IS_GROUP,
- .ptstrName = (PWSTR)m_AppContainerSid}};
+ .MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE,
+ .TrusteeForm = TRUSTEE_IS_SID,
+ .TrusteeType = TRUSTEE_IS_GROUP,
+ .ptstrName = (PWSTR)m_AppContainerSid}};
PACL OldAcl = nullptr;
diff --git a/zenserver/frontend/frontend.cpp b/zenserver/frontend/frontend.cpp
index b87d7e313..6d576876f 100644
--- a/zenserver/frontend/frontend.cpp
+++ b/zenserver/frontend/frontend.cpp
@@ -15,15 +15,16 @@ ZEN_THIRD_PARTY_INCLUDES_END
namespace zen {
//////////////////////////////////////////////////////////////////////////
-static IoBuffer FindZipFsInBinary(const IoBuffer& BinBuffer)
+static IoBuffer
+FindZipFsInBinary(const IoBuffer& BinBuffer)
{
if (BinBuffer.GetSize() < 4)
{
return {};
}
- uintptr_t Cursor = uintptr_t(BinBuffer.GetData());
- size_t BinSize = 0;
+ uintptr_t Cursor = uintptr_t(BinBuffer.GetData());
+ size_t BinSize = 0;
uint32_t Magic = *(uint32_t*)(BinBuffer.GetData());
#if ZEN_PLATFORM_LINUX
@@ -31,35 +32,35 @@ static IoBuffer FindZipFsInBinary(const IoBuffer& BinBuffer)
{
struct Elf64Header
{
- char Ident[16];
- uint16_t Type;
- uint16_t Machine;
- uint32_t Version;
- uint64_t Entry;
- uint64_t ProgHeaderOffset;
- uint64_t SectionHeaderOffset;
- uint32_t Flags;
- uint16_t EhSize;
- uint16_t ProgHeaderEntrySize;
- uint16_t ProgHeaderCount;
- uint16_t SectionHeaderEntrySize;
- uint16_t SectionHeaderCount;
- uint16_t SectionStringIndex;
+ char Ident[16];
+ uint16_t Type;
+ uint16_t Machine;
+ uint32_t Version;
+ uint64_t Entry;
+ uint64_t ProgHeaderOffset;
+ uint64_t SectionHeaderOffset;
+ uint32_t Flags;
+ uint16_t EhSize;
+ uint16_t ProgHeaderEntrySize;
+ uint16_t ProgHeaderCount;
+ uint16_t SectionHeaderEntrySize;
+ uint16_t SectionHeaderCount;
+ uint16_t SectionStringIndex;
};
struct SectionHeader
{
- uint32_t NameIndex;
- uint32_t Type;
- uint64_t Flags;
- uint64_t Address;
- uint64_t Offset;
- uint64_t Size;
- uint64_t _Other[3];
+ uint32_t NameIndex;
+ uint32_t Type;
+ uint64_t Flags;
+ uint64_t Address;
+ uint64_t Offset;
+ uint64_t Size;
+ uint64_t _Other[3];
};
const auto* Elf = (Elf64Header*)Cursor;
- if (Elf->Ident[4] != 0x02) // Elf64
+ if (Elf->Ident[4] != 0x02) // Elf64
{
return {};
}
@@ -76,21 +77,21 @@ static IoBuffer FindZipFsInBinary(const IoBuffer& BinBuffer)
*/
// What if the section headers aren't the last thing in the fiile though?
- BinSize = Elf->SectionHeaderEntrySize;
+ BinSize = Elf->SectionHeaderEntrySize;
BinSize *= Elf->SectionHeaderCount;
BinSize += Elf->SectionHeaderOffset;
}
#elif ZEN_PLATFORM_WINDOWS
if ((Magic & 0xffff) == 0x5a4d)
{
- const auto* Dos = (IMAGE_DOS_HEADER*)Cursor;
- const auto* Nt = (IMAGE_NT_HEADERS64*)(Cursor + Dos->e_lfanew);
+ const auto* Dos = (IMAGE_DOS_HEADER*)Cursor;
+ const auto* Nt = (IMAGE_NT_HEADERS64*)(Cursor + Dos->e_lfanew);
const auto* Section = (IMAGE_SECTION_HEADER*)(uintptr_t(&Nt->OptionalHeader) + Nt->FileHeader.SizeOfOptionalHeader);
for (int i = 0, n = Nt->FileHeader.NumberOfSections; i < n; ++i, ++Section)
{
uint32_t SectionEnd = Section->PointerToRawData + Section->SizeOfRawData;
- BinSize = (SectionEnd > BinSize) ? SectionEnd : BinSize;
+ BinSize = (SectionEnd > BinSize) ? SectionEnd : BinSize;
}
}
#elif ZEN_PLATFORM_MAC
@@ -98,35 +99,35 @@ static IoBuffer FindZipFsInBinary(const IoBuffer& BinBuffer)
{
struct MachInt32
{
- operator uint32_t () const { return ByteSwap(Value); }
- uint32_t Value;
+ operator uint32_t() const { return ByteSwap(Value); }
+ uint32_t Value;
};
struct MachFatArch
{
- MachInt32 CpuType;
- MachInt32 SubType;
- MachInt32 Offset;
- MachInt32 Size;
- MachInt32 Alignment;
+ MachInt32 CpuType;
+ MachInt32 SubType;
+ MachInt32 Offset;
+ MachInt32 Size;
+ MachInt32 Alignment;
};
struct MachFatHeader
{
uint32_t Magic;
MachInt32 NumArchs;
- MachFatArch Archs[];
+ MachFatArch Archs[];
};
const auto* Header = (MachFatHeader*)Cursor;
for (int i = 0, n = Header->NumArchs; i < n; ++i)
{
- const MachFatArch* Arch = Header->Archs + i;
- uint32_t ArchEnd = Arch->Offset + Arch->Size;
- BinSize = (ArchEnd > BinSize) ? ArchEnd : BinSize;
+ const MachFatArch* Arch = Header->Archs + i;
+ uint32_t ArchEnd = Arch->Offset + Arch->Size;
+ BinSize = (ArchEnd > BinSize) ? ArchEnd : BinSize;
}
}
-#endif // win/linux/mac
+#endif // win/linux/mac
if (!BinSize || BinSize > BinBuffer.GetSize())
{
@@ -137,13 +138,12 @@ static IoBuffer FindZipFsInBinary(const IoBuffer& BinBuffer)
}
////////////////////////////////////////////////////////////////////////////////
-HttpFrontendService::HttpFrontendService(std::filesystem::path Directory)
-: m_Directory(Directory)
+HttpFrontendService::HttpFrontendService(std::filesystem::path Directory) : m_Directory(Directory)
{
std::filesystem::path SelfPath = GetRunningExecutablePath();
// Locate a .zip file appended onto the end of this binary
- IoBuffer SelfBuffer = IoBufferBuilder::MakeFromFile(SelfPath);
+ IoBuffer SelfBuffer = IoBufferBuilder::MakeFromFile(SelfPath);
IoBuffer SelfTailBuffer = FindZipFsInBinary(SelfBuffer);
if (SelfTailBuffer)
{
@@ -193,7 +193,8 @@ HttpFrontendService::HandleRequest(zen::HttpServerRequest& Request)
using namespace std::literals;
std::string_view Uri = Request.RelativeUri();
- for (; Uri[0] == '/'; Uri = Uri.substr(1));
+ for (; Uri[0] == '/'; Uri = Uri.substr(1))
+ ;
if (Uri.empty())
{
Uri = "index.html"sv;
@@ -209,15 +210,20 @@ HttpFrontendService::HandleRequest(zen::HttpServerRequest& Request)
// Map the file extension to a MIME type. To keep things constrained, only a
// small subset of file extensions is allowed.
HttpContentType ContentType = HttpContentType::kCOUNT;
- size_t DotIndex = Uri.rfind(".");
+ size_t DotIndex = Uri.rfind(".");
if (DotIndex != Uri.npos)
{
const std::string_view DotExt = Uri.substr(DotIndex);
- if (DotExt == ".html") ContentType = HttpContentType::kHTML;
- else if (DotExt == ".js") ContentType = HttpContentType::kJSON;
- else if (DotExt == ".css") ContentType = HttpContentType::kCSS;
- else if (DotExt == ".png") ContentType = HttpContentType::kPNG;
- else if (DotExt == ".ico") ContentType = HttpContentType::kIcon;
+ if (DotExt == ".html")
+ ContentType = HttpContentType::kHTML;
+ else if (DotExt == ".js")
+ ContentType = HttpContentType::kJSON;
+ else if (DotExt == ".css")
+ ContentType = HttpContentType::kCSS;
+ else if (DotExt == ".png")
+ ContentType = HttpContentType::kPNG;
+ else if (DotExt == ".ico")
+ ContentType = HttpContentType::kIcon;
}
if (ContentType == HttpContentType::kCOUNT)
diff --git a/zenserver/frontend/frontend.h b/zenserver/frontend/frontend.h
index bf5298169..6eac20620 100644
--- a/zenserver/frontend/frontend.h
+++ b/zenserver/frontend/frontend.h
@@ -12,14 +12,14 @@ namespace zen {
class HttpFrontendService final : public zen::HttpService
{
public:
- HttpFrontendService(std::filesystem::path Directory);
- virtual ~HttpFrontendService();
- virtual const char* BaseUri() const override;
- virtual void HandleRequest(zen::HttpServerRequest& Request) override;
+ HttpFrontendService(std::filesystem::path Directory);
+ virtual ~HttpFrontendService();
+ virtual const char* BaseUri() const override;
+ virtual void HandleRequest(zen::HttpServerRequest& Request) override;
private:
- ZipFs m_ZipFs;
- std::filesystem::path m_Directory;
+ ZipFs m_ZipFs;
+ std::filesystem::path m_Directory;
};
} // namespace zen
diff --git a/zenserver/frontend/zipfs.cpp b/zenserver/frontend/zipfs.cpp
index 5fb9d0177..91c6629a0 100644
--- a/zenserver/frontend/zipfs.cpp
+++ b/zenserver/frontend/zipfs.cpp
@@ -12,83 +12,84 @@ namespace {
# pragma warning(disable : 4200)
#endif
-using ZipInt16 = uint16_t;
+ using ZipInt16 = uint16_t;
-struct ZipInt32
-{
- operator uint32_t () const { return *(uint32_t*)Parts; }
- uint16_t Parts[2];
-};
-
-struct EocdRecord
-{
- enum : uint32_t {
- Magic = 0x0605'4b50,
+ struct ZipInt32
+ {
+ operator uint32_t() const { return *(uint32_t*)Parts; }
+ uint16_t Parts[2];
};
- ZipInt32 Signature;
- ZipInt16 ThisDiskIndex;
- ZipInt16 CdStartDiskIndex;
- ZipInt16 CdRecordThisDiskCount;
- ZipInt16 CdRecordCount;
- ZipInt32 CdSize;
- ZipInt32 CdOffset;
- ZipInt16 CommentSize;
- char Comment[];
-};
-
-struct CentralDirectoryRecord
-{
- enum : uint32_t {
- Magic = 0x0201'4b50,
+
+ struct EocdRecord
+ {
+ enum : uint32_t
+ {
+ Magic = 0x0605'4b50,
+ };
+ ZipInt32 Signature;
+ ZipInt16 ThisDiskIndex;
+ ZipInt16 CdStartDiskIndex;
+ ZipInt16 CdRecordThisDiskCount;
+ ZipInt16 CdRecordCount;
+ ZipInt32 CdSize;
+ ZipInt32 CdOffset;
+ ZipInt16 CommentSize;
+ char Comment[];
};
- ZipInt32 Signature;
- ZipInt16 VersionMadeBy;
- ZipInt16 VersionRequired;
- ZipInt16 Flags;
- ZipInt16 CompressionMethod;
- ZipInt16 LastModTime;
- ZipInt16 LastModDate;
- ZipInt32 Crc32;
- ZipInt32 CompressedSize;
- ZipInt32 OriginalSize;
- ZipInt16 FileNameLength;
- ZipInt16 ExtraFieldLength;
- ZipInt16 CommentLength;
- ZipInt16 DiskIndex;
- ZipInt16 InternalFileAttr;
- ZipInt32 ExternalFileAttr;
- ZipInt32 Offset;
- char FileName[];
-};
-
-struct LocalFileHeader
-{
- enum : uint32_t {
- Magic = 0x0304'4b50,
+ struct CentralDirectoryRecord
+ {
+ enum : uint32_t
+ {
+ Magic = 0x0201'4b50,
+ };
+
+ ZipInt32 Signature;
+ ZipInt16 VersionMadeBy;
+ ZipInt16 VersionRequired;
+ ZipInt16 Flags;
+ ZipInt16 CompressionMethod;
+ ZipInt16 LastModTime;
+ ZipInt16 LastModDate;
+ ZipInt32 Crc32;
+ ZipInt32 CompressedSize;
+ ZipInt32 OriginalSize;
+ ZipInt16 FileNameLength;
+ ZipInt16 ExtraFieldLength;
+ ZipInt16 CommentLength;
+ ZipInt16 DiskIndex;
+ ZipInt16 InternalFileAttr;
+ ZipInt32 ExternalFileAttr;
+ ZipInt32 Offset;
+ char FileName[];
};
- ZipInt32 Signature;
- ZipInt16 VersionRequired;
- ZipInt16 Flags;
- ZipInt16 CompressionMethod;
- ZipInt16 LastModTime;
- ZipInt16 LastModDate;
- ZipInt32 Crc32;
- ZipInt32 CompressedSize;
- ZipInt32 OriginalSize;
- ZipInt16 FileNameLength;
- ZipInt16 ExtraFieldLength;
- char FileName[];
-};
+ struct LocalFileHeader
+ {
+ enum : uint32_t
+ {
+ Magic = 0x0304'4b50,
+ };
+
+ ZipInt32 Signature;
+ ZipInt16 VersionRequired;
+ ZipInt16 Flags;
+ ZipInt16 CompressionMethod;
+ ZipInt16 LastModTime;
+ ZipInt16 LastModDate;
+ ZipInt32 Crc32;
+ ZipInt32 CompressedSize;
+ ZipInt32 OriginalSize;
+ ZipInt16 FileNameLength;
+ ZipInt16 ExtraFieldLength;
+ char FileName[];
+ };
#if ZEN_COMPILER_MSC
# pragma warning(pop)
#endif
-} // namespace
-
-
+} // namespace
//////////////////////////////////////////////////////////////////////////
ZipFs::ZipFs(IoBuffer&& Buffer)
@@ -102,7 +103,7 @@ ZipFs::ZipFs(IoBuffer&& Buffer)
}
const auto* EocdCursor = (EocdRecord*)(Cursor - sizeof(EocdRecord));
-
+
// It is more correct to search backwards for EocdRecord::Magic as the
// comment can be of a variable length. But here we're not going to support
// zip files with comments.
@@ -138,19 +139,20 @@ ZipFs::ZipFs(IoBuffer&& Buffer)
}
uint32_t ExtraBytes = Cd.FileNameLength + Cd.ExtraFieldLength + Cd.CommentLength;
- CdCursor = (CentralDirectoryRecord*)(Cd.FileName + ExtraBytes);
+ CdCursor = (CentralDirectoryRecord*)(Cd.FileName + ExtraBytes);
}
-
+
m_Buffer = std::move(Buffer);
}
//////////////////////////////////////////////////////////////////////////
-IoBuffer ZipFs::GetFile(const std::string_view& FileName) const
+IoBuffer
+ZipFs::GetFile(const std::string_view& FileName) const
{
FileMap::iterator Iter = m_Files.find(FileName);
if (Iter == m_Files.end())
{
- return{};
+ return {};
}
FileItem& Item = Iter->second;
@@ -160,11 +162,8 @@ IoBuffer ZipFs::GetFile(const std::string_view& FileName) const
}
const auto* Lfh = (LocalFileHeader*)(Item.GetData());
- Item = MemoryView(
- Lfh->FileName + Lfh->FileNameLength + Lfh->ExtraFieldLength,
- Lfh->OriginalSize
- );
+ Item = MemoryView(Lfh->FileName + Lfh->FileNameLength + Lfh->ExtraFieldLength, Lfh->OriginalSize);
return IoBuffer(IoBuffer::Wrap, Item.GetData(), Item.GetSize());
}
-} // namespace zen
+} // namespace zen
diff --git a/zenserver/frontend/zipfs.h b/zenserver/frontend/zipfs.h
index a304e9ff5..b877e278e 100644
--- a/zenserver/frontend/zipfs.h
+++ b/zenserver/frontend/zipfs.h
@@ -10,15 +10,15 @@ namespace zen {
class ZipFs
{
public:
- ZipFs() = default;
- ZipFs(IoBuffer&& Buffer);
- IoBuffer GetFile(const std::string_view& FileName) const;
+ ZipFs() = default;
+ ZipFs(IoBuffer&& Buffer);
+ IoBuffer GetFile(const std::string_view& FileName) const;
private:
- using FileItem = MemoryView;
- using FileMap = std::unordered_map<std::string_view, FileItem>;
- FileMap mutable m_Files;
- IoBuffer m_Buffer;
+ using FileItem = MemoryView;
+ using FileMap = std::unordered_map<std::string_view, FileItem>;
+ FileMap mutable m_Files;
+ IoBuffer m_Buffer;
};
-} // namespace zen
+} // namespace zen
diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp
index bed60a82a..d8e97b117 100644
--- a/zenserver/zenserver.cpp
+++ b/zenserver/zenserver.cpp
@@ -106,8 +106,8 @@ ZEN_THIRD_PARTY_INCLUDES_END
#include "cache/structuredcachestore.h"
#include "compute/apply.h"
#include "diag/diagsvcs.h"
-#include "frontend/frontend.h"
#include "experimental/usnjournal.h"
+#include "frontend/frontend.h"
#include "monitoring/httpstats.h"
#include "monitoring/httpstatus.h"
#include "projectstore.h"