summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Kosarek <mattkae@protonmail.com>2021-05-16 19:49:37 -0400
committerMatthew Kosarek <mattkae@protonmail.com>2021-05-16 19:49:37 -0400
commit4941a1874b6ca9d142d94df70b2aec5e0b35b94e (patch)
tree64e0d585420230213bb9eee57f2be0a3325e766d
parent61128756e24e88d84bd77cd4993b5f14284791f0 (diff)
Removed the entirety of the backend
-rw-r--r--backend/Server/Server.sln31
-rw-r--r--backend/Server/Server/Server.vcxproj150
-rw-r--r--backend/Server/Server/Server.vcxproj.filters27
-rw-r--r--backend/Server/Server/Server.vcxproj.user10
-rw-r--r--backend/Server/Server/x64/Debug/Server.Build.CppClean.log0
-rw-r--r--backend/server.cpp407
-rw-r--r--backend/server.objbin2927 -> 0 bytes
-rw-r--r--backend/stringmanip.h27
8 files changed, 0 insertions, 652 deletions
diff --git a/backend/Server/Server.sln b/backend/Server/Server.sln
deleted file mode 100644
index f8ce6ca..0000000
--- a/backend/Server/Server.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30717.126
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Server", "Server\Server.vcxproj", "{9CF802AF-02FE-48AA-9198-1DC6B51817FF}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Debug|x64.ActiveCfg = Debug|x64
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Debug|x64.Build.0 = Debug|x64
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Debug|x86.ActiveCfg = Debug|Win32
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Debug|x86.Build.0 = Debug|Win32
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Release|x64.ActiveCfg = Release|x64
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Release|x64.Build.0 = Release|x64
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Release|x86.ActiveCfg = Release|Win32
- {9CF802AF-02FE-48AA-9198-1DC6B51817FF}.Release|x86.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {AAA96BC8-E6A5-4E6A-8EFA-92ADECB2E8D6}
- EndGlobalSection
-EndGlobal
diff --git a/backend/Server/Server/Server.vcxproj b/backend/Server/Server/Server.vcxproj
deleted file mode 100644
index 0e87860..0000000
--- a/backend/Server/Server/Server.vcxproj
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <VCProjectVersion>16.0</VCProjectVersion>
- <Keyword>Win32Proj</Keyword>
- <ProjectGuid>{9cf802af-02fe-48aa-9198-1dc6b51817ff}</ProjectGuid>
- <RootNamespace>Server</RootNamespace>
- <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="Shared">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\server.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\stringmanip.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/backend/Server/Server/Server.vcxproj.filters b/backend/Server/Server/Server.vcxproj.filters
deleted file mode 100644
index 5026929..0000000
--- a/backend/Server/Server/Server.vcxproj.filters
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\server.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\stringmanip.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/backend/Server/Server/Server.vcxproj.user b/backend/Server/Server/Server.vcxproj.user
deleted file mode 100644
index 6813734..0000000
--- a/backend/Server/Server/Server.vcxproj.user
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LocalDebuggerWorkingDirectory>$(SolutionDir)</LocalDebuggerWorkingDirectory>
- <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
- </PropertyGroup>
- <PropertyGroup>
- <ShowAllFiles>true</ShowAllFiles>
- </PropertyGroup>
-</Project> \ No newline at end of file
diff --git a/backend/Server/Server/x64/Debug/Server.Build.CppClean.log b/backend/Server/Server/x64/Debug/Server.Build.CppClean.log
deleted file mode 100644
index e69de29..0000000
--- a/backend/Server/Server/x64/Debug/Server.Build.CppClean.log
+++ /dev/null
diff --git a/backend/server.cpp b/backend/server.cpp
deleted file mode 100644
index b9d6f1c..0000000
--- a/backend/server.cpp
+++ /dev/null
@@ -1,407 +0,0 @@
-#include <stdio.h>
-#include <wS2tcpip.h>
-#include <string.h>
-#include <assert.h>
-#include <time.h>
-#include "stringmanip.h"
-
-#pragma comment (lib, "ws2_32.lib")
-
-#define WIN32_LEAN_AND_MEAN
-#define PORT 80
-#define NUM_CLIENT_THREADS 8
-
-void handleClient(SOCKET clientSocket);
-DWORD WINAPI runConnection(LPVOID lpParam);
-
-struct ClientConnection {
- bool isActive = false;
- SOCKET clientSocket;
-};
-
-struct ClientConnectionThreadArray {
- ClientConnection connectionList[NUM_CLIENT_THREADS];
- DWORD threadIdArray[NUM_CLIENT_THREADS];
- HANDLE threadArray[NUM_CLIENT_THREADS];
-
- void start() {
- for (int tIdx = 0; tIdx < NUM_CLIENT_THREADS; tIdx++) {
- threadArray[tIdx] = CreateThread(
- NULL,
- 0,
- runConnection,
- &connectionList[tIdx],
- 0,
- &threadIdArray[tIdx]
- );
- }
- }
-
- void run(SOCKET clientSocket) {
- bool found = false;
- while (!found) {
- for (int connIdx = 0; connIdx < NUM_CLIENT_THREADS; connIdx++) {
- if (!connectionList[connIdx].isActive) {
- connectionList[connIdx].clientSocket = clientSocket;
- connectionList[connIdx].isActive = true;
- found = true;
- break;
- }
- }
-
- if (!found) {
- Sleep(50);
- }
- }
- }
-};
-
-int main() {
- // Initializing Winsock
- WSADATA wsaData;
- WORD version = MAKEWORD(2, 2);
-
- int wsOK = WSAStartup(version, &wsaData);
- if (wsOK != 0) {
- printf("Cannot initialize winsock: %d\n", wsOK);
- return EXIT_FAILURE;
- }
-
- // Creating a socket
- SOCKET listeningSocket = socket(AF_INET, SOCK_STREAM, 0);
- if (listeningSocket == INVALID_SOCKET) {
- printf("Cannot create socket\n");
- return EXIT_FAILURE;
- }
-
- // Bind an IP address and port to a socket
- sockaddr_in hint = { 0 };
- hint.sin_family = AF_INET;
- hint.sin_port = htons(PORT); // Networking is big endian, while PCs are little endian
- hint.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
-
- bind(listeningSocket, (sockaddr*)&hint, sizeof(hint));
-
- // Tell Winsock the socket is for listening
- listen(listeningSocket, SOMAXCONN);
-
- ClientConnectionThreadArray threadManager;
- threadManager.start();
-
- while (true) {
-
- // Wait for a connection
- sockaddr_in client;
- int clientSize = sizeof(client);
-
- SOCKET clientSocket = accept(listeningSocket, (sockaddr*)&client, &clientSize);
- if (clientSocket == INVALID_SOCKET) {
- printf("Cannot create the client socket\n");
- return EXIT_FAILURE;
- }
-
- char host[NI_MAXHOST]; // Client's remote name
- char service[NI_MAXSERV]; // Service (i.e. port) the client is connected on
-
- ZeroMemory(host, NI_MAXHOST);
- ZeroMemory(service, NI_MAXSERV);
-
- if (getnameinfo((sockaddr*)&client, sizeof(client), host, NI_MAXHOST, service, NI_MAXSERV, 0) == 0) {
- printf("Host %s connected on port %s\n", host, service);
- } else {
- inet_ntop(AF_INET, &client.sin_addr, host, NI_MAXHOST);
- printf("Host %s connected on port %d\n", host, ntohs(client.sin_port));
- }
-
- threadManager.run(clientSocket);
- }
-
- // Close listening socket
- closesocket(listeningSocket);
-
- // Cleanup winsock
- WSACleanup();
-
- return EXIT_SUCCESS;
-}
-
-enum HttpRequestType {
- HttpRequestType_None,
- HttpRequestType_Get
-};
-
-enum HttpRequestError {
- HttpRequestError_None,
- HttpRequestError_UnsupportedRequest,
- HttpRequestError_NoBuffer,
- HttpRequestError_ClientDisconnect
-};
-
-struct HeaderParseResult {
- HttpRequestType requestType;
- char resource[512];
- HttpRequestError error = HttpRequestError_None;
-};
-
-
-struct HeaderParser {
- char buffer[4096];
- int bufferPtr = 0;
- int bufferSize = 0;
- char line[512];
- int lineIndex = 0 ;
-
- bool tryReadLine() {
- int startIndex = bufferPtr;
- int endIndex = startIndex;
- while (true) {
- if (bufferPtr >= bufferSize) {
- endIndex = bufferPtr;
- break;
- }
-
- if (strncmp(&buffer[bufferPtr], "\r\n", 2) == 0) {
- endIndex = bufferPtr;
- bufferPtr += 2; // Move past the new line character
- break;
- }
-
- bufferPtr++;
- }
-
- int lineLength = endIndex - startIndex;
- if (lineLength == 0) {
- return false;
- }
-
- assert(lineLength < 512 && lineLength > 0);
- strncpy_s(line, &buffer[startIndex], lineLength);
- line[lineLength] = '\0';
- return true;
- }
-
- HeaderParseResult readHeader(SOCKET clientSocket) {
- HeaderParseResult retval;
- ZeroMemory(buffer, 4096);
-
- // Wait for client to send data
- bufferSize = recv(clientSocket, buffer, 4096, 0);
- if (bufferSize == SOCKET_ERROR) {
- printf("Error in receive. Quitting\n");
- retval.error = HttpRequestError_NoBuffer;
- return retval;
- } else if (bufferSize == 0) {
- printf("Client disconnected\n");
- retval.error = HttpRequestError_ClientDisconnect;
- return retval;
- }
-
- printf("Received message (%d bytes): %s", bufferSize, buffer);
-
- while (tryReadLine()) {
- if (lineIndex == 0) {
- // Parse request, only supporting GETs for now
- int linePtr = 0;
- if (strncmp(line, "GET ", 3) == 0) {
- retval.requestType = HttpRequestType_Get;
- linePtr += 4; // Move past teh get
- } else {
- retval.error = HttpRequestError_UnsupportedRequest;
- return retval;
- }
-
- copyUntilStr(retval.resource, &line[linePtr], " ");
- printf("Get request on resource: %s\n", retval.resource);
- }
-
- lineIndex++;
- }
-
- return retval;
- }
-};
-
-enum FileType {
- FileType_None,
- FileType_HTML,
- FileType_CSS,
- FileType_JS
-};
-
-enum HttpStatusCode {
- HttpStatusCode_OK = 200,
- HttpStatusCode_BADREQUEST = 400,
- HttpStatusCode_NOTFOUND = 404
-};
-
-void sendErrorMessage(SOCKET socket, HttpStatusCode status, const char* errorHtml) {
- char timeStr[100];
- char header[512];
-
- ZeroMemory(timeStr, 100);
- ZeroMemory(header, 100);
-
- const char* errorMessage;
- switch (status) {
- case HttpStatusCode_BADREQUEST:
- errorMessage = "Bad Request";
- break;
- case HttpStatusCode_NOTFOUND:
- errorMessage = "Not found";
- break;
- default:
- errorMessage = "Unknown";
- break;
- }
-
- getCurrentDateStr(timeStr);
- int contentLen = strlen(errorHtml);
- sprintf(header, "HTTP/1.1 %d %s\r\nDate: %s\r\nContent-Type: text/html; charset=utf-8\r\nConnection: keep-alive\r\nContent-Length: %d\r\n\r\n", status, errorMessage, timeStr, contentLen);
- send(socket, header, strlen(header), 0);
-
- send(socket, errorHtml, contentLen, 0);
-}
-
-#define MAXBUFLEN 1000000
-
-int readFileToMemory(char* filepath, char source[MAXBUFLEN + 1], bool isBinary) {
- FILE* file;
- fopen_s(&file, filepath, isBinary ? "rb" : "r+");
-
- if(file == NULL) {
- printf("Failed to read the file\n");
- return -1;
- }
-
- size_t newLen = fread(source, sizeof(char), MAXBUFLEN, file);
- if ( ferror( file ) != 0 ) {
- fputs("Error reading file", stderr);
- return -1;
- }
-
- fclose(file);
- return newLen;
-}
-
-
-int fixNewLines(char* str, int strSize) {
- int removed = 0;
- for(int i = 0; i < strSize; i++) {
- if(str[i] == '\n') {
- str[i] = '\r\n';
- removed++;
- }
- }
-
- return removed;
-}
-
-
-bool trySendFile(SOCKET clientSocket, char* filename) {
- char filePath[128];
- sprintf(filePath, "../../frontend%s", filename);
-
- bool isBinary = false;
- if (endsWith(filename, ".ico") || endsWith(filename, ".wasm")) {
- isBinary = true;
- }
-
- char source[MAXBUFLEN + 1];
- int fileSizeBytes = readFileToMemory(filePath, source, isBinary);
-
- if (fileSizeBytes <= 0) {
- return false;
- }
-
- const char* contentType;
- if (endsWith(filename, ".html")) {
- contentType = "text/html";
- } else if (endsWith(filename, ".js")) {
- contentType = "application/javascript";
- } else if (endsWith(filename, ".css")) {
- contentType = "text/css";
- } else if (endsWith(filename, ".ico")) {
- contentType = "image/x-icon";
- } else if (endsWith(filename, ".wasm")) {
- contentType = "application/wasm";
- } else {
- contentType = "text/plain";
- }
-
- char timeStr[100];
- char header[512];
-
- ZeroMemory(timeStr, 100);
- ZeroMemory(header, 100);
-
- getCurrentDateStr(timeStr);
- sprintf(header, "HTTP/1.1 200 OK\r\nDate: %s\r\nContent-Type: %s; charset=utf-8\r\nConnection: keep-alive\r\nContent-Length: %d\r\n\r\n", timeStr, contentType, fileSizeBytes);
- send(clientSocket, header, strlen(header), 0);
-
-
- int bytesSent = 0;
- int bytesRemaining = fileSizeBytes;
- while (bytesSent < fileSizeBytes) {
- int amountToSend = bytesRemaining >= 4096 ? 4096 : bytesRemaining; // Send 4K bytes at a time max
- send(clientSocket, &source[bytesSent], amountToSend, 0);
- bytesRemaining -= amountToSend;
- bytesSent += amountToSend;
- }
-
- return true;
-}
-
-void handleClient(SOCKET clientSocket) {
- while (true) {
- HeaderParser parser;
- HeaderParseResult parseResult = parser.readHeader(clientSocket);
- bool shouldBreak = false;
-
- switch (parseResult.error) {
- case HttpRequestError_ClientDisconnect: {
- shouldBreak = true;
- break;
- }
- case HttpRequestError_UnsupportedRequest: {
- shouldBreak = true;
- break;
- }
- }
-
- if (shouldBreak) {
- break;
- }
-
- switch (parseResult.requestType) {
- case HttpRequestType_Get: {
- if (strcmp(parseResult.resource, "/") == 0) {
- trySendFile(clientSocket, (char*)"/index.html");
- } else {
- trySendFile(clientSocket, parseResult.resource);
- }
- shouldBreak = true;
- break;
- }
- }
-
- if (shouldBreak) {
- break;
- }
- }
-
- // Close the socket
- closesocket(clientSocket);
-}
-
-DWORD WINAPI runConnection(LPVOID lpParam) {
- ClientConnection* connection = (ClientConnection*)lpParam;
-
- while (true) {
- Sleep(100);
-
- if (connection->isActive) {
- handleClient(connection->clientSocket);
- connection->isActive = false;
- }
- }
-} \ No newline at end of file
diff --git a/backend/server.obj b/backend/server.obj
deleted file mode 100644
index 59b2db2..0000000
--- a/backend/server.obj
+++ /dev/null
Binary files differ
diff --git a/backend/stringmanip.h b/backend/stringmanip.h
deleted file mode 100644
index c5a32dc..0000000
--- a/backend/stringmanip.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-#include <string.h>
-
-void copyUntilStr(char* destination, char* source, const char* cmpstr) {
- int index = 0;
- char* ptr = source;
- int cmpStrLen = strlen(cmpstr);
- while (strncmp(ptr, cmpstr, cmpStrLen) != 0) {
- destination[index++] = *ptr;
- ptr++;
- }
-
- destination[index] = '\0';
-}
-
-int endsWith(const char *str, const char *suffix) {
- size_t str_len = strlen(str);
- size_t suffix_len = strlen(suffix);
-
- return (str_len >= suffix_len) &&
- (!memcmp(str + str_len - suffix_len, suffix, suffix_len));
-}
-
-void getCurrentDateStr(char* text) {
- time_t now = time(NULL);
- sprintf(text, "%s GMT", ctime(&now));
-} \ No newline at end of file