commit 292c09619e976a971bb13ed37c3a5970a5eafa62 Author: UnknownObject Date: Tue Jun 30 17:49:51 2026 +0800 upload diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..36389e7 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,12 @@ +{ + "configurations": [ + { + "type": "cmake", + "request": "launch", + "name": "Debug portfile(s)", + "cmakeDebugType": "external", + "pipeName": "/tmp/vcpkg_ext_portfile_dbg", + "preLaunchTask": "Debug vcpkg commands" + } + ] +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0b586c1 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,91 @@ +cmake_minimum_required(VERSION 3.10) +cmake_policy(SET CMP0074 NEW) +project(unswsc LANGUAGES CXX) +set(CMAKE_CXX_STANDARD 20) + +# Force-fPIC (For .so libraries) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + add_compile_options(-Wno-literal-suffix) +endif() + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) +endif() + +find_package(OpenSSL REQUIRED) +find_package(fmt CONFIG REQUIRED) +find_package(jsoncpp CONFIG REQUIRED) +find_package(unofficial-sodium CONFIG REQUIRED) +# find_package(stduuid CONFIG REQUIRED) +# find_package(ICU REQUIRED COMPONENTS i18n uc io tu data) + +add_library(webcc STATIC IMPORTED) +set_target_properties(webcc PROPERTIES + IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/lib/libwebcc.a" + INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/webcc" +) + +add_library(uohash SHARED IMPORTED) +set_target_properties(uohash PROPERTIES + IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/so/libuohash.so" + INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/uohash" +) + +add_library(utextcodec SHARED IMPORTED) +set_target_properties(utextcodec PROPERTIES + IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/so/libutextcodec.so" + INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/utextcodec" +) + +add_library(unswsc SHARED + CORSConfig.cpp # 跨域访问配置 + SessionManager.cpp # 会话管理器 + WebFileInfo.cpp # 文件信息封装类 + ServerProcessor.cpp # 原始业务处理类 + CORSProcessor.cpp # 跨域访问处理器 + UNSResponseBuilder.cpp # HTTP相应构造器 + SyncFileReceiver.cpp # 同步文件上传 + DateTime.cpp # 日期和时间 + IPTable.cpp # IP表 + IPList.cpp # IP列表 + Global.cpp # 全局变量/函数 + FileReceiver.cpp # 异步文件上传 + #JsonUnicodeWriter.cpp # 关闭Unicode自动转义的Writer + DataTransfer.cpp # 数据转移器 + ServerLogger.cpp # 服务器日志类 + LogArg.cpp # 服务器日志参数类型转换 + ServerCore.cpp # 服务器内核 + SafeRNG.cpp # 安全随机数生成器 + HTTPObjects.cpp # webcc对象包装兼容层 + PathTraversal.cpp # 路径穿越防御 +) + +# target_link_libraries(unswsc PRIVATE stduuid) +target_link_libraries(unswsc PRIVATE webcc) +target_link_libraries(unswsc PRIVATE uohash) +target_link_libraries(unswsc PRIVATE utextcodec) + +target_link_libraries(unswsc PRIVATE fmt::fmt) +target_link_libraries(unswsc PRIVATE OpenSSL::Crypto) +target_link_libraries(unswsc PRIVATE JsonCpp::JsonCpp) +target_link_libraries(unswsc PRIVATE unofficial-sodium::sodium) +# target_link_libraries(unswsc PRIVATE ICU::i18n ICU::uc ICU::io ICU::tu ICU::data) + +add_executable(logger_test + ServerLogger.cpp # 服务器日志类 + LogArg.cpp # 服务器日志参数类型转换 + TestLogger.cpp # 服务器日志测试 +) + +target_link_libraries(logger_test PRIVATE utextcodec) + +target_link_libraries(logger_test PRIVATE fmt::fmt) + +if(NOT TARGET rebuild) + add_custom_target(rebuild + COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target clean + COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --parallel 10 --config Release + COMMENT ">>> Rebuilding entire project (clean + all) <<<" + ) +endif() \ No newline at end of file diff --git a/CORSConfig.cpp b/CORSConfig.cpp new file mode 100644 index 0000000..55d2a47 --- /dev/null +++ b/CORSConfig.cpp @@ -0,0 +1,181 @@ +#include "CORSConfig.h" +#include +#include +#include +#include "Global.h" + +CORSConfig GlobalCORSConfig; + +CORSConfig::CORSConfig() +{ + max_age = 86400; + allow_cookie = false; + validate_urls = {}; + validate_hosts = {}; + validate_methods = { "GET", "POST", "OPTIONS" }; + validate_headers = + { + "Accept", + "Accept-Language", + "Content-Language", + "Content-Type", + "Authorization", + "X-Requested-With", + "X-CSRF-Token", + "X-Client-Version", + "X-App-Id", + "X-Request-ID" + }; +} + +int CORSConfig::GetMaxAge() const +{ + return max_age; +} + +bool CORSConfig::AllowCookie() const +{ + return allow_cookie; +} + +std::string CORSConfig::GetValidateMethods() const +{ + if (validate_methods.empty()) + return std::string(); + std::ostringstream oss; + size_t index = 0; + for (const auto& method : validate_methods) + { + if (index++ > 0) + oss << ", "; + oss << uns::tools::ToUpper(method); // 统一大写方法名 + } + return oss.str(); +} + +bool CORSConfig::UrlValidate(const std::string& url) const +{ + return (validate_urls.find(url) != validate_urls.end()); +} + +bool CORSConfig::HostValidate(const std::string& host) const +{ + return (validate_hosts.find(host) != validate_hosts.end()); +} + +bool CORSConfig::IsMethodAllowed(const std::string method) const +{ + return (validate_methods.find(method) != validate_methods.end()); +} + +std::string CORSConfig::GetValidateHeaders(const std::set& headers) const +{ + // build map from lowercase(validate_headers) => original form (preserve casing) + std::map lowerToOriginal; + for (const auto& h : validate_headers) + lowerToOriginal[uns::tools::ToLower(h)] = h; + std::vector allowedOut; + if (headers.empty()) + { + // 返回服务端全部允许的头(保持 validate_headers 中的原始展示形式) + for (const auto& kv : lowerToOriginal) + allowedOut.push_back(kv.second); + } + else + { + // 交集比较(headers 已经是小写的—为了健壮性,再转换一次) + for (const auto& reqLower : headers) + { + std::string reqNorm = uns::tools::ToLower(reqLower); + auto it = lowerToOriginal.find(reqNorm); + if (it != lowerToOriginal.end()) + allowedOut.push_back(it->second); // 使用原始展示形式 + } + // 如果客户端请求了头(headers 非空)但交集为空,返回空字符串 + } + if (allowedOut.empty()) + return std::string(); + // join with ", " + std::ostringstream oss; + for (size_t i = 0; i < allowedOut.size(); ++i) + { + if (i) + oss << ", "; + oss << allowedOut[i]; + } + return oss.str(); +} + +void CORSConfig::SetMaxAge(int max_age) +{ + this->max_age = max_age; +} + +void CORSConfig::SetAllowCookie(bool allow) +{ + allow_cookie = allow; +} + +void CORSConfig::ClearValidateUrls() +{ + validate_urls.clear(); +} + +void CORSConfig::ClearValidateHosts() +{ + validate_hosts.clear(); +} + +void CORSConfig::ClearValidateMethods() +{ + validate_methods.clear(); +} + +void CORSConfig::ClearValidateHeaders() +{ + validate_headers.clear(); +} + +void CORSConfig::AddValidateUrl(const std::string& url) +{ + validate_urls.insert(url); +} + +void CORSConfig::AddValidateHost(const std::string& host) +{ + validate_hosts.insert(host); +} + +void CORSConfig::AddValidateMethod(const std::string& method) +{ + validate_methods.insert(uns::tools::ToUpper(method)); +} + +void CORSConfig::AddValidateHeader(const std::string& header) +{ + validate_headers.insert(header); +} + +void CORSConfig::AddValidateUrls(const std::set& urls) +{ + for(const auto& url : urls) + validate_urls.insert(url); +} + +void CORSConfig::AddValidateHosts(const std::set& hosts) +{ + for(const auto& host : hosts) + validate_hosts.insert(host); +} + +void CORSConfig::AddValidateMethods(const std::set& methods) +{ + for(const auto& method : methods) + validate_methods.insert(method); +} + +void CORSConfig::AddValidateHeaders(const std::set& headers) +{ + for(const auto& header : headers) + validate_headers.insert(header); +} diff --git a/CORSConfig.h b/CORSConfig.h new file mode 100644 index 0000000..afc3009 --- /dev/null +++ b/CORSConfig.h @@ -0,0 +1,47 @@ +#include +#include +#include "Export.h" + +class UNSWSC_DLL_EXPORT CORSConfig +{ +private: + int max_age; + bool allow_cookie; + std::set validate_urls; + std::set validate_hosts; + std::set validate_headers; + std::set validate_methods; + +public: + CORSConfig(); + +public: + int GetMaxAge() const; + bool AllowCookie() const; + std::string GetValidateMethods() const; + bool UrlValidate(const std::string& url) const; + bool HostValidate(const std::string& host) const; + bool IsMethodAllowed(const std::string method) const; + std::string GetValidateHeaders(const std::set& headers = {}) const; + +public: + void SetMaxAge(int max_age); + void SetAllowCookie(bool allow); + + void ClearValidateUrls(); + void ClearValidateHosts(); + void ClearValidateMethods(); + void ClearValidateHeaders(); + + void AddValidateUrl(const std::string& url); + void AddValidateHost(const std::string& host); + void AddValidateMethod(const std::string& method); + void AddValidateHeader(const std::string& header); + + void AddValidateUrls(const std::set& urls); + void AddValidateHosts(const std::set& hosts); + void AddValidateMethods(const std::set& methods); + void AddValidateHeaders(const std::set& headers); +}; + +extern UNSWSC_DLL_EXPORT CORSConfig GlobalCORSConfig; \ No newline at end of file diff --git a/CORSProcessor.cpp b/CORSProcessor.cpp new file mode 100644 index 0000000..ed95ee4 --- /dev/null +++ b/CORSProcessor.cpp @@ -0,0 +1,146 @@ +#include "CORSProcessor.h" +#include "ServerLogger.h" +#include "CORSConfig.h" +#include "UNSResponseBuilder.h" + +// ----- 辅助函数(文件作用域) ----- +static inline std::string Trim(const std::string& s) +{ + size_t start = 0; + while ((start < s.size()) && std::isspace(static_cast(s[start]))) + ++start; + if (start == s.size()) + return ""; + + size_t end = s.size() - 1; + while ((end > start) && std::isspace(static_cast(s[end]))) + --end; + return s.substr(start, end - start + 1); +} + +static inline std::vector SplitByComma(const std::string& raw) +{ + std::vector parts; + std::istringstream ss(raw); + std::string token; + while (std::getline(ss, token, ',')) + parts.push_back(token); + return parts; +} + +// 1) 解析请求头(Access-Control-Request-Headers) +// 返回小写形式的集合(用于比较/交集) +std::set CORSProcessor::ParseHeaderList(const std::string& raw_headers) +{ + std::set out; + if (raw_headers.empty()) + return out; + + auto parts = SplitByComma(raw_headers); + for (const auto& p : parts) + { + std::string t = Trim(p); + if (t.empty()) + continue; + out.insert(uns::tools::ToLower(t)); // 规范化为小写用于比较 + } + return out; +} + +// 2) 解析请求方法字符串(Access-Control-Request-Method 或逗号分隔的 Methods) +// 返回大写形式的集合(用于比较) +std::set CORSProcessor::ParseMethodList(const std::string& raw_headers) +{ + std::set out; + if (raw_headers.empty()) + return out; + + auto parts = SplitByComma(raw_headers); + for (const auto& p : parts) + { + std::string t = Trim(p); + if (t.empty()) + continue; + out.insert(uns::tools::ToUpper(t)); + } + return out; +} + +uns::ResponsePtr CORSProcessor::Processor(uns::RequestPtr request) +{ + if(request->GetMethod() != "OPTIONS") + return uns::ResponseBuilder().MethodNotAllowed().EmptyBody()(); + SCLOG_INFO("OPTIONS Request Catched!"); + + if((!request->HasHeader(uns::cors::reqh_acrm)) || (!request->HasHeader(uns::cors::reqh_o))) + return uns::ResponseBuilder().BadRequest().EmptyBody()(); + + std::string origin = Trim(request->GetHeader(uns::cors::reqh_o)); + std::string acrm = Trim(request->GetHeader(uns::cors::reqh_acrm)); + std::string acrh = request->HasHeader(uns::cors::reqh_acrh) ? Trim(request->GetHeader(uns::cors::reqh_acrh)) : std::string(); + + std::string host = request->HasHeader("Host") ? request->GetHeader("Host") : ""; + if ((!host.empty()) && (!GlobalCORSConfig.HostValidate(host))) + { + SCLOG_WARNING("Rejected by Host check: %s", host.c_str()); + return uns::ResponseBuilder().Forbidden().EmptyBody()(); + } + + if(!GlobalCORSConfig.UrlValidate(origin)) + { + SCLOG_WARNING("Invalid CORS Origin: %s", origin.c_str()); + return uns::ResponseBuilder().Forbidden().EmptyBody()(); + } + + auto acrm_values = ParseMethodList(acrm); + if (acrm_values.empty()) + { + SCLOG_WARNING("Empty Access-Control-Request-Method"); + return uns::ResponseBuilder().BadRequest().EmptyBody()(); + } + for(const auto& method : acrm_values) + if(!GlobalCORSConfig.IsMethodAllowed(method)) + { + SCLOG_WARNING("Invalid CORS Method: %s (All Methods: %d)", method.c_str(), acrm.c_str()); + return uns::ResponseBuilder().NotAcceptable().EmptyBody()(); + } + + auto acrh_values = acrh.empty() ? std::set() : ParseHeaderList(acrh); + if (!acrh_values.empty()) + { + const size_t MAX_HDR_COUNT = 50; + const size_t MAX_HDR_TOTAL_LEN = 4096; // 可调整 + if ((acrh_values.size() > MAX_HDR_COUNT) || (acrh.size() > MAX_HDR_TOTAL_LEN)) + { + SCLOG_WARNING("ACRH too large or too many entries"); + return uns::ResponseBuilder().BadRequest().EmptyBody()(); + } + } + + auto valid_headers = GlobalCORSConfig.GetValidateHeaders(acrh_values); + if((!acrh_values.empty()) && valid_headers.empty()) + { + SCLOG_WARNING("Invalid CORS Header(s): %s", acrh.c_str()); + return uns::ResponseBuilder().NotAcceptable().EmptyBody()(); + } + + std::string allow_methods_value = GlobalCORSConfig.GetValidateMethods(); + if (allow_methods_value.empty()) + { + SCLOG_WARNING("No allowed methods configured"); + return uns::ResponseBuilder().Forbidden().EmptyBody()(); + } + + SCLOG_INFO("CORS preflight allow origin=%s methods=%s headers=%s cred=%d", origin.c_str(), allow_methods_value.c_str(), valid_headers.c_str(), GlobalCORSConfig.AllowCookie() ? 1 : 0); + return uns::ResponseBuilder().CORS_Full(origin, acrh_values).NoContent().EmptyBody()(); +} + +std::string CORSProcessor::UrlRegex() +{ + return R"(/[\s\S]*)"; +} + +std::shared_ptr CORSProcessor::SharedPtr() +{ + return std::make_shared(); +} \ No newline at end of file diff --git a/CORSProcessor.h b/CORSProcessor.h new file mode 100644 index 0000000..ae96b0f --- /dev/null +++ b/CORSProcessor.h @@ -0,0 +1,15 @@ +#include "ServerProcessor.h" + +class CORSProcessor : public ServerProcessor +{ +private: + std::set ParseHeaderList(const std::string& raw_headers); + std::set ParseMethodList(const std::string& raw_headers); + +public: + uns::ResponsePtr Processor(uns::RequestPtr request) override; + +public: + static std::string UrlRegex(); + static std::shared_ptr SharedPtr(); +}; \ No newline at end of file diff --git a/DataTransfer.cpp b/DataTransfer.cpp new file mode 100644 index 0000000..1dd2d69 --- /dev/null +++ b/DataTransfer.cpp @@ -0,0 +1,180 @@ +#include "DataTransfer.h" +#include +#include "ServerLogger.h" + +DataTransfer::DataTransfer(const std::string& tr) +{ + temp_root = tr; +} + +void DataTransfer::Init(const std::string& tr) +{ + temp_root = tr; + SCLOG_DEBUG("GDT-TempRoot: %s", temp_root.c_str()); +} + +bool DataTransfer::ItemExist(const std::string& file) +{ + return (files.find(file) != files.end()); +} + +bool DataTransfer::InsertItem(const std::string& file) +{ + if (ItemExist(file)) + return false; + files.insert({ file, true }); + SCLOG_INFO("GDT: Item [%s] Inserted", file.c_str()); + return true; +} + +bool DataTransfer::RemoveItem(const std::string& file) +{ + if (!ItemExist(file)) + return false; + files.erase(file); + SCLOG_INFO("GDT: Item [%s] Removed", file.c_str()); + return true; +} + +bool DataTransfer::ItemValidate(const std::string& file) +{ + if (!ItemExist(file)) + return false; + return files[file]; +} + +void DataTransfer::DeactivateItem(const std::string& file) +{ + if (!ItemExist(file)) + return; + files[file] = false; + SCLOG_INFO("GDT: Item [%s] Deactivated", file.c_str()); +} + +bool DataTransfer::CopyItemTo(const std::string& file, const std::string& dest_path) +{ + if (!ItemExist(file)) + return false; + namespace fs = std::filesystem; + std::error_code error; + if(!fs::exists(dest_path)) + { + SCLOG_ERROR("GDT: Can't Copy File (Target Path [%s] Not Exist)", dest_path.c_str()); + return false; + } + fs::path dest(dest_path); + fs::path dest_file = dest / file; + if(fs::copy_file(MakePath(file), dest_file, fs::copy_options::overwrite_existing, error)) + { + SCLOG_INFO("GDT: File Copied To [%s]", dest_file.c_str()); + return true; + } + else + { + SCLOG_ERROR("Failed To Delete File [%s], Error: %s (%d)", dest_file.c_str(), error.message().c_str(), error.value()); + return false; + } +} + +bool DataTransfer::CopyItemAS(const std::string& file, const std::string& dest) +{ + if (!ItemExist(file)) + return false; + namespace fs = std::filesystem; + std::error_code error; + fs::path dest_file = dest; + if(fs::copy_file(MakePath(file), dest_file, fs::copy_options::overwrite_existing, error)) + { + SCLOG_INFO("GDT: File Copied To [%s]", dest_file.c_str()); + return true; + } + else + { + SCLOG_ERROR("Failed To Delete File [%s], Error: %s (%d)", dest_file.c_str(), error.message().c_str(), error.value()); + return false; + } +} + +bool DataTransfer::RemoveAllCacheFiles() +{ + SCLOG_INFO("Begin Cache Clear"); + namespace fs = std::filesystem; + bool result = true; + std::error_code error; + if (files.empty()) + { + SCLOG_INFO("No Cache File Found, Skip GDT Clear"); + goto fs_scan; + } + for (const auto& [file, status] : files) + { + std::string filepath = MakePath(file); + if (!fs::exists(filepath, error)) + { + SCLOG_WARNING("File [%s] Not Exist, Skip", filepath.c_str()); + continue; + } + if (fs::remove(filepath, error)) + SCLOG_INFO("File [%s] Deleted", filepath.c_str()); + else + { + SCLOG_ERROR("Failed To Delete File [%s], Error: %s (%d)", filepath.c_str(), error.message().c_str(), error.value()); + result = false; + } + } + if (result) + files.clear(); +fs_scan: + SCLOG_INFO("Cache Clear Process (GDT) Finished, Begin Filesystem Scan"); + int dirs = 0, files = 0, dirs_deleted = 0, files_deleted = 0; + for (const auto& entry : fs::directory_iterator(temp_root, error)) + { + if (entry.is_directory()) + { + dirs++; + try + { + if (fs::remove_all(entry.path(), error)) + { + dirs_deleted++; + SCLOG_WARNING("Found Directory [%s] In Cache Directory, Deleted", entry.path().string().c_str()); + } + else + SCLOG_ERROR("Found Directory [%s] In Cache Directory, Failed To Delete. Error: %s (%d)", entry.path().string().c_str(), error.message().c_str(), error.value()); + } + catch (const std::exception& e) + { + SCLOG_ERROR("Found Directory [%s] In Cache Directory, Failed To Delete. Exception: %s", entry.path().string().c_str(), e.what()); + } + } + else if (entry.is_regular_file()) + { + files++; + if (fs::remove(entry.path(), error)) + { + files_deleted++; + SCLOG_INFO("File [%s] Deleted", entry.path().string().c_str()); + } + else + { + SCLOG_ERROR("Failed To Delete File [%s], Error: %s (%d)", entry.path().string().c_str(), error.message().c_str(), error.value()); + result = false; + } + } + } + SCLOG_INFO("Filesystem Scan Finished, %d/%d Dir(s) And %d/%d Files(s) Deleted", dirs_deleted, dirs, files_deleted, files); + SCLOG_INFO("Cache Clear Finished"); + return result; +} + +std::string DataTransfer::MakePath(const std::string& file) +{ + if (temp_root.empty() || (!ItemExist(file))) + return ""; + if (temp_root[temp_root.size() - 1] == '/') + return temp_root + file; + else + return temp_root + "/" + file; +} + +DataTransfer GlobalDataTransfer; \ No newline at end of file diff --git a/DataTransfer.h b/DataTransfer.h new file mode 100644 index 0000000..9bf5461 --- /dev/null +++ b/DataTransfer.h @@ -0,0 +1,41 @@ +#pragma once +#include +#include +#include "Export.h" + +class UNSWSC_DLL_EXPORT DataTransfer +{ +private: + std::string temp_root; + std::map files; + +public: + DataTransfer(const std::string& tr = ""); + +public: + void Init(const std::string& tr); + bool ItemExist(const std::string& file); + bool InsertItem(const std::string& file); + bool RemoveItem(const std::string& file); + bool ItemValidate(const std::string& file); + void DeactivateItem(const std::string& file); + bool CopyItemTo(const std::string& file, const std::string& dest_path); + bool CopyItemAS(const std::string& file, const std::string& dest); + +public: + bool RemoveAllCacheFiles(); + std::string MakePath(const std::string& file); +}; + +extern UNSWSC_DLL_EXPORT DataTransfer GlobalDataTransfer; + +#define GDT_INIT(__tr__) GlobalDataTransfer.Init(__tr__) +#define GDT_ADDITEM(__file__) GlobalDataTransfer.InsertItem(__file__) +#define GDT_DELETEITEM(__file__) GlobalDataTransfer.RemoveItem(__file__) +#define GDT_ITEMEXIST(__file__) GlobalDataTransfer.ItemExist(__file__) +#define GDT_ITEMVALIDATE(__file__) GlobalDataTransfer.ItemValidate(__file__) +#define GDT_DEACTIVEITEM(__file__) GlobalDataTransfer.DeactivateItem(__file__) +#define GDT_GETFULLPATH(__file__ ) GlobalDataTransfer.MakePath(__file__) +#define GDT_CLEAR_ALL_CACHE() GlobalDataTransfer.RemoveAllCacheFiles() +#define GDT_COPY_TO(__file__, __dest_path__) GlobalDataTransfer.CopyItemTo(__file__, __dest_path__) +#define GDT_COPY_AS(__file__, __dest_path__) GlobalDataTransfer.CopyItemAS(__file__, __dest_path__) \ No newline at end of file diff --git a/DateTime.cpp b/DateTime.cpp new file mode 100644 index 0000000..4fe0848 --- /dev/null +++ b/DateTime.cpp @@ -0,0 +1,505 @@ +#include "DateTime.h" +#include +#include +#include + +void DateTime::UpdateDT() +{ + namespace ch = std::chrono; + auto tp = ch::system_clock::from_time_t(storage); + + try + { + // C++20 时区感知:将系统时间转换为本地时间 + auto local_tp = ch::current_zone()->to_local(tp); + auto dp = ch::floor(local_tp); + + ch::year_month_day ymd { dp }; + ch::hh_mm_ss hms { local_tp - dp }; + + sep_time.year = static_cast(ymd.year()); + sep_time.month = static_cast(ymd.month()); + sep_time.day = static_cast(ymd.day()); + sep_time.hour = hms.hours().count(); + sep_time.minute = hms.minutes().count(); + sep_time.second = static_cast(hms.seconds().count()); + } + catch (...) + { + // 备用方案:如果系统未配置或不支持本地时区数据库,平滑降级到传统安全实现 + std::tm ptm {}; +#ifdef _WIN32 + localtime_s(&ptm, &storage); +#else + localtime_r(&storage, &ptm); +#endif + sep_time.year = ptm.tm_year + 1900; + sep_time.month = ptm.tm_mon + 1; + sep_time.day = ptm.tm_mday; + sep_time.hour = ptm.tm_hour; + sep_time.minute = ptm.tm_min; + sep_time.second = ptm.tm_sec; + } +} + +time_t DateTime::FormatConvert(int year, int month, int day, int hour, int minute, int second) +{ + namespace ch = std::chrono; + try + { + ch::year_month_day ymd { ch::year{year}, ch::month{static_cast(month)}, ch::day{static_cast(day)} }; + if (!ymd.ok()) + return 0; + + auto local_tp = ch::local_days { ymd } + ch::hours { hour } + ch::minutes { minute } + ch::seconds { second }; + // 将本地时间根据当前系统时区转换为系统标准时间(UTC) + return ch::system_clock::to_time_t(ch::current_zone()->to_sys(local_tp)); + } + catch (...) + { + std::tm stm {}; + stm.tm_year = year - 1900; + stm.tm_mon = month - 1; + stm.tm_mday = day; + stm.tm_hour = hour; + stm.tm_min = minute; + stm.tm_sec = second; + stm.tm_isdst = -1; + return ::mktime(&stm); + } +} + +time_t DateTime::SpanedSeconds(Span sp) +{ + namespace ch = std::chrono; + auto total = ch::days { sp.days } + ch::hours { sp.hours } + ch::minutes { sp.minutes } + ch::seconds { sp.seconds }; + return ch::duration_cast(total).count(); +} + +DateTime::Span DateTime::ToSpan(time_t tim) +{ + // 修复了原代码中天数数额赋给秒、余数计算混乱的 Bug + namespace ch = std::chrono; + ch::seconds total_secs { tim }; + + auto d = ch::duration_cast(total_secs); + total_secs -= d; + + auto h = ch::duration_cast(total_secs); + total_secs -= h; + + auto m = ch::duration_cast(total_secs); + total_secs -= m; + + Span sp; + sp.days = static_cast(d.count()); + sp.hours = static_cast(h.count()); + sp.minutes = static_cast(m.count()); + sp.seconds = static_cast(total_secs.count()); + return sp; +} + +DateTime::DateTime() +{ + storage = ::time(nullptr); + UpdateDT(); +} + +DateTime::DateTime(time_t t) +{ + storage = t; + UpdateDT(); +} + +DateTime::DateTime(const tm& stm) +{ + storage = ::mktime(const_cast(&stm)); + UpdateDT(); +} + +DateTime::DateTime(const Full& ftm) +{ + storage = FormatConvert(ftm.year, ftm.month, ftm.day, ftm.hour, ftm.minute, ftm.second); + UpdateDT(); +} + +DateTime::DateTime(int year, int month, int day, int hour, int minute, int second) +{ + storage = FormatConvert(year, month, day, hour, minute, second); + UpdateDT(); +} + +DateTime::DateTime(const DateTime& obj) +{ + storage = obj.storage; + sep_time = obj.sep_time; +} + +DateTime DateTime::Now() +{ + return DateTime(::time(nullptr)); +} + +time_t DateTime::GetTimeStamp() const +{ + return storage; +} + +int DateTime::GetYear() const +{ + return sep_time.year; +} + +int DateTime::GetMonth() const +{ + return sep_time.month; +} + +int DateTime::GetDay() const +{ + return sep_time.day; +} + +int DateTime::GetHour() const +{ + return sep_time.hour; +} + +int DateTime::GetMinute() const +{ + return sep_time.minute; +} + +int DateTime::GetSecond() const +{ + return sep_time.second; +} + +DateTime::Full DateTime::GetFullDateTime() const +{ + return sep_time; +} + +std::string DateTime::Format(std::string fmt_str) +{ + namespace ch = std::chrono; + try + { + // 1. 获取系统标准时间点 + auto tp = ch::system_clock::from_time_t(storage); + + // 2. 转换为本地时间点 + auto local_tp = ch::current_zone()->to_local(tp); + + // 3. 截断到秒级精度(防止打印出纳秒/微秒的小数点),并获取 C++20 支持格式化的强类型 + auto local_secs = ch::floor(local_tp); + + // 4. 组装 C++20 chrono 格式化字符串并执行 + std::string chrono_fmt = "{:" + fmt_str + "}"; + return std::vformat(chrono_fmt, std::make_format_args(local_secs)); + } + catch (...) + { + // 如果 C++20 运行时时区数据库不可用,或者 fmt_str 包含不兼容的传统旧语法,平滑降级 + size_t size = (fmt_str.size() * 2) + 10; + auto recv = std::make_unique(size); + std::tm suctm = static_cast(*this); + size_t ret = ::strftime(recv.get(), size, fmt_str.c_str(), &suctm); + while (ret == 0) + { + size *= 2; + recv = std::make_unique(size); + ret = ::strftime(recv.get(), size, fmt_str.c_str(), &suctm); + } + return std::string(recv.get()); + } +} + +bool DateTime::IsAM() +{ + return (sep_time.hour < 12); +} // 修正逻辑:通常12点后为PM + +bool DateTime::IsPM() +{ + return (sep_time.hour >= 12); +} + +bool DateTime::TimePassed() +{ + return (storage < ::time(nullptr)); +} // 修正逻辑:过去的时间应该小于现在 + +DateTime::operator tm() +{ + std::tm stm {}; + stm.tm_year = sep_time.year - 1900; + stm.tm_mon = sep_time.month - 1; + stm.tm_mday = sep_time.day; + stm.tm_hour = sep_time.hour; + stm.tm_min = sep_time.minute; + stm.tm_sec = sep_time.second; + stm.tm_isdst = -1; + return stm; +} + +DateTime::operator Full() +{ + return sep_time; +} + +DateTime::operator time_t() +{ + return storage; +} + +DateTime::operator std::string() +{ + return Format("%Y-%m-%dT%H:%M:%S+08:00"); +} + +// ================== 运算符重载实现 ================== +DateTime::Span DateTime::operator-(const tm& stm) +{ + return ToSpan(storage - ::mktime(const_cast(&stm))); +} + +DateTime::Span DateTime::operator-(const Span& ts) +{ + return ToSpan(storage - SpanedSeconds(ts)); +} + +DateTime::Span DateTime::operator-(const Full& sdt) +{ + return ToSpan(storage - FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second)); +} + +DateTime::Span DateTime::operator-(const time_t& t) +{ + return ToSpan(storage - t); +} + +DateTime::Span DateTime::operator-(const DateTime& dt) +{ + return ToSpan(storage - dt.storage); +} + +DateTime::Span DateTime::operator+(const tm& stm) +{ + return ToSpan(storage + ::mktime(const_cast(&stm))); +} + +DateTime::Span DateTime::operator+(const Span& ts) +{ + return ToSpan(storage + SpanedSeconds(ts)); +} + +DateTime::Span DateTime::operator+(const Full& sdt) +{ + return ToSpan(storage + FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second)); +} + +DateTime::Span DateTime::operator+(const time_t& t) +{ + return ToSpan(storage + t); +} + +DateTime::Span DateTime::operator+(const DateTime& dt) +{ + return ToSpan(storage + dt.storage); +} + +DateTime DateTime::operator=(const tm& stm) +{ + storage = ::mktime(const_cast(&stm)); UpdateDT(); return *this; +} + +DateTime DateTime::operator=(const Full& sdt) +{ + storage = FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); UpdateDT(); return *this; +} + +DateTime DateTime::operator=(const time_t& t) +{ + storage = t; UpdateDT(); return *this; +} + +DateTime DateTime::operator=(const DateTime& dt) +{ + storage = dt.storage; UpdateDT(); return *this; +} + +DateTime DateTime::operator+=(const tm& stm) +{ + storage += ::mktime(const_cast(&stm)); UpdateDT(); return *this; +} + +DateTime DateTime::operator+=(const Span& ts) +{ + storage += SpanedSeconds(ts); UpdateDT(); return *this; +} + +DateTime DateTime::operator+=(const Full& sdt) +{ + storage += FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); UpdateDT(); return *this; +} + +DateTime DateTime::operator+=(const time_t& t) +{ + storage += t; UpdateDT(); return *this; +} + +DateTime DateTime::operator+=(const DateTime& dt) +{ + storage += dt.storage; UpdateDT(); return *this; +} + +DateTime DateTime::operator-=(const tm& stm) +{ + storage -= ::mktime(const_cast(&stm)); UpdateDT(); return *this; +} + +DateTime DateTime::operator-=(const Span& ts) +{ + storage -= SpanedSeconds(ts); UpdateDT(); return *this; +} + +DateTime DateTime::operator-=(const Full& sdt) +{ + storage -= FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); UpdateDT(); return *this; +} + +DateTime DateTime::operator-=(const time_t& t) +{ + storage -= t; UpdateDT(); return *this; +} + +DateTime DateTime::operator-=(const DateTime& dt) +{ + storage -= dt.storage; UpdateDT(); return *this; +} + +bool DateTime::operator==(const tm& stm) +{ + return storage == ::mktime(const_cast(&stm)); +} + +bool DateTime::operator==(const Full& sdt) +{ + return storage == FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); +} + +bool DateTime::operator==(const time_t& t) +{ + return storage == t; +} + +bool DateTime::operator==(const DateTime& dt) +{ + return storage == dt.storage; +} + +bool DateTime::operator!=(const tm& stm) +{ + return !(*this == stm); +} + +bool DateTime::operator!=(const Full& sdt) +{ + return !(*this == sdt); +} + +bool DateTime::operator!=(const time_t& t) +{ + return storage != t; +} + +bool DateTime::operator!=(const DateTime& dt) +{ + return storage != dt.storage; +} + +bool DateTime::operator>(const tm& stm) +{ + return storage > ::mktime(const_cast(&stm)); +} + +bool DateTime::operator>(const Full& sdt) +{ + return storage > FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); +} + +bool DateTime::operator>(const time_t& t) +{ + return storage > t; +} + +bool DateTime::operator>(const DateTime& dt) +{ + return storage > dt.storage; +} + +bool DateTime::operator>=(const tm& stm) +{ + return storage >= ::mktime(const_cast(&stm)); +} + +bool DateTime::operator>=(const Full& sdt) +{ + return storage >= FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); +} + +bool DateTime::operator>=(const time_t& t) +{ + return storage >= t; +} + +bool DateTime::operator>=(const DateTime& dt) +{ + return storage >= dt.storage; +} + +bool DateTime::operator<(const tm& stm) +{ + return storage < ::mktime(const_cast(&stm)); +} + +bool DateTime::operator<(const Full& sdt) +{ + return storage < FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); +} + +bool DateTime::operator<(const time_t& t) +{ + return storage < t; +} + +bool DateTime::operator<(const DateTime& dt) +{ + return storage < dt.storage; +} + +bool DateTime::operator<(const DateTime& dt) const +{ + return storage < dt.storage; +} + +bool DateTime::operator<=(const tm& stm) +{ + return storage <= ::mktime(const_cast(&stm)); +} + +bool DateTime::operator<=(const Full& sdt) +{ + return storage <= FormatConvert(sdt.year, sdt.month, sdt.day, sdt.hour, sdt.minute, sdt.second); +} + +bool DateTime::operator<=(const time_t& t) +{ + return storage <= t; +} + +bool DateTime::operator<=(const DateTime& dt) +{ + return storage <= dt.storage; +} \ No newline at end of file diff --git a/DateTime.h b/DateTime.h new file mode 100644 index 0000000..d9c743d --- /dev/null +++ b/DateTime.h @@ -0,0 +1,122 @@ +#pragma once +#include +#include +#include "Export.h" + +class UNSWSC_DLL_EXPORT DateTime +{ +public: + struct UNSWSC_DLL_EXPORT Full + { + int year, month, day, hour, minute, second; + }; + + struct UNSWSC_DLL_EXPORT Span + { + int days, hours, minutes, seconds; + }; + +private: + time_t storage; + Full sep_time; + +private: + // 移除了硬编码的秒数常量,内部改用 std::chrono 处理 + void UpdateDT(); + time_t FormatConvert(int year, int month, int day, int hour, int minute, int second); + time_t SpanedSeconds(Span sp); + Span ToSpan(time_t tim); + +public: + DateTime(); + DateTime(time_t t); + DateTime(const tm& stm); + DateTime(const Full& ftm); + DateTime(const DateTime& obj); + DateTime(int year, int month, int day, int hour = 0, int minute = 0, int second = 0); + +public: + static DateTime Now(); + +public: + int GetYear() const; + int GetMonth() const; + int GetDay() const; + int GetHour() const; + int GetMinute() const; + int GetSecond() const; + time_t GetTimeStamp() const; + Full GetFullDateTime() const; + std::string Format(std::string fmt_str); + +public: + bool IsAM(); + bool IsPM(); + bool TimePassed(); + +public: + operator tm(); + operator Full(); + operator time_t(); + operator std::string(); + + Span operator-(const tm& stm); + Span operator-(const Span& ts); + Span operator-(const Full& sdt); + Span operator-(const time_t& t); + Span operator-(const DateTime& dt); + + Span operator+(const tm& stm); + Span operator+(const Span& ts); + Span operator+(const Full& sdt); + Span operator+(const time_t& t); + Span operator+(const DateTime& dt); + + DateTime operator=(const tm& stm); + DateTime operator=(const Full& sdt); + DateTime operator=(const time_t& t); + DateTime operator=(const DateTime& dt); + + DateTime operator+=(const tm& stm); + DateTime operator+=(const Span& ts); + DateTime operator+=(const Full& sdt); + DateTime operator+=(const time_t& t); + DateTime operator+=(const DateTime& dt); + + DateTime operator-=(const tm& stm); + DateTime operator-=(const Span& ts); + DateTime operator-=(const Full& sdt); + DateTime operator-=(const time_t& t); + DateTime operator-=(const DateTime& dt); + + bool operator==(const tm& stm); + bool operator==(const Full& sdt); + bool operator==(const time_t& t); + bool operator==(const DateTime& dt); + + bool operator!=(const tm& stm); + bool operator!=(const Full& sdt); + bool operator!=(const time_t& t); + bool operator!=(const DateTime& dt); + + bool operator>(const tm& stm); + bool operator>(const Full& sdt); + bool operator>(const time_t& t); + bool operator>(const DateTime& dt); + + bool operator>=(const tm& stm); + bool operator>=(const Full& sdt); + bool operator>=(const time_t& t); + bool operator>=(const DateTime& dt); + + bool operator<(const tm& stm); + bool operator<(const Full& sdt); + bool operator<(const time_t& t); + bool operator<(const DateTime& dt); + bool operator<(const DateTime& dt) const; + + bool operator<=(const tm& stm); + bool operator<=(const Full& sdt); + bool operator<=(const time_t& t); + bool operator<=(const DateTime& dt); +}; \ No newline at end of file diff --git a/Export.h b/Export.h new file mode 100644 index 0000000..cf9e4f2 --- /dev/null +++ b/Export.h @@ -0,0 +1,15 @@ +#ifdef _WINDOWS + #ifdef UNSWEBSERVERCORE_EXPORTS + #define UNSWSC_DLL_EXPORT __declspec(dllexport) + #else + #define UNSWSC_DLL_EXPORT __declspec(dllimport) + #ifdef _DEBUG + #pragma comment(lib, "UNSWebServerCored.lib") + #else + #pragma comment(lib, "UNSWebServerCore.lib") + #endif + #endif + #pragma warning(disable: 4251) +#else + #define UNSWSC_DLL_EXPORT __attribute__((visibility("default"))) +#endif \ No newline at end of file diff --git a/FileReceiver.cpp b/FileReceiver.cpp new file mode 100644 index 0000000..4ae6033 --- /dev/null +++ b/FileReceiver.cpp @@ -0,0 +1,257 @@ +#include "FileReceiver.h" +#include +#include +#include "ServerLogger.h" +#include "PathTraversal.h" +#include "HTTPObjectsBridge.h" +#include "UNSResponseBuilder.h" + +class FileReceiver::Impl +{ +public: + bool EnableCORS = false; + bool HTMLResponse = false; + std::string TempRoot; + IPTablePtr BlockedIPs = nullptr; + WebFileInfoVec FileInfo; + FileProcessorCallback Callback = nullptr; +}; + +FileReceiver::FileReceiver() : pimpl(std::make_unique()) +{ +} + +FileReceiver::~FileReceiver() = default; + +bool FileReceiver::CallFileProcesser() +{ + if (pimpl->Callback == nullptr) + return false; + std::thread thFileProcesser(pimpl->Callback, pimpl->FileInfo, pimpl->TempRoot); //Use copy construst to avoid repeat data process. + if (!thFileProcesser.joinable()) + return false; + thFileProcesser.detach(); + pimpl->FileInfo.clear(); + SCLOGF_TRACE("FileProcesser Function (Address: {}) Started.", pimpl->Callback); + return true; +} + +void FileReceiver::SetResponseMode(bool html) +{ + pimpl->HTMLResponse = html; + SCLOG_DEBUG("FileReceiver init mode: %s", (html ? "html" : "json")); +} + +void FileReceiver::SetCORSEnable(bool enable) +{ + pimpl->EnableCORS = enable; + SCLOG_DEBUG("FileReceiver CORS mode: %s", (enable ? "enabled" : "disabled")); +} + +void FileReceiver::SetTempRoot(std::string temp_root) +{ + pimpl->TempRoot = temp_root; + SCLOG_TRACE("FR-TempRoot: %s", pimpl->TempRoot.c_str()); + return; +} + +void FileReceiver::SetFileCallback(FileProcessorCallback fpcb) +{ + pimpl->Callback = fpcb; + return; +} + +void FileReceiver::UpdateBlockedIPs(IPTablePtr ip) +{ + pimpl->BlockedIPs = ip; + return; +} + +void FileReceiver::AppenedBlockedIP(DateTime::Span block_time, std::string ip) +{ + DateTime expr_time = (DateTime::Now() += block_time); + IPList li{ ip }; + pimpl->BlockedIPs->Appened(expr_time, li); + pimpl->BlockedIPs->Update(); + SCLOG_INFO("IP: [%s] has been blocked untill {%s}", ip.c_str(), std::string(expr_time).c_str()); + return; +} + +uns::HTTPMethod FileReceiver::GetMethod(uns::RequestPtr request) +{ + std::string method = request->GetImpl()->webcc_req->method(); + if (method == "GET") + return uns::HTTPMethod::H_GET; + else if (method == "PUT") + return uns::HTTPMethod::H_PUT; + else if (method == "POST") + return uns::HTTPMethod::H_POST; + else if (method == "HEAD") + return uns::HTTPMethod::H_HEAD; + else if (method == "TRACE") + return uns::HTTPMethod::H_TRACE; + else if (method == "PATCH") + return uns::HTTPMethod::H_PATCH; + else if (method == "DELETE") + return uns::HTTPMethod::H_DELETE; + else if (method == "OPTIONS") + return uns::HTTPMethod::H_OPTIONS; + else if (method == "CONNECT") + return uns::HTTPMethod::H_CONNECT; + else + return uns::HTTPMethod::H_UNKNOWN; +} + +bool FileReceiver::WriteFile(const std::string& path, const std::string& bytes) +{ + //Code from WebCC source (commit 554470ac65f9fa08b53ee9adeb819ae7c70ef698). + std::ofstream stream{ path, std::ios::binary }; + if (stream.fail()) + { + SCLOG_WARNING("Failed to write file [%s]: can't open stream", path.c_str()); + return false; + } + stream.write(bytes.data(), bytes.size()); + if (stream.fail()) + SCLOG_WARNING("Failed to write file [%s]: can't write to stream", path.c_str()); + return !stream.fail(); +} + +uns::PathTraversalDefenceLevel FileReceiver::PTDefence() +{ + return uns::PathTraversalDefenceLevel::DenyAll; +} + +bool FileReceiver::IsPathSafe(const std::string& raw_path) +{ + // 无外部重载时认为所有路径均不能通过检查 + return false; +} + +std::string FileReceiver::EncodeUploadResult() +{ + Json::Value root; + Json::FastWriter writer; + root["AcceptedCount"] = pimpl->FileInfo.size(); + root["AcceptedFiles"] = Json::Value(Json::arrayValue); + for (auto& ele : pimpl->FileInfo) + { + Json::Value sub; + sub["FileName"] = ele.GetStorageFileName(); + sub["UploadTime"] = ele.GetUploadTime().GetTimeStamp(); + root["AcceptedFiles"].append(sub); + } + return writer.write(root); +} + +std::string FileReceiver::EncodeUploadResultHTML() +{ + const char* html = R"( + + + + Upload Result + + +
+

Upload Result

+
+

AcceptedCount: %lld

+

AcceptedFiles:
%s

+
+ + +)"; + std::string tmp; + for (auto& ele : pimpl->FileInfo) + tmp += "[" + ele.GetStorageFileName() + "] - {" + ele.GetUploadTime().Format("%Y-%m-%d %H:%M:%S") + "}
"; + size_t html_size = strlen(html) + tmp.size() + 10; + char* result = new char[html_size]; + memset(result, 0, sizeof(result)); + sprintf(result, html, pimpl->FileInfo.size(), tmp.c_str()); + tmp = std::string(result); + delete[] result; + return tmp; +} + +uns::ResponsePtr FileReceiver::Execute(uns::RequestPtr request) +{ + uns::HTTPMethod method = GetMethod(request); + std::string x_real_ip; + if(request->GetImpl()->webcc_req->HasHeader("X-Real-IP")) + x_real_ip = request->GetImpl()->webcc_req->GetHeader("X-Real-IP"); + std::string req_ip = (x_real_ip.empty() ? request->GetImpl()->webcc_req->address() : x_real_ip); + SCLOG_DEBUG("Request recived, ip: [%s], method: %s", req_ip.c_str(), request->GetImpl()->webcc_req->method().c_str()); + // path test + std::string path = request->GetImpl()->webcc_req->url().path(); + auto status = PathTraversal::AnalyzeUrlTraversal(path); + if(status != PathTraversal::UrlSafetyStatus::Safe) + SCLOGF_WARNING("PathTraversal Detected: {}, Level: {}", path, PathTraversal::ToString(status)); + switch(PTDefence()) + { + case uns::PathTraversalDefenceLevel::DenyAll: + if(status != PathTraversal::UrlSafetyStatus::Safe) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + break; + case uns::PathTraversalDefenceLevel::AutoNormalize: + { + if(status == PathTraversal::UrlSafetyStatus::EvasiveTraversal) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto decoded_path = PathTraversal::UrlDecode(path); + if(!IsPathSafe(decoded_path)) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto url = request->GetImpl()->webcc_req->url(); + url.ForceSet_Path(PathTraversal::NormalizeUrlPath(decoded_path)); + request->GetImpl()->webcc_req->set_url(std::move(url)); + break; + } + case uns::PathTraversalDefenceLevel::AllowNormal: + { + if(status == PathTraversal::UrlSafetyStatus::EvasiveTraversal) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto decoded_path = PathTraversal::UrlDecode(path); + if(!IsPathSafe(decoded_path)) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto url = request->GetImpl()->webcc_req->url(); + url.ForceSet_Path(decoded_path); + request->GetImpl()->webcc_req->set_url(std::move(url)); + break; + } + default: + break; //Check Bypassed by [AllowAll] + } + if ((method & uns::H_PUT) || (method & uns::H_POST)) + { + if (pimpl->BlockedIPs != nullptr) + { + std::string req_ip = request->GetImpl()->webcc_req->address(); + pimpl->BlockedIPs->Update(); + if (pimpl->BlockedIPs->IPExist(req_ip)) + return (pimpl->EnableCORS ? uns::ResponseBuilder().IPBlocked().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().IPBlocked().EmptyBody()()); + } + webcc::Status tmpStatus = uns::ConvertStatus(PreCheckRequest(request)); + if (tmpStatus != webcc::kOK) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Code(tmpStatus).EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Code(tmpStatus).EmptyBody()()); + else if (!request->GetImpl()->webcc_req->IsForm()) + return (pimpl->EnableCORS ? uns::ResponseBuilder().RequestFormatError().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().RequestFormatError().EmptyBody()()); + else + { + for (auto& form : request->GetFormParts()) + { + if (form->GetFileName().empty()) + continue; + if (!PreCheckForm(form)) + continue; + SCLOGF_DEBUG("File recived: [{}], {} bytes", form->GetFileName(), form->GetDataSize()); + WebFileInfo info(form->GetFileNameS(), form->GetDataSize()); + WriteFile(info.MakePath(pimpl->TempRoot), form->GetData()); + pimpl->FileInfo.push_back(info); + } + std::string resp_body = (pimpl->HTMLResponse ? EncodeUploadResultHTML() : EncodeUploadResult()); + CallFileProcesser(); + return (pimpl->EnableCORS ? uns::ResponseBuilder().Created().Body(resp_body).AutoCORS(request)() : uns::ResponseBuilder().Created().Body(resp_body)()); + } + } + else + return (pimpl->EnableCORS ? uns::ResponseBuilder().IllegalUpload().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().IllegalUpload().EmptyBody()()); +} diff --git a/FileReceiver.h b/FileReceiver.h new file mode 100644 index 0000000..e1b782a --- /dev/null +++ b/FileReceiver.h @@ -0,0 +1,44 @@ +#pragma once +#include "Global.h" +#include "IPTable.h" +#include +#include "WebFileInfo.h" +#include "HTTPObjects.h" + +using FileProcessorCallback = std::function; + +class UNSWSC_DLL_EXPORT FileReceiver +{ +protected: + class Impl; + std::unique_ptr pimpl; + +public: + FileReceiver(); + virtual ~FileReceiver(); // 基类必须有虚析构函数! + +public: + bool CallFileProcesser(); + void SetResponseMode(bool html); + void SetCORSEnable(bool enable); + std::string EncodeUploadResult(); + std::string EncodeUploadResultHTML(); + void UpdateBlockedIPs(IPTablePtr ip); + void SetTempRoot(std::string temp_root); + void SetFileCallback(FileProcessorCallback fpcb); + uns::HTTPMethod GetMethod(uns::RequestPtr request); + void AppenedBlockedIP(DateTime::Span block_time, std::string ip); + bool WriteFile(const std::string& path, const std::string& bytes); + +public: + virtual uns::Status PreCheckRequest(uns::RequestPtr request) = 0; + virtual bool PreCheckForm(uns::FormPartPtr form) = 0; + virtual uns::PathTraversalDefenceLevel PTDefence(); + virtual bool IsPathSafe(const std::string& raw_path); + +public: + // 核心驱动入口:供内部适配器调用的实际执行流 + uns::ResponsePtr Execute(uns::RequestPtr request); +}; + +using FileReceiverPtr = std::shared_ptr; \ No newline at end of file diff --git a/Global.cpp b/Global.cpp new file mode 100644 index 0000000..0e6c70b --- /dev/null +++ b/Global.cpp @@ -0,0 +1,211 @@ +#include "Global.h" +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include "UOHash.h" +#else +#include "../UOHash/UOHash.h" +#endif +#include +#include "SafeRNG.h" +#include +#include +#include "PathTraversal.h" + +std::string uns::EncodeErrorPage(int code) +{ + // size_t str_size = strlen(G_SERVER_NAME) + strlen(G_ERROR_PAGE); + // char* buffer = new char[str_size]; + // memset(buffer, 0, str_size); + // snprintf(buffer, str_size, G_ERROR_PAGE, code, code, G_SERVER_NAME); + // std::string ret = buffer; + // delete[] buffer; + // return ret; + return std::vformat(G_ERROR_PAGE, std::make_format_args(code, code, G_SERVER_NAME)); +} + +std::string uns::EncodeHTTPTime(time_t* time) +{ + // struct tm t; + // if (time != NULL) + // gmtime_r(time, &t); + // else + // { + // int64_t ltime_cur; + // ::time(<ime_cur); + // gmtime_r(<ime_cur, &t); + // } + // char szTime[100] = { 0 }; + // // - Sun, 24 Aug 2008 22:43:45 GMT + // sprintf(szTime, "%s, %d %s %d %d:%d:%d GMT", G_HTTP_STD_WEEK[t.tm_wday].c_str(), t.tm_mday, G_HTTP_STD_MONTH[t.tm_mon].c_str(), t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec); + // return szTime; + // 1. 一行搞定时间点获取:如果指针有效就转换,否则直接取当前系统时间 + auto tp = time ? std::chrono::system_clock::from_time_t(*time) : std::chrono::system_clock::now(); + // 2. 强制截断到“秒”级(floor),避免有些平台输出微秒等尾巴 + auto tp_secs = std::chrono::floor(tp); + // 3. 直接利用 chrono 占位符格式化输出 + // %a: 星期缩写(Sun), %d: 两位日子(02), %b: 月份缩写(Jun), %Y: 四位年份(2026), %T: 24小时制时间(00:00:00) + return std::format("{:%a, %d %b %Y %T} GMT", tp_secs); +} + +std::string uns::btos(bool val) +{ + return (val ? "true" : "false"); +} + +bool uns::stob(const std::string& obj) +{ + return (obj == "true"); +} + +DateTime uns::stot(const std::string& obj) +{ + int nYear, nMonth, nDate, nHour, nMin, nSec; + int cnt = sscanf(obj.c_str(), "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec); + if (cnt != 6) + return DateTime(); + else + return DateTime(nYear, nMonth, nDate, nHour, nMin, nSec); +} + +std::string uns::RestoreURL(const std::string& url) +{ + std::string res = url; + std::replace(res.begin(), res.end(), '{', '&'); + std::replace(res.begin(), res.end(), '}', '='); + return res; +} + +void uns::Stringsplit(const std::string& str, const std::string& splits, std::vector& res) +{ + if (str == "") + return; + std::string strs = str + splits; + size_t pos = strs.find(splits); + size_t step = splits.size(); + while (pos != strs.npos) + { + std::string temp = strs.substr(0, pos); + res.push_back(temp); + strs = strs.substr(pos + step, strs.size()); + pos = strs.find(splits); + } +} + +void uns::ProcessPOSTArgs(const std::string& args, POSTArgs& args_output) +{ + args_output.clear(); + std::vector c1_split, c2_split; + Stringsplit(args, "&", c1_split); + for (const auto& kv : c1_split) + { + c2_split.clear(); + c2_split.shrink_to_fit(); + Stringsplit(kv, "=", c2_split); + if (c2_split.size() != 2) + continue; + if (c2_split[0] == "origin_url") + args_output.insert({ c2_split[0], RestoreURL(c2_split[1]) }); + else + args_output.insert({ c2_split[0], c2_split[1] }); + } +} + +std::string uns::tools::EncryptPassword(const std::string reg_date, const std::string& password) +{ + std::string res_reg_date = reg_date; + std::reverse(res_reg_date.begin(), res_reg_date.end()); + std::string war_pwd = reg_date + password + res_reg_date; + auto res = uns::UOHash::HashString(uns::HashID::SHA3_512, war_pwd); + if (!res) + return ""; + return res.GetResult(); +} + +std::string uns::tools::EncryptPasswordSodium(const std::string& pwd) +{ + // ======== 参数(128MB 内存) ======== + static const size_t MEMLIMIT = 128UL * 1024 * 1024; // 128 MB + static const uint64_t OPSLIMIT = crypto_pwhash_OPSLIMIT_MODERATE; + // ===================================== + + // 输出缓冲:libsodium 定义的固定大小 + char out_str[crypto_pwhash_STRBYTES] = { 0 }; + // 生成编码字符串(包含算法、参数、盐、hash),直接存 DB(TEXT) + if (crypto_pwhash_str(out_str, pwd.c_str(), pwd.size(), OPSLIMIT, MEMLIMIT) != 0) + return ""; + else + return std::string(out_str); +} + +bool uns::tools::CheckPasswordSodium(const std::string& pwd, const std::string& encrypted) +{ + return (crypto_pwhash_str_verify(encrypted.c_str(), pwd.c_str(), pwd.length()) == 0); +} + +std::string uns::tools::SecureRandomHex(size_t bytes) +{ + return RandomNumberGenerator::SecureRandomHex(bytes); +} + +std::string uns::tools::ToUpper(const std::string& s) +{ + std::string r; r.reserve(s.size()); + for (unsigned char c : s) + r.push_back(static_cast(std::toupper(c))); + return r; +} + +std::string uns::tools::ToLower(const std::string& s) +{ + std::string r; r.reserve(s.size()); + for (unsigned char c : s) + r.push_back(static_cast(std::tolower(c))); + return r; +} + +std::string uns::tools::CalculateFileHashSHA256(const std::string & file) +{ + // 1. 以二进制模式打开文件 + std::ifstream ifs(file, std::ios::binary); + if (!ifs.is_open()) // 文件打开失败,返回空字符串(也可以根据你的项目规范记录日志或抛出异常) + return std::string(); + // 2. 初始化 OpenSSL EVP 上下文,使用智能指针自动管理内存释放 + std::unique_ptr ctx(EVP_MD_CTX_new(), EVP_MD_CTX_free); + if (!ctx) + return std::string(); + // 3. 指定使用 SHA256 算法 + if (EVP_DigestInit_ex(ctx.get(), EVP_sha256(), nullptr) != 1) + return std::string(); + // 4. 分块读取文件并更新哈希计算(每次读取 4096 字节,避免大文件占用过多内存) + constexpr size_t kBufferSize = 4096; + char buffer[kBufferSize]; + while (ifs.read(buffer, kBufferSize) || ifs.gcount() > 0) + { + if (EVP_DigestUpdate(ctx.get(), buffer, ifs.gcount()) != 1) + return std::string(); + } + // 5. 结束哈希计算并获取二进制结果 + unsigned char hash[EVP_MAX_MD_SIZE]; + unsigned int length = 0; + if (EVP_DigestFinal_ex(ctx.get(), hash, &length) != 1) + return std::string(); + // 6. 将二进制哈希值转换为 16 进制字符串 (Hex String) + std::string hex_result; + hex_result.reserve(length * 2); + for (unsigned int i = 0; i < length; ++i) + { + char buf[3]; + snprintf(buf, sizeof(buf), "%02x", hash[i]); + hex_result.append(buf); + } + return hex_result; +} + +bool uns::secure::IsSafePath(const std::string & safe_path, const std::string & requested_path) +{ + return PathTraversal::IsSafePath(safe_path, requested_path); +} diff --git a/Global.h b/Global.h new file mode 100644 index 0000000..21cb029 --- /dev/null +++ b/Global.h @@ -0,0 +1,155 @@ +#pragma once +#include +#include +#include +#include "Export.h" +#include "DateTime.h" + +#pragma warning(disable : 4455) + +#define G_SERVER_VERSION "2.0.0" + +constexpr double G_SERVICE_UPDATE_TIMESPAN = 1000; + +#define G_SERVER_NAME "U.N.S. Server Core/" G_SERVER_VERSION + +constexpr auto G_SERVICE_NAME = "UNS_HTTP_ServerCore"; + +constexpr auto G_ERROR_PAGE = R"( + + + + HTTP {:03d} + + +
+

HTTP ERROR {:03d}

+
+

{}

+
+ + +)"; + +// inline constexpr std::string_view G_HTTP_STD_MONTH[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + +// inline constexpr std::string_view G_HTTP_STD_WEEK[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; + +namespace uns +{ + enum HTTPMethod + { + H_GET = 0b0000000001, + H_PUT = 0b0000000010, + H_POST = 0b0000000100, + H_HEAD = 0b0000001000, + H_TRACE = 0b0000010000, + H_PATCH = 0b0000100000, + H_DELETE = 0b0001000000, + H_OPTIONS = 0b0010000000, + H_CONNECT = 0b0100000000, + H_UNKNOWN = 0b1000000000, + H_ALL_ENABLED = 0b1111111111 + }; + + namespace cors + { + inline constexpr std::string_view reqh_o = "Origin"; + inline constexpr std::string_view reqh_acrm = "Access-Control-Request-Method"; + inline constexpr std::string_view reqh_acrh = "Access-Control-Request-Headers"; + + inline constexpr std::string_view resh_acao = "Access-Control-Allow-Origin"; + inline constexpr std::string_view resh_acam = "Access-Control-Allow-Methods"; + inline constexpr std::string_view resh_acah = "Access-Control-Allow-Headers"; + inline constexpr std::string_view resh_acac = "Access-Control-Allow-Credentials"; + inline constexpr std::string_view resh_acma = "Access-Control-Max-Age"; + }; + + using POSTArgs = std::map; + + std::string UNSWSC_DLL_EXPORT EncodeErrorPage(int code); + std::string UNSWSC_DLL_EXPORT EncodeHTTPTime(time_t* time); + + std::string UNSWSC_DLL_EXPORT btos(bool val); + bool UNSWSC_DLL_EXPORT stob(const std::string& obj); + DateTime UNSWSC_DLL_EXPORT stot(const std::string& obj); + std::string UNSWSC_DLL_EXPORT RestoreURL(const std::string& url); + void UNSWSC_DLL_EXPORT Stringsplit(const std::string& str, const std::string& splits, std::vector& res); + void UNSWSC_DLL_EXPORT ProcessPOSTArgs(const std::string& args, POSTArgs& args_output); + + namespace tools + { + //基于SHA3-256,无暴力破解防护能力,不建议使用 + std::string UNSWSC_DLL_EXPORT EncryptPassword(const std::string reg_date, const std::string& password); + //安全的密码加密函数,基于libsodium + std::string UNSWSC_DLL_EXPORT EncryptPasswordSodium(const std::string& pwd); + //密码检查函数 + bool UNSWSC_DLL_EXPORT CheckPasswordSodium(const std::string& pwd, const std::string& encrypted); + + //安全随机数 + std::string UNSWSC_DLL_EXPORT SecureRandomHex(size_t bytes); + + std::string UNSWSC_DLL_EXPORT ToUpper(const std::string& s); + std::string UNSWSC_DLL_EXPORT ToLower(const std::string& s); + + std::string UNSWSC_DLL_EXPORT CalculateFileHashSHA256(const std::string& file); + } + + namespace secure + { + /** + * @brief 基于物理与逻辑边界的路径穿透(目录穿越)安全校验 + * @param safe_path 允许访问的沙盒根目录(绝对或相对路径均可) + * @param requested_path 客户端传入的、解码后的目标子路径 + * @return true 安全(在沙盒内);false 不安全(企图穿越或路径非法) + */ + bool IsSafePath(const std::string& safe_path, const std::string& requested_path); + } +}; + +#undef MIN + +inline constexpr unsigned long long operator""B(unsigned long long n) +{ + return n; +} + +inline constexpr unsigned long long operator""KB(unsigned long long n) +{ + return (n * 1024); +} + +inline constexpr unsigned long long operator""MB(unsigned long long n) +{ + return (n * 1024 * 1024); +} + +inline constexpr unsigned long long operator""GB(unsigned long long n) +{ + return (n * 1024 * 1024 * 1024); +} + +inline constexpr unsigned long long operator""TB(unsigned long long n) +{ + return (n * 1024 * 1024 * 1024 * 1024); +} + +inline constexpr time_t operator""S(unsigned long long t) +{ + return t; +} + +inline constexpr time_t operator""MIN(unsigned long long t) +{ + return (t * 60); +} + +inline constexpr time_t operator""HOUR(unsigned long long t) +{ + return (t * 60 * 60); +} + +inline constexpr time_t operator""DAY(unsigned long long t) +{ + return (t * 60 * 60 * 24); +} diff --git a/HTTPObjects.cpp b/HTTPObjects.cpp new file mode 100644 index 0000000..b5a688c --- /dev/null +++ b/HTTPObjects.cpp @@ -0,0 +1,283 @@ +#include "HTTPObjects.h" +#include "HTTPObjectsBridge.h" + +namespace uns +{ + UrlQuery::UrlQuery() : pimpl(std::make_unique(webcc::UrlQuery{ "" })) + { + } + + UrlQuery::UrlQuery(std::unique_ptr impl) : pimpl(std::move(impl)) + { + } + + UrlQuery::~UrlQuery() = default; + + UrlQuery::UrlQuery(const UrlQuery& other) + : pimpl(std::make_unique(other.pimpl->webcc_query)) + { + } + + UrlQuery& UrlQuery::operator=(const UrlQuery& other) + { + if (this != &other) + { + pimpl = std::make_unique(other.pimpl->webcc_query); + } + return *this; + } + + UrlQuery::UrlQuery(UrlQuery&& other) noexcept = default; + UrlQuery& UrlQuery::operator=(UrlQuery&& other) noexcept = default; + + bool UrlQuery::Empty() const + { + return pimpl->webcc_query.Empty(); + } + + std::size_t UrlQuery::Size() const + { + return pimpl->webcc_query.Size(); + } + + bool UrlQuery::Has(const std::string& key) const + { + return pimpl->webcc_query.Has(key); + } + + const std::string& UrlQuery::Get(const std::string& key) const + { + return pimpl->webcc_query.Get(key); + } + + std::pair UrlQuery::Get(std::size_t index) const + { + const auto& raw_param = pimpl->webcc_query.Get(index); + return { raw_param.first, raw_param.second }; + } + + std::string UrlQuery::ToString(bool encode) const + { + return pimpl->webcc_query.ToString(encode); + } +} + +uns::FormPart::FormPart(std::unique_ptr impl) : pimpl(std::move(impl)) +{ +} + +uns::FormPart::~FormPart() = default; + +std::string uns::FormPart::GetNameS() const +{ + return pimpl->webcc_form->name(); +} + +std::string_view uns::FormPart::GetName() const +{ + return pimpl->webcc_form->name(); +} + +std::string uns::FormPart::GetFileNameS() const +{ + return pimpl->webcc_form->file_name(); +} + +std::string_view uns::FormPart::GetFileName() const +{ + return pimpl->webcc_form->file_name(); +} + +std::string uns::FormPart::GetMediaTypeS() const +{ + return pimpl->webcc_form->media_type(); +} + +std::string_view uns::FormPart::GetMediaType() const +{ + return pimpl->webcc_form->media_type(); +} + +const std::string& uns::FormPart::GetData() const +{ + return pimpl->webcc_form->data(); +} + +std::size_t uns::FormPart::GetSize() const +{ + // 注意:虽然 webcc 原生的 GetSize() 没有写 const 修饰符, + // 但由于 pimpl 内部存的是智能指针,这里依然可以在 const 函数里安全调用它 + return pimpl->webcc_form->GetSize(); +} + +std::size_t uns::FormPart::GetDataSize() const +{ + return pimpl->webcc_form->GetDataSize(); +} + +uns::Request::Request(std::unique_ptr impl) : pimpl(std::move(impl)) +{ +} + +uns::Request::~Request() = default; + +namespace uns +{ + std::string Request::GetMethodS() const + { + return pimpl->webcc_req->method(); + } + + std::string_view Request::GetMethod() const + { + return pimpl->webcc_req->method(); + } + + std::string Request::GetAddressS() const + { + return pimpl->webcc_req->address(); + } + + std::string_view Request::GetAddress() const + { + return pimpl->webcc_req->address(); + } + + size_t Request::GetContentLength() const + { + return pimpl->webcc_req->content_length(); + } + + std::string Request::GetDataS() const + { + return pimpl->webcc_req->data(); + } + + std::string_view Request::GetData() const + { + return pimpl->webcc_req->data(); + } + + std::string Request::GetSchemeS() const + { + return pimpl->webcc_req->url().scheme(); + } + + std::string_view Request::GetScheme() const + { + return pimpl->webcc_req->url().scheme(); + } + + std::string Request::GetHostS() const + { + return pimpl->webcc_req->host(); + } + + std::string_view Request::GetHost() const + { + return pimpl->webcc_req->host(); + } + + int Request::GetPortI() const + { + try + { + return std::stoi(pimpl->webcc_req->port(), nullptr, 10); + } + catch(const std::exception&) + { + return -1; + } + return -2; + } + + std::string Request::GetPortS() const + { + return pimpl->webcc_req->port(); + } + + std::string_view Request::GetPort() const + { + return pimpl->webcc_req->port(); + } + + std::string Request::GetPathS() const + { + return pimpl->webcc_req->url().path(); + } + + std::string_view Request::GetPath() const + { + return pimpl->webcc_req->url().path(); + } + + std::string Request::GetQueryStringS() const + { + return pimpl->webcc_req->url().query(); + } + + std::string_view Request::GetQueryString() const + { + return pimpl->webcc_req->url().query(); + } + + UrlQuery Request::GetQuery() const + { + auto query_impl = std::make_unique(pimpl->webcc_req->query()); + return UrlQuery(std::move(query_impl)); + } + + const std::vector& Request::GetArgs() const + { + return pimpl->webcc_req->args(); + } + + bool Request::IsForm() const + { + return pimpl->webcc_req->IsForm(); + } + + const std::vector& Request::GetFormParts() const + { + // 懒加载影子转换:仅在第一次访问且确属 Form 请求时构建镜像包装 + if (!pimpl->form_parts_cached) + { + if (pimpl->webcc_req->IsForm()) + { + const auto& raw_parts = pimpl->webcc_req->form_parts(); + pimpl->cached_form_parts.reserve(raw_parts.size()); + + for (const auto& raw_part : raw_parts) + { + auto part_impl = std::make_unique(raw_part); + // 由于 Request 是 FormPart 的友元,这里可以直接通过 new 访问其私有构造函数 + auto uns_part = std::shared_ptr(new FormPart(std::move(part_impl))); + pimpl->cached_form_parts.push_back(uns_part); + } + } + pimpl->form_parts_cached = true; + } + return pimpl->cached_form_parts; + } + + bool Request::HasHeader(std::string_view header) const + { + return pimpl->webcc_req->HasHeader(header); + } + + std::string Request::GetHeader(std::string_view header, bool* existed) const + { + return pimpl->webcc_req->GetHeader(header, existed); + } + + std::vector> Request::GetAllHeaders() const + { + return pimpl->webcc_req->GetAllHeaders().data(); + } +} + +uns::Response::Response(std::unique_ptr impl) : pimpl(std::move(impl)) +{ +} + +uns::Response::~Response() = default; diff --git a/HTTPObjects.h b/HTTPObjects.h new file mode 100644 index 0000000..0da37c8 --- /dev/null +++ b/HTTPObjects.h @@ -0,0 +1,336 @@ +#pragma once + +#include +#include +#include +#include +#include "Export.h" +#include + +class FileReceiver; + +namespace uns +{ + // HTTP status codes. + // Don't use "enum class" for converting to/from int easily. + // The full list is available here: + // https://en.wikipedia.org/wiki/List_of_HTTP_status_codes + enum Status + { + // 此临时响应表明客户端应继续请求,或者如果请求已完成,则忽略此响应。 + kContinue = 100, + // 此代码是在响应客户端的 Upgrade 请求标头时发送的,用于指示服务器即将切换到的协议。 + kSwitchingProtocols = 101, + // 此代码曾在 WebDAV 上下文中使用,表示服务器已收到请求,但在响应时无法提供状态。 + kProcessing = 102, + // 此状态码主要与 Link 标头一起使用,允许用户代理在服务器准备响应时开始预加载资源,或预连接到页面需要资源的源站。 + kEarlyHints = 103, + + // 请求成功。 + kOK = 200, + // 请求成功,并因此创建了一个新资源。 + kCreated = 201, + // 请求已被接收但尚未处理。 + kAccepted = 202, + // 此响应代码表示返回的元数据与原始服务器上可用的不完全相同,而是从本地或第三方副本收集的。这主要用于另一个资源的镜像或备份。 + kNonAuthoritativeInformation = 203, + // 对于此请求,没有内容可发送,但响应头可能有用。 + kNoContent = 204, + // 告知用户代理重置发送此请求的文档。 + kResetContent = 205, + // 当客户端请求了资源的一部分时,使用此响应代码进行响应。 + kPartialContent = 206, + // 在可能需要多个状态码的情况下,传递关于多个资源的信息。 + kMultiStatus = 207, + // 在 响应元素内部使用,以避免重复枚举同一集合的多个绑定的内部成员。 + kAlreadyReported = 208, + // 服务器已完成了对资源的 GET 请求,并且响应是对当前实例应用了一个或多个实例操作后的结果表示。 + kIMUsed = 226, + + // 在代理驱动(agent-driven)的内容协商中,请求有多个可能的响应,用户代理或用户应选择其中之一。 + kMultipleChoices = 300, + // 请求资源的 URL 已永久更改。新 URL 在响应中给出。 + kMovedPermanently = 301, + // 此响应代码意味着请求资源的 URI 已暂时更改。未来可能还会对 URI 进行进一步更改,因此客户端在未来的请求中应使用相同的 URI。 + kFound = 302, + // 服务器发送此响应以指示客户端使用 GET 请求在另一个 URI 获取请求的资源。 + kSeeOther = 303, + // 用于缓存目的。它告知客户端响应未被修改,因此客户端可以继续使用相同的缓存响应版本。 + kNotModified = 304, + // 在 HTTP 规范的前一版本中定义,表示请求的响应必须通过代理访问。由于涉及代理带内配置的安全问题,此状态码已被弃用。 + kUseProxy = 305, + // 此响应代码不再使用,但被保留。它曾在 HTTP/1.1 规范的先前版本中使用。 + k__Unused = 306, + // 服务器发送此响应以指示客户端使用与先前请求相同的方法在另一个 URI 获取请求的资源。其语义与 302 Found 响应代码相同,但用户代理不得更改使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在重定向请求中也必须使用 POST。 + kTemporaryRedirect = 307, + // 表示资源现在永久位于另一个 URI,由 Location 响应头指定。其语义与 301 Moved Permanently HTTP 响应代码相同,但用户代理不得更改使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在第二个请求中也必须使用 POST。 + kPermanentRedirect = 308, + + // 由于被认为是客户端错误的原因(例如,格式错误的请求语法、无效的请求消息结构或欺骗性的请求路由),服务器无法或不会处理该请求。 + kBadRequest = 400, + // 尽管 HTTP 标准指定为 "unauthorized",但从语义上讲,此响应的意思是 "unauthenticated"。即,客户端必须进行身份验证才能获得请求的响应。 + kUnauthorized = 401, + // 此代码最初用于数字支付系统,但此状态码很少使用,且不存在标准约定。 + kPaymentRequired = 402, + // 客户端没有访问内容的权利;也就是说,它是未授权的,因此服务器拒绝提供请求的资源。与 401 Unauthorized 不同,服务器知道客户端的身份。 + kForbidden = 403, + // 服务器找不到请求的资源。 + kNotFound = 404, + // 服务器知道请求方法,但目标资源不支持该方法。 + kMethodNotAllowed = 405, + // 当 Web 服务器执行服务器驱动的内容协商后,找不到任何符合用户代理给定条件的内容时,会发送此响应。 + kNotAcceptable = 406, + // 类似于 401 Unauthorized,但需要通过代理进行身份验证。 + kProxyAuthenticationRequired = 407, + // 某些服务器会在空闲连接上发送此响应,即使客户端之前没有任何请求。这意味着服务器希望关闭此未使用的连接。 + kRequestTimeout = 408, + // 当请求与服务器的当前状态冲突时,发送此响应。 + kConflict = 409, + // 当请求的内容已从服务器永久删除,且没有转发地址时,发送此响应。 + kGone = 410, + // 服务器拒绝了请求,因为未定义 Content-Length 标头字段,而服务器需要它。 + kLengthRequired = 411, + // 在条件请求中,客户端在其标头中指明了服务器不满足的前提条件。 + kPreconditionFailed = 412, + // 请求体大于服务器定义的限制。 + kContentTooLarge = 413, + // 客户端请求的 URI 长度超过了服务器愿意解释的长度。 + kURITooLong = 414, + // 服务器不支持请求数据的媒体格式,因此服务器拒绝该请求。 + kUnsupportedMediaType = 415, + // 无法满足请求中 Range 标头字段指定的范围。可能范围超出了目标资源数据的大小。 + kRangeNotSatisfiable = 416, + // 此响应代码表示服务器无法满足 Expect 请求标头字段指示的期望。 + kExpectationFailed = 417, + // 服务器拒绝尝试用茶壶煮咖啡。 + kIamATeapot = 418, + // 请求被发送到了一个无法产生响应的服务器。 + kMisdirectedRequest = 421, + // 请求格式正确,但由于语义错误而无法被遵循。 + kUnprocessableContent = 422, + // 正在访问的资源已被锁定。 + kLocked = 423, + // 由于先前的请求失败,导致当前请求失败。 + kFailedDependency = 424, + // 表示服务器不愿意冒险处理一个可能被重放的请求。 + kTooEarly = 425, + // 服务器拒绝使用当前协议执行请求,但可能在客户端升级到其他协议后愿意执行。服务器在 426 响应中发送 Upgrade 标头以指示所需的协议。 + kUpgradeRequired = 426, + // 原始服务器要求请求是有条件的。此响应旨在防止"丢失更新"问题,即客户端 GET 资源状态,修改后 PUT 回服务器,而同时第三方已修改了服务器上的状态,导致冲突。 + kPreconditionRequired = 428, + // 用户在给定的时间内发送了太多请求(速率限制)。 + kTooManyRequests = 429, + // 服务器因请求头字段太大而不愿意处理该请求。 + kRequestHeaderFieldsTooLarge = 431, + // 用户代理请求了一个无法合法提供的资源,例如被政府审查的网页。 + kUnavailableForLegalReasons = 451, + + // 服务器遇到了不知道如何处理的情况。此错误是通用性的,表示服务器找不到更合适的 5XX 状态码来响应。 + kInternalServerError = 500, + // 服务器不支持请求方法,无法处理。 + kNotImplemented = 501, + // 此错误响应意味着服务器作为网关或代理时,收到了一个无效的响应。 + kBadGateway = 502, + // 服务器尚未准备好处理请求。 + kServiceUnavailable = 503, + // 当服务器作为网关或代理,无法及时获得响应时,会给出此错误响应。 + kGatewayTimeout = 504, + // 服务器不支持请求中使用的 HTTP 版本。 + kHTTPVersionNotSupported = 505, + // 服务器存在内部配置错误:在内容协商过程中,被选中的变体被配置为自身参与内容协商,这导致在创建响应时出现循环引用。 + kVariantAlsoNegotiates = 506, + // 由于服务器无法存储成功完成请求所需的表示,因此无法对资源执行该方法。 + kInsufficientStorage = 507, + // 服务器在处理请求时检测到无限循环。 + kLoopDetected = 508, + // 客户端请求声明了一个应使用 HTTP 扩展(RFC 2774)来处理请求,但该扩展不受支持。 + kNotExtended = 510, + // 表示客户端需要进行身份验证才能获得网络访问权限。 + kNetworkAuthenticationRequired = 511, + + //Not Standard Code By UnknownObject + + // 请求载体的格式错误,如:无法解析的JSON等。 + k_uRequestFormatError = 489, + // 请求无效。可能是由于未正确携带数据等必要信息。 + k_uRequestInvalid = 490, + // 请求URL超范围。此响应表示请求的URL是错误的。 + k_uURLOutOfRange = 492, + // 无效的请求主机。指示请求时使用了错误的域名/IP。 + k_uInvalidRequestHost = 493, + // IP地址被封禁。 + k_uIPBlocked = 494, + // 非法上传请求。指示本次上传请求不符合服务器规定。 + k_uIllegalUpload = 495, + // 文件格式错误。指示上传的文件格式不符合服务器规定。 + k_uFileFormatError = 496, + // 无效文件。处理请求所需的文件已过期/无法访问。 + k_uInvalidFile = 497, + // 上传的文件过大。非文件上传时应使用 413 Content Too Large。 + k_uFileTooLarge = 498, + // 每秒请求数过多。仅在一些特殊API中使用,常规情况需使用 429 Too Many Requests。 + k_uRPSLimited = 499, + + // 子过程失败。服务器在处理请求的某个步骤中遇到无法恢复的错误。 + k_uSubProcessFalied = 533, + // 服务器检测到漏洞利用/可执行文件上传等网络攻击行为。 + k_uServerHateYou = 540, + // 检测到拒绝服务漏洞攻击。 + k_uDoSFound = 550, + // 检测到分布式拒绝服务漏洞攻击。 + k_uDDoSFound = 551, + // 未知的服务器错误。当服务器无法定位错误来源时返回。否则应使用 500 Internal Server Error。 + k_uUnknownServerError = 560 + }; + + // 路径穿透防御等级 + enum class PathTraversalDefenceLevel + { + DenyAll, //拒绝所有带有对应特征的路径 + AutoNormalize, //允许普通路径穿透,自动归一化,并要求进行安全路径检查 + AllowNormal, //允许普通路径穿透,原样返回,要求进行安全路径检查 + AllowAll [[deprecated("警告: AllowAll 已启用 - 路径穿透防御关闭 - 仅供测试环境使用.")]] //允许所有行为(仅供测试) + }; + + class UNSWSC_DLL_EXPORT UrlQuery + { + public: + UrlQuery(); + ~UrlQuery(); + + // 显式支持深拷贝与移动,内部完美同步 webcc 状态 + UrlQuery(const UrlQuery& other); + UrlQuery& operator=(const UrlQuery& other); + UrlQuery(UrlQuery&& other) noexcept; + UrlQuery& operator=(UrlQuery&& other) noexcept; + + public: + bool Empty() const; + std::size_t Size() const; + bool Has(const std::string& key) const; + const std::string& Get(const std::string& key) const; + std::pair Get(std::size_t index) const; + std::string ToString(bool encode = true) const; + + private: + friend class Request; + class Impl; + std::unique_ptr pimpl; + explicit UrlQuery(std::unique_ptr impl); + }; + + class UNSWSC_DLL_EXPORT FormPart + { + private: + class Impl; + + private: + friend class Request; + friend class ::FileReceiver; + + std::unique_ptr pimpl; + + private: + explicit FormPart(std::unique_ptr impl); + + public: + ~FormPart(); + + public: + std::string GetNameS() const; + std::string_view GetName() const; + std::string GetFileNameS() const; + std::string_view GetFileName() const; + std::string GetMediaTypeS() const; + std::string_view GetMediaType() const; + const std::string& GetData() const; + std::size_t GetSize() const; + std::size_t GetDataSize() const; + }; + + using FormPartPtr = std::shared_ptr; + + class UNSWSC_DLL_EXPORT Request + { + private: + class Impl; + friend class ServerCore; + friend class FileReceiverAdapter; + friend class ServerProcessorAdapter; + friend class SyncFileReceiverAdapter; + + std::unique_ptr pimpl; + + private: + explicit Request(std::unique_ptr impl); + + public: + ~Request(); + + Impl* GetImpl() const + { + return pimpl.get(); + } + + public: + // 基础请求信息 + std::string GetMethodS() const; + std::string_view GetMethod() const; + std::string GetAddressS() const; + std::string_view GetAddress() const; + size_t GetContentLength() const; + std::string GetDataS() const; + std::string_view GetData() const; + + // 扁平化后的 Url 核心数据项 + std::string GetSchemeS() const; + std::string_view GetScheme() const; + std::string GetHostS() const; + std::string_view GetHost() const; + int GetPortI() const; + std::string GetPortS() const; + std::string_view GetPort() const; + std::string GetPathS() const; + std::string_view GetPath() const; + std::string GetQueryStringS() const; + std::string_view GetQueryString() const; + + // 复杂复合对象获取 + UrlQuery GetQuery() const; + const std::vector& GetArgs() const; + + // 多部分表单(文件上传)支撑 + bool IsForm() const; + const std::vector& GetFormParts() const; + + // 请求头获取 + bool HasHeader(std::string_view header) const; + std::string GetHeader(std::string_view header, bool* existed = nullptr) const; + std::vector> GetAllHeaders() const; + }; + + class UNSWSC_DLL_EXPORT Response + { + private: + class Impl; + + private: + friend class ResponseBuilder; + + std::unique_ptr pimpl; + + private: + explicit Response(std::unique_ptr impl); + + public: + ~Response(); + + Impl* GetImpl() const + { + return pimpl.get(); + } + }; + + using RequestPtr = std::shared_ptr; + using ResponsePtr = std::shared_ptr; +} \ No newline at end of file diff --git a/HTTPObjectsBridge.h b/HTTPObjectsBridge.h new file mode 100644 index 0000000..b53204f --- /dev/null +++ b/HTTPObjectsBridge.h @@ -0,0 +1,62 @@ +#pragma once +#include +#include +#include "HTTPObjects.h" // 引入刚才的外观声明 + +class uns::UrlQuery::Impl +{ +public: + webcc::UrlQuery webcc_query; + + explicit Impl(const webcc::UrlQuery& query) : webcc_query(query) + { + } +}; + +class uns::FormPart::Impl +{ +public: + webcc::FormPartPtr webcc_form; + + explicit Impl(webcc::FormPartPtr res) : webcc_form(res) + { + } +}; + +// 在私有头文件里,明确定义外部壳类的 Impl 内部结构 +class uns::Request::Impl +{ +public: + webcc::RequestPtr webcc_req; + + // 影子缓存机制:用于解决 webcc 集合类型到外壳集合类型的无损生命周期映射 + mutable std::vector cached_form_parts; + mutable bool form_parts_cached = false; + + explicit Impl(webcc::RequestPtr req) : webcc_req(req) + { + } +}; + +class uns::Response::Impl +{ +public: + webcc::ResponsePtr webcc_res; + + explicit Impl(webcc::ResponsePtr res) : webcc_res(res) + { + } +}; + +namespace uns +{ + inline webcc::Status ConvertStatus(uns::Status s) + { + return static_cast(static_cast(s)); + } + + inline uns::Status ConvertStatus(webcc::Status s) + { + return static_cast(static_cast(s)); + } +} diff --git a/IPList.cpp b/IPList.cpp new file mode 100644 index 0000000..029816e --- /dev/null +++ b/IPList.cpp @@ -0,0 +1,106 @@ +#include "IPList.h" +#include + +bool IPList::CheckIPv4(std::string ip) +{ + std::regex v4("^(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$"); + return std::regex_match(ip, v4); +} + +IPList::IPList() +{ + list.clear(); +} + +IPList::IPList(std::initializer_list list) +{ + for (const auto& ele : list) + this->list.insert(ele); +} + +IPList::IPList(const IPList& obj) +{ + for (const auto& ele : obj.list) + list.insert(ele); +} + +bool IPList::Push(std::string ip) +{ + if (!CheckIPv4(ip)) + return false; + list.insert(ip); + return true; +} + +bool IPList::Pop(std::string ip) +{ + if (!Exist(ip)) + return false; + list.erase(ip); + return false; +} + +bool IPList::Exist(std::string ip) +{ + return (list.find(ip) != list.end()); +} + +bool IPList::Exist(std::string ip) const +{ + return (list.find(ip) != list.end()); +} + +bool IPList::Empty() +{ + return list.empty(); +} + +size_t IPList::Size() +{ + return list.size(); +} + +auto IPList::begin() +{ + return list.begin(); +} + +auto IPList::end() +{ + return list.end(); +} + +auto IPList::rbegin() +{ + return list.rbegin(); +} + +auto IPList::rend() +{ + return list.rend(); +} + +auto IPList::begin() const +{ + return list.begin(); +} + +auto IPList::end() const +{ + return list.end(); +} + +auto IPList::rbegin() const +{ + return list.rbegin(); +} + +auto IPList::rend() const +{ + return list.rend(); +} + +bool IPList::operator<(const IPList& obj) const +{ + return list < obj.list; +} diff --git a/IPList.h b/IPList.h new file mode 100644 index 0000000..daf71af --- /dev/null +++ b/IPList.h @@ -0,0 +1,41 @@ +#pragma once +#include +#include +#include "Export.h" +#include + +class UNSWSC_DLL_EXPORT IPList +{ +private: + std::set list; + +private: + bool CheckIPv4(std::string ip); + +public: + IPList(); + IPList(std::initializer_list list); + IPList(const IPList& obj); + +public: + bool Push(std::string ip); + bool Pop(std::string ip); + bool Exist(std::string ip); + bool Exist(std::string ip) const; + bool Empty(); + size_t Size(); + +public: + auto begin(); + auto end(); + auto rbegin(); + auto rend(); + auto begin() const; + auto end() const; + auto rbegin() const; + auto rend() const; + +public: + bool operator<(const IPList& obj) const; +}; + diff --git a/IPTable.cpp b/IPTable.cpp new file mode 100644 index 0000000..e1601ca --- /dev/null +++ b/IPTable.cpp @@ -0,0 +1,34 @@ +#include "IPTable.h" + +IPTable::IPTable() +{ + storage.clear(); +} + +IPTable::IPTable(const IPTable& obj) +{ + for (auto& ele : obj.storage) + storage.insert(ele); +} + +void IPTable::Appened(DateTime expr_time, IPList list) +{ + storage.insert(std::pair(expr_time, list)); +} + +void IPTable::Update() +{ + DateTime time = DateTime::Now(); + for (auto it = storage.begin(); it != storage.end(); it++) + if ((*it).first.GetTimeStamp() <= time.GetTimeStamp()) + storage.erase(it); + return; +} + +bool IPTable::IPExist(std::string ip) +{ + for (auto& ele : storage) + if (ele.second.Exist(ip)) + return true; + return false; +} diff --git a/IPTable.h b/IPTable.h new file mode 100644 index 0000000..3353e82 --- /dev/null +++ b/IPTable.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include "IPList.h" +#include "DateTime.h" + +class UNSWSC_DLL_EXPORT IPTable +{ +private: + std::set> storage; + +public: + IPTable(); + IPTable(const IPTable& obj); + +public: + void Appened(DateTime expr_time, IPList list); + void Update(); + bool IPExist(std::string ip); +}; + +using IPTablePtr = IPTable*; +//using IPTablePtr = std::shared_ptr; \ No newline at end of file diff --git a/LogArg.cpp b/LogArg.cpp new file mode 100644 index 0000000..6d44436 --- /dev/null +++ b/LogArg.cpp @@ -0,0 +1,15 @@ +#include "LogArg.h" +#ifndef _WIN32 +#include "utextcodec/UTextCodec.h" +#else +#include "../UTextCodec/UTextCodec.h" +#endif + +namespace uns +{ + // 宽字符转 UTF-8 实现 + std::string ConvertWStringToUtf8(std::wstring_view wstr) + { + return UTextCodec::WtoS(std::wstring(wstr)); + } +} diff --git a/LogArg.h b/LogArg.h new file mode 100644 index 0000000..53f7af5 --- /dev/null +++ b/LogArg.h @@ -0,0 +1,254 @@ +#pragma once +#include +#include +#include +#include +#include +#include "Export.h" +#include +#include +#include + +namespace uns +{ + // 前置声明捕获器 + struct RangeCapturer; + struct PairCapturer; + struct FuncCapturer; + struct TimeCapturer; + + // 终极 Variant 池:容纳所有可能解包出的原子形态 + using LogVariant = std::variant< + bool, char, int, unsigned int, long long, unsigned long long, double, std::string_view, const void*, + std::string, // 专门用于承载宽字符转换后的 UTF-8 临时字符串 + RangeCapturer, // 专门用于承载 std::vector / std::list 等容器 + PairCapturer, // 专门用于承载 std::pair (支持 std::map) + FuncCapturer, //承载 std::function + TimeCapturer //承载时间 + >; + + // --- 编译期类型推导工具链 --- + template + struct is_container : std::false_type + { + }; + + // 识别标准容器(排除字符串本身) + template + struct is_container().begin()), decltype(std::declval().end())>> : std::integral_constant && !std::is_same_v> + { + }; + + template struct is_pair : std::false_type + { + }; + + template struct is_pair> : std::true_type + { + }; + + // --- 延迟桥接结构体 --- + struct LogArg; + + struct RangeCapturer + { + const void* ptr; + void (*to_log_args)(const void*, std::vector&); + }; + + struct PairCapturer + { + const void* ptr; + void (*to_log_args)(const void*, std::vector&); + }; + + struct FuncCapturer + { + const void* code_ptr; // 真正改变:这里存真正的函数代码地址 + bool is_closure; // 标记:这究竟是个纯函数,还是个 Lambda 闭包 + }; + + // 升级版 Trait:不仅识别,还提取原生函数指针类型(R(*)(Args...)) + template struct function_traits + { + static constexpr bool is_func = false; + using pointer_type = void*; + }; + + template + struct function_traits> + { + static constexpr bool is_func = true; + using pointer_type = R(*)(Args...); // 提取出原生函数指针类型 + }; + + enum class TimeMode + { + Point, + TMPoint, + Duration + }; + + struct TimeCapturer + { + TimeMode mode{ TimeMode::Point }; + + std::tm _tm{}; + std::chrono::system_clock::time_point tp{}; + std::chrono::nanoseconds duration{ 0 }; + + std::string format_spec; // "%Y-%m-%d %H:%M:%S" or empty + + // 可选:单位策略控制 + bool smart_unit = true; + }; + + template + struct is_time_point : std::false_type + { + }; + + template + struct is_time_point> : std::true_type + { + }; + + template<> + struct is_time_point : std::true_type + { + }; + + template + inline constexpr bool is_time_point_v = is_time_point::value; + + template + struct is_duration : std::false_type + { + }; + + template + struct is_duration> : std::true_type + { + }; + + template + inline constexpr bool is_duration_v = is_duration::value; + + inline TimeCapturer MakeTimeCapturer(std::chrono::system_clock::time_point tp) + { + TimeCapturer c; + c.mode = TimeMode::Point; + c.tp = tp; + return c; + } + + template + inline TimeCapturer MakeTimeCapturer(std::chrono::duration d) + { + TimeCapturer c; + c.mode = TimeMode::Duration; + c.duration = std::chrono::duration_cast(d); + c.smart_unit = true; + return c; + } + + inline TimeCapturer MakeTimeCapturer(const std::tm& tm) + { + TimeCapturer c; + c.mode = TimeMode::TMPoint; + c._tm = tm; + return c; + } + + // --- 宽字符转换声明(实现卸载到 .cpp) --- + std::string UNSWSC_DLL_EXPORT ConvertWStringToUtf8(std::wstring_view wstr); + + // --- 核心包装类 --- + struct LogArg + { + LogVariant value; + + template + LogArg(T&& val) + { + using D = std::decay_t; + + // 1. 窄字符串系列(0拷贝) + if constexpr (std::is_same_v || std::is_same_v) + value = std::string_view(val); + else if constexpr (std::is_same_v || std::is_same_v) + value = val ? std::string_view(val) : std::string_view(""); + // 2. 宽字符串系列(特殊处理:触发内部 UTF-8 转换) + else if constexpr (std::is_same_v || std::is_same_v) + value = ConvertWStringToUtf8(val); + else if constexpr (std::is_same_v || std::is_same_v) + value = val ? ConvertWStringToUtf8(val) : std::string(""); + // 3. 基础原子类型(防范 wchar_t 被误判为整数) + else if constexpr (std::is_same_v || std::is_same_v || std::is_same_v) + value = ConvertWStringToUtf8(std::wstring_view((const wchar_t*)&val, 1)); + else if constexpr (std::is_same_v) + value = static_cast(val); + else if constexpr (std::is_same_v || std::is_same_v) + value = static_cast(val); + // 3.5 时间点类型系列(防止时间对象退化为未知类型) + else if constexpr (is_time_point_v) + value = MakeTimeCapturer(val); + else if constexpr (is_duration_v) + value = MakeTimeCapturer(val); + // 4. 全整型变种矩阵 (short, int, long, long long, unsigned...) + else if constexpr (std::is_integral_v && std::is_signed_v) + { + if constexpr (sizeof(D) <= sizeof(int)) + value = static_cast(val); + else + value = static_cast(val); + } + else if constexpr (std::is_integral_v && std::is_unsigned_v) + { + if constexpr (sizeof(D) <= sizeof(unsigned int)) + value = static_cast(val); + else + value = static_cast(val); + } + // 5. 浮点矩阵 + else if constexpr (std::is_floating_point_v) + value = static_cast(val); + // 6. 指针 + else if constexpr (std::is_pointer_v) + value = static_cast(val); + // 7. 标准库容器(关键点:利用 Lambda 闭包在不引入 fmt 的情况下擦除容器类型!) + else if constexpr (is_container::value) + { + value = RangeCapturer{ &val, [] (const void* p, std::vector& out) + { + for (const auto& item : *static_cast(p)) + out.emplace_back(item); // 递归包装子元素 + } + }; + } + // 8. 键值对(支持 Map 展开) + else if constexpr (is_pair::value) + { + value = PairCapturer{ &val, [] (const void* p, std::vector& out) + { + const auto& pair = *static_cast(p); + out.emplace_back(pair.first); + out.emplace_back(pair.second); + } + }; + } + else if constexpr (function_traits::is_func) + { + using TargetPtr = typename function_traits::pointer_type; + // 关键点:尝试用 target() 拿底层指针 + // std::function::target() 返回的是 T*,所以如果 T 是函数指针,返回的就是“函数指针的指针” + if (auto* const* func_ptr = val.template target()) // 情况 A:内部装的是普通纯函数或静态成员函数 + value = FuncCapturer{ reinterpret_cast(*func_ptr), false }; + else // 情况 B:内部装的是 Lambda 表达式或带状态的仿函数, 此时它在堆/栈上有一个闭包实体,我们退而求其次,打印这个闭包对象的地址 + value = FuncCapturer{ static_cast(&val), true }; + } + else + value = std::string_view(""); + } + }; +} \ No newline at end of file diff --git a/PathTraversal.cpp b/PathTraversal.cpp new file mode 100644 index 0000000..3d6d4d2 --- /dev/null +++ b/PathTraversal.cpp @@ -0,0 +1,175 @@ +#include "PathTraversal.h" +#include +#include + +bool PathTraversal::InlineHasTraversalPattern(std::string_view path) +{ + if (path == "..") + return true; + if (path.rfind("../", 0) == 0) + return true; + if (path.find("/../") != std::string::npos) + return true; + if (path.size() >= 3 && path.compare(path.size() - 3, 3, "/..") == 0) + return true; + return false; +} + +std::string PathTraversal::UrlDecode(std::string_view src) +{ + std::string dst; + dst.reserve(src.length()); // 预分配内存,优化性能 + + for (size_t i = 0; i < src.length(); ++i) + { + // 确保 % 后面至少还有两个字符 + if ((src[i] == '%') && ((i + 2) < src.length())) + { + // 转换为 unsigned char 规避 std::isxdigit 在处理非 ASCII(如UTF-8) 时的未定义行为 + unsigned char hi = static_cast(src[i + 1]); + unsigned char lo = static_cast(src[i + 2]); + + if (std::isxdigit(hi) && std::isxdigit(lo)) + { + auto hexToChar = [] (unsigned char c) -> int + { + if ((c >= '0') && (c <= '9')) + return c - '0'; + if ((c >= 'a') && (c <= 'f')) + return c - 'a' + 10; + if ((c >= 'A') && (c <= 'F')) + return c - 'A' + 10; + return 0; + }; + dst += static_cast((hexToChar(hi) << 4) | hexToChar(lo)); + i += 2; + continue; + } + } + dst += src[i]; + } + return dst; +} + +bool PathTraversal::HasPathTraversalPattern(std::string_view raw_url_path) +{ + if (raw_url_path.empty()) + return false; + // 1. 进行 URL 解码,让隐藏的 %2f, %2e 现出原形 + std::string decoded = UrlDecode(raw_url_path); + // 2. 统一将 Windows 风格的反斜杠 `\` 替换为正斜杠 `/`,防止利用反斜杠绕过 + std::replace(decoded.begin(), decoded.end(), '\\', '/'); + // 3. 特征级严格匹配: + // 路径穿透的本质是形成一个独立的 ".." 路径层级。 + // 它只可能以四种形态存在:".."、"../开头的路径"、"/../中间路径"、以及"/.."结尾的路径。 + if (decoded == "..") + return true; + if (decoded.rfind("../", 0) == 0) // 检查是否以 "../" 开头 + return true; + if (decoded.find("/../") != std::string::npos) // 检查是否包含 "/../" + return true; + if (decoded.size() >= 3 && decoded.compare(decoded.size() - 3, 3, "/..") == 0) // 检查是否以 "/.." 结尾 + return true; + return false; +} + +bool PathTraversal::IsSafePath(const std::filesystem::path& base_path, const std::filesystem::path& user_path) +{ + namespace fs = std::filesystem; + try + { + // 1. 规范化沙盒基准路径 + fs::path canonical_base = fs::weakly_canonical(base_path); + // 2. 拼接并规范化目标路径 + // 注意:若 user_path 为绝对路径(如 /etc/passwd),operator/ 会直接覆盖前面的路径, + // weakly_canonical 依然能正确将其解析为最终的物理绝对路径。 + fs::path canonical_target = fs::weakly_canonical(canonical_base / user_path); + // 3. 计算逻辑相对关系 + auto rel = canonical_target.lexically_relative(canonical_base); + // 4. 边界一票否决制: + // - 如果 rel 为空,说明两者不在同一根目录下(例如 Windows 跨盘符 C:\ 到 D:\) + // - 如果相对路径的第一个组件是 "..", 说明逻辑路径已经逃逸出根目录 + if (rel.empty() || *rel.begin() == "..") + return false; + return true; + } + catch (...) + { + // 捕获任何潜在的系统路径解析异常(如超长路径、非法字符等) + return false; + } +} + +PathTraversal::UrlSafetyStatus PathTraversal::AnalyzeUrlTraversal(std::string_view raw_url_path) +{ + // 1. 检查原始明文中是否存在穿透特征(统一斜杠处理) + std::string raw_normalized_slash(raw_url_path); + std::replace(raw_normalized_slash.begin(), raw_normalized_slash.end(), '\\', '/'); + bool raw_has_traversal = InlineHasTraversalPattern(raw_normalized_slash); + // 2. 进行 URL 解码,让隐藏的 %2f, %2e, %5c 现出原形 + std::string decoded_path = UrlDecode(raw_url_path); + std::replace(decoded_path.begin(), decoded_path.end(), '\\', '/'); + bool decoded_has_traversal = InlineHasTraversalPattern(decoded_path); + // 3. 对比前后差异 + if (decoded_has_traversal) + { + if (!raw_has_traversal) // 【核心逻辑】明文看起来很安全,解码后突然蹦出穿透特征 -> 判定为转义绕过攻击 + return UrlSafetyStatus::EvasiveTraversal; + // 明文和密文都有,属于客户端手荡或老旧 SDK 拼接未规范化 + return UrlSafetyStatus::LiteralTraversal; + } + return UrlSafetyStatus::Safe; +} + +std::string PathTraversal::NormalizeUrlPath(std::string_view decoded_url_path) +{ + if (decoded_url_path.empty()) + return "/"; + std::vector segments; + size_t start = 0; + // 逻辑切分路径组件 + while (start < decoded_url_path.length()) + { + size_t end = decoded_url_path.find_first_of("/\\", start); + std::string_view segment = decoded_url_path.substr(start, end - start); + + if (!segment.empty() && segment != ".") + { + if (segment == "..") + { + // 遇到 .. 则弹栈,实现路径向上坍缩 + if (!segments.empty()) + segments.pop_back(); + } + else + segments.push_back(segment); + } + if (end == std::string_view::npos) + break; + start = end + 1; + } + // 重新拼接规范化后的标准 URL 路径 + std::string result; + for (const auto& seg : segments) + { + result += "/"; + result.append(seg); + } + return result.empty() ? "/" : result; +} + +std::string PathTraversal::ToString(UrlSafetyStatus s) +{ + switch(s) + { + case UrlSafetyStatus::Safe: + return "Safe"; + case UrlSafetyStatus::LiteralTraversal: + return "LiteralTraversal"; + case UrlSafetyStatus::EvasiveTraversal: + return "EvasiveTraversal"; + default: + return "Unknown??"; + } + return "Unknown??"; +} diff --git a/PathTraversal.h b/PathTraversal.h new file mode 100644 index 0000000..36eff82 --- /dev/null +++ b/PathTraversal.h @@ -0,0 +1,55 @@ +#pragma once +#include +#include +#include + +class PathTraversal +{ +public: + enum class UrlSafetyStatus + { + Safe, // 1. 完全安全:无任何穿透特征 + LiteralTraversal, // 2. 明文穿透:URL 包含裸 ".."(老旧客户端未展开,内核可选择为其“规范化”后放行) + EvasiveTraversal // 3. 转义伪装:明文无异常,解码后才出现 ".."(100% 恶意攻击,内核应直接阻断并拉黑) + }; + +private: + /** + * @brief 内部辅助:检测已统一斜杠的字符串中是否包含标准的 ".." 路径层级 + */ + static bool InlineHasTraversalPattern(std::string_view path); + +public: + /** + * @brief 实用可靠的 URL 解码函数 (符合 RFC 3986 规范) + * @note 针对路径解析优化:未将 '+' 转换为系统空格('+'仅在 query 参数中代表空格,在 path 中代表字面量) + */ + static std::string UrlDecode(std::string_view src); + /** + * @brief 纯字符串层面的路径穿透行为检测 (内核特征级拦截) + * @param raw_url_path 客户端传入的原始未解码 URL 路径 (注意:必须是不包含 Query 参数的纯 Path 部分) + * @return true 存在路径穿透特征(危险);false 未检测到穿透特征(安全) + */ + static bool HasPathTraversalPattern(std::string_view raw_url_path); + /** + * @brief 基于物理与逻辑边界的路径穿透(目录穿越)安全校验 + * @param base_path 允许访问的沙盒根目录(绝对或相对路径均可) + * @param user_path 客户端传入的、解码后的目标子路径 + * @return true 安全(在沙盒内);false 不安全(企图穿越或路径非法) + */ + static bool IsSafePath(const std::filesystem::path& base_path, const std::filesystem::path& user_path); + /** + * @brief 函数 1:内核级明文与密文对比检测 + * @param raw_url_path 核心网关拿到的原始未解码、且已剥离 Query 参数的纯 Path 部分 + */ + static UrlSafetyStatus AnalyzeUrlTraversal(std::string_view raw_url_path); + /** + * @brief 函数 2:纯文本 URL 路径规范化 (实现 RFC 3986 逻辑) + * @details 剥离路径中所有的 "." 和 "..",将其坍缩为安全的绝对路由路径(例如:把 `/a/b/../c` 规范化为 `/a/c`) + * @param decoded_url_path 已经过安全校验并确认非恶意攻击的【已解码】路径 + */ + static std::string NormalizeUrlPath(std::string_view decoded_url_path); + + static std::string ToString(UrlSafetyStatus s); +}; + diff --git a/ProcessorAdapter.h b/ProcessorAdapter.h new file mode 100644 index 0000000..02d6bcf --- /dev/null +++ b/ProcessorAdapter.h @@ -0,0 +1,113 @@ +#pragma once + +#include "IPTable.h" +#include +#include "FileReceiver.h" +#include "ServerProcessor.h" +#include "HTTPObjectsBridge.h" // 确保能看到 Request::Impl 结构体 + +namespace uns +{ + class IBlockedIpUpdatable + { + public: + virtual ~IBlockedIpUpdatable() = default; + + // 统一的库内更新接口(这里的 YourIPContainerType 请替换为你 BlockedIPs 的实际类型) + virtual void ApplyIpUpdate(IPTablePtr blocked_ips) = 0; + }; + + // 隐藏在动态库内部的适配器,对外部不可见 + + class ServerProcessorAdapter : public webcc::View, public IBlockedIpUpdatable + { + private: + std::shared_ptr user_processor; + + public: + explicit ServerProcessorAdapter(std::shared_ptr processor) : user_processor(processor) + { + } + + // 完美的把 webcc 的驱动流,翻译给用户的纯净业务类 + webcc::ResponsePtr Handle(webcc::RequestPtr request) final + { + auto uns_req = uns::RequestPtr(new uns::Request(std::make_unique(request))); + // 调用用户的业务类 + uns::ResponsePtr uns_res = user_processor->Handle(uns_req); + return uns_res->GetImpl()->webcc_res; + } + + bool Stream(const std::string& method) final + { + return user_processor->Stream(method); + } + + void ApplyIpUpdate(IPTablePtr blocked_ips) override + { + user_processor->UpdateBlockedIPList(blocked_ips); + } + }; + + class FileReceiverAdapter : public webcc::View, public IBlockedIpUpdatable + { + private: + std::shared_ptr<::FileReceiver> user_reciver; // 持有用户的派生类对象 + + public: + explicit FileReceiverAdapter(std::shared_ptr reciver) : user_reciver(reciver) + { + } + + // 完美的把 webcc 的驱动流,翻译给用户的纯净业务类 + webcc::ResponsePtr Handle(webcc::RequestPtr request) final + { + auto uns_req = uns::RequestPtr(new uns::Request(std::make_unique(request))); + // 调用用户的业务类 + uns::ResponsePtr uns_res = user_reciver->Execute(uns_req); + return uns_res->GetImpl()->webcc_res; + } + + bool Stream(const std::string& method) final + { + // 所有数据都不能由webcc进行串流,否则将无法从request中获取文件 + return false; + } + + void ApplyIpUpdate(IPTablePtr blocked_ips) override + { + user_reciver->UpdateBlockedIPs(blocked_ips); + } + }; + + class SyncFileReceiverAdapter : public webcc::View, public IBlockedIpUpdatable + { + private: + std::shared_ptr user_reciver; // 持有用户的派生类对象 + + public: + explicit SyncFileReceiverAdapter(std::shared_ptr reciver) : user_reciver(reciver) + { + } + + // 完美的把 webcc 的驱动流,翻译给用户的纯净业务类 + webcc::ResponsePtr Handle(webcc::RequestPtr request) final + { + auto uns_req = uns::RequestPtr(new uns::Request(std::make_unique(request))); + // 调用用户的业务类 + uns::ResponsePtr uns_res = user_reciver->Execute(uns_req); + return uns_res->GetImpl()->webcc_res; + } + + bool Stream(const std::string& method) final + { + // 所有数据都不能由webcc进行串流,否则将无法从request中获取文件 + return false; + } + + void ApplyIpUpdate(IPTablePtr blocked_ips) override + { + user_reciver->UpdateBlockedIPs(blocked_ips); + } + }; +} \ No newline at end of file diff --git a/SafeRNG.cpp b/SafeRNG.cpp new file mode 100644 index 0000000..94053a3 --- /dev/null +++ b/SafeRNG.cpp @@ -0,0 +1,128 @@ +#include "SafeRNG.h" + +#include +#include +#include +#include +#include + +bool RandomNumberGenerator::FillWithOpenSSLRandom(unsigned char* dst, size_t len) noexcept +{ + try + { + while (len > 0) + { + int chunk = (len > static_cast(INT_MAX)) ? INT_MAX : static_cast(len); + // RAND_bytes 返回 1 成功 + int rc = RAND_bytes(dst, chunk); + if (rc != 1) + return false; + dst += chunk; + len -= static_cast(chunk); + } + return true; + } + catch (...) + { + return false; + } +} + +bool RandomNumberGenerator::FillWithSTDMT19937_64(unsigned char* dst, size_t len) noexcept +{ + try + { + // 先尝试用 random_device 为 mt19937_64 提供种子 + std::mt19937_64 gen; + try + { + std::random_device rd; + // 将几个 rd() 的值混合到一个 seed 中 + uint64_t seed = 0; + for (int i = 0; i < 4; ++i) + seed ^= (static_cast(rd()) + 0x9e3779b97f4a7c15ULL + (seed << 6) + (seed >> 2)); + gen.seed(seed); + } + catch (...) + { + // random_device 可能抛或不可靠;退回到时间戳种子(不可预测性较低) + uint64_t seed = static_cast(std::chrono::high_resolution_clock::now().time_since_epoch().count()); + gen.seed(seed); + } + + // 逐 8 字节生成并拷贝;最后处理剩余字节 + while (len >= 8) + { + uint64_t v = gen(); + std::memcpy(dst, &v, 8); + dst += 8; + len -= 8; + } + if (len > 0) + { + uint64_t v = gen(); + std::memcpy(dst, &v, len); + } + return true; + } + catch (...) + { + return false; + } +} + +std::string RandomNumberGenerator::Bytes2HexString(const unsigned char* data, size_t len) noexcept +{ + try + { + const char* hex_chars = "0123456789ABCDEF"; + std::string out; + out.resize(len * 2); + for (std::size_t i = 0; i < len; ++i) + { + unsigned char v = data[i]; + out[2 * i] = hex_chars[(v >> 4) & 0xF]; + out[2 * i + 1] = hex_chars[v & 0xF]; + } + return out; + } + catch (...) + { + return std::string(); + } +} + +std::string RandomNumberGenerator::SecureRandomHex(size_t bytes) +{ + if (bytes == 0) + return std::string(); + + // 分配原始缓冲区(可能抛 bad_alloc -> catch below) + unsigned char* buf = nullptr; + try + { + buf = static_cast(::operator new(bytes)); + } + catch (...) + { + return std::string(); // 无法分配内存,返回空字符串表示失败 + } + + bool ok = FillWithOpenSSLRandom(buf, bytes); + if (!ok) + { + //printf_s("OpenSSL Failure!\n"); + // OpenSSL 失败:使用伪随机兜底(保证会产出数据) + bool ok2 = FillWithSTDMT19937_64(buf, bytes); + if (!ok2) + { + // 极端失败:释放并返回空字符串 + ::operator delete(buf); + return std::string(); + } + } + // 转 hex 并返回(Bytes2HexString 会在异常时返回空字符串) + std::string hex = Bytes2HexString(buf, bytes); + ::operator delete(buf); + return hex; +} \ No newline at end of file diff --git a/SafeRNG.h b/SafeRNG.h new file mode 100644 index 0000000..a85d1ee --- /dev/null +++ b/SafeRNG.h @@ -0,0 +1,15 @@ +#pragma once +#include + +class RandomNumberGenerator +{ +private: + //主方案:OpenSSL,安全随机数,有极小概率失败 + static bool FillWithOpenSSLRandom(unsigned char* dst, size_t len) noexcept; + //备用方案:std::mt19937_64/时间戳伪随机数,不怎么安全但是一定有数 + static bool FillWithSTDMT19937_64(unsigned char* dst, size_t len) noexcept; + static std::string Bytes2HexString(const unsigned char* data, size_t len) noexcept; + +public: + static std::string SecureRandomHex(size_t bytes); +}; \ No newline at end of file diff --git a/ServerCore.cpp b/ServerCore.cpp new file mode 100644 index 0000000..b255d26 --- /dev/null +++ b/ServerCore.cpp @@ -0,0 +1,188 @@ +#include "ServerCore.h" +#include "Global.h" +#include "IPTable.h" +#include "ServerLogger.h" +#include "CORSProcessor.h" +#include +#include +#include +#include "ProcessorAdapter.h" + +class ServerCore::Impl +{ +public: + int port = 0; + webcc::Server* ccServer = nullptr; + std::thread thServer; + IPTable BlockedIPs; + +public: + explicit Impl(int port) + { + this->port = port; + ccServer = new webcc::Server(boost::asio::ip::tcp::v4(), port); + ccServer->SetDefaultServerName(G_SERVER_NAME); + webcc::utility::SetCustomUA(G_SERVER_NAME); + SCLOGF_INFO("ServerCore constructed on port {}, version: <{}>", port, G_SERVER_NAME); + } + + ~Impl() + { + if(ccServer != nullptr) + { + if(ccServer->IsRunning()) + ccServer->Stop(); + delete ccServer; + } + } + +public: + static void ServerThreadFunction(webcc::Server* server, int worker_thread, int loop_thread) + { + if (server == nullptr) + return; + server->set_buffer_size(10240); + SCLOGF_INFO("ServerCore thread ready: {} Worker(s), {} Loop(s)", worker_thread, loop_thread); + server->Run(worker_thread, loop_thread); + return; + } + + static webcc::Strings ConvertMethods(std::uint32_t dwmethod) + { + webcc::Strings res; + if (dwmethod & uns::H_GET) + res.push_back("GET"); + if (dwmethod & uns::H_PUT) + res.push_back("PUT"); + if (dwmethod & uns::H_HEAD) + res.push_back("HEAD"); + if (dwmethod & uns::H_POST) + res.push_back("POST"); + if (dwmethod & uns::H_TRACE) + res.push_back("TRACE"); + if (dwmethod & uns::H_PATCH) + res.push_back("PATCH"); + if (dwmethod & uns::H_DELETE) + res.push_back("DELETE"); + if (dwmethod & uns::H_OPTIONS) + res.push_back("OPTIONS"); + if (dwmethod & uns::H_CONNECT) + res.push_back("CONNECT"); + return res; + } +}; + +ServerCore::ServerCore(int port) : pimpl(std::make_unique(port)) +{ +} + +ServerCore::~ServerCore() = default; + +void ServerCore::Run(int worker_thread, int loop_thread) +{ + if (pimpl->ccServer == nullptr) + return; + pimpl->ccServer->set_buffer_size(10240); + SCLOGF_INFO("ServerCore ready: {} Worker(s), {} Loop(s)", worker_thread, loop_thread); + pimpl->ccServer->Run(worker_thread, loop_thread); + return; +} + +void ServerCore::ThreadRun(int worker_thread, int loop_thread) +{ + using namespace std::chrono; + if (pimpl->ccServer == nullptr) + return; + pimpl->thServer = std::thread(Impl::ServerThreadFunction, pimpl->ccServer, worker_thread, loop_thread); + pimpl->thServer.detach(); + std::this_thread::sleep_for(100ms); + if (pimpl->ccServer->IsRunning()) + SCLOG_INFO("ServerCore Running"); + return; +} + +void ServerCore::Stop() +{ + if (pimpl->ccServer == nullptr) + return; + pimpl->ccServer->Stop(); + SCLOG_INFO("ServerCore Stopped"); + return; +} + +bool ServerCore::Running() +{ + return pimpl->ccServer->IsRunning(); +} + +void ServerCore::UpdateProcessor() +{ + for (size_t i = 0; i < pimpl->ccServer->GetViewCount(); i++) + { + auto updatable_ptr = std::dynamic_pointer_cast(pimpl->ccServer->AccessView(i)); + if (updatable_ptr != nullptr) + updatable_ptr->ApplyIpUpdate(&pimpl->BlockedIPs); + } + SCLOG_TRACE("Blocked IP list updated"); + return; +} + +bool ServerCore::EnableCORSSupport() +{ + return AppenedProcessor(CORSProcessor::UrlRegex(), CORSProcessor::SharedPtr(), uns::H_OPTIONS); +} + +bool ServerCore::AppenedProcessor(std::string url, ServerProcessorPtr ptr, std::uint32_t methods, bool enable_ip_check) +{ + if (enable_ip_check) + { + ptr->EnableIPCheck(); + ptr->UpdateBlockedIPList(&pimpl->BlockedIPs); + } + auto adapter = std::make_shared(ptr); + bool bret = pimpl->ccServer->Route(webcc::UrlRegex(url), adapter, Impl::ConvertMethods(methods)); + if (bret) + SCLOG_INFO("ServerProcessor added. URL: [%s], Method code: <%s>", url.c_str(), uns::toBinary(methods, 10).c_str()); + else + SCLOG_ERROR("ServerProcessor add faliure. URL: [%s], Method code: <%s>", url.c_str(), uns::toBinary(methods, 10).c_str()); + return bret; +} + +bool ServerCore::AppenedFileReceiver(std::string url, FileReceiverPtr ptr, std::uint32_t methods, FileProcessorCallback fpcb, bool html_response) +{ + ptr->SetFileCallback(fpcb); + ptr->UpdateBlockedIPs(&pimpl->BlockedIPs); + ptr->SetResponseMode(html_response); + auto adapter = std::make_shared(ptr); + bool bret = pimpl->ccServer->Route(webcc::UrlRegex(url), adapter, Impl::ConvertMethods(methods)); + if (bret) + SCLOG_INFO("FileReceiver added. URL: [%s], Method code: <%s>", url.c_str(), uns::toBinary(methods, 10).c_str()); + else + SCLOG_ERROR("FileReceiver add faliure. URL: [%s], Method code: <%s>", url.c_str(), uns::toBinary(methods, 10).c_str()); + return bret; +} + +bool ServerCore::AppenedFileReceiver(std::string url, SyncFileReceiverPtr ptr, std::uint32_t methods, bool html_response) +{ + ptr->UpdateBlockedIPs(&pimpl->BlockedIPs); + ptr->SetResponseMode(html_response); + auto adapter = std::make_shared(ptr); + bool bret = pimpl->ccServer->Route(webcc::UrlRegex(url), adapter, Impl::ConvertMethods(methods)); + if (bret) + SCLOG_INFO("SyncFileReceiver added. URL: [%s], Method code: <%s>", url.c_str(), uns::toBinary(methods, 10).c_str()); + else + SCLOG_ERROR("SyncFileReceiver add faliure. URL: [%s], Method code: <%s>", url.c_str(), uns::toBinary(methods, 10).c_str()); + return bret; +} + +void ServerCore::EnableWebCCLog(const std::string& path, int level) +{ + if(path.empty()) + { + WEBCC_LOG_INIT_2("", webcc::LOG_CONSOLE, level); + } + else + { + WEBCC_LOG_INIT_2(path.c_str(), webcc::LOG_CONSOLE | webcc::LOG_CONSOLE_FILE_APPEND, level); + } +} diff --git a/ServerCore.h b/ServerCore.h new file mode 100644 index 0000000..61e4685 --- /dev/null +++ b/ServerCore.h @@ -0,0 +1,48 @@ +/* +* Unknown Network Service Web Server Core +* Version 1.2.2 +* +* TCP Core - boost::aiso +* HTTP Core - webcc +* Application Level Repack & Windows Service Interface - UnknownObject +*/ + +#pragma once +#include +#include +#include "Global.h" +#include "Export.h" +#include "FileReceiver.h" +#include "ServerProcessor.h" +#include "SyncFileReceiver.h" + +class UNSWSC_DLL_EXPORT ServerCore +{ +private: + class Impl; + std::unique_ptr pimpl; + +public: + ServerCore(int port); + ~ServerCore(); + ServerCore() = delete; + ServerCore(const ServerCore& obj) = delete; + ServerCore& operator=(const ServerCore& obj) = delete; + +public: + void Run(int worker_thread = 1, int loop_thread = 1); + void ThreadRun(int worker_thread = 1, int loop_thread = 1); + void Stop(); + bool Running(); + void UpdateProcessor(); + bool EnableCORSSupport(); + bool AppenedProcessor(std::string url, ServerProcessorPtr ptr, std::uint32_t methods, bool enable_ip_check = false); + bool AppenedFileReceiver(std::string url, FileReceiverPtr ptr, std::uint32_t methods, FileProcessorCallback fpcb, bool html_response = false); + bool AppenedFileReceiver(std::string url, SyncFileReceiverPtr ptr, std::uint32_t methods, bool html_response = false); + +public: + //启用WebCC日志 + //path: 日志存放文件夹,留空为仅控制台日志 + //level: 0-4, 0=VERB, 1=INFO, 2=USER(default), 3=WARN, 4=ERROR + static void EnableWebCCLog(const std::string& path = "", int level = 2); +}; \ No newline at end of file diff --git a/ServerLogger.cpp b/ServerLogger.cpp new file mode 100644 index 0000000..38685c1 --- /dev/null +++ b/ServerLogger.cpp @@ -0,0 +1,704 @@ +#include "ServerLogger.h" +#include +#include +#include +#include +#include +#include + +// 格式化用的辅助函数 + +struct DurationView +{ + long double value; + const char* unit; +}; + +inline std::tm ToTm(std::chrono::system_clock::time_point tp) +{ + return fmt::localtime(std::chrono::system_clock::to_time_t(tp)); +} + +inline std::string FormatTime(const std::tm& tm, const std::string& spec) +{ + char buf[128] = {}; + + const char* fmt = spec.empty() ? "%Y-%m-%d %H:%M:%S" : spec.c_str(); + + std::strftime(buf, sizeof(buf), fmt, &tm); + return buf; +} + +inline DurationView NormalizeDuration(std::chrono::nanoseconds ns) +{ + long double v = (long double)ns.count(); + + constexpr long double ns_1 = 1.0L; + constexpr long double us = 1000.0L; + constexpr long double ms = 1000000.0L; + constexpr long double s = 1000000000.0L; + constexpr long double m = 60.0L * s; + constexpr long double h = 60.0L * m; + constexpr long double d = 24.0L * h; + + if (v >= d) + return { v / d, "d" }; + if (v >= h) + return { v / h, "h" }; + if (v >= m) + return { v / m, "m" }; + if (v >= s) + return { v / s, "s" }; + if (v >= ms) + return { v / ms, "ms" }; + if (v >= us) + return { v / us, "us" }; + return { v / ns_1, "ns" }; +} + + +// ==================== 1. 锁死在 .cpp 内部的隐藏格式化器 ==================== +// 让 ServerLogger.cpp 内部的 fmt 彻底看懂 uns::LogArg 变体 +template <> +struct fmt::formatter +{ + constexpr auto parse(format_parse_context& ctx) + { + return ctx.begin(); + } + + template + auto format(const uns::LogArg& la, FormatContext& ctx) const + { + return std::visit([&] (auto&& arg) -> decltype(ctx.out()) + { + using T = std::decay_t; + + // A. 针对容器的运行时展开 + if constexpr (std::is_same_v) + { + std::vector items; + // 【修正】去掉瞎编的 container_ptr,直接传入 items 容器供内部闭包填充 + arg.to_log_args(arg.ptr, items); + + fmt::format_to(ctx.out(), "["); + for (size_t i = 0; i < items.size(); ++i) + { + if (i > 0) + fmt::format_to(ctx.out(), ", "); + fmt::format_to(ctx.out(), fmt::runtime("{}"), items[i]); + } + return fmt::format_to(ctx.out(), "]"); + } + // B. 针对键值对的运行时展开 + else if constexpr (std::is_same_v) + { + std::vector items; + arg.to_log_args(arg.ptr, items); // 假设 PairCapturer 也是相同的解包逻辑 + if (items.size() >= 2) + fmt::format_to(ctx.out(), "{}: {}", items[0], items[1]); + return ctx.out(); + } + // C. 针对延迟执行函数的运行时展开 + else if constexpr (std::is_same_v) + { + // 【注意】请根据你 FuncCapturer 内部实际的求值函数名修改(如 .to_string() 或 .eval()) + return fmt::format_to(ctx.out(), "Function{{ptr: {}, type: {}}}", arg.code_ptr, arg.is_closure ? "Closure" : "PureFunc"); + } + // D. 时间相关的内容 + else if constexpr (std::is_same_v) + { + auto out = ctx.out(); + try + { + if (arg.mode == uns::TimeMode::Point) + { + std::tm tm = ToTm(arg.tp); + std::string s = FormatTime(tm, arg.format_spec); + return fmt::format_to(out, "{}", s); + } + else if (arg.mode == uns::TimeMode::TMPoint) + { + std::string s = FormatTime(arg._tm, arg.format_spec); + return fmt::format_to(out, "{}", s); + } + else + { + auto norm = NormalizeDuration(arg.duration); + return fmt::format_to(out, "{:.3f}{}", norm.value, norm.unit); + } + } + catch (...) + { + return fmt::format_to(out, "[time_error]"); + } + } + // E. 基础原生类型 + else + return fmt::format_to(ctx.out(), "{}", arg); + }, la.value); + } +}; + +std::string uns::toBinary(long number, int bits) +{ + bool negitive = (number < 0); + unsigned long positive = (negitive ? -number : number); + return (negitive ? "-" + toBinary(positive, bits) : toBinary(positive, bits)); +} + +std::string uns::toBinary(std::uint32_t number, int bits) +{ + return toBinary(static_cast(number), bits); +} + +std::string uns::toBinary(unsigned long number, int bits) +{ + std::string res; + while (true) + { + res += std::to_string(number % 2); + number = number / 2; + if (number == 0) + break; + } + std::reverse(res.begin(), res.end()); + while (res.size() < bits) + res = "0" + res; + return "0b" + res; +} + +std::string ServerLogger::GenerateLogHeader(uns::ServerLogLevel LogLevel) +{ + std::string hstr; + time_t lt = time(NULL); + tm* loctim = localtime(<); + char timestr[250] = {}; + sprintf(timestr, "{%04d-%02d-%02d %02d:%02d:%02d} ", loctim->tm_year + 1900, loctim->tm_mon + 1, loctim->tm_mday, loctim->tm_hour, loctim->tm_min, loctim->tm_sec); + hstr = timestr; + switch (LogLevel) + { + case uns::llTrace: + hstr += "[TRACE] "; + break; + case uns::llDebug: + hstr += "[DEBUG] "; + break; + case uns::llInfo: + hstr += "[INFO] "; + break; + case uns::llWarning: + hstr += "[WARNING] "; + break; + case uns::llError: + hstr += "[ERROR] "; + break; + case uns::llFatal: + hstr += "[FATAL] "; + break; + default: + hstr += "[UNKNOWN] "; + break; + } + return hstr; +} + +std::string ServerLogger::GenerateFileInfo(std::string filename, int line_num) +{ + // 使用 stringstream 替代 new/memset/sprintf + std::ostringstream oss; + oss << "(" << filename << " -> LINE=" << line_num << ") "; + return oss.str(); +} + +void ServerLogger::WriteBatchToOutputs(const std::deque& batch) +{ + if (batch.empty()) + return; + std::time_t now = std::time(nullptr); + for (const auto& item : batch) + { + if (item.empty()) + continue; + std::fwrite(item.c_str(), 1, item.size(), stdout); + if (LogStream.is_open()) + LogStream << item; + RotateIfNeeded(now, true); + } + std::fflush(stdout); + if (LogStream.is_open()) + LogStream.flush(); +} + +void ServerLogger::WorkerLoop() +{ + constexpr std::size_t kMaxBatchCount = 128; + + while (WorkerRunning) + { + std::deque local_batch; + { + std::unique_lock lock(QueueMutex); + QueueCV.wait(lock, [this] () + { + return !LogQueue.empty() || !WorkerRunning; + }); + if (!WorkerRunning && LogQueue.empty()) + break; + std::size_t count = 0; + while (!LogQueue.empty() && (count < kMaxBatchCount)) + { + local_batch.push_back(std::move(LogQueue.front())); + LogQueue.pop_front(); + count++; + } + } + if (!local_batch.empty()) + WriteBatchToOutputs(local_batch); + } + // 退出前把剩余日志尽量写完 + for (;;) + { + std::deque local_batch; + { + std::lock_guard lock(QueueMutex); + if (LogQueue.empty()) + break; + std::size_t count = 0; + while (!LogQueue.empty() && (count < kMaxBatchCount)) + { + local_batch.push_back(std::move(LogQueue.front())); + LogQueue.pop_front(); + count++; + } + } + WriteBatchToOutputs(local_batch); + } + ThreadRunningFlag = false; +} + +std::string ServerLogger::MakeRotatedFileName(const std::string& base, std::time_t t, int osl_index) +{ + tm* loctim = std::localtime(&t); + std::ostringstream oss; + oss << base; + if (RotatePeriod == uns::RP_Hourly) + oss << "_" << std::setw(4) << (loctim->tm_year + 1900) << std::setw(2) << std::setfill('0') << (loctim->tm_mon + 1) << std::setw(2) << std::setfill('0') << loctim->tm_mday << "_" << std::setw(2) << std::setfill('0') << loctim->tm_hour; + else if (RotatePeriod == uns::RP_Daily) + oss << "_" << std::setw(4) << (loctim->tm_year + 1900) << std::setw(2) << std::setfill('0') << (loctim->tm_mon + 1) << std::setw(2) << std::setfill('0') << loctim->tm_mday; + if (osl_index > 0) + oss << "_OSL" << osl_index; + oss << ".log"; + return oss.str(); +} + +void ServerLogger::RotateIfNeeded(std::time_t now, bool check_size_after_write) +{ + //控制台模式不进行轮转 + if (LogFileName.empty()) + return; + + // 时间轮转优先:若 period 发生变化则重建文件并重置 OSL 索引 + if (RotatePeriod != uns::RP_None) + { + std::time_t new_period_start = (RotatePeriod == uns::RP_Hourly ? (now / 3600) * 3600 : (now / 86400) * 86400); + if (new_period_start != CurrentFilePeriodStart) + { + // 时间轮转:关闭流并打开新的 period 文件,重置 OSL 索引 + if (LogStream.is_open()) + { + LogStream.flush(); + LogStream.close(); + } + CurrentOSLIndex = 0; + std::string actual_file = MakeRotatedFileName(LogFileName.empty() ? "UNSC" : LogFileName, now, CurrentOSLIndex); + LogStream.open(actual_file.c_str(), std::ios::out | std::ios::app); + CurrentFilePeriodStart = new_period_start; + // 完成时间轮转后不做 size 检查(新文件刚创建,肯定小于阈值) + return; + } + } + + // 如果要求检查大小(一般在写入之后调用),并且 MaxFileSizeBytes > 0,则进行大小轮转 + if (check_size_after_write && (MaxFileSizeBytes > 0) && LogStream.is_open()) + { + // 尝试使用 tellp 获取当前文件位置 + std::streampos pos = LogStream.tellp(); + std::size_t filesize = 0; + if (pos != static_cast(-1)) + filesize = static_cast(pos); + else + { + // 备用:通过打开文件获取大小 + // 构造当前文件名(基于当前 period 和索引) + std::string current_file = MakeRotatedFileName(LogFileName.empty() ? "UNSC" : LogFileName, now, CurrentOSLIndex); + std::ifstream ifs(current_file.c_str(), std::ios::binary | std::ios::ate); + if (ifs.is_open()) + { + filesize = static_cast(ifs.tellg()); + ifs.close(); + } + } + + if (filesize >= MaxFileSizeBytes) + { + // 增加 OSL 索引并打开新文件 + if (LogStream.is_open()) + { + LogStream.flush(); + LogStream.close(); + } + CurrentOSLIndex++; + std::string new_file = MakeRotatedFileName(LogFileName.empty() ? "UNSC" : LogFileName, now, CurrentOSLIndex); + LogStream.open(new_file.c_str(), std::ios::out | std::ios::app); + } + } +} + +inline std::string RewriteFormatString(const std::string& real_format, const uns::LogArg* args, size_t count, fmt::dynamic_format_arg_store& store) +{ + std::string out; + out.reserve(real_format.size()); + size_t arg_index = 0; + for (size_t i = 0; i < real_format.size();) + { + char c = real_format[i]; + // escaped {{ + if ((c == '{') && ((i + 1) < real_format.size()) && (real_format[i + 1] == '{')) + { + out += '{'; + i += 2; + continue; + } + // escaped }} + if ((c == '}') && ((i + 1) < real_format.size()) && (real_format[i + 1] == '}')) + { + out += '}'; + i += 2; + continue; + } + + if (c == '{') + { + size_t j = i + 1; + while ((j < real_format.size()) && (real_format[j] != '}')) + ++j; + if (j >= real_format.size()) + { + out += '{'; + ++i; + continue; + } + + std::string_view inside(real_format.data() + i + 1, j - i - 1); + if (arg_index < count) + { + uns::LogArg arg = args[arg_index]; + // 只处理 time spec + if (!inside.empty() && (inside[0] == ':')) + { + if (std::holds_alternative(arg.value)) + { + auto& tc = std::get(arg.value); + tc.format_spec = std::string(inside.substr(1)); + arg.value = tc; + store.push_back(arg); + } + else + store.push_back(args[arg_index]); + } + else + store.push_back(args[arg_index]); + } + + out += "{}"; + ++arg_index; + i = j + 1; + continue; + } + + out += c; + ++i; + } + + return out; +} + +void ServerLogger::LogImpl(uns::ServerLogLevel level, const std::string& format, const uns::LogArg* args, size_t count) +{ + std::string formatted; + try + { + if (count == 0) + formatted = format; + else + { + fmt::dynamic_format_arg_store> store; + for (size_t i = 0; i < count; ++i) + { + std::visit([&] (auto&& val) + { + using DeT = std::decay_t; + if constexpr (std::is_arithmetic_v || std::is_convertible_v || std::is_pointer_v) + store.push_back(val); + else // 【修正】这里必须传入 args[i](即 LogArg 本身) 这样才能正确触发上面我们写好的 fmt::formatter 路由 + store.push_back(fmt::format("{}", args[i])); + }, args[i].value); + } + // 【修正】显式提供模板参数 ,彻底解决 std::string 导致的推导失败 + formatted = fmt::vsprintf(format, store); + } + } + catch (const fmt::format_error& e) + { + formatted = std::string("<< log format error: ") + e.what() + " >> " + format; + } + + std::string logstr = GenerateLogHeader(level); + logstr += formatted; + logstr += "\n"; + + std::unique_lock lock(QueueMutex); + LogQueue.push_back(logstr); + lock.unlock(); + QueueCV.notify_one(); +} + +void ServerLogger::LogFImpl(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string& format, const uns::LogArg* args, size_t count) +{ + std::string formatted; + std::string real_format = GenerateFileInfo(filename, line_num) + format; + try + { + if (count == 0) + formatted = real_format; + else + { + fmt::dynamic_format_arg_store> store; + for (size_t i = 0; i < count; ++i) + { + std::visit([&] (auto&& val) + { + using DeT = std::decay_t; + if constexpr (std::is_arithmetic_v || std::is_convertible_v || std::is_pointer_v) + store.push_back(val); + else + store.push_back(fmt::format("{}", args[i])); + }, args[i].value); + } + // 【修正】显式提供模板参数 + formatted = fmt::vsprintf(real_format, store); + } + } + catch (const fmt::format_error& e) + { + formatted = std::string("<< log format error: ") + e.what() + " >> " + real_format; + } + + std::string logstr = GenerateLogHeader(level); + logstr += formatted; + logstr += "\n"; + + std::unique_lock lock(QueueMutex); + LogQueue.push_back(logstr); + lock.unlock(); + QueueCV.notify_one(); +} + +void ServerLogger::LogFMTImpl(uns::ServerLogLevel level, const std::string& format, const uns::LogArg* args, size_t count) +{ + std::string formatted; + try + { + if (count == 0) + formatted = format; + else + { + // 现代 {} 风格:动态包装擦除后的类型数组 + fmt::dynamic_format_arg_store store; + std::string rewrite_format = RewriteFormatString(format, args, count, store); + formatted = fmt::vformat(rewrite_format, store); + } + } + catch (const fmt::format_error& e) + { + formatted = std::string("<< log format error: ") + e.what() + " >> " + format; + } + + std::string logstr = GenerateLogHeader(level); + logstr += formatted; + logstr += "\n"; + + std::unique_lock lock(QueueMutex); + LogQueue.push_back(logstr); + lock.unlock(); + QueueCV.notify_one(); +} + +void ServerLogger::LogFMT_FImpl(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string& format, const uns::LogArg* args, size_t count) +{ + std::string formatted; + std::string real_format = GenerateFileInfo(filename, line_num) + format; + try + { + if (count == 0) + formatted = real_format; + else + { + fmt::dynamic_format_arg_store store; + std::string rewrite_format = RewriteFormatString(real_format, args, count, store); + formatted = fmt::vformat(rewrite_format, store); + } + } + catch (const fmt::format_error& e) + { + formatted = std::string("<< log format error: ") + e.what() + " >> " + real_format; + } + + std::string logstr = GenerateLogHeader(level); + logstr += formatted; + logstr += "\n"; + + std::unique_lock lock(QueueMutex); + LogQueue.push_back(logstr); + lock.unlock(); + QueueCV.notify_one(); +} + +ServerLogger::ServerLogger() +{ + //Default log off + //InitLogger(uns::llOff); + CurrentLevel = uns::llOff; + WorkerRunning = false; + RotatePeriod = uns::RP_None; + CurrentFilePeriodStart = 0; + MaxFileSizeBytes = 50 * 1024 * 1024; + CurrentOSLIndex = 0; + return; +} + +ServerLogger::ServerLogger(uns::ServerLogLevel log_level, std::string file, uns::LogRotationPeriod rotation, std::size_t max_bytes) +{ + InitLogger(log_level, file, rotation, max_bytes); + CurrentLevel = log_level; + return; +} + +ServerLogger::~ServerLogger() +{ + // 优雅关闭工作线程并刷新 + CloseLog(); + return; +} + +bool ServerLogger::InitLogger(uns::ServerLogLevel log_level, const std::string& file, uns::LogRotationPeriod rotation, std::size_t max_bytes) +{ + WorkerRunning = false; + RotatePeriod = rotation; + CurrentFilePeriodStart = 0; + CurrentLevel = log_level; + + CurrentOSLIndex = 0; + MaxFileSizeBytes = max_bytes; // 强制开启大小轮转,默认为 50MiB(可由调用者覆盖) + LogFileName = file; + + //初始化轮转 + if (!LogFileName.empty()) + { + time_t now = time(nullptr); + //取整点 + CurrentFilePeriodStart = (RotatePeriod == uns::RP_Hourly ? ((now / 3600) * 3600) : (RotatePeriod == uns::RP_Daily ? ((now / 86400) * 86400) : now)); + std::string actual_file = MakeRotatedFileName(LogFileName.empty() ? "UNSC" : LogFileName, now, CurrentOSLIndex); + LogStream.open(actual_file.c_str(), std::ios::out | std::ios::app); + + // 如果当前文件已超过大小限制,生成下一个 OSL 文件 + if (LogStream.is_open()) + { + // 尝试获取当前位置(文件大小),并在必要时轮转 + std::streampos pos = LogStream.tellp(); + std::size_t filesize = 0; + if (pos != static_cast(-1)) + filesize = static_cast(pos); + else + { + // 备用方案:用 ifstream 直接获取文件大小 + std::ifstream ifs(actual_file.c_str(), std::ios::binary | std::ios::ate); + if (ifs.is_open()) + { + filesize = static_cast(ifs.tellg()); + ifs.close(); + } + } + if (filesize >= MaxFileSizeBytes) + { + // increase osl index and open new file + LogStream.close(); + CurrentOSLIndex = 1; + actual_file = MakeRotatedFileName(LogFileName.empty() ? "UNSC" : LogFileName, now, CurrentOSLIndex); + LogStream.open(actual_file.c_str(), std::ios::out | std::ios::app); + } + } + } + + //启动日志线程 + bool started = true; + if (!WorkerRunning) + { + WorkerRunning = true; + try + { + WorkerThread = std::thread(&ServerLogger::WorkerLoop, this); + } + catch (...) + { + WorkerRunning = false; + started = false; + } + } + return ((LogStream.is_open() || LogFileName.empty()) && started); +} + +void ServerLogger::CloseLog() +{ + //关闭工作线程 + WorkerRunning = false; + QueueCV.notify_all(); + if (WorkerThread.joinable()) + WorkerThread.join(); + while (ThreadRunningFlag) + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + //关闭文件流 + if (LogStream.is_open()) + LogStream.close(); + CurrentLevel = uns::llOff; +} + +void ServerLogger::DisableLog() +{ + CurrentLevel = uns::llOff; +} + +void ServerLogger::FlushLogBuffer() +{ + //触发写入 + QueueCV.notify_all(); + //等待队列清空 + while (true) + { + std::unique_lock lock(QueueMutex); + if (LogQueue.empty()) + break; + lock.unlock(); + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + } + if (LogStream.is_open()) + LogStream.flush(); +} + +void ServerLogger::EnableLog(uns::ServerLogLevel level) +{ + CurrentLevel = (level == uns::llOff ? uns::llAll : level); +} + +ServerLogger GlobalServerLogger; \ No newline at end of file diff --git a/ServerLogger.h b/ServerLogger.h new file mode 100644 index 0000000..33df7a1 --- /dev/null +++ b/ServerLogger.h @@ -0,0 +1,210 @@ +#pragma once +#pragma warning(disable : 4996) +#include +#include +#include +#include +#include +#include +#include +#include "LogArg.h" +#include "Export.h" +#include + +namespace uns +{ + enum ServerLogLevel + { + llAll = 0x000000, + llTrace = 0x000001, + llDebug = 0x000010, + llInfo = 0x000020, + llWarning = 0x000030, + llError = 0x000040, + llFatal = 0x000050, + llOff = 0xFFFFFF + }; + + enum LogRotationPeriod + { + RP_None = 0, + RP_Hourly = 1, + RP_Daily = 2 + }; + + std::string UNSWSC_DLL_EXPORT toBinary(long number, int bits); + std::string UNSWSC_DLL_EXPORT toBinary(std::uint32_t number, int bits); + std::string UNSWSC_DLL_EXPORT toBinary(unsigned long number, int bits); +}; + +class UNSWSC_DLL_EXPORT ServerLogger +{ +private: + std::fstream LogStream; + std::string LogFileName; + std::atomic CurrentLevel; //避免数据竟态UB + + // 异步队列与线程控制 + std::deque LogQueue; + std::mutex QueueMutex; + std::condition_variable QueueCV; + std::thread WorkerThread; + std::atomic_bool WorkerRunning; + std::atomic_bool ThreadRunningFlag; + + // 日志分时段(轮转)支持 + uns::LogRotationPeriod RotatePeriod; + std::time_t CurrentFilePeriodStart; + + // 新增:大小轮转支持 + std::size_t MaxFileSizeBytes; // 最大文件大小(字节) + int CurrentOSLIndex; // 当前 period 下的 OSL 索引(从 0 开始) + +private: + std::string GenerateLogHeader(uns::ServerLogLevel LogLevel); + std::string GenerateFileInfo(std::string filename, int line_num); + void WriteBatchToOutputs(const std::deque& batch) +; + void WorkerLoop(); + std::string MakeRotatedFileName(const std::string& base, std::time_t t, int osl_index = 0); + void RotateIfNeeded(std::time_t now, bool check_size_after_write = false); + + void LogImpl(uns::ServerLogLevel level, const std::string& format, const uns::LogArg* args, size_t count); + void LogFImpl(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string& format, const uns::LogArg* args, size_t count); + void LogFMTImpl(uns::ServerLogLevel level, const std::string& format, const uns::LogArg* args, size_t count); + void LogFMT_FImpl(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string& format, const uns::LogArg* args, size_t count); + +public: + ServerLogger(); + ServerLogger(uns::ServerLogLevel log_level, std::string file = "", uns::LogRotationPeriod rotation = uns::RP_None, std::size_t max_bytes = 50 * 1024 * 1024); + ServerLogger(const ServerLogger& obj) = delete; + ~ServerLogger(); + +public: + bool InitLogger(uns::ServerLogLevel log_level, const std::string& file = "", uns::LogRotationPeriod rotation = uns::RP_None, std::size_t max_bytes = 50 * 1024 * 1024); + void CloseLog(); + void DisableLog(); + void FlushLogBuffer(); + void EnableLog(uns::ServerLogLevel level); + + template + void Log(uns::ServerLogLevel level, const std::string& format, Args&&... args); + template + void LogF(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string format, Args&&... args); + template + void LogFMT(uns::ServerLogLevel level, const std::string& format, Args&&... args); + template + void LogFMT_F(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string format, Args&&... args); +}; + +template +inline void ServerLogger::Log(uns::ServerLogLevel level, const std::string& format, Args&&... args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogImpl(level, format, nullptr, 0); + else + { + // 在客户端的栈上瞬间分配数组并完成类型擦除 + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogImpl(level, format, packed_args, sizeof...(Args)); + } +} + +template +inline void ServerLogger::LogF(uns::ServerLogLevel level, const std::string& filename, int line_num, std::string format, Args&&... args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogFImpl(level, filename, line_num, format, nullptr, 0); + else + { + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogFImpl(level, filename, line_num, format, packed_args, sizeof...(Args)); + } +} + +template +inline void ServerLogger::LogFMT(uns::ServerLogLevel level, const std::string& format, Args && ...args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogFMTImpl(level, format, nullptr, 0); + else + { + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogFMTImpl(level, format, packed_args, sizeof...(Args)); + } +} + +template +inline void ServerLogger::LogFMT_F(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string format, Args && ...args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogFMT_FImpl(level, filename, line_num, format, nullptr, 0); + else + { + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogFMT_FImpl(level, filename, line_num, format, packed_args, sizeof...(Args)); + } +} + +extern UNSWSC_DLL_EXPORT ServerLogger GlobalServerLogger; + +#if (defined(_WIN32) || defined(_WIN64)) +#define __FILENAME__ std::strrchr("\\" __FILE__, '\\') + 1 +#else +#define __FILENAME__ std::strrchr("/" __FILE__, '/') + 1 +#endif + +#define SCLOG_CONSOLE_INIT(__log_level__) GlobalServerLogger.InitLogger(__log_level__) +#define SCLOG_FILE_INIT(__file_name__, __log_level__, ...) GlobalServerLogger.InitLogger(__log_level__, __file_name__, ##__VA_ARGS__) + +#define SCLOG_WRITE(__level__, __text__, ...) GlobalServerLogger.LogF(__level__, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_TRACE(__text__, ...) GlobalServerLogger.LogF(uns::llTrace, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_DEBUG(__text__, ...) GlobalServerLogger.LogF(uns::llDebug, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_INFO(__text__, ...) GlobalServerLogger.LogF(uns::llInfo, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_WARNING(__text__, ...) GlobalServerLogger.LogF(uns::llWarning, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_ERROR(__text__, ...) GlobalServerLogger.LogF(uns::llError, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_FATAL(__text__, ...) GlobalServerLogger.LogF(uns::llFatal, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) + +#define SCLOG_SHORT_WRITE(__level__, __text__, ...) GlobalServerLogger.Log(__level__, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_TRACE(__text__, ...) GlobalServerLogger.Log(uns::llTrace, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_DEBUG(__text__, ...) GlobalServerLogger.Log(uns::llDebug, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_INFO(__text__, ...) GlobalServerLogger.Log(uns::llInfo, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_WARNING(__text__, ...) GlobalServerLogger.Log(uns::llWarning, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_ERROR(__text__, ...) GlobalServerLogger.Log(uns::llError, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_FATAL(__text__, ...) GlobalServerLogger.Log(uns::llFatal, __text__, ##__VA_ARGS__) + +#define SCLOGF_WRITE(__level__, __text__, ...) GlobalServerLogger.LogFMT_F(__level__, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_TRACE(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llTrace, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_DEBUG(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llDebug, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_INFO(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llInfo, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_WARNING(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llWarning, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_ERROR(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llError, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_FATAL(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llFatal, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) + +#define SCLOGF_SHORT_WRITE(__level__, __text__, ...) GlobalServerLogger.LogFMT(__level__, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_TRACE(__text__, ...) GlobalServerLogger.LogFMT(uns::llTrace, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_DEBUG(__text__, ...) GlobalServerLogger.LogFMT(uns::llDebug, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_INFO(__text__, ...) GlobalServerLogger.LogFMT(uns::llInfo, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_WARNING(__text__, ...) GlobalServerLogger.LogFMT(uns::llWarning, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_ERROR(__text__, ...) GlobalServerLogger.LogFMT(uns::llError, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_FATAL(__text__, ...) GlobalServerLogger.LogFMT(uns::llFatal, __text__, ##__VA_ARGS__) + +#define SCLOG_ENABLE(__level__) GlobalServerLogger.EnableLog(__level__) +#define SCLOG_DISABLE() GlobalServerLogger.DisableLog() +#define SCLOG_CLOSE() GlobalServerLogger.CloseLog() \ No newline at end of file diff --git a/ServerProcessor.cpp b/ServerProcessor.cpp new file mode 100644 index 0000000..90031e7 --- /dev/null +++ b/ServerProcessor.cpp @@ -0,0 +1,200 @@ +#include "ServerProcessor.h" +#include "ServerLogger.h" +#include "PathTraversal.h" +#include "HTTPObjectsBridge.h" +#include "UNSResponseBuilder.h" + +#include +#include +#include +#include +#ifdef __GNUG__ +#include +#include +#endif + +// demangle(GNU)/回退(其他编译器) +static std::string demangle_name(const char* name) +{ +#ifdef __GNUG__ + int status = 0; + char *dem = abi::__cxa_demangle(name, nullptr, nullptr, &status); + std::string ret = (status == 0 && dem) ? dem : name; + std::free(dem); + return ret; +#else + return name; +#endif +} + +// RTTI 名称缓存(线程安全) +static const std::string& RTTISubClassName(const std::type_info &ti) +{ + using key_t = std::type_index; + static std::mutex m; + static std::unordered_map cache; + key_t k(ti); + + // 快速检查(持锁短时间) + { + std::lock_guard g(m); + auto it = cache.find(k); + if (it != cache.end()) + return it->second; + } + + // 若未缓存,先在无锁区做 demangle(可能较慢),然后再插入缓存 + std::string dem = demangle_name(ti.name()); + + { + std::lock_guard g(m); + auto [it, inserted] = cache.emplace(k, std::move(dem)); + return it->second; + } +} + +class ServerProcessor::Impl +{ +public: + bool IPCheck = false; + IPTablePtr BlockedIPs = nullptr; + std::map StreamInfo; +}; + +ServerProcessor::ServerProcessor() : pimpl(std::make_unique()) +{ +} + +ServerProcessor::~ServerProcessor() = default; + +void ServerProcessor::EnableIPCheck() +{ + pimpl->IPCheck = true; + return; +} + +void ServerProcessor::DisableIPCheck() +{ + pimpl->IPCheck = false; + return; +} + +void ServerProcessor::UpdateBlockedIPList(IPTablePtr ips) +{ + pimpl->BlockedIPs = ips; + return; +} + +void ServerProcessor::AppenedBlockedIP(DateTime::Span block_time, std::string ip) +{ + DateTime expr_time = (DateTime::Now() += block_time); + IPList li{ ip }; + pimpl->BlockedIPs->Appened(expr_time, li); + pimpl->BlockedIPs->Update(); + SCLOG_INFO("IP: [%s] has been blocked untill {%s}", ip.c_str(), std::string(expr_time).c_str()); + return; +} + +uns::HTTPMethod ServerProcessor::GetMethod(uns::RequestPtr request) +{ + std::string method = request->GetImpl()->webcc_req->method(); + if (method == "GET") + return uns::HTTPMethod::H_GET; + else if (method == "PUT") + return uns::HTTPMethod::H_PUT; + else if (method == "POST") + return uns::HTTPMethod::H_POST; + else if (method == "HEAD") + return uns::HTTPMethod::H_HEAD; + else if (method == "TRACE") + return uns::HTTPMethod::H_TRACE; + else if (method == "PATCH") + return uns::HTTPMethod::H_PATCH; + else if (method == "DELETE") + return uns::HTTPMethod::H_DELETE; + else if (method == "OPTIONS") + return uns::HTTPMethod::H_OPTIONS; + else if (method == "CONNECT") + return uns::HTTPMethod::H_CONNECT; + else + return uns::HTTPMethod::H_UNKNOWN; +} + +void ServerProcessor::AddStreamSettings(std::string method, bool stream) +{ + pimpl->StreamInfo.insert(std::pair(method, stream)); + return; +} + +uns::PathTraversalDefenceLevel ServerProcessor::PTDefence() +{ + return uns::PathTraversalDefenceLevel::DenyAll; +} + +bool ServerProcessor::IsPathSafe(const std::string& raw_path) +{ + return false; +} + +uns::ResponsePtr ServerProcessor::Handle(uns::RequestPtr request) +{ + std::string x_real_ip; + if(request->GetImpl()->webcc_req->HasHeader("X-Real-IP")) + x_real_ip = request->GetImpl()->webcc_req->GetHeader("X-Real-IP"); + std::string req_ip = (x_real_ip.empty() ? request->GetImpl()->webcc_req->address() : x_real_ip); + SCLOGF_INFO("Request recived by {{{}}}, ip: [{}], method: {}, URL: {}", RTTISubClassName(typeid(*this)), req_ip, request->GetImpl()->webcc_req->method(), request->GetImpl()->webcc_req->url().path()); + if (pimpl->IPCheck && (pimpl->BlockedIPs != nullptr)) + { + pimpl->BlockedIPs->Update(); + if (pimpl->BlockedIPs->IPExist(req_ip)) + return uns::ResponseBuilder().IPBlocked()(); + } + // path test + std::string path = request->GetImpl()->webcc_req->url().path(); + auto status = PathTraversal::AnalyzeUrlTraversal(path); + if(status != PathTraversal::UrlSafetyStatus::Safe) + SCLOGF_WARNING("PathTraversal Detected: {}, Level: {}", path, PathTraversal::ToString(status)); + switch(PTDefence()) + { + case uns::PathTraversalDefenceLevel::DenyAll: + if(status != PathTraversal::UrlSafetyStatus::Safe) + return uns::ResponseBuilder().Forbidden()(); + break; + case uns::PathTraversalDefenceLevel::AutoNormalize: + { + if(status == PathTraversal::UrlSafetyStatus::EvasiveTraversal) + return uns::ResponseBuilder().Forbidden()(); + auto decoded_path = PathTraversal::UrlDecode(path); + if(!IsPathSafe(decoded_path)) + return uns::ResponseBuilder().Forbidden()(); + auto url = request->GetImpl()->webcc_req->url(); + url.ForceSet_Path(PathTraversal::NormalizeUrlPath(decoded_path)); + request->GetImpl()->webcc_req->set_url(std::move(url)); + break; + } + case uns::PathTraversalDefenceLevel::AllowNormal: + { + if(status == PathTraversal::UrlSafetyStatus::EvasiveTraversal) + return uns::ResponseBuilder().Forbidden()(); + auto decoded_path = PathTraversal::UrlDecode(path); + if(!IsPathSafe(decoded_path)) + return uns::ResponseBuilder().Forbidden()(); + auto url = request->GetImpl()->webcc_req->url(); + url.ForceSet_Path(decoded_path); + request->GetImpl()->webcc_req->set_url(std::move(url)); + break; + } + default: + break; //Check Bypassed by [AllowAll] + } + uns::ResponsePtr ptr = Processor(request); + return ptr; +} + +bool ServerProcessor::Stream(const std::string& method) +{ + if (pimpl->StreamInfo.find(method) != pimpl->StreamInfo.end()) + return pimpl->StreamInfo.at(method); + else + return false; +} diff --git a/ServerProcessor.h b/ServerProcessor.h new file mode 100644 index 0000000..d9d8b70 --- /dev/null +++ b/ServerProcessor.h @@ -0,0 +1,35 @@ +#pragma once +#include "Global.h" +#include "Export.h" +#include "IPTable.h" +#include "HTTPObjects.h" + +class UNSWSC_DLL_EXPORT ServerProcessor +{ +protected: + class Impl; + std::unique_ptr pimpl; + +public: + ServerProcessor(); + virtual ~ServerProcessor(); + +public: + void EnableIPCheck(); + void DisableIPCheck(); + void UpdateBlockedIPList(IPTablePtr ips); + void AppenedBlockedIP(DateTime::Span block_time, std::string ip); + uns::HTTPMethod GetMethod(uns::RequestPtr request); + void AddStreamSettings(std::string method, bool stream); + +public: + virtual uns::ResponsePtr Processor(uns::RequestPtr request) = 0; + virtual uns::PathTraversalDefenceLevel PTDefence(); + virtual bool IsPathSafe(const std::string& raw_path); + +public: + uns::ResponsePtr Handle(uns::RequestPtr request); + bool Stream(const std::string& method); +}; + +using ServerProcessorPtr = std::shared_ptr; \ No newline at end of file diff --git a/SessionManager.cpp b/SessionManager.cpp new file mode 100644 index 0000000..a36e142 --- /dev/null +++ b/SessionManager.cpp @@ -0,0 +1,372 @@ +#include "SessionManager.h" + +#include +#include "SafeRNG.h" +#ifndef _WIN32 +#include "UOHash.h" +#else +#include "../UOHash/UOHash.h" +#endif +#include +#include +#include + +const std::chrono::hours SessionManager::Session::max_age = std::chrono::hours(24 * 5); + +SessionManager::Session::Session() //默认构造函数:无效的已过期空Cookie +{ + uid = -1; + expiry_date = std::chrono::system_clock::now() - std::chrono::seconds(1); +} + +SessionManager::Session::Session(const Session& obj) +{ + uid = obj.uid; + cookie = obj.cookie; + expiry_date = obj.expiry_date; +} + +SessionManager::Session::Session(const std::string& cookie) +{ + uid = -1; + this->cookie = cookie; + expiry_date = std::chrono::system_clock::now() - std::chrono::seconds(1); +} + +SessionManager::Session::Session(const Json::Value& json_obj) +{ + if(json_obj["UID"].isInt() && json_obj["Cookie"].isString() && (json_obj["ExpiryDate"].isInt64())) + { + uid = json_obj["UID"].asInt(); + cookie = json_obj["Cookie"].asString(); + auto ms = std::chrono::milliseconds(json_obj["ExpiryDate"].asInt64()); + expiry_date = systime(ms); + } + else + { + uid = -1; + expiry_date = std::chrono::system_clock::now() - std::chrono::seconds(1); + } +} + +SessionManager::Session::Session(int uid, const std::string& cookie) +{ + this->uid = uid; + this->cookie = cookie; + expiry_date = std::chrono::system_clock::now() + max_age; +} + +int SessionManager::Session::GetUID() const +{ + return uid; +} + +bool SessionManager::Session::Expired() const +{ + return (expiry_date < std::chrono::system_clock::now()); +} + +std::string SessionManager::Session::GetCookie() const +{ + return cookie; +} + +SessionManager::systime SessionManager::Session::GetExpiryDate() const +{ + return expiry_date; +} + +bool SessionManager::Session::NeedExpiryDateRefresh() const +{ + if (Expired()) + return true; + auto usage_time = std::chrono::system_clock::now() - (expiry_date - max_age); + return (usage_time >= std::chrono::hours(24)); +} + +void SessionManager::Session::SetUID(int uid) +{ + this->uid = uid; +} + +void SessionManager::Session::RefreshExpiryDate() +{ + expiry_date = std::chrono::system_clock::now() + max_age; +} + +void SessionManager::Session::SetCookie(const std::string& cookie) +{ + this->cookie = cookie; +} + +void SessionManager::Session::SetExpiryDate(const systime& expiry_time) +{ + this->expiry_date = expiry_date; +} + +bool SessionManager::Session::operator<(const Session& obj) const +{ + return (this->cookie < obj.cookie); +} + +SessionManager::Session::operator Json::Value() const +{ + Json::Value root; + root["UID"] = uid; + root["Cookie"] = cookie; + auto ms = std::chrono::duration_cast(expiry_date.time_since_epoch()).count(); + root["ExpiryDate"] = Json::Int64(ms); + return root; +} + +int SessionManager::Session::GetMaxAgeSeconds() +{ + return (max_age.count() * 3600); +} + +SessionManager::SessionManager() +{ +} + +std::string SessionManager::Random() +{ + return RandomNumberGenerator::SecureRandomHex(32); +} + +std::string SessionManager::ISO8601_TimeString() +{ + time_t now = time(nullptr); + tm tim = {}; +#if defined(_WIN32) + localtime_s(&tim, &now); // Windows +#else + localtime_r(&now, &tim); // POSIX +#endif + return fmt::format("{}-{}-{}T{}:{}:{}+08:00", (tim.tm_year + 1900), (tim.tm_mon + 1), tim.tm_mday, tim.tm_hour, tim.tm_min, tim.tm_sec); +} + +void SessionManager::AutoCleanCookiePool() +{ + std::lock_guard lock(pool_mutex); //自动清理前需要上锁 + for (auto it = cookie_storage.begin(); it != cookie_storage.end(); ) //正向遍历,删除无效/过期Session + { + const std::string& cookie = it->first; + int uid = it->second; + + auto rit = reverse_cookie_storage.find(uid); + if (rit == reverse_cookie_storage.end()) //有Cookie无Session,删掉 + { + it = cookie_storage.erase(it); + continue; + } + + Session index_session(cookie.substr(prefix.length())); + auto& rcs = rit->second; + auto sit = rcs.find(index_session); + if ((sit == rcs.end()) || sit->Expired()) //无Session或Session已过期,删掉 + { + if (sit != rcs.end()) + rcs.erase(sit); + if (rcs.empty()) + reverse_cookie_storage.erase(rit); + it = cookie_storage.erase(it); + continue; + } + ++it; //前置++性能开销较低 + } + + for (auto rit = reverse_cookie_storage.begin(); rit != reverse_cookie_storage.end(); ) //反向遍历,删除异常Session + { + auto& rcs = rit->second; + for (auto sit = rcs.begin(); sit != rcs.end(); ) + { + std::string key = prefix + sit->GetCookie(); + if (cookie_storage.find(key) == cookie_storage.end()) //正向没有反向有,异常Session(无法被利用) + { + auto sit_next = std::next(sit); + rcs.erase(sit); + sit = sit_next; + } + else + ++sit; + } + if (rcs.empty()) + { + auto rit_next = std::next(rit); + reverse_cookie_storage.erase(rit); + rit = rit_next; + } + else + ++rit; + } +} + +std::string SessionManager::GenerateCookieForUser(int uid, bool cookie_only) +{ + //生成Cookie和Session + std::string str_uid = std::to_string(uid); + std::string raw_cookie = str_uid + ISO8601_TimeString() + str_uid + Random() + str_uid; + auto res = uns::UOHash::HashString(uns::HashID::SHA3_224, raw_cookie); + if (!res) + return ""; + std::string cookie = res.GetResult(); + Session session(uid, cookie); + //存储到Cookie池 - 使用互斥体保证线程安全 + { + std::lock_guard lock(pool_mutex); + cookie_storage.insert({ (prefix + cookie), uid }); + if (reverse_cookie_storage.find(uid) == reverse_cookie_storage.end()) + reverse_cookie_storage.insert({ uid, { session } }); + else + reverse_cookie_storage.at(uid).insert(session); + } + //返回用于响应的Cookie串 + if(cookie_only) + return (prefix + cookie); + else + return fmt::format(fmt::runtime(cookie_template), cookie, Session::GetMaxAgeSeconds()); +} + +std::string SessionManager::DeleteCookie(const std::string& cookie) +{ + std::lock_guard lock(pool_mutex); + if (cookie_storage.find(cookie) != cookie_storage.end()) + { + int uid = cookie_storage.at(cookie); + cookie_storage.erase(cookie); + if (reverse_cookie_storage.find(uid) != reverse_cookie_storage.end()) + { + auto& rcs = reverse_cookie_storage.at(uid); + Session index_session(cookie.substr(prefix.length())); + rcs.erase(index_session); + if (rcs.empty()) + reverse_cookie_storage.erase(uid); + } + } + //返回用于响应的Cookie串(注销浏览器端的Cookie) + return fmt::format(fmt::runtime(cookie_template.substr(prefix.length())), cookie, 0); +} + +bool SessionManager::CheckRequestCookie(uns::RequestPtr request, int& uid) +{ + uid = -1; + if (!request->HasHeader("Cookie")) //未找到Cookie + return false; + std::string cookie = request->GetHeader("Cookie"); + std::lock_guard lock(pool_mutex); //使用互斥体保证Cookie池的线程安全 + auto cit = cookie_storage.find(cookie); + if (cit == cookie_storage.end()) //不正确的Cookie + return false; + uid = cit->second; + if (reverse_cookie_storage.find(uid) == reverse_cookie_storage.end()) + return false; //理论上不会出现有Cookie没有UID的情况,仅作兜底处理 + Session index_session(cookie.substr(prefix.length())); + auto& rcs = reverse_cookie_storage.at(uid); + auto it = rcs.find(index_session); + if (it == rcs.end()) //无有效Session + return false; + if (it->Expired()) //Cookie过期,删除该Session及对应的cookie。 + { + rcs.erase(it); //删除Session + if (rcs.empty()) //如果一个用户没有任何有效的Cookie,删除该用户的记录 + reverse_cookie_storage.erase(uid); + cookie_storage.erase(cookie); //删除Cookie + return false; + } + if (it->NeedExpiryDateRefresh()) //根据需要决定是否刷新Cookie + { + auto session = rcs.extract(it); + session.value().RefreshExpiryDate(); + rcs.insert(std::move(session)); + } + return true; //到达此处意味着找到有效的Cookie,并已完成必要的更新工作 +} + +std::string SessionManager::DeleteAllCookieForUser(int uid, const std::string & current_cookie) +{ + std::lock_guard lock(pool_mutex); + if (reverse_cookie_storage.find(uid) != reverse_cookie_storage.end()) + { + auto sessions = reverse_cookie_storage.at(uid); + reverse_cookie_storage.erase(uid); + for(const auto& session : sessions) + { + if(cookie_storage.find(session.GetCookie()) != cookie_storage.end()) + cookie_storage.erase(session.GetCookie()); + } + } + //返回用于响应的Cookie串(注销浏览器端的Cookie) + return fmt::format(fmt::runtime(cookie_template.substr(prefix.length())), current_cookie, 0); +} + +bool SessionManager::HasDumpedCookie(const std::string& path) +{ + namespace fs = std::filesystem; + fs::path fn = (fs::path(path) / "unsc_sessions.json"); + std::error_code ec; + return fs::is_regular_file(fn, ec); +} + +bool SessionManager::LoadDumpedCookie(const std::string& path) +{ + namespace fs = std::filesystem; + fs::path fn = (fs::path(path) / "unsc_sessions.json"); + std::fstream fin(fn.string(), std::ios::in); + if(!fin.is_open()) + return false; + try + { + Json::Reader reader; + Json::Value cookies; + if(!reader.parse(fin, cookies, false)) + { + fin.close(); + return false; + } + fin.close(); + if(!cookies.isArray()) + return false; + std::lock_guard lock(pool_mutex); //使用互斥体保证Cookie池的线程安全 + for(const auto& cookie : cookies) + { + Session session(cookie); + if(session.Expired()) + continue; + int uid = session.GetUID(); + cookie_storage.insert({ (prefix + session.GetCookie()), uid }); + if (reverse_cookie_storage.find(uid) == reverse_cookie_storage.end()) + reverse_cookie_storage.insert({ uid, { session } }); + else + reverse_cookie_storage.at(uid).insert(session); + } + std::error_code ec; + fs::remove(fn, ec); + return true; + } + catch(...) + { + return false; + } +} + +bool SessionManager::DumpAllValidCookies(const std::string& path) +{ + namespace fs = std::filesystem; + fs::path fn = (fs::path(path) / "unsc_sessions.json"); + std::fstream fout(fn.string(), std::ios::out | std::ios::trunc); + if(!fout.is_open()) + return false; + Json::Value cookies(Json::arrayValue); + { + std::lock_guard lock(pool_mutex); //使用互斥体保证Cookie池的线程安全 + for(const auto& [uid, sessions] : reverse_cookie_storage) + for(const auto& session : sessions) + cookies.append(session); + } + Json::FastWriter writer; + fout << writer.write(cookies) << std::endl; + fout.close(); + return true; +} + +SessionManager GlobalSessionManager; diff --git a/SessionManager.h b/SessionManager.h new file mode 100644 index 0000000..2fcf09a --- /dev/null +++ b/SessionManager.h @@ -0,0 +1,86 @@ +#pragma once +#include +#include +#include +#include +#include "Export.h" +#include "HTTPObjects.h" + +namespace Json +{ + class Value; +} + +class UNSWSC_DLL_EXPORT SessionManager +{ +public: + using systime = std::chrono::system_clock::time_point; + + class UNSWSC_DLL_EXPORT Session + { + private: + int uid; + std::string cookie; + systime expiry_date; + + static const std::chrono::hours max_age; + + public: + Session(); + Session(const Session& obj); + Session(const std::string& cookie); //构造仅用于比较的临时Session对象 + Session(const Json::Value& json_obj); //从JSON反序列化 + Session(int uid, const std::string& cookie); + + public: + int GetUID() const; + bool Expired() const; + std::string GetCookie() const; + systime GetExpiryDate() const; + bool NeedExpiryDateRefresh() const; //使用超过一天且在活跃的cookie将被刷新。此处仅作时间判断 + + public: + void SetUID(int uid); + void RefreshExpiryDate(); + void SetCookie(const std::string& cookie); + void SetExpiryDate(const systime& expiry_time); + + public: + bool operator<(const Session& obj) const; //For std::map/std::set/... + operator Json::Value() const; //JSON序列化 + + static int GetMaxAgeSeconds(); + }; + +private: + std::mutex pool_mutex; + //Key: Cookie Pair(oreo=xxxxx), Value: UID + std::map cookie_storage; + //Key: UID, Value: Cookie Lists + std::map> reverse_cookie_storage; + + const std::string prefix = "oreo="; + //const std::string cookie_template = prefix + "{}; HttpOnly; Path=/; SameSite=Lax; Max-Age={}"; + const std::string cookie_template = prefix + "{}; HttpOnly; Secure; Path=/; SameSite=None; Max-Age={}"; + +public: + SessionManager(); + SessionManager(const SessionManager& obj) = delete; + +public: + static std::string Random(); + static std::string ISO8601_TimeString(); + +public: + void AutoCleanCookiePool(); + std::string GenerateCookieForUser(int uid, bool cookie_only = false); + std::string DeleteCookie(const std::string& cookie); + bool CheckRequestCookie(uns::RequestPtr request, int& uid); + std::string DeleteAllCookieForUser(int uid, const std::string& current_cookie); + + bool HasDumpedCookie(const std::string& path); + bool LoadDumpedCookie(const std::string& path); + bool DumpAllValidCookies(const std::string& path); +}; + +extern UNSWSC_DLL_EXPORT SessionManager GlobalSessionManager; diff --git a/SyncFileReceiver.cpp b/SyncFileReceiver.cpp new file mode 100644 index 0000000..5a64e8d --- /dev/null +++ b/SyncFileReceiver.cpp @@ -0,0 +1,255 @@ +#include "SyncFileReceiver.h" +#include +#include +#include "ServerLogger.h" +#include "PathTraversal.h" +#include "HTTPObjectsBridge.h" +#include "UNSResponseBuilder.h" + +class SyncFileReceiver::Impl +{ +public: + bool EnableCORS = false; + bool HTMLResponse = false; + std::string TempRoot; + IPTablePtr BlockedIPs = nullptr; + WebFileInfoVec FileInfo; +}; + +SyncFileReceiver::SyncFileReceiver() : pimpl(std::make_unique()) +{ +} + +SyncFileReceiver::~SyncFileReceiver() = default; + +// 【修改】虚函数的默认实现:如果子类不重写,则默认返回原先的成功状态(201 Created) +uns::ResponsePtr SyncFileReceiver::ProcessFiles(const WebFileInfoVec& file_info, const std::string& tmp_root, uns::RequestPtr request) +{ + SCLOGF_ERROR("SyncFileReceiver::ProcessFiles default handler triggered. Files count: {}", file_info.size()); + + std::string resp_body = (pimpl->HTMLResponse ? EncodeUploadResultHTML() : EncodeUploadResult()); + + return (pimpl->EnableCORS ? uns::ResponseBuilder().Created().Body(resp_body).AutoCORS(request)() : uns::ResponseBuilder().Created().Body(resp_body)()); +} + +void SyncFileReceiver::SetResponseMode(bool html) +{ + pimpl->HTMLResponse = html; + SCLOG_DEBUG("SyncFileReceiver init mode: %s", (html ? "html" : "json")); +} + +void SyncFileReceiver::SetCORSEnable(bool enable) +{ + pimpl->EnableCORS = enable; + SCLOG_DEBUG("SyncFileReceiver CORS mode: %s", (enable ? "enabled" : "disabled")); +} + +void SyncFileReceiver::SetTempRoot(std::string temp_root) +{ + pimpl->TempRoot = temp_root; + SCLOG_TRACE("SFR-TempRoot: %s", pimpl->TempRoot.c_str()); + return; +} + +void SyncFileReceiver::UpdateBlockedIPs(IPTablePtr ip) +{ + pimpl->BlockedIPs = ip; + return; +} + +void SyncFileReceiver::AppenedBlockedIP(DateTime::Span block_time, std::string ip) +{ + DateTime expr_time = (DateTime::Now() += block_time); + IPList li{ ip }; + pimpl->BlockedIPs->Appened(expr_time, li); + pimpl->BlockedIPs->Update(); + SCLOG_INFO("IP: [%s] has been blocked untill {%s}", ip.c_str(), std::string(expr_time).c_str()); + return; +} + +uns::HTTPMethod SyncFileReceiver::GetMethod(uns::RequestPtr request) +{ + std::string method = request->GetImpl()->webcc_req->method(); + if (method == "GET") + return uns::HTTPMethod::H_GET; + else if (method == "PUT") + return uns::HTTPMethod::H_PUT; + else if (method == "POST") + return uns::HTTPMethod::H_POST; + else if (method == "HEAD") + return uns::HTTPMethod::H_HEAD; + else if (method == "TRACE") + return uns::HTTPMethod::H_TRACE; + else if (method == "PATCH") + return uns::HTTPMethod::H_PATCH; + else if (method == "DELETE") + return uns::HTTPMethod::H_DELETE; + else if (method == "OPTIONS") + return uns::HTTPMethod::H_OPTIONS; + else if (method == "CONNECT") + return uns::HTTPMethod::H_CONNECT; + else + return uns::HTTPMethod::H_UNKNOWN; +} + +bool SyncFileReceiver::WriteFile(const std::string& path, const std::string& bytes) +{ + std::ofstream stream{ path, std::ios::binary }; + if (stream.fail()) + { + SCLOG_WARNING("Failed to write file [%s]: can't open stream", path.c_str()); + return false; + } + stream.write(bytes.data(), bytes.size()); + if (stream.fail()) + SCLOG_WARNING("Failed to write file [%s]: can't write to stream", path.c_str()); + return !stream.fail(); +} + +uns::PathTraversalDefenceLevel SyncFileReceiver::PTDefence() +{ + return uns::PathTraversalDefenceLevel::DenyAll; +} + +bool SyncFileReceiver::IsPathSafe(const std::string & raw_path) +{ + return false; +} + +std::string SyncFileReceiver::EncodeUploadResult() +{ + Json::Value root; + Json::FastWriter writer; + root["AcceptedCount"] = pimpl->FileInfo.size(); + root["AcceptedFiles"] = Json::Value(Json::arrayValue); + for (auto& ele : pimpl->FileInfo) + { + Json::Value sub; + sub["FileName"] = ele.GetStorageFileName(); + sub["UploadTime"] = ele.GetUploadTime().GetTimeStamp(); + root["AcceptedFiles"].append(sub); + } + return writer.write(root); +} + +std::string SyncFileReceiver::EncodeUploadResultHTML() +{ + const char* html = R"( + + + + Upload Result + + +
+

Upload Result

+
+

AcceptedCount: %lld

+

AcceptedFiles:
%s

+
+ + +)"; + std::string tmp; + for (auto& ele : pimpl->FileInfo) + tmp += "[" + ele.GetStorageFileName() + "] - {" + ele.GetUploadTime().Format("%Y-%m-%d %H:%M:%S") + "}
"; + size_t html_size = strlen(html) + tmp.size() + 10; + char* result = new char[html_size]; + memset(result, 0, sizeof(result)); + sprintf(result, html, pimpl->FileInfo.size(), tmp.c_str()); + tmp = std::string(result); + delete[] result; + return tmp; +} + +uns::ResponsePtr SyncFileReceiver::Execute(uns::RequestPtr request) +{ + uns::HTTPMethod method = GetMethod(request); + std::string x_real_ip; + if(request->GetImpl()->webcc_req->HasHeader("X-Real-IP")) + x_real_ip = request->GetImpl()->webcc_req->GetHeader("X-Real-IP"); + std::string req_ip = (x_real_ip.empty() ? request->GetImpl()->webcc_req->address() : x_real_ip); + SCLOG_DEBUG("Request recived, ip: [%s], method: %s", req_ip.c_str(), request->GetImpl()->webcc_req->method().c_str()); + // path test + std::string path = request->GetImpl()->webcc_req->url().path(); + auto status = PathTraversal::AnalyzeUrlTraversal(path); + if(status != PathTraversal::UrlSafetyStatus::Safe) + SCLOGF_WARNING("PathTraversal Detected: {}, Level: {}", path, PathTraversal::ToString(status)); + switch(PTDefence()) + { + case uns::PathTraversalDefenceLevel::DenyAll: + if(status != PathTraversal::UrlSafetyStatus::Safe) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + break; + case uns::PathTraversalDefenceLevel::AutoNormalize: + { + if(status == PathTraversal::UrlSafetyStatus::EvasiveTraversal) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto decoded_path = PathTraversal::UrlDecode(path); + if(!IsPathSafe(decoded_path)) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto url = request->GetImpl()->webcc_req->url(); + url.ForceSet_Path(PathTraversal::NormalizeUrlPath(decoded_path)); + request->GetImpl()->webcc_req->set_url(std::move(url)); + break; + } + case uns::PathTraversalDefenceLevel::AllowNormal: + { + if(status == PathTraversal::UrlSafetyStatus::EvasiveTraversal) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto decoded_path = PathTraversal::UrlDecode(path); + if(!IsPathSafe(decoded_path)) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Forbidden().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Forbidden().EmptyBody()()); + auto url = request->GetImpl()->webcc_req->url(); + url.ForceSet_Path(decoded_path); + request->GetImpl()->webcc_req->set_url(std::move(url)); + break; + } + default: + break; //Check Bypassed by [AllowAll] + } + if ((method & uns::H_PUT) || (method & uns::H_POST)) + { + if (pimpl->BlockedIPs != nullptr) + { + std::string req_ip = request->GetImpl()->webcc_req->address(); + pimpl->BlockedIPs->Update(); + if (pimpl->BlockedIPs->IPExist(req_ip)) + return (pimpl->EnableCORS ? uns::ResponseBuilder().IPBlocked().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().IPBlocked().EmptyBody()()); + } + webcc::Status tmpStatus = uns::ConvertStatus(PreCheckRequest(request)); + if (tmpStatus != webcc::kOK) + return (pimpl->EnableCORS ? uns::ResponseBuilder().Code(tmpStatus).EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().Code(tmpStatus).EmptyBody()()); + else if (!request->IsForm()) + return (pimpl->EnableCORS ? uns::ResponseBuilder().RequestFormatError().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().RequestFormatError().EmptyBody()()); + else + { + for (auto& form : request->GetFormParts()) + { + if (form->GetFileName().empty()) + continue; + if (!PreCheckForm(form)) + { + SCLOGF_DEBUG("File denied: [{}], {} bytes", form->GetFileName(), form->GetDataSize()); + continue; + } + SCLOGF_DEBUG("File recived: [{}], {} bytes", form->GetFileName(), form->GetDataSize()); + WebFileInfo info(form->GetFileNameS(), form->GetDataSize()); + WriteFile(info.MakePath(pimpl->TempRoot), form->GetData()); + pimpl->FileInfo.push_back(info); + } + + // 【修改的关键步骤】 + // 1. 同步调用虚函数,获取具体的业务处理结果(及构筑好的自定义 HTTP Response) + uns::ResponsePtr response = ProcessFiles(pimpl->FileInfo, pimpl->TempRoot, request); + + // 2. 清理当前类中的文件缓存(防止污染下一次 HTTP 请求) + pimpl->FileInfo.clear(); + + // 3. 作为最后一步直接返回 + return response; + } + } + else + return (pimpl->EnableCORS ? uns::ResponseBuilder().IllegalUpload().EmptyBody().AutoCORS(request)() : uns::ResponseBuilder().IllegalUpload().EmptyBody()()); +} \ No newline at end of file diff --git a/SyncFileReceiver.h b/SyncFileReceiver.h new file mode 100644 index 0000000..7302aab --- /dev/null +++ b/SyncFileReceiver.h @@ -0,0 +1,43 @@ +#pragma once +#include "Export.h" +#include "Global.h" +#include "IPTable.h" +#include "WebFileInfo.h" +#include "HTTPObjects.h" + +class UNSWSC_DLL_EXPORT SyncFileReceiver +{ +protected: + class Impl; + std::unique_ptr pimpl; + +public: + SyncFileReceiver(); + virtual ~SyncFileReceiver(); + +public: + void SetResponseMode(bool html); + void SetCORSEnable(bool enable); + std::string EncodeUploadResult(); + std::string EncodeUploadResultHTML(); + void UpdateBlockedIPs(IPTablePtr ip); + void SetTempRoot(std::string temp_root); + uns::HTTPMethod GetMethod(uns::RequestPtr request); + void AppenedBlockedIP(DateTime::Span block_time, std::string ip); + bool WriteFile(const std::string& path, const std::string& bytes); + +public: + virtual uns::Status PreCheckRequest(uns::RequestPtr request) = 0; + virtual bool PreCheckForm(uns::FormPartPtr form) = 0; + virtual uns::PathTraversalDefenceLevel PTDefence(); + virtual bool IsPathSafe(const std::string& raw_path); + + // 【修改】由原先的 Callback 改为可供子类重写的虚函数 + // 返回值改为 webcc::ResponsePtr,并且引入 request 参数以便子类调用 AutoCORS 或解析请求头 + virtual uns::ResponsePtr ProcessFiles(const WebFileInfoVec& file_info, const std::string& tmp_root, uns::RequestPtr request); + +public: + uns::ResponsePtr Execute(uns::RequestPtr request); +}; + +using SyncFileReceiverPtr = std::shared_ptr; \ No newline at end of file diff --git a/TestLogger.cpp b/TestLogger.cpp new file mode 100644 index 0000000..70ae84d --- /dev/null +++ b/TestLogger.cpp @@ -0,0 +1,90 @@ +#include +#include +#include +#include +#include + +// 确保引入包含日志宏和 GlobalServerLogger 的头文件 +#include "ServerLogger.h" + +#ifndef __FILENAME__ +#define __FILENAME__ (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__) +#endif + +// 仅用于提供函数指针地址 +void DummyPureFunction() {} + +int main() { + // 【步骤 1】初始化控制台日志,开启最低级别 + SCLOG_CONSOLE_INIT(uns::llTrace); + + SCLOG_SHORT_INFO("=== ServerLogger Macro-based Test Started ==="); + + // ================================================================= + // 1. C++ fmt 风格测试 (带 F 的宏) + // ================================================================= + std::cout << "\n--- [Part 1: FMT Style Macros Test] ---" << std::endl; + { + // 基础类型 + SCLOGF_INFO("Base values (Long): int={}, double={}, string={}, bool={}, wstring={}", + 42, 3.14159, std::string("UNS_Core日志测试"), true, L"wstring防乱码测试"); + SCLOGF_SHORT_DEBUG("Base values (Short): int={}, string={}", + 1024, "ShortFormatTest"); + + // 容器 (Range) + std::vector dummy_vector = {10, 20, 30, 40}; + SCLOGF_DEBUG("Vector lazy contents: {}", dummy_vector); + + // 键值对 (Pair) + std::pair dummy_pair = {"Database_Connections", 12.0}; + SCLOGF_WARNING("Metric data pair: {}", dummy_pair); + + // 函数/闭包 (Function) + std::function func1(DummyPureFunction); + auto dummy_closure = [status = 500]() { return status; }; + std::function func2 = dummy_closure; + SCLOGF_ERROR("Registered handlers - Pure: {}, Closure: {}", func1, func2); + + // 混合复杂编排 + std::vector scores = {99, 95, 88}; + SCLOGF_FATAL("Critical failure! Operator: '{}', Cluster Nodes: {}, Error Code: {}", + "RootAdmin", scores, 5005); + } + + // ================================================================= + // 2. 传统 printf 风格测试 (不带 F 的宏) + // ================================================================= + std::cout << "\n--- [Part 2: Printf Style Macros Test] ---" << std::endl; + { + // 2.1 测试带文件行号的长日志宏 (SCLOG_xxx) + SCLOG_TRACE("Printf Trace log: msg=%s, val=%d", "TraceMessage", 100); + SCLOG_DEBUG("Printf Debug log: score=%.2f", 98.5); + SCLOG_INFO("Printf Info log: hex=0x%X", 0xAB); + SCLOG_WARNING("Printf Warning log: active=%s", "true"); + SCLOG_ERROR("Printf Error log: connection count=%d", 5); + SCLOG_FATAL("Printf Fatal log: system exit code=%d", -1); + + // 2.2 测试不带文件行号的短日志宏 (SCLOG_SHORT_xxx) + SCLOG_SHORT_TRACE("Printf Short Trace: code=%d", 1); + SCLOG_SHORT_DEBUG("Printf Short Debug: name=%s", "WorkerA"); + SCLOG_SHORT_INFO("Printf Short Info: load=%d%%", 85); + SCLOG_SHORT_WARNING("Printf Short Warning: threshold=%.1f", 90.0); + SCLOG_SHORT_ERROR("Printf Short Error: mask=0x%x", 0xFF00); + SCLOG_SHORT_FATAL("Printf Short Fatal: panic id=%d", 999); + } + + std::cout << "\n" << std::endl; + SCLOG_SHORT_INFO("=== ServerLogger Macro-based Test Completed ==="); + + for(int i = 5; i > 0; i--) + { + using namespace std::chrono; + SCLOGF_SHORT_INFO("Close Log Stream in {} Seconds", i); + std::this_thread::sleep_for(1s); + } + + // 【步骤 2】退出前关闭日志流 + SCLOG_CLOSE(); + + return 0; +} \ No newline at end of file diff --git a/UNSResponseBuilder.cpp b/UNSResponseBuilder.cpp new file mode 100644 index 0000000..bb99949 --- /dev/null +++ b/UNSResponseBuilder.cpp @@ -0,0 +1,778 @@ +#include "UNSResponseBuilder.h" +#include "Global.h" +#include +#include "CORSConfig.h" +#include "ServerLogger.h" +#include "HTTPObjectsBridge.h" +#include + +inline bool global_allow_framing = false; + +class uns::ResponseBuilder::Impl : public webcc::ResponseBuilder +{ +public: + bool empty_body = false; + bool framing_override = false; + bool allow_framing = global_allow_framing; + +public: + Impl() : webcc::ResponseBuilder() + { + } + + Impl(webcc::RequestPtr req) : webcc::ResponseBuilder(req) + { + } +}; + +bool uns::ResponseBuilder::FileExist(std::string file) +{ + std::fstream fs(file, std::ios::in); + bool succ = fs.is_open(); + if (succ) + fs.close(); + return succ; +} + +void uns::ResponseBuilder::SetGlobalAllowFraming(bool allow) +{ + global_allow_framing = allow; +} + +uns::ResponseBuilder::ResponseBuilder() : impl(std::make_unique()) +{ +} + +uns::ResponseBuilder::~ResponseBuilder() = default; + +uns::ResponseBuilder::ResponseBuilder(uns::RequestPtr req) +{ + auto raw_webcc_req = req->GetImpl()->webcc_req; + impl = std::make_unique(raw_webcc_req); +} + +uns::ResponsePtr uns::ResponseBuilder::operator()() +{ + //Auto appened error page when body is empty and not set as empty body + if((impl->GetCode() >= 400) && impl->IsBodyEmpty() && (!impl->empty_body)) + { + std::string body = uns::EncodeErrorPage(impl->GetCode()); + impl->Body(body); + } + if(impl->empty_body) + impl->Body(""); + SCLOGF_INFO("Response ready, Code: {}, Content-Length: {}", impl->GetCode(), impl->GetBodySize()); + auto& webcc_res_b = impl->Header("Date", uns::EncodeHTTPTime(nullptr)).Header("Server", G_SERVER_NAME); + bool framing = (impl->framing_override ? impl->allow_framing : global_allow_framing); + if(!framing) + webcc_res_b.Header("X-Frame-Options", "SAMEORIGIN").Header("Content-Security-Policy", "frame-ancestors 'self'"); + auto res_impl = std::make_unique(webcc_res_b()); + return uns::ResponsePtr(new uns::Response(std::move(res_impl))); +} + +uns::ResponseBuilder& uns::ResponseBuilder::Continue() +{ + impl->Code(webcc::kContinue); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::SwitchingProtocols() +{ + impl->Code(webcc::kSwitchingProtocols); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Processing() +{ + impl->Code(webcc::kProcessing); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::EarlyHints() +{ + impl->Code(webcc::kEarlyHints); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::OK() +{ + impl->OK(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Created() +{ + impl->Created(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Accepted() +{ + impl->Code(webcc::kAccepted); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NonAuthoritativeInformation() +{ + impl->Code(webcc::kNonAuthoritativeInformation); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NoContent() +{ + impl->Code(webcc::kNoContent); + EmptyBody(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ResetContent() +{ + impl->Code(webcc::kResetContent); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::PartialContent() +{ + impl->Code(webcc::kPartialContent); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::MultiStatus() +{ + impl->Code(webcc::kMultiStatus); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::AlreadyReported() +{ + impl->Code(webcc::kAlreadyReported); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::IMUsed() +{ + impl->Code(webcc::kIMUsed); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::MultipleChoices() +{ + impl->Code(webcc::kMultipleChoices); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::MovedPermanently(const std::string& new_url) +{ + impl->Code(webcc::kMovedPermanently); + impl->Header("Location", new_url); + EmptyBody(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Found(const std::string& new_url) +{ + impl->Code(webcc::kFound); + impl->Header("Location", new_url); + EmptyBody(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::SeeOther(const std::string& new_url) +{ + impl->Code(webcc::kSeeOther); + impl->Header("Location", new_url); + EmptyBody(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NotModified() +{ + impl->Code(webcc::kNotModified); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::UseProxy() +{ + impl->Code(webcc::kUseProxy); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::__Unused() +{ + impl->Code(webcc::k__Unused); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::TemporaryRedirect(const std::string& new_url) +{ + impl->Code(webcc::kTemporaryRedirect); + impl->Header("Location", new_url); + EmptyBody(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::PermanentRedirect(const std::string& new_url) +{ + impl->Code(webcc::kPermanentRedirect); + impl->Header("Location", new_url); + EmptyBody(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::BadRequest() +{ + impl->BadRequest(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Unauthorized() +{ + impl->Code(webcc::kUnauthorized); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::PaymentRequired() +{ + impl->Code(webcc::kPaymentRequired); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Forbidden() +{ + impl->Code(webcc::kForbidden); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NotFound() +{ + impl->NotFound(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::MethodNotAllowed() +{ + impl->Code(webcc::kMethodNotAllowed); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NotAcceptable() +{ + impl->Code(webcc::kNotAcceptable); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ProxyAuthenticationRequired() +{ + impl->Code(webcc::kProxyAuthenticationRequired); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::RequestTimeout() +{ + impl->Code(webcc::kRequestTimeout); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Conflict() +{ + impl->Code(webcc::kConflict); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Gone() +{ + impl->Code(webcc::kGone); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::LengthRequired() +{ + impl->Code(webcc::kLengthRequired); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::PreconditionFailed() +{ + impl->Code(webcc::kPreconditionFailed); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ContentTooLarge() +{ + impl->Code(webcc::kContentTooLarge); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::URITooLong() +{ + impl->Code(webcc::kURITooLong); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::UnsupportedMediaType() +{ + impl->Code(webcc::kUnsupportedMediaType); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::RangeNotSatisfiable() +{ + impl->Code(webcc::kRangeNotSatisfiable); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ExpectationFailed() +{ + impl->Code(webcc::kExpectationFailed); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::IamATeapot() +{ + impl->Code(webcc::kIamATeapot); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::MisdirectedRequest() +{ + impl->Code(webcc::kMisdirectedRequest); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::UnprocessableContent() +{ + impl->Code(webcc::kUnprocessableContent); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Locked() +{ + impl->Code(webcc::kLocked); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::FailedDependency() +{ + impl->Code(webcc::kFailedDependency); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::TooEarly() +{ + impl->Code(webcc::kTooEarly); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::UpgradeRequired(const std::string& protocol) +{ + impl->Code(webcc::kMovedPermanently); + impl->Header("Upgrade", protocol); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::PreconditionRequired() +{ + impl->Code(webcc::kPreconditionRequired); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::TooManyRequests() +{ + impl->Code(webcc::kTooManyRequests); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::RequestHeaderFieldsTooLarge() +{ + impl->Code(webcc::kRequestHeaderFieldsTooLarge); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::UnavailableForLegalReasons() +{ + impl->Code(webcc::kUnavailableForLegalReasons); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::InternalServerError() +{ + impl->InternalServerError(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NotImplemented() +{ + impl->NotImplemented(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::BadGateway() +{ + impl->Code(webcc::kBadGateway); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ServiceUnavailable() +{ + impl->ServiceUnavailable(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::GatewayTimeout() +{ + impl->Code(webcc::kGatewayTimeout); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::HTTPVersionNotSupported() +{ + impl->Code(webcc::kHTTPVersionNotSupported); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::VariantAlsoNegotiates() +{ + impl->Code(webcc::kVariantAlsoNegotiates); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::InsufficientStorage() +{ + impl->Code(webcc::kInsufficientStorage); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::LoopDetected() +{ + impl->Code(webcc::kLoopDetected); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NotExtended() +{ + impl->Code(webcc::kNotExtended); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::NetworkAuthenticationRequired() +{ + impl->Code(webcc::kNetworkAuthenticationRequired); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::RequestFormatError() +{ + impl->Code(webcc::k_uRequestFormatError); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::RequestInvalid() +{ + impl->Code(webcc::k_uRequestInvalid); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::URLOutOfRange() +{ + impl->Code(webcc::k_uURLOutOfRange); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::InvalidRequestHost() +{ + impl->Code(webcc::k_uInvalidRequestHost); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::IPBlocked() +{ + impl->Code(webcc::k_uIPBlocked); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::IllegalUpload() +{ + impl->Code(webcc::k_uIllegalUpload); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::FileFormatError() +{ + impl->Code(webcc::k_uFileFormatError); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::InvalidFile() +{ + impl->Code(webcc::k_uInvalidFile); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::FileTooLarge() +{ + impl->Code(webcc::k_uFileTooLarge); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::RPSLimited() +{ + impl->Code(webcc::k_uRPSLimited); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::SubProcessFalied() +{ + impl->Code(webcc::k_uSubProcessFalied); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ServerHateYou() +{ + impl->Code(webcc::k_uServerHateYou); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::DoSFound() +{ + impl->Code(webcc::k_uDoSFound); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::DDoSFound() +{ + impl->Code(webcc::k_uDDoSFound); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::UnknownServerError() +{ + impl->Code(webcc::k_uUnknownServerError); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Utf8() +{ + impl->Utf8(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Json() +{ + impl->Json(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Date() +{ + impl->Header("Date", EncodeHTTPTime(nullptr)); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::GZip() +{ + impl->Gzip(); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::DenyFraming() +{ + impl->framing_override = true; + impl->allow_framing = false; + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::AllowFraming() +{ + impl->framing_override = true; + impl->allow_framing = true; + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Code(int code) +{ + impl->Code(static_cast(code)); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Charset(std::string_view charset) +{ + impl->Charset(charset); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::SetCookie(std::string_view cookie) +{ + impl->Header("Set-Cookie", cookie); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::MediaType(std::string_view media_type) +{ + impl->MediaType(media_type); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Header(std::string_view key, std::string_view value) +{ + impl->Header(key, value); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::EmptyBody() +{ + impl->empty_body = true; + impl->Body(""); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Body(int data) +{ + impl->Body(std::to_string(data)); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Body(std::string&& data) +{ + impl->Body(data); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Body(const Json::Value& data) +{ + Json::FastWriter writer; + impl->Json(); + impl->Body(writer.write(data)); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::Body(const std::string& data) +{ + impl->Body(data); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ErrorPage() +{ + impl->Body(EncodeErrorPage(impl->GetCode())); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::ErrorPage(std::string_view error_page) +{ + impl->Body(error_page.data()); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::File(const std::filesystem::path& path, bool infer_media_type, std::size_t chunk_size) +{ + try + { + SCLOGF_INFO("Responsing With File: {}", path.generic_string()); + if (FileExist(path.generic_string())) + impl->File(path, infer_media_type, chunk_size); + else + { + impl->Code(webcc::kNotFound); + SCLOGF_WARNING("File {} Does not Exist", path.generic_string()); + } + } + catch (const webcc::Error& e) + { + SCLOGF_WARNING("webcc::Error During File Resopnse: {} ({})", e.code(), e.message()); + impl->Code(webcc::kNotFound); + } + catch (...) + { + impl->Code(webcc::kInternalServerError); + } + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::FileForDownload(const std::filesystem::path& path, bool infer_media_type, std::size_t chunk_size) +{ + try + { + SCLOGF_INFO("Responsing With File For Download: {}", path.generic_string()); + if (FileExist(path.generic_string())) + { + impl->File(path, infer_media_type, chunk_size); + impl->Header("Content-Disposition", "attachment;filename=" + path.filename().string()); + impl->Header("Content-Type", "application/octet-stream"); + } + else + { + impl->Code(webcc::kNotFound); + SCLOGF_WARNING("File {} Does not Exist", path.generic_string()); + } + } + catch (const webcc::Error& e) + { + SCLOGF_WARNING("webcc::Error During File-Downloading Resopnse: {} ({})", e.code(), e.message()); + impl->Code(webcc::kNotFound); + } + catch (...) + { + impl->Code(webcc::kInternalServerError); + } + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::AutoCORS(uns::RequestPtr req) +{ + auto Trim = [](const std::string& s) -> std::string + { + size_t start = 0; + while ((start < s.size()) && std::isspace(static_cast(s[start]))) + ++start; + if (start == s.size()) + return ""; + + size_t end = s.size() - 1; + while ((end > start) && std::isspace(static_cast(s[end]))) + --end; + return s.substr(start, end - start + 1); + }; + if(req->GetImpl()->webcc_req->HasHeader(uns::cors::reqh_o)) + { + std::string origin = Trim(req->GetImpl()->webcc_req->GetHeader(uns::cors::reqh_o)); + if(GlobalCORSConfig.UrlValidate(origin)) + { + std::string host = req->GetImpl()->webcc_req->HasHeader("Host") ? req->GetImpl()->webcc_req->GetHeader("Host") : ""; + if(host.empty() || GlobalCORSConfig.HostValidate(host)) + { + SCLOG_INFO("Applied CORS headers for origin=%s cred=%d", origin.c_str(), GlobalCORSConfig.AllowCookie() ? 1 : 0); + return CORS(origin); + } + else + { + SCLOG_WARNING("Actual request: Host not allowed: %s", host.c_str()); + return Forbidden().Body(std::string("CORS ERROR")); + } + } + else + { + SCLOG_WARNING("Actual request: Origin not allowed: %s", origin.c_str()); + return Forbidden().Body(std::string("CORS ERROR")); + } + } + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::CORS(const std::string& origin) +{ + impl->Header("Vary", "Origin"); + impl->Header(uns::cors::resh_acao, origin); + impl->Header(uns::cors::resh_acac, uns::btos(GlobalCORSConfig.AllowCookie())); + return *this; +} + +uns::ResponseBuilder& uns::ResponseBuilder::CORS_Full(const std::string& origin, const std::set& headers) +{ + impl->Header("Vary", "Origin"); + impl->Header(uns::cors::resh_acao, origin); + impl->Header(uns::cors::resh_acam, GlobalCORSConfig.GetValidateMethods()); + impl->Header(uns::cors::resh_acah, GlobalCORSConfig.GetValidateHeaders(headers)); + impl->Header(uns::cors::resh_acac, uns::btos(GlobalCORSConfig.AllowCookie())); + impl->Header(uns::cors::resh_acma, std::to_string(GlobalCORSConfig.GetMaxAge())); + return *this; +} diff --git a/UNSResponseBuilder.h b/UNSResponseBuilder.h new file mode 100644 index 0000000..eb323b1 --- /dev/null +++ b/UNSResponseBuilder.h @@ -0,0 +1,238 @@ +#pragma once +#include +#include +#include "Export.h" +#include +#include "HTTPObjects.h" + +namespace Json +{ + class Value; +} + +namespace uns +{ + class UNSWSC_DLL_EXPORT ResponseBuilder + { + private: + class Impl; + + std::unique_ptr impl; + + private: + bool FileExist(std::string file); + + public: + static void SetGlobalAllowFraming(bool allow); + + public: + ResponseBuilder(); + virtual ~ResponseBuilder(); + ResponseBuilder(uns::RequestPtr req); + ResponseBuilder(const ResponseBuilder&) = delete; + ResponseBuilder& operator=(const ResponseBuilder&) = delete; + + public: + uns::ResponsePtr operator()(); + + public: //Standard Return Code 1xx + //100 - 此临时响应表明客户端应继续请求,或者如果请求已完成,则忽略此响应。 + ResponseBuilder& Continue(); + //101 - 此代码是在响应客户端的 Upgrade 请求标头时发送的,用于指示服务器即将切换到的协议。 + ResponseBuilder& SwitchingProtocols(); + //102 - 此代码曾在 WebDAV 上下文中使用,表示服务器已收到请求,但在响应时无法提供状态。 + ResponseBuilder& Processing(); + //103 - 此状态码主要与 Link 标头一起使用,允许用户代理在服务器准备响应时开始预加载资源,或预连接到页面需要资源的源站。 + ResponseBuilder& EarlyHints(); + + public: //Standard Return Code 2xx + //200 - 请求成功。 + ResponseBuilder& OK(); + //201 - 请求成功,并因此创建了一个新资源。 + ResponseBuilder& Created(); + //202 - 请求已被接收但尚未处理。 + ResponseBuilder& Accepted(); + //203 - 此响应代码表示返回的元数据与原始服务器上可用的不完全相同,而是从本地或第三方副本收集的。这主要用于另一个资源的镜像或备份。 + ResponseBuilder& NonAuthoritativeInformation(); + //204 - 对于此请求,没有内容可发送,但响应头可能有用。 + ResponseBuilder& NoContent(); + //205 - 告知用户代理重置发送此请求的文档。 + ResponseBuilder& ResetContent(); + //206 - 当客户端请求了资源的一部分时,使用此响应代码进行响应。 + ResponseBuilder& PartialContent(); + //207 - 在可能需要多个状态码的情况下,传递关于多个资源的信息。 + ResponseBuilder& MultiStatus(); + //208 - 在 响应元素内部使用,以避免重复枚举同一集合的多个绑定的内部成员。 + ResponseBuilder& AlreadyReported(); + //226 - 服务器已完成了对资源的 GET 请求,并且响应是对当前实例应用了一个或多个实例操作后的结果表示。 + ResponseBuilder& IMUsed(); + + public: //Standard Return Code 3xx + //300 - 在代理驱动(agent-driven)的内容协商中,请求有多个可能的响应,用户代理或用户应选择其中之一。 + ResponseBuilder& MultipleChoices(); + //301 - 请求资源的 URL 已永久更改。新 URL 在响应中给出。 + ResponseBuilder& MovedPermanently(const std::string& new_url); + //302 - 此响应代码意味着请求资源的 URI 已暂时更改。未来可能还会对 URI 进行进一步更改,因此客户端在未来的请求中应使用相同的 URI。 + ResponseBuilder& Found(const std::string& new_url); + //303 - 服务器发送此响应以指示客户端使用 GET 请求在另一个 URI 获取请求的资源。 + ResponseBuilder& SeeOther(const std::string& new_url); + //304 - 用于缓存目的。它告知客户端响应未被修改,因此客户端可以继续使用相同的缓存响应版本。 + ResponseBuilder& NotModified(); + //305 - 在 HTTP 规范的前一版本中定义,表示请求的响应必须通过代理访问。由于涉及代理带内配置的安全问题,此状态码已被弃用。 + ResponseBuilder& UseProxy(); + //306 - 此响应代码不再使用,但被保留。它曾在 HTTP/1.1 规范的先前版本中使用。 + ResponseBuilder& __Unused(); + //307 - 服务器发送此响应以指示客户端使用与先前请求相同的方法在另一个 URI 获取请求的资源。其语义与 302 Found 响应代码相同,但用户代理不得更改使用的 HTTP 方法。 + ResponseBuilder& TemporaryRedirect(const std::string& new_url); + //308 - 表示资源现在永久位于另一个 URI,由 Location 响应头指定。其语义与 301 Moved Permanently HTTP 响应代码相同,但用户代理不得更改使用的 HTTP 方法。 + ResponseBuilder& PermanentRedirect(const std::string& new_url); + + public: //Recode Code 4xx + //400 - 由于被认为是客户端错误的原因(例如,格式错误的请求语法、无效的请求消息结构或欺骗性的请求路由),服务器无法或不会处理该请求。 + ResponseBuilder& BadRequest(); + //401 - 尽管 HTTP 标准指定为 "unauthorized",但从语义上讲,此响应的意思是 "unauthenticated"。即,客户端必须进行身份验证才能获得请求的响应。 + ResponseBuilder& Unauthorized(); + //402 - 此代码最初用于数字支付系统,但此状态码很少使用,且不存在标准约定。 + ResponseBuilder& PaymentRequired(); + //403 - 客户端没有访问内容的权利;也就是说,它是未授权的,因此服务器拒绝提供请求的资源。与 401 Unauthorized 不同,服务器知道客户端的身份。 + ResponseBuilder& Forbidden(); + //404 - 服务器找不到请求的资源。 + ResponseBuilder& NotFound(); + //405 - 服务器知道请求方法,但目标资源不支持该方法。 + ResponseBuilder& MethodNotAllowed(); + //406 - 当 Web 服务器执行服务器驱动的内容协商后,找不到任何符合用户代理给定条件的内容时,会发送此响应。 + ResponseBuilder& NotAcceptable(); + //407 - 类似于 401 Unauthorized,但需要通过代理进行身份验证。 + ResponseBuilder& ProxyAuthenticationRequired(); + //408 - 某些服务器会在空闲连接上发送此响应,即使客户端之前没有任何请求。这意味着服务器希望关闭此未使用的连接。 + ResponseBuilder& RequestTimeout(); + //409 - 当请求与服务器的当前状态冲突时,发送此响应。 + ResponseBuilder& Conflict(); + //410 - 当请求的内容已从服务器永久删除,且没有转发地址时,发送此响应。 + ResponseBuilder& Gone(); + //411 - 服务器拒绝了请求,因为未定义 Content-Length 标头字段,而服务器需要它。 + ResponseBuilder& LengthRequired(); + //412 - 在条件请求中,客户端在其标头中指明了服务器不满足的前提条件。 + ResponseBuilder& PreconditionFailed(); + //413 - 请求体大于服务器定义的限制。 + ResponseBuilder& ContentTooLarge(); + //414 - 客户端请求的 URI 长度超过了服务器愿意解释的长度。 + ResponseBuilder& URITooLong(); + //415 - 服务器不支持请求数据的媒体格式,因此服务器拒绝该请求。 + ResponseBuilder& UnsupportedMediaType(); + //416 - 无法满足请求中 Range 标头字段指定的范围。可能范围超出了目标资源数据的大小。 + ResponseBuilder& RangeNotSatisfiable(); + //417 - 此响应代码表示服务器无法满足 Expect 请求标头字段指示的期望。 + ResponseBuilder& ExpectationFailed(); + //418 - 服务器拒绝尝试用茶壶煮咖啡。 + ResponseBuilder& IamATeapot(); + //421 - 请求被发送到了一个无法产生响应的服务器。 + ResponseBuilder& MisdirectedRequest(); + //422 - 请求格式正确,但由于语义错误而无法被遵循。 + ResponseBuilder& UnprocessableContent(); + //423 - 正在访问的资源已被锁定。 + ResponseBuilder& Locked(); + //424 - 由于先前的请求失败,导致当前请求失败。 + ResponseBuilder& FailedDependency(); + //425 - 表示服务器不愿意冒险处理一个可能被重放的请求。 + ResponseBuilder& TooEarly(); + //426 - 服务器拒绝使用当前协议执行请求,但可能在客户端升级到其他协议后愿意执行。服务器在 426 响应中发送 Upgrade 标头以指示所需的协议。 + ResponseBuilder& UpgradeRequired(const std::string& protocol); + //428 - 原始服务器要求请求是有条件的。此响应旨在防止"丢失更新"问题,即客户端 GET 资源状态,修改后 PUT 回服务器,而同时第三方已修改了服务器上的状态,导致冲突。 + ResponseBuilder& PreconditionRequired(); + //429 - 用户在给定的时间内发送了太多请求(速率限制)。 + ResponseBuilder& TooManyRequests(); + //431 - 服务器因请求头字段太大而不愿意处理该请求。 + ResponseBuilder& RequestHeaderFieldsTooLarge(); + //451 - 用户代理请求了一个无法合法提供的资源,例如被政府审查的网页。 + ResponseBuilder& UnavailableForLegalReasons(); + + public: //Standard Return Code 5xx + //500 - 服务器遇到了不知道如何处理的情况。此错误是通用性的,表示服务器找不到更合适的 5XX 状态码来响应。 + ResponseBuilder& InternalServerError(); + //501 - 服务器不支持请求方法,无法处理。 + ResponseBuilder& NotImplemented(); + //502 - 此错误响应意味着服务器作为网关或代理时,收到了一个无效的响应。 + ResponseBuilder& BadGateway(); + //503 - 服务器尚未准备好处理请求。 + ResponseBuilder& ServiceUnavailable(); + //504 - 当服务器作为网关或代理,无法及时获得响应时,会给出此错误响应。 + ResponseBuilder& GatewayTimeout(); + //505 - 服务器不支持请求中使用的 HTTP 版本。 + ResponseBuilder& HTTPVersionNotSupported(); + //506 - 服务器存在内部配置错误:在内容协商过程中,被选中的变体被配置为自身参与内容协商,这导致在创建响应时出现循环引用。 + ResponseBuilder& VariantAlsoNegotiates(); + //507 - 由于服务器无法存储成功完成请求所需的表示,因此无法对资源执行该方法。 + ResponseBuilder& InsufficientStorage(); + //508 - 服务器在处理请求时检测到无限循环。 + ResponseBuilder& LoopDetected(); + //510 - 客户端请求声明了一个应使用 HTTP 扩展(RFC 2774)来处理请求,但该扩展不受支持。 + ResponseBuilder& NotExtended(); + //511 - 表示客户端需要进行身份验证才能获得网络访问权限。 + ResponseBuilder& NetworkAuthenticationRequired(); + + public: //Non-Standard Return Code 4xx + //489 - 请求载体的格式错误,如:无法解析的JSON等。 + ResponseBuilder& RequestFormatError(); + //490 - 请求无效。可能是由于未正确携带数据等必要信息。 + ResponseBuilder& RequestInvalid(); + //492 - 请求URL超范围。此响应表示请求的URL是错误的。 + ResponseBuilder& URLOutOfRange(); + //493 - 无效的请求主机。指示请求时使用了错误的域名/IP。 + ResponseBuilder& InvalidRequestHost(); + //494 - IP地址被封禁。 + ResponseBuilder& IPBlocked(); + //495 -非法上传请求。指示本次上传请求不符合服务器规定。 + ResponseBuilder& IllegalUpload(); + //496 - 文件格式错误。指示上传的文件格式不符合服务器规定。 + ResponseBuilder& FileFormatError(); + //497 - 无效文件。处理请求所需的文件已过期/无法访问。 + ResponseBuilder& InvalidFile(); + //498 - 上传的文件过大。非文件上传时应使用 413 Content Too Large。 + ResponseBuilder& FileTooLarge(); + //499 - 每秒请求数过多。仅在一些特殊API中使用,常规情况需使用 429 Too Many Requests。 + ResponseBuilder& RPSLimited(); + + public: //Non-Standard Code 5xx + //533 - 子过程失败。服务器在处理请求的某个步骤中遇到无法恢复的错误。 + ResponseBuilder& SubProcessFalied(); + //540 - 服务器检测到漏洞利用/可执行文件上传等网络攻击行为。 + ResponseBuilder& ServerHateYou(); + //550 - 检测到拒绝服务漏洞攻击。 + ResponseBuilder& DoSFound(); + //551 - 检测到分布式拒绝服务漏洞攻击。 + ResponseBuilder& DDoSFound(); + //560 - 未知的服务器错误。当服务器无法定位错误来源时返回。否则应使用 500 Internal Server Error。 + ResponseBuilder& UnknownServerError(); + + public: //Header Functions + ResponseBuilder& Utf8(); + ResponseBuilder& Json(); + ResponseBuilder& Date(); + ResponseBuilder& GZip(); + ResponseBuilder& DenyFraming(); + ResponseBuilder& AllowFraming(); + ResponseBuilder& Code(int code); + ResponseBuilder& Charset(std::string_view charset); + ResponseBuilder& SetCookie(std::string_view cookie); + ResponseBuilder& MediaType(std::string_view media_type); + ResponseBuilder& Header(std::string_view key, std::string_view value); + + public: //Body Functions + ResponseBuilder& EmptyBody(); + ResponseBuilder& Body(int data); + ResponseBuilder& Body(std::string&& data); + ResponseBuilder& Body(const Json::Value& data); + ResponseBuilder& Body(const std::string& data); + ResponseBuilder& ErrorPage(); + ResponseBuilder& ErrorPage(std::string_view error_page); + ResponseBuilder& File(const std::filesystem::path& path, bool infer_media_type = true, std::size_t chunk_size = 1024); + ResponseBuilder& FileForDownload(const std::filesystem::path& path, bool infer_media_type = true, std::size_t chunk_size = 1024); + + public: //CORS Functions + //Perform CORS Check and Return CORS Headers, Must be the last function called + ResponseBuilder& AutoCORS(uns::RequestPtr req); + ResponseBuilder& CORS(const std::string& origin); + ResponseBuilder& CORS_Full(const std::string& origin, const std::set& headers); + }; +}; \ No newline at end of file diff --git a/WebFileInfo.cpp b/WebFileInfo.cpp new file mode 100644 index 0000000..2deeb3e --- /dev/null +++ b/WebFileInfo.cpp @@ -0,0 +1,92 @@ +#include +#ifndef _WIN32 +#include "UOHash.h" +#else +#include "../UOHash/UOHash.h" +#endif +#include "WebFileInfo.h" + +std::string WebFileInfo::GetRandomNumber() +{ + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution<> dis(123456789, 987654321); + return std::to_string(dis(gen)); +} + +std::string WebFileInfo::GetExtension(std::string ofn) +{ + size_t pos = ofn.rfind('.'); + if (pos == -1) + return ""; + else + return ofn.substr(pos); +} + +std::string WebFileInfo::GenerateStorageName(std::string ofn) +{ + uns::HashResult result = uns::UOHash::HashString(uns::HashID::CRC32C, ofn); + std::string timestr = UploadTime.Format("UPLOAD-%Y%m%d%H%M%S-"); + uns::HashResult random = uns::UOHash::HashString(uns::HashID::CRC32C, GetRandomNumber()); + return timestr + std::string(result) + "-" + std::string(random) + ".unsctmp"; +} + +WebFileInfo::WebFileInfo(std::string ofn, size_t size) +{ + OriginalFileName = ofn; + FileSize = size; + UploadTime = DateTime::Now(); + StorageFileName = GenerateStorageName(ofn); + ExtensionName = GetExtension(ofn); +} + +WebFileInfo::WebFileInfo(std::string ofn, std::string sfn, std::string en, DateTime upt, size_t siz) +{ + OriginalFileName = ofn; + StorageFileName = sfn; + ExtensionName = en; + UploadTime = upt; + FileSize = siz; +} + +WebFileInfo::WebFileInfo(const WebFileInfo& obj) +{ + OriginalFileName = obj.OriginalFileName; + StorageFileName = obj.StorageFileName; + ExtensionName = obj.ExtensionName; + UploadTime = obj.UploadTime; + FileSize = obj.FileSize; +} + +std::string WebFileInfo::MakePath(std::string storage_dir) const +{ + if (storage_dir[storage_dir.size() - 1] == '/') + return storage_dir + StorageFileName; + else + return storage_dir + "/" + StorageFileName; +} + +std::string WebFileInfo::GetOriginalFileName() const +{ + return OriginalFileName; +} + +std::string WebFileInfo::GetStorageFileName() const +{ + return StorageFileName; +} + +std::string WebFileInfo::GetExtensionName() const +{ + return ExtensionName; +} + +DateTime WebFileInfo::GetUploadTime() const +{ + return UploadTime; +} + +size_t WebFileInfo::GetFileSize() const +{ + return FileSize; +} diff --git a/WebFileInfo.h b/WebFileInfo.h new file mode 100644 index 0000000..7ad0af5 --- /dev/null +++ b/WebFileInfo.h @@ -0,0 +1,36 @@ +#pragma once +#include +#include +#include "Export.h" +#include "DateTime.h" + +class UNSWSC_DLL_EXPORT WebFileInfo +{ +private: + std::string OriginalFileName; + std::string StorageFileName; + std::string ExtensionName; + DateTime UploadTime; + size_t FileSize; + +private: + std::string GetRandomNumber(); + std::string GetExtension(std::string ofn); + std::string GenerateStorageName(std::string ofn); + +public: + WebFileInfo() = default; + WebFileInfo(std::string ofn, size_t size); + WebFileInfo(std::string ofn, std::string sfn, std::string en, DateTime upt, size_t siz); + WebFileInfo(const WebFileInfo& obj); + +public: + std::string MakePath(std::string storage_dir) const; + std::string GetOriginalFileName() const; + std::string GetStorageFileName() const; + std::string GetExtensionName() const; + DateTime GetUploadTime() const; + size_t GetFileSize() const; +}; + +using WebFileInfoVec = std::vector; \ No newline at end of file diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 0000000..fd328cf --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,501 @@ +# This is the CMakeCache file. +# For build in directory: /home/unknownobject/UNSWebServerCore/build +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Build type +CMAKE_BUILD_TYPE:STRING=Release + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-13 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-13 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/unknownobject/UNSWebServerCore/build/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=unswsc + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//No help, variable specified on the command line. +CMAKE_TOOLCHAIN_FILE:UNINITIALIZED=/home/unknownobject/vcpkg/scripts/buildsystems/vcpkg.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to a library. +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/unknownobject/vcpkg/installed/x64-linux/lib/libcrypto.a + +//Path to a library. +OPENSSL_DL_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libdl.a + +//Path to a file. +OPENSSL_INCLUDE_DIR:PATH=/home/unknownobject/vcpkg/installed/x64-linux/include + +//Path to a library. +OPENSSL_SSL_LIBRARY:FILEPATH=/home/unknownobject/vcpkg/installed/x64-linux/lib/libssl.a + +//Arguments to supply to pkg-config +PKG_CONFIG_ARGN:STRING= + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//Automatically copy dependencies into the output directory for +// executables. +VCPKG_APPLOCAL_DEPS:BOOL=ON + +//The directory which contains the installed libraries for each +// triplet +VCPKG_INSTALLED_DIR:PATH=/home/unknownobject/vcpkg/installed + +//The path to the vcpkg manifest directory. +VCPKG_MANIFEST_DIR:PATH= + +//Use manifest mode, as opposed to classic mode. +VCPKG_MANIFEST_MODE:BOOL=OFF + +//Appends the vcpkg paths to CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH +// and CMAKE_FIND_ROOT_PATH so that vcpkg libraries/packages are +// found after toolchain/system libraries/packages. +VCPKG_PREFER_SYSTEM_LIBS:BOOL=OFF + +//Enable the setup of CMAKE_PROGRAM_PATH to vcpkg paths +VCPKG_SETUP_CMAKE_PROGRAM_PATH:BOOL=ON + +//Path to a library. +VCPKG_SODIUM_LIBRARY_DEBUG:FILEPATH=/home/unknownobject/vcpkg/installed/x64-linux/debug/lib/libsodium.a + +//Path to a library. +VCPKG_SODIUM_LIBRARY_RELEASE:FILEPATH=/home/unknownobject/vcpkg/installed/x64-linux/lib/libsodium.a + +//Vcpkg target triplet (ex. x86-windows) +VCPKG_TARGET_TRIPLET:STRING=x64-linux + +//Trace calls to find_package() +VCPKG_TRACE_FIND_PACKAGE:BOOL=OFF + +//Enables messages from the VCPKG toolchain for debugging purposes. +VCPKG_VERBOSE:BOOL=OFF + +//(experimental) Automatically copy dependencies into the install +// target directory for executables. Requires CMake 3.14. +X_VCPKG_APPLOCAL_DEPS_INSTALL:BOOL=OFF + +//(experimental) Add USES_TERMINAL to VCPKG_APPLOCAL_DEPS to force +// serialization. +X_VCPKG_APPLOCAL_DEPS_SERIALIZED:BOOL=OFF + +//The directory which contains the installed libraries for each +// triplet +_VCPKG_INSTALLED_DIR:PATH=/home/unknownobject/vcpkg/installed + +//The directory containing a CMake configuration file for fmt. +fmt_DIR:PATH=/home/unknownobject/vcpkg/installed/x64-linux/share/fmt + +//The directory containing a CMake configuration file for jsoncpp. +jsoncpp_DIR:PATH=/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp + +//Path to a library. +pkgcfg_lib__OPENSSL_crypto:FILEPATH=/home/unknownobject/vcpkg/installed/x64-linux/lib/libcrypto.a + +//Path to a library. +pkgcfg_lib__OPENSSL_dl:FILEPATH=/usr/lib/x86_64-linux-gnu/libdl.a + +//Path to a library. +pkgcfg_lib__OPENSSL_ssl:FILEPATH=/home/unknownobject/vcpkg/installed/x64-linux/lib/libssl.a + +//The directory containing a CMake configuration file for unofficial-sodium. +unofficial-sodium_DIR:PATH=/home/unknownobject/vcpkg/installed/x64-linux/share/unofficial-sodium + +//Value Computed by CMake +unswsc_BINARY_DIR:STATIC=/home/unknownobject/UNSWebServerCore/build + +//Value Computed by CMake +unswsc_IS_TOP_LEVEL:STATIC=ON + +//Dependencies for the target +unswsc_LIB_DEPENDS:STATIC=general;webcc;general;uohash;general;utextcodec;general;fmt::fmt;general;OpenSSL::Crypto;general;unofficial-sodium::sodium; + +//Value Computed by CMake +unswsc_SOURCE_DIR:STATIC=/home/unknownobject/UNSWebServerCore + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/unknownobject/UNSWebServerCore/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=28 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/unknownobject/UNSWebServerCore +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.28 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TOOLCHAIN_FILE +CMAKE_TOOLCHAIN_FILE-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//Details about finding OpenSSL +FIND_PACKAGE_MESSAGE_DETAILS_OpenSSL:INTERNAL=[/home/unknownobject/vcpkg/installed/x64-linux/lib/libcrypto.a][/home/unknownobject/vcpkg/installed/x64-linux/include][c ][v3.5.1()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//ADVANCED property for variable: OPENSSL_CRYPTO_LIBRARY +OPENSSL_CRYPTO_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OPENSSL_INCLUDE_DIR +OPENSSL_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OPENSSL_SSL_LIBRARY +OPENSSL_SSL_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PKG_CONFIG_ARGN +PKG_CONFIG_ARGN-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//Install the dependencies listed in your manifest: +//\n If this is off, you will have to manually install your dependencies. +//\n See https://github.com/microsoft/vcpkg/tree/master/docs/specifications/manifests.md +// for more info. +//\n +VCPKG_MANIFEST_INSTALL:INTERNAL=OFF +//ADVANCED property for variable: VCPKG_VERBOSE +VCPKG_VERBOSE-ADVANCED:INTERNAL=1 +//Making sure VCPKG_MANIFEST_MODE doesn't change +Z_VCPKG_CHECK_MANIFEST_MODE:INTERNAL=OFF +//Vcpkg root directory +Z_VCPKG_ROOT_DIR:INTERNAL=/home/unknownobject/vcpkg +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +_OPENSSL_CFLAGS:INTERNAL=-I/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../include +_OPENSSL_CFLAGS_I:INTERNAL= +_OPENSSL_CFLAGS_OTHER:INTERNAL= +_OPENSSL_FOUND:INTERNAL=1 +_OPENSSL_INCLUDEDIR:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../include +_OPENSSL_INCLUDE_DIRS:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../include +_OPENSSL_LDFLAGS:INTERNAL=-L/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../lib;-lssl;-lcrypto;-ldl;-pthread +_OPENSSL_LDFLAGS_OTHER:INTERNAL=-pthread +_OPENSSL_LIBDIR:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../lib +_OPENSSL_LIBRARIES:INTERNAL=ssl;crypto;dl +_OPENSSL_LIBRARY_DIRS:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../lib +_OPENSSL_LIBS:INTERNAL= +_OPENSSL_LIBS_L:INTERNAL= +_OPENSSL_LIBS_OTHER:INTERNAL= +_OPENSSL_LIBS_PATHS:INTERNAL= +_OPENSSL_MODULE_NAME:INTERNAL=openssl +_OPENSSL_PREFIX:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../.. +_OPENSSL_STATIC_CFLAGS:INTERNAL=-I/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../include +_OPENSSL_STATIC_CFLAGS_I:INTERNAL= +_OPENSSL_STATIC_CFLAGS_OTHER:INTERNAL= +_OPENSSL_STATIC_INCLUDE_DIRS:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../include +_OPENSSL_STATIC_LDFLAGS:INTERNAL=-L/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../lib;-lssl;-lcrypto;-ldl;-pthread +_OPENSSL_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread +_OPENSSL_STATIC_LIBDIR:INTERNAL= +_OPENSSL_STATIC_LIBRARIES:INTERNAL=ssl;crypto;dl +_OPENSSL_STATIC_LIBRARY_DIRS:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../lib +_OPENSSL_STATIC_LIBS:INTERNAL= +_OPENSSL_STATIC_LIBS_L:INTERNAL= +_OPENSSL_STATIC_LIBS_OTHER:INTERNAL= +_OPENSSL_STATIC_LIBS_PATHS:INTERNAL= +_OPENSSL_VERSION:INTERNAL=3.5.1 +_OPENSSL_openssl_INCLUDEDIR:INTERNAL= +_OPENSSL_openssl_LIBDIR:INTERNAL= +_OPENSSL_openssl_PREFIX:INTERNAL= +_OPENSSL_openssl_VERSION:INTERNAL= +__pkg_config_arguments__OPENSSL:INTERNAL=QUIET;openssl +__pkg_config_checked__OPENSSL:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib__OPENSSL_crypto +pkgcfg_lib__OPENSSL_crypto-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib__OPENSSL_dl +pkgcfg_lib__OPENSSL_dl-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib__OPENSSL_ssl +pkgcfg_lib__OPENSSL_ssl-ADVANCED:INTERNAL=1 +prefix_result:INTERNAL=/home/unknownobject/vcpkg/installed/x64-linux/lib/pkgconfig/../../lib + diff --git a/build/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake b/build/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..8dbc9d3 --- /dev/null +++ b/build/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake @@ -0,0 +1,85 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "13.3.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-13") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-13") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED TRUE) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/13;/usr/include/x86_64-linux-gnu/c++/13;/usr/include/c++/13/backward;/usr/lib/gcc/x86_64-linux-gnu/13/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/13;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build/CMakeFiles/3.28.3/CMakeDetermineCompilerABI_CXX.bin b/build/CMakeFiles/3.28.3/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000..631c9ac Binary files /dev/null and b/build/CMakeFiles/3.28.3/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/build/CMakeFiles/3.28.3/CMakeSystem.cmake b/build/CMakeFiles/3.28.3/CMakeSystem.cmake new file mode 100644 index 0000000..2e70bbb --- /dev/null +++ b/build/CMakeFiles/3.28.3/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-6.8.0-63-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "6.8.0-63-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + +include("/home/unknownobject/vcpkg/scripts/buildsystems/vcpkg.cmake") + +set(CMAKE_SYSTEM "Linux-6.8.0-63-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "6.8.0-63-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..9c9c90e --- /dev/null +++ b/build/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,869 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/build/CMakeFiles/3.28.3/CompilerIdCXX/a.out b/build/CMakeFiles/3.28.3/CompilerIdCXX/a.out new file mode 100755 index 0000000..e926ed9 Binary files /dev/null and b/build/CMakeFiles/3.28.3/CompilerIdCXX/a.out differ diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..9f8e3b9 --- /dev/null +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,327 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/CMakeDetermineSystem.cmake:233 (message)" + - "CMakeLists.txt:3 (project)" + message: | + The system is: Linux - 6.8.0-63-generic - x86_64 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/usr/share/cmake-3.28/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:3 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /usr/bin/c++ + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + + The CXX compiler identification is GNU, found in: + /home/unknownobject/UNSWebServerCore/build/CMakeFiles/3.28.3/CompilerIdCXX/a.out + + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)" + - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy" + binary: "/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy" + cmakeVariables: + CMAKE_CXX_FLAGS: "" + CMAKE_CXX_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + VCPKG_INSTALLED_DIR: "/home/unknownobject/vcpkg/installed" + VCPKG_PREFER_SYSTEM_LIBS: "OFF" + VCPKG_TARGET_TRIPLET: "x64-linux" + Z_VCPKG_ROOT_DIR: "/home/unknownobject/vcpkg" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_db336/fast + /usr/bin/gmake -f CMakeFiles/cmTC_db336.dir/build.make CMakeFiles/cmTC_db336.dir/build + gmake[1]: Entering directory '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy' + Building CXX object CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -v -o CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp + Using built-in specs. + COLLECT_GCC=/usr/bin/c++ + OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa + OFFLOAD_TARGET_DEFAULT=1 + Target: x86_64-linux-gnu + Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_db336.dir/' + /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_db336.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cclk7yn6.s + GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu) + compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13" + ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" + ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu" + ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed" + ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include" + #include "..." search starts here: + #include <...> search starts here: + /usr/include/c++/13 + /usr/include/x86_64-linux-gnu/c++/13 + /usr/include/c++/13/backward + /usr/lib/gcc/x86_64-linux-gnu/13/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include + End of search list. + Compiler executable checksum: 7896445e4990772fdae9dc0659a99266 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_db336.dir/' + as -v --64 -o CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o /tmp/cclk7yn6.s + GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42 + COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.' + Linking CXX executable cmTC_db336 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_db336.dir/link.txt --verbose=1 + /usr/bin/c++ -v CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_db336 + Using built-in specs. + COLLECT_GCC=/usr/bin/c++ + COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper + OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa + OFFLOAD_TARGET_DEFAULT=1 + Target: x86_64-linux-gnu + Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) + COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_db336' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_db336.' + /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccY9V4vs.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_db336 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_db336' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_db336.' + gmake[1]: Leaving directory '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy' + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:127 (message)" + - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/13] + add: [/usr/include/x86_64-linux-gnu/c++/13] + add: [/usr/include/c++/13/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/13/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/13] ==> [/usr/include/c++/13] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/13] ==> [/usr/include/x86_64-linux-gnu/c++/13] + collapse include dir [/usr/include/c++/13/backward] ==> [/usr/include/c++/13/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/13/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/13/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/13;/usr/include/x86_64-linux-gnu/c++/13;/usr/include/c++/13/backward;/usr/lib/gcc/x86_64-linux-gnu/13/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:159 (message)" + - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:3 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + ignore line: [Change Dir: '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy'] + ignore line: [] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_db336/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_db336.dir/build.make CMakeFiles/cmTC_db336.dir/build] + ignore line: [gmake[1]: Entering directory '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-SCXMAy'] + ignore line: [Building CXX object CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_db336.dir/'] + ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_db336.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cclk7yn6.s] + ignore line: [GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/13] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/13] + ignore line: [ /usr/include/c++/13/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/13/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_db336.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o /tmp/cclk7yn6.s] + ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42] + ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_db336] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_db336.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_db336 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] + ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_db336' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_db336.'] + link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccY9V4vs.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_db336 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccY9V4vs.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_db336] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] + arg [CMakeFiles/cmTC_db336.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> [/usr/lib/x86_64-linux-gnu/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> [/usr/lib/x86_64-linux-gnu/crti.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] ==> [/usr/lib/x86_64-linux-gnu/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13] ==> [/usr/lib/gcc/x86_64-linux-gnu/13] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit objs: [/usr/lib/x86_64-linux-gnu/Scrt1.o;/usr/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o;/usr/lib/x86_64-linux-gnu/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/13;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +... + +--- +events: + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)" + - "/usr/share/cmake-3.28/Modules/CheckCXXSourceCompiles.cmake:52 (cmake_check_source_compiles)" + - "/usr/share/cmake-3.28/Modules/FindThreads.cmake:99 (CHECK_CXX_SOURCE_COMPILES)" + - "/usr/share/cmake-3.28/Modules/FindThreads.cmake:163 (_threads_check_libc)" + - "/home/unknownobject/vcpkg/scripts/buildsystems/vcpkg.cmake:896 (_find_package)" + - "/usr/share/cmake-3.28/Modules/CMakeFindDependencyMacro.cmake:76 (find_package)" + - "/home/unknownobject/vcpkg/installed/x64-linux/share/unofficial-sodium/unofficial-sodiumConfig.cmake:4 (find_dependency)" + - "/home/unknownobject/vcpkg/scripts/buildsystems/vcpkg.cmake:896 (_find_package)" + - "CMakeLists.txt:18 (find_package)" + checks: + - "Performing Test CMAKE_HAVE_LIBC_PTHREAD" + directories: + source: "/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-yLkSdH" + binary: "/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-yLkSdH" + cmakeVariables: + CMAKE_CXX_FLAGS: "" + CMAKE_CXX_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_POSITION_INDEPENDENT_CODE: "ON" + VCPKG_INSTALLED_DIR: "/home/unknownobject/vcpkg/installed" + VCPKG_PREFER_SYSTEM_LIBS: "OFF" + VCPKG_TARGET_TRIPLET: "x64-linux" + Z_VCPKG_ROOT_DIR: "/home/unknownobject/vcpkg" + buildResult: + variable: "CMAKE_HAVE_LIBC_PTHREAD" + cached: true + stdout: | + Change Dir: '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-yLkSdH' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_62acd/fast + /usr/bin/gmake -f CMakeFiles/cmTC_62acd.dir/build.make CMakeFiles/cmTC_62acd.dir/build + gmake[1]: Entering directory '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-yLkSdH' + Building CXX object CMakeFiles/cmTC_62acd.dir/src.cxx.o + /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD -std=gnu++20 -fPIE -o CMakeFiles/cmTC_62acd.dir/src.cxx.o -c /home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-yLkSdH/src.cxx + Linking CXX executable cmTC_62acd + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_62acd.dir/link.txt --verbose=1 + /usr/bin/c++ CMakeFiles/cmTC_62acd.dir/src.cxx.o -o cmTC_62acd + gmake[1]: Leaving directory '/home/unknownobject/UNSWebServerCore/build/CMakeFiles/CMakeScratch/TryCompile-yLkSdH' + + exitCode: 0 +... diff --git a/build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..1d7a802 --- /dev/null +++ b/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/unknownobject/UNSWebServerCore") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/unknownobject/UNSWebServerCore/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/CMakeFiles/CMakeRuleHashes.txt b/build/CMakeFiles/CMakeRuleHashes.txt new file mode 100644 index 0000000..21cc887 --- /dev/null +++ b/build/CMakeFiles/CMakeRuleHashes.txt @@ -0,0 +1,2 @@ +# Hashes of file build rules. +f70a2a4f9dbfbdd2fa7eee1897439a6d CMakeFiles/rebuild diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..1131611 --- /dev/null +++ b/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,71 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/home/unknownobject/UNSWebServerCore/CMakeLists.txt" + "CMakeFiles/3.28.3/CMakeCXXCompiler.cmake" + "CMakeFiles/3.28.3/CMakeSystem.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/fmt/fmt-config-version.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/fmt/fmt-config.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/fmt/fmt-targets-debug.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/fmt/fmt-targets-release.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/fmt/fmt-targets.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp/jsoncpp-namespaced-targets.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp/jsoncpp-targets-debug.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp/jsoncpp-targets-release.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp/jsoncpp-targets.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp/jsoncppConfig.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/jsoncpp/jsoncppConfigVersion.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/openssl/vcpkg-cmake-wrapper.cmake" + "/home/unknownobject/vcpkg/installed/x64-linux/share/unofficial-sodium/unofficial-sodiumConfig.cmake" + "/home/unknownobject/vcpkg/scripts/buildsystems/vcpkg.cmake" + "/usr/share/cmake-3.28/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake-3.28/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.28/Modules/CMakeDependentOption.cmake" + "/usr/share/cmake-3.28/Modules/CMakeFindDependencyMacro.cmake" + "/usr/share/cmake-3.28/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-3.28/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake-3.28/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.28/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-3.28/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.28/Modules/CheckCXXSourceCompiles.cmake" + "/usr/share/cmake-3.28/Modules/CheckIncludeFileCXX.cmake" + "/usr/share/cmake-3.28/Modules/CheckLibraryExists.cmake" + "/usr/share/cmake-3.28/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake-3.28/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake-3.28/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.28/Modules/FindOpenSSL.cmake" + "/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake-3.28/Modules/FindPackageMessage.cmake" + "/usr/share/cmake-3.28/Modules/FindPkgConfig.cmake" + "/usr/share/cmake-3.28/Modules/FindThreads.cmake" + "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake" + "/usr/share/cmake-3.28/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake-3.28/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-3.28/Modules/Platform/Linux-Initialize.cmake" + "/usr/share/cmake-3.28/Modules/Platform/Linux.cmake" + "/usr/share/cmake-3.28/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/unswsc.dir/DependInfo.cmake" + "CMakeFiles/logger_test.dir/DependInfo.cmake" + "CMakeFiles/rebuild.dir/DependInfo.cmake" + ) diff --git a/build/CMakeFiles/Makefile2 b/build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..d226786 --- /dev/null +++ b/build/CMakeFiles/Makefile2 @@ -0,0 +1,167 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/unknownobject/UNSWebServerCore + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/unknownobject/UNSWebServerCore/build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/unswsc.dir/all +all: CMakeFiles/logger_test.dir/all +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/unswsc.dir/clean +clean: CMakeFiles/logger_test.dir/clean +clean: CMakeFiles/rebuild.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/unswsc.dir + +# All Build rule for target. +CMakeFiles/unswsc.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 "Built target unswsc" +.PHONY : CMakeFiles/unswsc.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/unswsc.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 20 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/unswsc.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 0 +.PHONY : CMakeFiles/unswsc.dir/rule + +# Convenience name for target. +unswsc: CMakeFiles/unswsc.dir/rule +.PHONY : unswsc + +# clean rule for target. +CMakeFiles/unswsc.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/clean +.PHONY : CMakeFiles/unswsc.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/logger_test.dir + +# All Build rule for target. +CMakeFiles/logger_test.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=1,2,3,4 "Built target logger_test" +.PHONY : CMakeFiles/logger_test.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/logger_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 4 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/logger_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 0 +.PHONY : CMakeFiles/logger_test.dir/rule + +# Convenience name for target. +logger_test: CMakeFiles/logger_test.dir/rule +.PHONY : logger_test + +# clean rule for target. +CMakeFiles/logger_test.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/clean +.PHONY : CMakeFiles/logger_test.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/rebuild.dir + +# All Build rule for target. +CMakeFiles/rebuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/rebuild.dir/build.make CMakeFiles/rebuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/rebuild.dir/build.make CMakeFiles/rebuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=5 "Built target rebuild" +.PHONY : CMakeFiles/rebuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/rebuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 1 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/rebuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 0 +.PHONY : CMakeFiles/rebuild.dir/rule + +# Convenience name for target. +rebuild: CMakeFiles/rebuild.dir/rule +.PHONY : rebuild + +# clean rule for target. +CMakeFiles/rebuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/rebuild.dir/build.make CMakeFiles/rebuild.dir/clean +.PHONY : CMakeFiles/rebuild.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/CMakeFiles/TargetDirectories.txt b/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..3f11876 --- /dev/null +++ b/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,5 @@ +/home/unknownobject/UNSWebServerCore/build/CMakeFiles/unswsc.dir +/home/unknownobject/UNSWebServerCore/build/CMakeFiles/logger_test.dir +/home/unknownobject/UNSWebServerCore/build/CMakeFiles/rebuild.dir +/home/unknownobject/UNSWebServerCore/build/CMakeFiles/edit_cache.dir +/home/unknownobject/UNSWebServerCore/build/CMakeFiles/rebuild_cache.dir diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/build/CMakeFiles/logger_test.dir/DependInfo.cmake b/build/CMakeFiles/logger_test.dir/DependInfo.cmake new file mode 100644 index 0000000..72e1711 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/DependInfo.cmake @@ -0,0 +1,25 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/unknownobject/UNSWebServerCore/LogArg.cpp" "CMakeFiles/logger_test.dir/LogArg.cpp.o" "gcc" "CMakeFiles/logger_test.dir/LogArg.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/ServerLogger.cpp" "CMakeFiles/logger_test.dir/ServerLogger.cpp.o" "gcc" "CMakeFiles/logger_test.dir/ServerLogger.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/TestLogger.cpp" "CMakeFiles/logger_test.dir/TestLogger.cpp.o" "gcc" "CMakeFiles/logger_test.dir/TestLogger.cpp.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/logger_test.dir/LogArg.cpp.o b/build/CMakeFiles/logger_test.dir/LogArg.cpp.o new file mode 100644 index 0000000..03a9ec0 Binary files /dev/null and b/build/CMakeFiles/logger_test.dir/LogArg.cpp.o differ diff --git a/build/CMakeFiles/logger_test.dir/LogArg.cpp.o.d b/build/CMakeFiles/logger_test.dir/LogArg.cpp.o.d new file mode 100644 index 0000000..2bccca7 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/LogArg.cpp.o.d @@ -0,0 +1,213 @@ +CMakeFiles/logger_test.dir/LogArg.cpp.o: \ + /home/unknownobject/UNSWebServerCore/LogArg.cpp \ + /usr/include/stdc-predef.h /home/unknownobject/UNSWebServerCore/LogArg.h \ + /usr/include/c++/13/ctime \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h /usr/include/time.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/type_traits /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/sstream /usr/include/c++/13/istream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/erase_if.h \ + /home/unknownobject/UNSWebServerCore/utextcodec/UTextCodec.h diff --git a/build/CMakeFiles/logger_test.dir/ServerLogger.cpp.o b/build/CMakeFiles/logger_test.dir/ServerLogger.cpp.o new file mode 100644 index 0000000..0eba7b8 Binary files /dev/null and b/build/CMakeFiles/logger_test.dir/ServerLogger.cpp.o differ diff --git a/build/CMakeFiles/logger_test.dir/ServerLogger.cpp.o.d b/build/CMakeFiles/logger_test.dir/ServerLogger.cpp.o.d new file mode 100644 index 0000000..4635ff8 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/ServerLogger.cpp.o.d @@ -0,0 +1,293 @@ +CMakeFiles/logger_test.dir/ServerLogger.cpp.o: \ + /home/unknownobject/UNSWebServerCore/ServerLogger.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/initializer_list /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/mutex /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/13/bits/unique_lock.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/thread /usr/include/c++/13/stop_token \ + /usr/include/c++/13/atomic /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h \ + /usr/include/c++/13/bits/functional_hash.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/bits/stringfwd.h /usr/include/c++/13/bits/postypes.h \ + /usr/include/c++/13/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/c++/13/bits/ios_base.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error /usr/include/c++/13/stdexcept \ + /usr/include/c++/13/streambuf /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/chrono \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/format.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/base.h \ + /usr/include/c++/13/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/13/bits/specfun.h /usr/include/c++/13/tr1/gamma.tcc \ + /usr/include/c++/13/tr1/special_function_util.h \ + /usr/include/c++/13/tr1/bessel_function.tcc \ + /usr/include/c++/13/tr1/beta_function.tcc \ + /usr/include/c++/13/tr1/ell_integral.tcc \ + /usr/include/c++/13/tr1/exp_integral.tcc \ + /usr/include/c++/13/tr1/hypergeometric.tcc \ + /usr/include/c++/13/tr1/legendre_function.tcc \ + /usr/include/c++/13/tr1/modified_bessel_func.tcc \ + /usr/include/c++/13/tr1/poly_hermite.tcc \ + /usr/include/c++/13/tr1/poly_laguerre.tcc \ + /usr/include/c++/13/tr1/riemann_zeta.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/chrono.h \ + /usr/include/c++/13/algorithm /usr/include/c++/13/bits/ranges_algo.h \ + /usr/include/c++/13/pstl/glue_algorithm_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/iterator \ + /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/format.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/printf.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/args.h \ + /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h diff --git a/build/CMakeFiles/logger_test.dir/TestLogger.cpp.o b/build/CMakeFiles/logger_test.dir/TestLogger.cpp.o new file mode 100644 index 0000000..00f446b Binary files /dev/null and b/build/CMakeFiles/logger_test.dir/TestLogger.cpp.o differ diff --git a/build/CMakeFiles/logger_test.dir/TestLogger.cpp.o.d b/build/CMakeFiles/logger_test.dir/TestLogger.cpp.o.d new file mode 100644 index 0000000..907063e --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/TestLogger.cpp.o.d @@ -0,0 +1,254 @@ +CMakeFiles/logger_test.dir/TestLogger.cpp.o: \ + /home/unknownobject/UNSWebServerCore/TestLogger.cpp \ + /usr/include/stdc-predef.h /usr/include/c++/13/iostream \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h /usr/include/c++/13/bits/postypes.h \ + /usr/include/c++/13/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/char_traits.h /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h /usr/include/c++/13/functional \ + /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/array \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/mutex \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/thread \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_thread.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/charconv /usr/include/c++/13/optional \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/condition_variable diff --git a/build/CMakeFiles/logger_test.dir/build.make b/build/CMakeFiles/logger_test.dir/build.make new file mode 100644 index 0000000..ee93cc9 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/build.make @@ -0,0 +1,144 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/unknownobject/UNSWebServerCore + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/unknownobject/UNSWebServerCore/build + +# Include any dependencies generated for this target. +include CMakeFiles/logger_test.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/logger_test.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/logger_test.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/logger_test.dir/flags.make + +CMakeFiles/logger_test.dir/ServerLogger.cpp.o: CMakeFiles/logger_test.dir/flags.make +CMakeFiles/logger_test.dir/ServerLogger.cpp.o: /home/unknownobject/UNSWebServerCore/ServerLogger.cpp +CMakeFiles/logger_test.dir/ServerLogger.cpp.o: CMakeFiles/logger_test.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/logger_test.dir/ServerLogger.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/logger_test.dir/ServerLogger.cpp.o -MF CMakeFiles/logger_test.dir/ServerLogger.cpp.o.d -o CMakeFiles/logger_test.dir/ServerLogger.cpp.o -c /home/unknownobject/UNSWebServerCore/ServerLogger.cpp + +CMakeFiles/logger_test.dir/ServerLogger.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/logger_test.dir/ServerLogger.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/ServerLogger.cpp > CMakeFiles/logger_test.dir/ServerLogger.cpp.i + +CMakeFiles/logger_test.dir/ServerLogger.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/logger_test.dir/ServerLogger.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/ServerLogger.cpp -o CMakeFiles/logger_test.dir/ServerLogger.cpp.s + +CMakeFiles/logger_test.dir/LogArg.cpp.o: CMakeFiles/logger_test.dir/flags.make +CMakeFiles/logger_test.dir/LogArg.cpp.o: /home/unknownobject/UNSWebServerCore/LogArg.cpp +CMakeFiles/logger_test.dir/LogArg.cpp.o: CMakeFiles/logger_test.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/logger_test.dir/LogArg.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/logger_test.dir/LogArg.cpp.o -MF CMakeFiles/logger_test.dir/LogArg.cpp.o.d -o CMakeFiles/logger_test.dir/LogArg.cpp.o -c /home/unknownobject/UNSWebServerCore/LogArg.cpp + +CMakeFiles/logger_test.dir/LogArg.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/logger_test.dir/LogArg.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/LogArg.cpp > CMakeFiles/logger_test.dir/LogArg.cpp.i + +CMakeFiles/logger_test.dir/LogArg.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/logger_test.dir/LogArg.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/LogArg.cpp -o CMakeFiles/logger_test.dir/LogArg.cpp.s + +CMakeFiles/logger_test.dir/TestLogger.cpp.o: CMakeFiles/logger_test.dir/flags.make +CMakeFiles/logger_test.dir/TestLogger.cpp.o: /home/unknownobject/UNSWebServerCore/TestLogger.cpp +CMakeFiles/logger_test.dir/TestLogger.cpp.o: CMakeFiles/logger_test.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/logger_test.dir/TestLogger.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/logger_test.dir/TestLogger.cpp.o -MF CMakeFiles/logger_test.dir/TestLogger.cpp.o.d -o CMakeFiles/logger_test.dir/TestLogger.cpp.o -c /home/unknownobject/UNSWebServerCore/TestLogger.cpp + +CMakeFiles/logger_test.dir/TestLogger.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/logger_test.dir/TestLogger.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/TestLogger.cpp > CMakeFiles/logger_test.dir/TestLogger.cpp.i + +CMakeFiles/logger_test.dir/TestLogger.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/logger_test.dir/TestLogger.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/TestLogger.cpp -o CMakeFiles/logger_test.dir/TestLogger.cpp.s + +# Object files for target logger_test +logger_test_OBJECTS = \ +"CMakeFiles/logger_test.dir/ServerLogger.cpp.o" \ +"CMakeFiles/logger_test.dir/LogArg.cpp.o" \ +"CMakeFiles/logger_test.dir/TestLogger.cpp.o" + +# External object files for target logger_test +logger_test_EXTERNAL_OBJECTS = + +logger_test: CMakeFiles/logger_test.dir/ServerLogger.cpp.o +logger_test: CMakeFiles/logger_test.dir/LogArg.cpp.o +logger_test: CMakeFiles/logger_test.dir/TestLogger.cpp.o +logger_test: CMakeFiles/logger_test.dir/build.make +logger_test: /home/unknownobject/UNSWebServerCore/so/libutextcodec.so +logger_test: /home/unknownobject/vcpkg/installed/x64-linux/lib/libfmt.a +logger_test: CMakeFiles/logger_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Linking CXX executable logger_test" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/logger_test.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/logger_test.dir/build: logger_test +.PHONY : CMakeFiles/logger_test.dir/build + +CMakeFiles/logger_test.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/logger_test.dir/cmake_clean.cmake +.PHONY : CMakeFiles/logger_test.dir/clean + +CMakeFiles/logger_test.dir/depend: + cd /home/unknownobject/UNSWebServerCore/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/unknownobject/UNSWebServerCore /home/unknownobject/UNSWebServerCore /home/unknownobject/UNSWebServerCore/build /home/unknownobject/UNSWebServerCore/build /home/unknownobject/UNSWebServerCore/build/CMakeFiles/logger_test.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/logger_test.dir/depend + diff --git a/build/CMakeFiles/logger_test.dir/cmake_clean.cmake b/build/CMakeFiles/logger_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..c84f40a --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/cmake_clean.cmake @@ -0,0 +1,15 @@ +file(REMOVE_RECURSE + "CMakeFiles/logger_test.dir/LogArg.cpp.o" + "CMakeFiles/logger_test.dir/LogArg.cpp.o.d" + "CMakeFiles/logger_test.dir/ServerLogger.cpp.o" + "CMakeFiles/logger_test.dir/ServerLogger.cpp.o.d" + "CMakeFiles/logger_test.dir/TestLogger.cpp.o" + "CMakeFiles/logger_test.dir/TestLogger.cpp.o.d" + "logger_test" + "logger_test.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/logger_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/logger_test.dir/compiler_depend.make b/build/CMakeFiles/logger_test.dir/compiler_depend.make new file mode 100644 index 0000000..cfe7422 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for logger_test. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/logger_test.dir/compiler_depend.ts b/build/CMakeFiles/logger_test.dir/compiler_depend.ts new file mode 100644 index 0000000..1463b96 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for logger_test. diff --git a/build/CMakeFiles/logger_test.dir/depend.make b/build/CMakeFiles/logger_test.dir/depend.make new file mode 100644 index 0000000..ea3ea02 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for logger_test. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/logger_test.dir/flags.make b/build/CMakeFiles/logger_test.dir/flags.make new file mode 100644 index 0000000..6a26c14 --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# compile CXX with /usr/bin/c++ +CXX_DEFINES = + +CXX_INCLUDES = -isystem /home/unknownobject/UNSWebServerCore/utextcodec -isystem /home/unknownobject/vcpkg/installed/x64-linux/include + +CXX_FLAGS = -O3 -DNDEBUG -std=gnu++20 -fPIE -Wno-literal-suffix + diff --git a/build/CMakeFiles/logger_test.dir/link.txt b/build/CMakeFiles/logger_test.dir/link.txt new file mode 100644 index 0000000..00201cf --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -O3 -DNDEBUG CMakeFiles/logger_test.dir/ServerLogger.cpp.o CMakeFiles/logger_test.dir/LogArg.cpp.o CMakeFiles/logger_test.dir/TestLogger.cpp.o -o logger_test -Wl,-rpath,/home/unknownobject/UNSWebServerCore/so /home/unknownobject/UNSWebServerCore/so/libutextcodec.so /home/unknownobject/vcpkg/installed/x64-linux/lib/libfmt.a diff --git a/build/CMakeFiles/logger_test.dir/progress.make b/build/CMakeFiles/logger_test.dir/progress.make new file mode 100644 index 0000000..a69a57e --- /dev/null +++ b/build/CMakeFiles/logger_test.dir/progress.make @@ -0,0 +1,5 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 + diff --git a/build/CMakeFiles/progress.marks b/build/CMakeFiles/progress.marks new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +24 diff --git a/build/CMakeFiles/rebuild.dir/DependInfo.cmake b/build/CMakeFiles/rebuild.dir/DependInfo.cmake new file mode 100644 index 0000000..29b95a5 --- /dev/null +++ b/build/CMakeFiles/rebuild.dir/DependInfo.cmake @@ -0,0 +1,22 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/rebuild.dir/build.make b/build/CMakeFiles/rebuild.dir/build.make new file mode 100644 index 0000000..f0a24f8 --- /dev/null +++ b/build/CMakeFiles/rebuild.dir/build.make @@ -0,0 +1,89 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/unknownobject/UNSWebServerCore + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/unknownobject/UNSWebServerCore/build + +# Utility rule file for rebuild. + +# Include any custom commands dependencies for this target. +include CMakeFiles/rebuild.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/rebuild.dir/progress.make + +CMakeFiles/rebuild: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) ">>> Rebuilding entire project (clean + all) <<<" + /usr/bin/cmake --build /home/unknownobject/UNSWebServerCore/build --target clean + /usr/bin/cmake --build /home/unknownobject/UNSWebServerCore/build --parallel 10 --config Release + +rebuild: CMakeFiles/rebuild +rebuild: CMakeFiles/rebuild.dir/build.make +.PHONY : rebuild + +# Rule to build all files generated by this target. +CMakeFiles/rebuild.dir/build: rebuild +.PHONY : CMakeFiles/rebuild.dir/build + +CMakeFiles/rebuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/rebuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/rebuild.dir/clean + +CMakeFiles/rebuild.dir/depend: + cd /home/unknownobject/UNSWebServerCore/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/unknownobject/UNSWebServerCore /home/unknownobject/UNSWebServerCore /home/unknownobject/UNSWebServerCore/build /home/unknownobject/UNSWebServerCore/build /home/unknownobject/UNSWebServerCore/build/CMakeFiles/rebuild.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/rebuild.dir/depend + diff --git a/build/CMakeFiles/rebuild.dir/cmake_clean.cmake b/build/CMakeFiles/rebuild.dir/cmake_clean.cmake new file mode 100644 index 0000000..023cf70 --- /dev/null +++ b/build/CMakeFiles/rebuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/rebuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/rebuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/rebuild.dir/compiler_depend.make b/build/CMakeFiles/rebuild.dir/compiler_depend.make new file mode 100644 index 0000000..7b2f001 --- /dev/null +++ b/build/CMakeFiles/rebuild.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for rebuild. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/rebuild.dir/compiler_depend.ts b/build/CMakeFiles/rebuild.dir/compiler_depend.ts new file mode 100644 index 0000000..434e955 --- /dev/null +++ b/build/CMakeFiles/rebuild.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for rebuild. diff --git a/build/CMakeFiles/rebuild.dir/progress.make b/build/CMakeFiles/rebuild.dir/progress.make new file mode 100644 index 0000000..b9ea7bd --- /dev/null +++ b/build/CMakeFiles/rebuild.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 5 + diff --git a/build/CMakeFiles/unswsc.dir/CORSConfig.cpp.o b/build/CMakeFiles/unswsc.dir/CORSConfig.cpp.o new file mode 100644 index 0000000..e89e230 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/CORSConfig.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/CORSConfig.cpp.o.d b/build/CMakeFiles/unswsc.dir/CORSConfig.cpp.o.d new file mode 100644 index 0000000..f76b0cf --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/CORSConfig.cpp.o.d @@ -0,0 +1,183 @@ +CMakeFiles/unswsc.dir/CORSConfig.cpp.o: \ + /home/unknownobject/UNSWebServerCore/CORSConfig.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/CORSConfig.h \ + /usr/include/c++/13/set /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_set.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/stl_multiset.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/stl_map.h \ + /usr/include/c++/13/bits/stl_multimap.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc \ + /home/unknownobject/UNSWebServerCore/Global.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h diff --git a/build/CMakeFiles/unswsc.dir/CORSProcessor.cpp.o b/build/CMakeFiles/unswsc.dir/CORSProcessor.cpp.o new file mode 100644 index 0000000..cf65b9e Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/CORSProcessor.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/CORSProcessor.cpp.o.d b/build/CMakeFiles/unswsc.dir/CORSProcessor.cpp.o.d new file mode 100644 index 0000000..d43249a --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/CORSProcessor.cpp.o.d @@ -0,0 +1,280 @@ +CMakeFiles/unswsc.dir/CORSProcessor.cpp.o: \ + /home/unknownobject/UNSWebServerCore/CORSProcessor.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/CORSProcessor.h \ + /home/unknownobject/UNSWebServerCore/ServerProcessor.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/mutex \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/thread \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/UNSWebServerCore/CORSConfig.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h diff --git a/build/CMakeFiles/unswsc.dir/DataTransfer.cpp.o b/build/CMakeFiles/unswsc.dir/DataTransfer.cpp.o new file mode 100644 index 0000000..62b4a9a Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/DataTransfer.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/DataTransfer.cpp.o.d b/build/CMakeFiles/unswsc.dir/DataTransfer.cpp.o.d new file mode 100644 index 0000000..e1540ae --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/DataTransfer.cpp.o.d @@ -0,0 +1,263 @@ +CMakeFiles/unswsc.dir/DataTransfer.cpp.o: \ + /home/unknownobject/UNSWebServerCore/DataTransfer.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/DataTransfer.h \ + /usr/include/c++/13/map /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/codecvt \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/mutex \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/thread \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/condition_variable diff --git a/build/CMakeFiles/unswsc.dir/DateTime.cpp.o b/build/CMakeFiles/unswsc.dir/DateTime.cpp.o new file mode 100644 index 0000000..28d0f4f Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/DateTime.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/DateTime.cpp.o.d b/build/CMakeFiles/unswsc.dir/DateTime.cpp.o.d new file mode 100644 index 0000000..c01417d --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/DateTime.cpp.o.d @@ -0,0 +1,205 @@ +CMakeFiles/unswsc.dir/DateTime.cpp.o: \ + /home/unknownobject/UNSWebServerCore/DateTime.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/type_traits /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h \ + /home/unknownobject/UNSWebServerCore/Export.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h diff --git a/build/CMakeFiles/unswsc.dir/DependInfo.cmake b/build/CMakeFiles/unswsc.dir/DependInfo.cmake new file mode 100644 index 0000000..aecf9d6 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/DependInfo.cmake @@ -0,0 +1,41 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/unknownobject/UNSWebServerCore/CORSConfig.cpp" "CMakeFiles/unswsc.dir/CORSConfig.cpp.o" "gcc" "CMakeFiles/unswsc.dir/CORSConfig.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/CORSProcessor.cpp" "CMakeFiles/unswsc.dir/CORSProcessor.cpp.o" "gcc" "CMakeFiles/unswsc.dir/CORSProcessor.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/DataTransfer.cpp" "CMakeFiles/unswsc.dir/DataTransfer.cpp.o" "gcc" "CMakeFiles/unswsc.dir/DataTransfer.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/DateTime.cpp" "CMakeFiles/unswsc.dir/DateTime.cpp.o" "gcc" "CMakeFiles/unswsc.dir/DateTime.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/FileReceiver.cpp" "CMakeFiles/unswsc.dir/FileReceiver.cpp.o" "gcc" "CMakeFiles/unswsc.dir/FileReceiver.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/Global.cpp" "CMakeFiles/unswsc.dir/Global.cpp.o" "gcc" "CMakeFiles/unswsc.dir/Global.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/HTTPObjects.cpp" "CMakeFiles/unswsc.dir/HTTPObjects.cpp.o" "gcc" "CMakeFiles/unswsc.dir/HTTPObjects.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/IPList.cpp" "CMakeFiles/unswsc.dir/IPList.cpp.o" "gcc" "CMakeFiles/unswsc.dir/IPList.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/IPTable.cpp" "CMakeFiles/unswsc.dir/IPTable.cpp.o" "gcc" "CMakeFiles/unswsc.dir/IPTable.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/LogArg.cpp" "CMakeFiles/unswsc.dir/LogArg.cpp.o" "gcc" "CMakeFiles/unswsc.dir/LogArg.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/PathTraversal.cpp" "CMakeFiles/unswsc.dir/PathTraversal.cpp.o" "gcc" "CMakeFiles/unswsc.dir/PathTraversal.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/SafeRNG.cpp" "CMakeFiles/unswsc.dir/SafeRNG.cpp.o" "gcc" "CMakeFiles/unswsc.dir/SafeRNG.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/ServerCore.cpp" "CMakeFiles/unswsc.dir/ServerCore.cpp.o" "gcc" "CMakeFiles/unswsc.dir/ServerCore.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/ServerLogger.cpp" "CMakeFiles/unswsc.dir/ServerLogger.cpp.o" "gcc" "CMakeFiles/unswsc.dir/ServerLogger.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/ServerProcessor.cpp" "CMakeFiles/unswsc.dir/ServerProcessor.cpp.o" "gcc" "CMakeFiles/unswsc.dir/ServerProcessor.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/SessionManager.cpp" "CMakeFiles/unswsc.dir/SessionManager.cpp.o" "gcc" "CMakeFiles/unswsc.dir/SessionManager.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/SyncFileReceiver.cpp" "CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o" "gcc" "CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/UNSResponseBuilder.cpp" "CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o" "gcc" "CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o.d" + "/home/unknownobject/UNSWebServerCore/WebFileInfo.cpp" "CMakeFiles/unswsc.dir/WebFileInfo.cpp.o" "gcc" "CMakeFiles/unswsc.dir/WebFileInfo.cpp.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/unswsc.dir/FileReceiver.cpp.o b/build/CMakeFiles/unswsc.dir/FileReceiver.cpp.o new file mode 100644 index 0000000..9cf0ded Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/FileReceiver.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/FileReceiver.cpp.o.d b/build/CMakeFiles/unswsc.dir/FileReceiver.cpp.o.d new file mode 100644 index 0000000..2c3a76f --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/FileReceiver.cpp.o.d @@ -0,0 +1,347 @@ +CMakeFiles/unswsc.dir/FileReceiver.cpp.o: \ + /home/unknownobject/UNSWebServerCore/FileReceiver.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/FileReceiver.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/array /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /usr/include/c++/13/istream /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/stack \ + /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/mutex /usr/include/c++/13/bits/chrono.h \ + /usr/include/c++/13/ratio /usr/include/c++/13/limits \ + /usr/include/c++/13/ctime /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/thread \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/charconv /usr/include/c++/13/optional \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /usr/include/c++/13/regex /usr/include/c++/13/bitset \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h diff --git a/build/CMakeFiles/unswsc.dir/FileReciver.cpp.o b/build/CMakeFiles/unswsc.dir/FileReciver.cpp.o new file mode 100644 index 0000000..0d94665 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/FileReciver.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/FileReciver.cpp.o.d b/build/CMakeFiles/unswsc.dir/FileReciver.cpp.o.d new file mode 100644 index 0000000..3be1907 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/FileReciver.cpp.o.d @@ -0,0 +1,346 @@ +CMakeFiles/unswsc.dir/FileReciver.cpp.o: \ + /home/unknownobject/UNSWebServerCore/FileReciver.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/FileReciver.h \ + /usr/include/c++/13/map /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h /usr/include/c++/13/regex \ + /usr/include/c++/13/bitset /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/streambuf /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/locale_facets_nonio.h /usr/include/c++/13/ctime \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/stack \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/bits/stl_stack.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /usr/include/c++/13/functional /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/array \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/condition_variable /usr/include/c++/13/bits/chrono.h \ + /usr/include/c++/13/ratio /usr/include/c++/13/limits \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/stop_token \ + /usr/include/c++/13/atomic /usr/include/c++/13/bits/std_thread.h \ + /usr/include/c++/13/semaphore /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /home/unknownobject/UNSWebServerCore/LogArg.h \ + /usr/include/c++/13/variant /usr/include/c++/13/iostream \ + /usr/include/c++/13/stdlib.h /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/thread \ + /usr/include/c++/13/chrono /usr/include/c++/13/bits/chrono_io.h \ + /usr/include/c++/13/format /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional /usr/include/c++/13/span \ + /usr/include/c++/13/mutex \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h diff --git a/build/CMakeFiles/unswsc.dir/Global.cpp.o b/build/CMakeFiles/unswsc.dir/Global.cpp.o new file mode 100644 index 0000000..d6d027c Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/Global.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/Global.cpp.o.d b/build/CMakeFiles/unswsc.dir/Global.cpp.o.d new file mode 100644 index 0000000..ca7a239 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/Global.cpp.o.d @@ -0,0 +1,383 @@ +CMakeFiles/unswsc.dir/Global.cpp.o: \ + /home/unknownobject/UNSWebServerCore/Global.cpp \ + /usr/include/stdc-predef.h /home/unknownobject/UNSWebServerCore/Global.h \ + /usr/include/c++/13/map /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/limits /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h /usr/include/c++/13/ctime \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/parse_numbers.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/sstream /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/uohash/UOHash.h \ + /home/unknownobject/UNSWebServerCore/uohash/Public.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/rhash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/stack \ + /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/export.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/core.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_aead_aegis128l.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_aead_aegis256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_aead_aes256gcm.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_aead_chacha20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_aead_xchacha20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth_hmacsha512256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth_hmacsha512.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_hash_sha512.h \ + /usr/include/c++/13/stdlib.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth_hmacsha256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_hash_sha256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth_hmacsha512.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth_hmacsha512256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_box.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_box_curve25519xsalsa20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_xsalsa20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_box_curve25519xsalsa20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_hchacha20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_hsalsa20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_salsa20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_salsa2012.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_salsa208.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_generichash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_generichash_blake2b.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_generichash_blake2b.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_hash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_hash_sha256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_hash_sha512.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kdf.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kdf_blake2b.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kdf_hkdf_sha256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kdf.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_auth_hmacsha256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kdf_hkdf_sha512.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kdf_blake2b.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_kx.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_onetimeauth.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_onetimeauth_poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_onetimeauth_poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_pwhash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_pwhash_argon2i.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_pwhash_argon2id.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_pwhash_argon2i.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_scalarmult.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_scalarmult_curve25519.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_scalarmult_curve25519.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_secretbox.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_secretbox_xsalsa20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_secretbox_xsalsa20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_secretstream_xchacha20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_aead_xchacha20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_chacha20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_shorthash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_shorthash_siphash24.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_shorthash_siphash24.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_sign.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_sign_ed25519.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_sign_ed25519.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_chacha20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_salsa20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_xsalsa20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_verify_16.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_verify_32.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_verify_64.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/randombytes.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/randombytes_internal_random.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/randombytes.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/randombytes_sysrandom.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/runtime.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/utils.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_box_curve25519xchacha20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_xchacha20.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_ed25519.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_core_ristretto255.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_pwhash_scryptsalsa208sha256.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_scalarmult_ed25519.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_scalarmult_ristretto255.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_secretbox_xchacha20poly1305.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_salsa2012.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_salsa208.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/sodium/crypto_stream_xchacha20.h \ + /home/unknownobject/UNSWebServerCore/SafeRNG.h \ + /usr/include/c++/13/algorithm /usr/include/c++/13/bits/ranges_algo.h \ + /usr/include/c++/13/pstl/glue_algorithm_defs.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/evp.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/macros.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/opensslconf.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/configuration.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/opensslv.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/types.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/e_os2.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/safestack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/core.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/core_dispatch.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/indicator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/params.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bn.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/crypto.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/cryptoerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/symhacks.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/cryptoerr_legacy.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bnerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bio.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bioerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/evperr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/objects.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/obj_mac.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/asn1.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/asn1err.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/objectserr.h \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h diff --git a/build/CMakeFiles/unswsc.dir/HTTPObjects.cpp.o b/build/CMakeFiles/unswsc.dir/HTTPObjects.cpp.o new file mode 100644 index 0000000..76686ff Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/HTTPObjects.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/HTTPObjects.cpp.o.d b/build/CMakeFiles/unswsc.dir/HTTPObjects.cpp.o.d new file mode 100644 index 0000000..9ea2250 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/HTTPObjects.cpp.o.d @@ -0,0 +1,308 @@ +CMakeFiles/unswsc.dir/HTTPObjects.cpp.o: \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/requires_hosted.h /usr/include/c++/13/ios \ + /usr/include/c++/13/iosfwd /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/array \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /usr/include/c++/13/regex /usr/include/c++/13/bitset \ + /usr/include/c++/13/stack /usr/include/c++/13/deque \ + /usr/include/c++/13/bits/stl_deque.h /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/bits/stl_stack.h /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_map.h \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h diff --git a/build/CMakeFiles/unswsc.dir/IPList.cpp.o b/build/CMakeFiles/unswsc.dir/IPList.cpp.o new file mode 100644 index 0000000..d359b30 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/IPList.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/IPList.cpp.o.d b/build/CMakeFiles/unswsc.dir/IPList.cpp.o.d new file mode 100644 index 0000000..e3f1372 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/IPList.cpp.o.d @@ -0,0 +1,212 @@ +CMakeFiles/unswsc.dir/IPList.cpp.o: \ + /home/unknownobject/UNSWebServerCore/IPList.cpp \ + /usr/include/stdc-predef.h /home/unknownobject/UNSWebServerCore/IPList.h \ + /usr/include/c++/13/set /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_set.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/stl_multiset.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h /usr/include/c++/13/regex \ + /usr/include/c++/13/bitset /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/streambuf /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/locale_facets_nonio.h /usr/include/c++/13/ctime \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/stack \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_deque.h /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/bits/stl_stack.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc diff --git a/build/CMakeFiles/unswsc.dir/IPTable.cpp.o b/build/CMakeFiles/unswsc.dir/IPTable.cpp.o new file mode 100644 index 0000000..d32fbc7 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/IPTable.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/IPTable.cpp.o.d b/build/CMakeFiles/unswsc.dir/IPTable.cpp.o.d new file mode 100644 index 0000000..7ca5059 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/IPTable.cpp.o.d @@ -0,0 +1,144 @@ +CMakeFiles/unswsc.dir/IPTable.cpp.o: \ + /home/unknownobject/UNSWebServerCore/IPTable.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_set.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/stl_multiset.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /home/unknownobject/UNSWebServerCore/IPList.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h diff --git a/build/CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o b/build/CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o new file mode 100644 index 0000000..c9aeb2a Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o.d b/build/CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o.d new file mode 100644 index 0000000..c429e16 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o.d @@ -0,0 +1,236 @@ +CMakeFiles/unswsc.dir/JsonUnicodeWriter.cpp.o: \ + /home/unknownobject/UNSWebServerCore/JsonUnicodeWriter.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/JsonUnicodeWriter.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/type_traits /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/array /usr/include/c++/13/map \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/deque \ + /usr/include/c++/13/bits/stl_deque.h /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/stack /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h diff --git a/build/CMakeFiles/unswsc.dir/LogArg.cpp.o b/build/CMakeFiles/unswsc.dir/LogArg.cpp.o new file mode 100644 index 0000000..03a9ec0 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/LogArg.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/LogArg.cpp.o.d b/build/CMakeFiles/unswsc.dir/LogArg.cpp.o.d new file mode 100644 index 0000000..02a8b7c --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/LogArg.cpp.o.d @@ -0,0 +1,213 @@ +CMakeFiles/unswsc.dir/LogArg.cpp.o: \ + /home/unknownobject/UNSWebServerCore/LogArg.cpp \ + /usr/include/stdc-predef.h /home/unknownobject/UNSWebServerCore/LogArg.h \ + /usr/include/c++/13/ctime \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h /usr/include/time.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/type_traits /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/sstream /usr/include/c++/13/istream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/erase_if.h \ + /home/unknownobject/UNSWebServerCore/utextcodec/UTextCodec.h diff --git a/build/CMakeFiles/unswsc.dir/PathTraversal.cpp.o b/build/CMakeFiles/unswsc.dir/PathTraversal.cpp.o new file mode 100644 index 0000000..2e18134 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/PathTraversal.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/PathTraversal.cpp.o.d b/build/CMakeFiles/unswsc.dir/PathTraversal.cpp.o.d new file mode 100644 index 0000000..19bff68 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/PathTraversal.cpp.o.d @@ -0,0 +1,206 @@ +CMakeFiles/unswsc.dir/PathTraversal.cpp.o: \ + /home/unknownobject/UNSWebServerCore/PathTraversal.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/type_traits /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h /usr/include/c++/13/filesystem \ + /usr/include/c++/13/bits/fs_fwd.h /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/codecvt \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /usr/include/c++/13/vector /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/algorithm \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/ranges_algo.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_algorithm_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h diff --git a/build/CMakeFiles/unswsc.dir/SafeRNG.cpp.o b/build/CMakeFiles/unswsc.dir/SafeRNG.cpp.o new file mode 100644 index 0000000..9d0ffe0 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/SafeRNG.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/SafeRNG.cpp.o.d b/build/CMakeFiles/unswsc.dir/SafeRNG.cpp.o.d new file mode 100644 index 0000000..602a158 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/SafeRNG.cpp.o.d @@ -0,0 +1,275 @@ +CMakeFiles/unswsc.dir/SafeRNG.cpp.o: \ + /home/unknownobject/UNSWebServerCore/SafeRNG.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/SafeRNG.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/type_traits /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/new /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/move.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h /usr/include/c++/13/random \ + /usr/include/c++/13/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/13/bits/specfun.h /usr/include/c++/13/limits \ + /usr/include/c++/13/tr1/gamma.tcc \ + /usr/include/c++/13/tr1/special_function_util.h \ + /usr/include/c++/13/tr1/bessel_function.tcc \ + /usr/include/c++/13/tr1/beta_function.tcc \ + /usr/include/c++/13/tr1/ell_integral.tcc \ + /usr/include/c++/13/tr1/exp_integral.tcc \ + /usr/include/c++/13/tr1/hypergeometric.tcc \ + /usr/include/c++/13/tr1/legendre_function.tcc \ + /usr/include/c++/13/tr1/modified_bessel_func.tcc \ + /usr/include/c++/13/tr1/poly_hermite.tcc \ + /usr/include/c++/13/tr1/poly_laguerre.tcc \ + /usr/include/c++/13/tr1/riemann_zeta.tcc /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/random.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/opt_random.h \ + /usr/include/c++/13/bits/random.tcc /usr/include/c++/13/numeric \ + /usr/include/c++/13/bits/stl_numeric.h \ + /usr/include/c++/13/pstl/glue_numeric_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/ctime /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/c++/13/bits/parse_numbers.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/err.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/macros.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/opensslconf.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/configuration.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/opensslv.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/e_os2.h \ + /usr/include/c++/13/stdlib.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/types.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/safestack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bio.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/crypto.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/cryptoerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/symhacks.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/cryptoerr_legacy.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/core.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bioerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/lhash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/rand.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/randerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/evp.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/core_dispatch.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/indicator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/params.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bn.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/bnerr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/evperr.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/objects.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/obj_mac.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/asn1.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/asn1err.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/openssl/objectserr.h diff --git a/build/CMakeFiles/unswsc.dir/ServerCore.cpp.o b/build/CMakeFiles/unswsc.dir/ServerCore.cpp.o new file mode 100644 index 0000000..52a2863 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/ServerCore.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/ServerCore.cpp.o.d b/build/CMakeFiles/unswsc.dir/ServerCore.cpp.o.d new file mode 100644 index 0000000..afb3dce --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/ServerCore.cpp.o.d @@ -0,0 +1,981 @@ +CMakeFiles/unswsc.dir/ServerCore.cpp.o: \ + /home/unknownobject/UNSWebServerCore/ServerCore.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/ServerCore.h \ + /usr/include/c++/13/thread /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h /usr/include/c++/13/compare \ + /usr/include/c++/13/concepts /usr/include/c++/13/type_traits \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/atomic_base.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/atomic_wait.h \ + /usr/include/c++/13/cstdint /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h /usr/include/c++/13/bits/postypes.h \ + /usr/include/c++/13/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/stl_iterator.h \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/c++/13/bits/ios_base.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h \ + /home/unknownobject/UNSWebServerCore/FileReceiver.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/array /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/utility /usr/include/c++/13/bits/stl_relops.h \ + /home/unknownobject/UNSWebServerCore/ServerProcessor.h \ + /home/unknownobject/UNSWebServerCore/SyncFileReceiver.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/mutex \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/charconv /usr/include/c++/13/optional \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/UNSWebServerCore/CORSProcessor.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/logger.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/server.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/io_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/async_result.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/default_completion_token.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/deferred.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/associator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/utility.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/deferred.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/chrono.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/concurrency_hint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/noncopyable.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/wrapped_handler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/bind_handler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/handler_cont_helpers.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/handler_continuation_hook.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/initiate_dispatch.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/associated_allocator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/functional.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/associated_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/invocable_archetype.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/equality_comparable.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/execute_member.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/system_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/allocator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_applicable_property.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/query_static_constexpr_member.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/static_query.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/any_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/assert.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert.hpp \ + /usr/include/assert.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/atomic_count.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstddef.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/executor_function.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/handler_alloc_helpers.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/recycling_allocator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/thread_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/call_stack.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/tss_ptr.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/keyword_tss_ptr.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/thread_context.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/thread_info_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/multiple_exceptions.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/multiple_exceptions.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/non_const_lvalue.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/scoped_ptr.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/bad_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/impl/bad_executor.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/blocking.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/prefer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/prefer_free.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/prefer_member.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/require_free.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/require_member.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/static_require.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/query.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/query_member.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/traits/query_free.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/require.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/blocking_adaptation.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/event.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/posix_event.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/posix_event.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_error.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/error_code.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/error_code.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/is_error_code_enum.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/error_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/error_condition.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/generic_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/generic_category_message.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/enable_if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/is_same.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/errc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/is_error_condition_enum.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/cerrno.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/append_int.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/snprintf.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/system_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/system_category_impl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/system_category_message.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/api_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/interop_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/std_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/error_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/error_category_impl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/std_category_impl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/mutex.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/error_condition.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/errc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/generic_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/system_category.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/detail/throws.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/throw_error.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/system/system_error.hpp \ + /usr/include/c++/13/cassert \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/error.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cerrno.hpp \ + /usr/include/netdb.h /usr/include/netinet/in.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h \ + /usr/include/x86_64-linux-gnu/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/netdb.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/error.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/mutex.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/posix_mutex.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/scoped_lock.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/posix_mutex.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/context.hpp \ + /usr/include/c++/13/any \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/context_as.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/mapping.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/occupancy.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/outstanding_work.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/prefer_only.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution/relationship.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/system_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/executor_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/fenced_block.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/std_fenced_block.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/scheduler_operation.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/handler_tracking.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/handler_tracking.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/op_queue.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/global.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/posix_global.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/system_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/scheduler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/execution_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/execution_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/handler_type_requirements.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/service_registry.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/service_registry.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/service_registry.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/execution_context.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/conditionally_enabled_event.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/conditionally_enabled_mutex.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/null_event.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/null_event.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/scheduler_task.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/thread.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/posix_thread.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/posix_thread.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/scheduler.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/config.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/limits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/scheduler_thread_info.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/signal_blocker.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/posix_signal_blocker.hpp \ + /usr/include/c++/13/csignal /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/signum-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigstksz.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/epoll_reactor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/object_pool.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactor_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/operation.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/select_interrupter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/eventfd_select_interrupter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/eventfd_select_interrupter.ipp \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/struct_stat.h \ + /usr/include/x86_64-linux-gnu/bits/statx.h /usr/include/linux/stat.h \ + /usr/include/linux/types.h /usr/include/x86_64-linux-gnu/asm/types.h \ + /usr/include/asm-generic/types.h /usr/include/asm-generic/int-ll64.h \ + /usr/include/x86_64-linux-gnu/bits/statx-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_statx_timestamp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_statx.h \ + /usr/include/fcntl.h /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/linux/falloc.h /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/eventfd.h \ + /usr/include/x86_64-linux-gnu/bits/eventfd.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/socket_types.hpp \ + /usr/include/x86_64-linux-gnu/sys/ioctl.h \ + /usr/include/x86_64-linux-gnu/bits/ioctls.h \ + /usr/include/x86_64-linux-gnu/asm/ioctls.h \ + /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h \ + /usr/include/x86_64-linux-gnu/asm/ioctl.h \ + /usr/include/asm-generic/ioctl.h \ + /usr/include/x86_64-linux-gnu/bits/ioctl-types.h \ + /usr/include/x86_64-linux-gnu/sys/ttydefaults.h /usr/include/poll.h \ + /usr/include/x86_64-linux-gnu/sys/poll.h \ + /usr/include/x86_64-linux-gnu/bits/poll.h \ + /usr/include/x86_64-linux-gnu/bits/poll2.h \ + /usr/include/x86_64-linux-gnu/sys/uio.h \ + /usr/include/x86_64-linux-gnu/bits/uio-ext.h \ + /usr/include/x86_64-linux-gnu/sys/un.h /usr/include/netinet/tcp.h \ + /usr/include/arpa/inet.h /usr/include/net/if.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/timer_queue_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/timer_queue_set.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/timer_queue_set.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/wait_op.hpp \ + /usr/include/x86_64-linux-gnu/sys/timerfd.h \ + /usr/include/x86_64-linux-gnu/bits/timerfd.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/epoll_reactor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/epoll_reactor.ipp \ + /usr/include/x86_64-linux-gnu/sys/epoll.h \ + /usr/include/x86_64-linux-gnu/bits/epoll.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/thread_group.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/system_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/system_context.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/work_dispatcher.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/executor_work_guard.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/io_context.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/completion_handler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/handler_work.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/associated_immediate_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/io_context.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/tcp.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_socket_acceptor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/any_io_executor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/any_io_executor.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_socket.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/io_object_impl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/post.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/initiate_post.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/socket_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/io_control.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/socket_option.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_service.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/buffer_sequence_adapter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/registered_buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/buffer_sequence_adapter.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_null_buffers_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_accept_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/socket_holder.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/socket_ops.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/socket_ops.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_connect_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_recvfrom_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_sendto_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_service_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/associated_cancellation_slot.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/cancellation_signal.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/cancellation_type.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/impl/cancellation_signal.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_recv_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_recvmsg_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_socket_send_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/reactive_wait_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/reactive_socket_service_base.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_socket_iostream.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_socket_streambuf.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_stream_socket.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/steady_timer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_waitable_timer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/chrono_time_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/deadline_timer_service.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/timer_queue.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/date_time_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/timer_queue_ptime.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/time_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/posix_time_types.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_clock.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/c_time.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/detail/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/locale_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/shared_ptr.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/shared_ptr.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/shared_count.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/deprecated_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/pragma_message.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_typeinfo_.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/checked_delete.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/addressof.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/sp_noexcept.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/spinlock.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/yield_k.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/yield_primitives.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/detail/sp_thread_pause.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/detail/sp_thread_yield.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/detail/sp_thread_sleep.hpp \ + /usr/include/c++/13/algorithm /usr/include/c++/13/bits/ranges_algo.h \ + /usr/include/c++/13/pstl/glue_algorithm_defs.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/local_sp_deleter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/smart_ptr/detail/local_counted_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/microsec_time_clock.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/ptime.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/posix_time_system.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/posix_time_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/limits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/no_tr1/cmath.hpp \ + /usr/include/c++/13/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/13/bits/specfun.h /usr/include/c++/13/tr1/gamma.tcc \ + /usr/include/c++/13/tr1/special_function_util.h \ + /usr/include/c++/13/tr1/bessel_function.tcc \ + /usr/include/c++/13/tr1/beta_function.tcc \ + /usr/include/c++/13/tr1/ell_integral.tcc \ + /usr/include/c++/13/tr1/exp_integral.tcc \ + /usr/include/c++/13/tr1/hypergeometric.tcc \ + /usr/include/c++/13/tr1/legendre_function.tcc \ + /usr/include/c++/13/tr1/modified_bessel_func.tcc \ + /usr/include/c++/13/tr1/poly_hermite.tcc \ + /usr/include/c++/13/tr1/poly_laguerre.tcc \ + /usr/include/c++/13/tr1/riemann_zeta.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_duration.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/core/enable_if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/special_defs.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_defs.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/operators.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/static_assert.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_integral.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/integral_constant.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_resolution_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/int_adapter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/gregorian_types.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/year_month_day.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/period.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_calendar.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_weekday.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/constrained_value.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/conditional.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_base_of.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_base_and_derived.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/intrinsics.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/remove_cv.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_same.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_class.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date_defs.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_day_of_year.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian_calendar.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian_calendar.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_ymd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_day.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_year.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_month.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_duration.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date_duration.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date_duration_types.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_duration_types.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/gregorian/greg_date.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/adjust_functors.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/wrapping_int.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date_generators.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date_clock_device.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/date_iterator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_system_split.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_system_counted.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/date_duration_operators.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/posix_time_duration.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/cast.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/converter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/conversion_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/conversion_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_arithmetic.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/type_traits/is_floating_point.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/meta.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/value_wknd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/static_cast.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/integral.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/msvc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/eti.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/na_spec.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/lambda_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/void_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/adl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/intel.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/na.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/bool.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/bool_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/integral_c_tag.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/na_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/ctps.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/lambda.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/ttp.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/int.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/int_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/nttp.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/cat.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/config/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/arity.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/dtp.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/comma_if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/iif.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/bool.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/config/limits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/limits/bool_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/empty.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/punctuation/comma.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/repeat.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/repetition/repeat.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/debug/error.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/detail/limits/auto_rec_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/tuple/eat.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/repetition/limits/repeat_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/inc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/limits/inc_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/limits/arity.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/and.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/bitand.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/identity.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/identity.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/empty.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/add.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/dec.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/limits/dec_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/while.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/fold_left.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/detail/fold_left.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/expr_iif.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/adt.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/detail/is_binary.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/detail/check.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/compl.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/detail/limits/fold_left_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/limits/fold_left_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/fold_right.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/detail/fold_right.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/reverse.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/list/detail/limits/fold_right_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/detail/while.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/detail/limits/while_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/control/limits/while_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/bitor.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/tuple/elem.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/expand.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/overload.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/variadic/size.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/check_empty.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/variadic/has_opt.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/variadic/detail/has_opt.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/is_empty_variadic.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/punctuation/is_begin_parens.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/facilities/detail/is_empty.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/variadic/limits/size_64.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/tuple/rem.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/tuple/detail/is_single_return.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/variadic/elem.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/variadic/limits/elem_64.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/comparison/equal.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/comparison/not_equal.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/comparison/limits/not_equal_256.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/detail/maximum_number.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/logical/not.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/arithmetic/sub.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/lambda_support.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/eval_if.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/equal_to.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/comparison_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/numeric_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/numeric_cast.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/apply_wrap.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/has_apply.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/has_xxx.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/type_wrapper.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/yes_no.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/arrays.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/has_xxx.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/array/elem.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/array/data.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/array/size.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/repetition/enum_params.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/repetition/enum_trailing_params.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/has_apply.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/msvc_never_true.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/include_preprocessed.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/compiler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/preprocessor/stringize.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/tag.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/void.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/has_tag.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/numeric_cast_utils.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/config/forwarding.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/msvc_eti_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/is_msvc_eti_arg.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/not.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/and.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/identity.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/int_float_mixture.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/int_float_mixture_enum.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/sign_mixture.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/sign_mixture_enum.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/is_subranged.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/multiplies.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/times.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/arithmetic_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/integral_c.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/integral_c_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/largest_int.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessed/gcc/times.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessor/default_params.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/less.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/mpl/aux_/preprocessed/gcc/less.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/converter_policies.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/converter.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/bounds.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/bounds.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/numeric_cast_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/posix_time/time_period.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/time_iterator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/date_time/dst_rules.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/timer_queue_ptime.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/timer_scheduler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/timer_scheduler_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/wait_handler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/wait_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/basic_endpoint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/address.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/address_v4.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/winsock_init.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/address_v4.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/address_v4.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/address_v6.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/address_v6.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/address_v6.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/bad_address_cast.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/address.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/address.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/detail/endpoint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/detail/impl/endpoint.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/impl/basic_endpoint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/basic_resolver.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/basic_resolver_iterator.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/basic_resolver_entry.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/basic_resolver_query.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/resolver_query_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/resolver_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/ip/basic_resolver_results.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/resolver_service.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/resolve_endpoint_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/resolve_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/resolve_query_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/resolver_service_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/resolver_service_base.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/signal_set.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/basic_signal_set.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/signal_set_service.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/signal_set_base.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/signal_handler.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/signal_op.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/impl/signal_set_service.ipp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/static_mutex.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/posix_static_mutex.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/connection.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/queue.h \ + /usr/include/c++/13/list /usr/include/c++/13/bits/stl_list.h \ + /usr/include/c++/13/bits/list.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /usr/include/c++/13/regex /usr/include/c++/13/bitset \ + /usr/include/c++/13/stack /usr/include/c++/13/bits/stl_stack.h \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request_parser.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/parser.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/connection_pool.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/router.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/view.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/utility.h \ + /home/unknownobject/UNSWebServerCore/ProcessorAdapter.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h diff --git a/build/CMakeFiles/unswsc.dir/ServerLogger.cpp.o b/build/CMakeFiles/unswsc.dir/ServerLogger.cpp.o new file mode 100644 index 0000000..7f6e048 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/ServerLogger.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/ServerLogger.cpp.o.d b/build/CMakeFiles/unswsc.dir/ServerLogger.cpp.o.d new file mode 100644 index 0000000..ad0a5a8 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/ServerLogger.cpp.o.d @@ -0,0 +1,293 @@ +CMakeFiles/unswsc.dir/ServerLogger.cpp.o: \ + /home/unknownobject/UNSWebServerCore/ServerLogger.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/initializer_list /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/mutex /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/13/bits/unique_lock.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/thread /usr/include/c++/13/stop_token \ + /usr/include/c++/13/atomic /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h \ + /usr/include/c++/13/bits/functional_hash.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/bits/stringfwd.h /usr/include/c++/13/bits/postypes.h \ + /usr/include/c++/13/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/c++/13/bits/ios_base.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error /usr/include/c++/13/stdexcept \ + /usr/include/c++/13/streambuf /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/chrono \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/format.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/base.h \ + /usr/include/c++/13/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/13/bits/specfun.h /usr/include/c++/13/tr1/gamma.tcc \ + /usr/include/c++/13/tr1/special_function_util.h \ + /usr/include/c++/13/tr1/bessel_function.tcc \ + /usr/include/c++/13/tr1/beta_function.tcc \ + /usr/include/c++/13/tr1/ell_integral.tcc \ + /usr/include/c++/13/tr1/exp_integral.tcc \ + /usr/include/c++/13/tr1/hypergeometric.tcc \ + /usr/include/c++/13/tr1/legendre_function.tcc \ + /usr/include/c++/13/tr1/modified_bessel_func.tcc \ + /usr/include/c++/13/tr1/poly_hermite.tcc \ + /usr/include/c++/13/tr1/poly_laguerre.tcc \ + /usr/include/c++/13/tr1/riemann_zeta.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/chrono.h \ + /usr/include/c++/13/algorithm /usr/include/c++/13/bits/ranges_algo.h \ + /usr/include/c++/13/pstl/glue_algorithm_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/iterator \ + /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/format.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/printf.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/args.h \ + /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h diff --git a/build/CMakeFiles/unswsc.dir/ServerProcessor.cpp.o b/build/CMakeFiles/unswsc.dir/ServerProcessor.cpp.o new file mode 100644 index 0000000..8f35ce6 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/ServerProcessor.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/ServerProcessor.cpp.o.d b/build/CMakeFiles/unswsc.dir/ServerProcessor.cpp.o.d new file mode 100644 index 0000000..a80846a --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/ServerProcessor.cpp.o.d @@ -0,0 +1,339 @@ +CMakeFiles/unswsc.dir/ServerProcessor.cpp.o: \ + /home/unknownobject/UNSWebServerCore/ServerProcessor.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/ServerProcessor.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/mutex \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/thread \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/istream \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /usr/include/c++/13/regex /usr/include/c++/13/bitset \ + /usr/include/c++/13/stack /usr/include/c++/13/bits/stl_stack.h \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h \ + /usr/include/c++/13/typeindex /usr/include/c++/13/cxxabi.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cxxabi_tweaks.h diff --git a/build/CMakeFiles/unswsc.dir/SessionManager.cpp.o b/build/CMakeFiles/unswsc.dir/SessionManager.cpp.o new file mode 100644 index 0000000..e278627 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/SessionManager.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/SessionManager.cpp.o.d b/build/CMakeFiles/unswsc.dir/SessionManager.cpp.o.d new file mode 100644 index 0000000..ca65139 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/SessionManager.cpp.o.d @@ -0,0 +1,297 @@ +CMakeFiles/unswsc.dir/SessionManager.cpp.o: \ + /home/unknownobject/UNSWebServerCore/SessionManager.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/SessionManager.h \ + /usr/include/c++/13/map /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h /usr/include/c++/13/mutex \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/13/bits/unique_lock.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/chrono /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/iosfwd /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/c++/13/bits/ios_base.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error /usr/include/c++/13/stdexcept \ + /usr/include/c++/13/streambuf /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/array /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/core.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/format.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/fmt/base.h \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/c++/13/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/13/bits/specfun.h /usr/include/c++/13/tr1/gamma.tcc \ + /usr/include/c++/13/tr1/special_function_util.h \ + /usr/include/c++/13/tr1/bessel_function.tcc \ + /usr/include/c++/13/tr1/beta_function.tcc \ + /usr/include/c++/13/tr1/ell_integral.tcc \ + /usr/include/c++/13/tr1/exp_integral.tcc \ + /usr/include/c++/13/tr1/hypergeometric.tcc \ + /usr/include/c++/13/tr1/legendre_function.tcc \ + /usr/include/c++/13/tr1/modified_bessel_func.tcc \ + /usr/include/c++/13/tr1/poly_hermite.tcc \ + /usr/include/c++/13/tr1/poly_laguerre.tcc \ + /usr/include/c++/13/tr1/riemann_zeta.tcc /usr/include/c++/13/cstring \ + /home/unknownobject/UNSWebServerCore/SafeRNG.h \ + /home/unknownobject/UNSWebServerCore/uohash/UOHash.h \ + /home/unknownobject/UNSWebServerCore/uohash/Public.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/rhash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/stack \ + /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc /usr/include/c++/13/filesystem \ + /usr/include/c++/13/bits/fs_fwd.h /usr/include/c++/13/bits/fs_path.h \ + /usr/include/c++/13/codecvt /usr/include/c++/13/bits/fs_dir.h \ + /usr/include/c++/13/bits/fs_ops.h diff --git a/build/CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o b/build/CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o new file mode 100644 index 0000000..955ae21 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o.d b/build/CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o.d new file mode 100644 index 0000000..7fbb3c3 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o.d @@ -0,0 +1,346 @@ +CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o: \ + /home/unknownobject/UNSWebServerCore/SyncFileReceiver.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/SyncFileReceiver.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /home/unknownobject/UNSWebServerCore/DateTime.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/unique_ptr.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /usr/include/c++/13/istream /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/sstream /usr/include/c++/13/bits/sstream.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/array /usr/include/c++/13/deque \ + /usr/include/c++/13/bits/stl_deque.h /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/stack /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/mutex /usr/include/c++/13/bits/chrono.h \ + /usr/include/c++/13/ratio /usr/include/c++/13/limits \ + /usr/include/c++/13/ctime /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/thread \ + /usr/include/c++/13/stop_token /usr/include/c++/13/atomic \ + /usr/include/c++/13/bits/std_thread.h /usr/include/c++/13/semaphore \ + /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/fstream /usr/include/c++/13/bits/codecvt.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/format \ + /usr/include/c++/13/charconv /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /usr/include/c++/13/regex /usr/include/c++/13/bitset \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h diff --git a/build/CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o b/build/CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o new file mode 100644 index 0000000..82aea7c Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o.d b/build/CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o.d new file mode 100644 index 0000000..1f09122 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o.d @@ -0,0 +1,346 @@ +CMakeFiles/unswsc.dir/SyncFileReciver.cpp.o: \ + /home/unknownobject/UNSWebServerCore/SyncFileReciver.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/SyncFileReciver.h \ + /usr/include/c++/13/map /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/tuple /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator_args.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h \ + /home/unknownobject/UNSWebServerCore/IPTable.h /usr/include/c++/13/set \ + /usr/include/c++/13/bits/stl_set.h \ + /usr/include/c++/13/bits/stl_multiset.h \ + /home/unknownobject/UNSWebServerCore/IPList.h /usr/include/c++/13/regex \ + /usr/include/c++/13/bitset /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/exception \ + /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/streambuf /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/locale_facets_nonio.h /usr/include/c++/13/ctime \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/stack \ + /usr/include/c++/13/deque /usr/include/c++/13/bits/stl_deque.h \ + /usr/include/c++/13/bits/deque.tcc /usr/include/c++/13/bits/stl_stack.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/ext/concurrence.h /usr/include/c++/13/bits/align.h \ + /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /usr/include/c++/13/functional /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/array \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h /usr/include/c++/13/cstring \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/condition_variable /usr/include/c++/13/bits/chrono.h \ + /usr/include/c++/13/ratio /usr/include/c++/13/limits \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/unique_lock.h /usr/include/c++/13/stop_token \ + /usr/include/c++/13/atomic /usr/include/c++/13/bits/std_thread.h \ + /usr/include/c++/13/semaphore /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /home/unknownobject/UNSWebServerCore/LogArg.h \ + /usr/include/c++/13/variant /usr/include/c++/13/iostream \ + /usr/include/c++/13/stdlib.h /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/thread \ + /usr/include/c++/13/chrono /usr/include/c++/13/bits/chrono_io.h \ + /usr/include/c++/13/format /usr/include/c++/13/charconv \ + /usr/include/c++/13/optional /usr/include/c++/13/span \ + /usr/include/c++/13/mutex \ + /home/unknownobject/UNSWebServerCore/PathTraversal.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h diff --git a/build/CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o b/build/CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o new file mode 100644 index 0000000..d67ef33 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o.d b/build/CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o.d new file mode 100644 index 0000000..10ebd1c --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o.d @@ -0,0 +1,341 @@ +CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o: \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.cpp \ + /usr/include/stdc-predef.h \ + /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.h \ + /usr/include/c++/13/set /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_set.h /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/stl_multiset.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/bits/erase_if.h \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/invoke.h /usr/include/c++/13/bits/ranges_util.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/memory /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h /usr/include/c++/13/ostream \ + /usr/include/c++/13/ios /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/bits/stringfwd.h /usr/include/c++/13/bits/postypes.h \ + /usr/include/c++/13/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \ + /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/refwrap.h \ + /usr/include/c++/13/bits/basic_string.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/cstdint \ + /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /usr/include/c++/13/filesystem /usr/include/c++/13/bits/fs_fwd.h \ + /usr/include/c++/13/bits/chrono.h /usr/include/c++/13/ratio \ + /usr/include/c++/13/limits /usr/include/c++/13/ctime \ + /usr/include/c++/13/bits/parse_numbers.h \ + /usr/include/c++/13/bits/fs_path.h /usr/include/c++/13/locale \ + /usr/include/c++/13/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/13/bits/codecvt.h \ + /usr/include/c++/13/bits/locale_facets_nonio.tcc \ + /usr/include/c++/13/bits/locale_conv.h /usr/include/c++/13/iomanip \ + /usr/include/c++/13/bits/quoted_string.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/istream /usr/include/c++/13/bits/istream.tcc \ + /usr/include/c++/13/bits/sstream.tcc /usr/include/c++/13/codecvt \ + /usr/include/c++/13/bits/fs_dir.h /usr/include/c++/13/bits/fs_ops.h \ + /home/unknownobject/UNSWebServerCore/HTTPObjects.h \ + /usr/include/c++/13/vector /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc /usr/include/c++/13/utility \ + /usr/include/c++/13/bits/stl_relops.h \ + /home/unknownobject/UNSWebServerCore/Global.h /usr/include/c++/13/map \ + /usr/include/c++/13/bits/stl_map.h \ + /usr/include/c++/13/bits/stl_multimap.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/array /usr/include/c++/13/deque \ + /usr/include/c++/13/bits/stl_deque.h /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/stack /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/UNSWebServerCore/CORSConfig.h \ + /home/unknownobject/UNSWebServerCore/ServerLogger.h \ + /usr/include/c++/13/mutex /usr/include/c++/13/bits/unique_lock.h \ + /usr/include/c++/13/thread /usr/include/c++/13/stop_token \ + /usr/include/c++/13/atomic /usr/include/c++/13/bits/std_thread.h \ + /usr/include/c++/13/semaphore /usr/include/c++/13/bits/semaphore_base.h \ + /usr/include/c++/13/bits/atomic_timed_wait.h \ + /usr/include/c++/13/bits/this_thread_sleep.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/semaphore.h \ + /usr/include/x86_64-linux-gnu/bits/semaphore.h \ + /usr/include/c++/13/fstream \ + /usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \ + /usr/include/c++/13/bits/fstream.tcc \ + /home/unknownobject/UNSWebServerCore/LogArg.h /usr/include/c++/13/chrono \ + /usr/include/c++/13/bits/stl_algo.h \ + /usr/include/c++/13/bits/algorithmfwd.h \ + /usr/include/c++/13/bits/stl_heap.h \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/c++/13/bits/chrono_io.h /usr/include/c++/13/format \ + /usr/include/c++/13/charconv /usr/include/c++/13/optional \ + /usr/include/c++/13/bits/enable_special_members.h \ + /usr/include/c++/13/span /usr/include/c++/13/variant \ + /usr/include/c++/13/functional /usr/include/c++/13/bits/std_function.h \ + /usr/include/c++/13/unordered_map \ + /usr/include/c++/13/bits/unordered_map.h \ + /usr/include/c++/13/bits/hashtable.h \ + /usr/include/c++/13/bits/hashtable_policy.h \ + /usr/include/c++/13/condition_variable \ + /home/unknownobject/UNSWebServerCore/HTTPObjectsBridge.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/request.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/message.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/body.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/common.h \ + /usr/include/c++/13/cassert /usr/include/assert.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/fs.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/config.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/globals.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/buffer.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/user.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_compiler_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/compiler/gcc.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_stdlib_config.hpp \ + /usr/include/c++/13/version \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/select_platform_config.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/platform/linux.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/posix_features.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/suffix.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/helper_macros.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/detail/cxx_composite.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/version.hpp \ + /usr/include/linux/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/array_fwd.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/memory.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/cstdint.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/throw_exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/exception/exception.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/assert/source_location.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/cstdint.hpp \ + /usr/include/c++/13/source_location \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/config/workaround.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/string_view.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/type_traits.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/is_contiguous_iterator.hpp \ + /usr/include/c++/13/iterator /usr/include/c++/13/bits/stream_iterator.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/push_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/pop_options.hpp \ + /home/unknownobject/vcpkg/installed/x64-linux/include/boost/asio/detail/is_buffer_sequence.hpp \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/url.h \ + /usr/include/c++/13/regex /usr/include/c++/13/bitset \ + /usr/include/c++/13/bits/regex_constants.h \ + /usr/include/c++/13/bits/regex_error.h \ + /usr/include/c++/13/bits/regex_automaton.h \ + /usr/include/c++/13/bits/regex_automaton.tcc \ + /usr/include/c++/13/bits/regex_scanner.h \ + /usr/include/c++/13/bits/regex_scanner.tcc \ + /usr/include/c++/13/bits/regex_compiler.h \ + /usr/include/c++/13/bits/regex_compiler.tcc \ + /usr/include/c++/13/bits/regex.h /usr/include/c++/13/bits/regex.tcc \ + /usr/include/c++/13/bits/regex_executor.h \ + /usr/include/c++/13/bits/regex_executor.tcc \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response.h \ + /home/unknownobject/UNSWebServerCore/webcc/webcc/response_builder.h diff --git a/build/CMakeFiles/unswsc.dir/WebFileInfo.cpp.o b/build/CMakeFiles/unswsc.dir/WebFileInfo.cpp.o new file mode 100644 index 0000000..153ebd7 Binary files /dev/null and b/build/CMakeFiles/unswsc.dir/WebFileInfo.cpp.o differ diff --git a/build/CMakeFiles/unswsc.dir/WebFileInfo.cpp.o.d b/build/CMakeFiles/unswsc.dir/WebFileInfo.cpp.o.d new file mode 100644 index 0000000..0eba649 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/WebFileInfo.cpp.o.d @@ -0,0 +1,267 @@ +CMakeFiles/unswsc.dir/WebFileInfo.cpp.o: \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.cpp \ + /usr/include/stdc-predef.h /usr/include/c++/13/random \ + /usr/include/c++/13/bits/requires_hosted.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \ + /usr/include/c++/13/pstl/pstl_config.h /usr/include/c++/13/cmath \ + /usr/include/c++/13/bits/cpp_type_traits.h \ + /usr/include/c++/13/ext/type_traits.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/13/bits/std_abs.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/c++/13/bits/specfun.h \ + /usr/include/c++/13/bits/stl_algobase.h \ + /usr/include/c++/13/bits/functexcept.h \ + /usr/include/c++/13/bits/exception_defines.h \ + /usr/include/c++/13/ext/numeric_traits.h \ + /usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \ + /usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \ + /usr/include/c++/13/compare /usr/include/c++/13/concepts \ + /usr/include/c++/13/bits/stl_iterator_base_types.h \ + /usr/include/c++/13/bits/iterator_concepts.h \ + /usr/include/c++/13/bits/ptr_traits.h \ + /usr/include/c++/13/bits/ranges_cmp.h \ + /usr/include/c++/13/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/13/bits/concept_check.h \ + /usr/include/c++/13/debug/assertions.h \ + /usr/include/c++/13/bits/stl_iterator.h /usr/include/c++/13/new \ + /usr/include/c++/13/bits/exception.h \ + /usr/include/c++/13/bits/stl_construct.h \ + /usr/include/c++/13/debug/debug.h \ + /usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \ + /usr/include/c++/13/limits /usr/include/c++/13/tr1/gamma.tcc \ + /usr/include/c++/13/tr1/special_function_util.h \ + /usr/include/c++/13/tr1/bessel_function.tcc \ + /usr/include/c++/13/tr1/beta_function.tcc \ + /usr/include/c++/13/tr1/ell_integral.tcc \ + /usr/include/c++/13/tr1/exp_integral.tcc \ + /usr/include/c++/13/tr1/hypergeometric.tcc \ + /usr/include/c++/13/tr1/legendre_function.tcc \ + /usr/include/c++/13/tr1/modified_bessel_func.tcc \ + /usr/include/c++/13/tr1/poly_hermite.tcc \ + /usr/include/c++/13/tr1/poly_laguerre.tcc \ + /usr/include/c++/13/tr1/riemann_zeta.tcc /usr/include/c++/13/cstdlib \ + /usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \ + /usr/include/c++/13/bits/memoryfwd.h \ + /usr/include/c++/13/bits/char_traits.h \ + /usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \ + /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/wchar2.h \ + /usr/include/c++/13/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \ + /usr/include/c++/13/bits/new_allocator.h \ + /usr/include/c++/13/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \ + /usr/include/c++/13/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \ + /usr/include/c++/13/cctype /usr/include/ctype.h \ + /usr/include/c++/13/bits/ostream_insert.h \ + /usr/include/c++/13/bits/cxxabi_forced.h \ + /usr/include/c++/13/bits/stl_function.h \ + /usr/include/c++/13/backward/binders.h \ + /usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \ + /usr/include/c++/13/bits/range_access.h \ + /usr/include/c++/13/initializer_list \ + /usr/include/c++/13/bits/basic_string.h \ + /usr/include/c++/13/ext/alloc_traits.h \ + /usr/include/c++/13/bits/alloc_traits.h /usr/include/c++/13/string_view \ + /usr/include/c++/13/bits/functional_hash.h \ + /usr/include/c++/13/bits/hash_bytes.h \ + /usr/include/c++/13/bits/ranges_base.h \ + /usr/include/c++/13/bits/max_size_type.h /usr/include/c++/13/numbers \ + /usr/include/c++/13/bits/string_view.tcc \ + /usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/13/bits/charconv.h \ + /usr/include/c++/13/bits/basic_string.tcc \ + /usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \ + /usr/include/c++/13/bits/uses_allocator.h \ + /usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \ + /usr/include/c++/13/bits/ranges_util.h /usr/include/c++/13/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-least.h \ + /usr/include/c++/13/bits/random.h /usr/include/c++/13/vector \ + /usr/include/c++/13/bits/stl_uninitialized.h \ + /usr/include/c++/13/bits/stl_vector.h \ + /usr/include/c++/13/bits/stl_bvector.h \ + /usr/include/c++/13/bits/vector.tcc \ + /usr/include/c++/13/bits/uniform_int_dist.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/opt_random.h \ + /usr/include/c++/13/bits/random.tcc /usr/include/c++/13/numeric \ + /usr/include/c++/13/bits/stl_numeric.h \ + /usr/include/c++/13/pstl/glue_numeric_defs.h \ + /usr/include/c++/13/pstl/execution_defs.h \ + /home/unknownobject/UNSWebServerCore/uohash/UOHash.h \ + /home/unknownobject/UNSWebServerCore/uohash/Public.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/rhash.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/config.h \ + /usr/include/c++/13/istream /usr/include/c++/13/ios \ + /usr/include/c++/13/exception /usr/include/c++/13/bits/exception_ptr.h \ + /usr/include/c++/13/bits/cxxabi_init_exception.h \ + /usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \ + /usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/13/bits/locale_classes.h \ + /usr/include/c++/13/bits/locale_classes.tcc \ + /usr/include/c++/13/system_error \ + /usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \ + /usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \ + /usr/include/c++/13/bits/streambuf.tcc \ + /usr/include/c++/13/bits/basic_ios.h \ + /usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \ + /usr/include/c++/13/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \ + /usr/include/c++/13/bits/locale_facets.tcc \ + /usr/include/c++/13/bits/basic_ios.tcc /usr/include/c++/13/ostream \ + /usr/include/c++/13/bits/ostream.tcc \ + /usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/memory \ + /usr/include/c++/13/bits/stl_tempbuf.h \ + /usr/include/c++/13/bits/stl_raw_storage_iter.h \ + /usr/include/c++/13/bits/align.h /usr/include/c++/13/bits/unique_ptr.h \ + /usr/include/c++/13/bits/shared_ptr.h \ + /usr/include/c++/13/bits/shared_ptr_base.h \ + /usr/include/c++/13/bits/allocated_ptr.h \ + /usr/include/c++/13/ext/aligned_buffer.h \ + /usr/include/c++/13/ext/concurrence.h \ + /usr/include/c++/13/bits/shared_ptr_atomic.h \ + /usr/include/c++/13/bits/atomic_base.h \ + /usr/include/c++/13/bits/atomic_lockfree_defines.h \ + /usr/include/c++/13/bits/atomic_wait.h /usr/include/c++/13/climits \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/x86_64-linux-gnu/sys/syscall.h \ + /usr/include/x86_64-linux-gnu/asm/unistd.h \ + /usr/include/x86_64-linux-gnu/asm/unistd_64.h \ + /usr/include/x86_64-linux-gnu/bits/syscall.h \ + /usr/include/c++/13/bits/std_mutex.h \ + /usr/include/c++/13/backward/auto_ptr.h \ + /usr/include/c++/13/bits/ranges_uninitialized.h \ + /usr/include/c++/13/bits/ranges_algobase.h \ + /usr/include/c++/13/pstl/glue_memory_defs.h /usr/include/c++/13/sstream \ + /usr/include/c++/13/bits/sstream.tcc \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/allocator.h \ + /usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/version.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/json_features.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/forwards.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/reader.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/value.h \ + /usr/include/c++/13/array /usr/include/c++/13/map \ + /usr/include/c++/13/bits/stl_tree.h \ + /usr/include/c++/13/bits/node_handle.h \ + /usr/include/c++/13/bits/stl_map.h \ + /usr/include/c++/13/bits/stl_multimap.h \ + /usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/deque \ + /usr/include/c++/13/bits/stl_deque.h /usr/include/c++/13/bits/deque.tcc \ + /usr/include/c++/13/stack /usr/include/c++/13/bits/stl_stack.h \ + /home/unknownobject/vcpkg/installed/x64-linux/include/json/writer.h \ + /home/unknownobject/UNSWebServerCore/WebFileInfo.h \ + /home/unknownobject/UNSWebServerCore/Export.h \ + /home/unknownobject/UNSWebServerCore/DateTime.h diff --git a/build/CMakeFiles/unswsc.dir/build.make b/build/CMakeFiles/unswsc.dir/build.make new file mode 100644 index 0000000..b62fb32 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/build.make @@ -0,0 +1,405 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/unknownobject/UNSWebServerCore + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/unknownobject/UNSWebServerCore/build + +# Include any dependencies generated for this target. +include CMakeFiles/unswsc.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/unswsc.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/unswsc.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/unswsc.dir/flags.make + +CMakeFiles/unswsc.dir/CORSConfig.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/CORSConfig.cpp.o: /home/unknownobject/UNSWebServerCore/CORSConfig.cpp +CMakeFiles/unswsc.dir/CORSConfig.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/unswsc.dir/CORSConfig.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/CORSConfig.cpp.o -MF CMakeFiles/unswsc.dir/CORSConfig.cpp.o.d -o CMakeFiles/unswsc.dir/CORSConfig.cpp.o -c /home/unknownobject/UNSWebServerCore/CORSConfig.cpp + +CMakeFiles/unswsc.dir/CORSConfig.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/CORSConfig.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/CORSConfig.cpp > CMakeFiles/unswsc.dir/CORSConfig.cpp.i + +CMakeFiles/unswsc.dir/CORSConfig.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/CORSConfig.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/CORSConfig.cpp -o CMakeFiles/unswsc.dir/CORSConfig.cpp.s + +CMakeFiles/unswsc.dir/SessionManager.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/SessionManager.cpp.o: /home/unknownobject/UNSWebServerCore/SessionManager.cpp +CMakeFiles/unswsc.dir/SessionManager.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/unswsc.dir/SessionManager.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/SessionManager.cpp.o -MF CMakeFiles/unswsc.dir/SessionManager.cpp.o.d -o CMakeFiles/unswsc.dir/SessionManager.cpp.o -c /home/unknownobject/UNSWebServerCore/SessionManager.cpp + +CMakeFiles/unswsc.dir/SessionManager.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/SessionManager.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/SessionManager.cpp > CMakeFiles/unswsc.dir/SessionManager.cpp.i + +CMakeFiles/unswsc.dir/SessionManager.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/SessionManager.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/SessionManager.cpp -o CMakeFiles/unswsc.dir/SessionManager.cpp.s + +CMakeFiles/unswsc.dir/WebFileInfo.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/WebFileInfo.cpp.o: /home/unknownobject/UNSWebServerCore/WebFileInfo.cpp +CMakeFiles/unswsc.dir/WebFileInfo.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/unswsc.dir/WebFileInfo.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/WebFileInfo.cpp.o -MF CMakeFiles/unswsc.dir/WebFileInfo.cpp.o.d -o CMakeFiles/unswsc.dir/WebFileInfo.cpp.o -c /home/unknownobject/UNSWebServerCore/WebFileInfo.cpp + +CMakeFiles/unswsc.dir/WebFileInfo.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/WebFileInfo.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/WebFileInfo.cpp > CMakeFiles/unswsc.dir/WebFileInfo.cpp.i + +CMakeFiles/unswsc.dir/WebFileInfo.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/WebFileInfo.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/WebFileInfo.cpp -o CMakeFiles/unswsc.dir/WebFileInfo.cpp.s + +CMakeFiles/unswsc.dir/ServerProcessor.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/ServerProcessor.cpp.o: /home/unknownobject/UNSWebServerCore/ServerProcessor.cpp +CMakeFiles/unswsc.dir/ServerProcessor.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/unswsc.dir/ServerProcessor.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/ServerProcessor.cpp.o -MF CMakeFiles/unswsc.dir/ServerProcessor.cpp.o.d -o CMakeFiles/unswsc.dir/ServerProcessor.cpp.o -c /home/unknownobject/UNSWebServerCore/ServerProcessor.cpp + +CMakeFiles/unswsc.dir/ServerProcessor.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/ServerProcessor.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/ServerProcessor.cpp > CMakeFiles/unswsc.dir/ServerProcessor.cpp.i + +CMakeFiles/unswsc.dir/ServerProcessor.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/ServerProcessor.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/ServerProcessor.cpp -o CMakeFiles/unswsc.dir/ServerProcessor.cpp.s + +CMakeFiles/unswsc.dir/CORSProcessor.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/CORSProcessor.cpp.o: /home/unknownobject/UNSWebServerCore/CORSProcessor.cpp +CMakeFiles/unswsc.dir/CORSProcessor.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/unswsc.dir/CORSProcessor.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/CORSProcessor.cpp.o -MF CMakeFiles/unswsc.dir/CORSProcessor.cpp.o.d -o CMakeFiles/unswsc.dir/CORSProcessor.cpp.o -c /home/unknownobject/UNSWebServerCore/CORSProcessor.cpp + +CMakeFiles/unswsc.dir/CORSProcessor.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/CORSProcessor.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/CORSProcessor.cpp > CMakeFiles/unswsc.dir/CORSProcessor.cpp.i + +CMakeFiles/unswsc.dir/CORSProcessor.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/CORSProcessor.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/CORSProcessor.cpp -o CMakeFiles/unswsc.dir/CORSProcessor.cpp.s + +CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o: /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.cpp +CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o -MF CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o.d -o CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o -c /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.cpp + +CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.cpp > CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.i + +CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/UNSResponseBuilder.cpp -o CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.s + +CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o: /home/unknownobject/UNSWebServerCore/SyncFileReceiver.cpp +CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o -MF CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o.d -o CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o -c /home/unknownobject/UNSWebServerCore/SyncFileReceiver.cpp + +CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/SyncFileReceiver.cpp > CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.i + +CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/SyncFileReceiver.cpp -o CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.s + +CMakeFiles/unswsc.dir/DateTime.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/DateTime.cpp.o: /home/unknownobject/UNSWebServerCore/DateTime.cpp +CMakeFiles/unswsc.dir/DateTime.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object CMakeFiles/unswsc.dir/DateTime.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/DateTime.cpp.o -MF CMakeFiles/unswsc.dir/DateTime.cpp.o.d -o CMakeFiles/unswsc.dir/DateTime.cpp.o -c /home/unknownobject/UNSWebServerCore/DateTime.cpp + +CMakeFiles/unswsc.dir/DateTime.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/DateTime.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/DateTime.cpp > CMakeFiles/unswsc.dir/DateTime.cpp.i + +CMakeFiles/unswsc.dir/DateTime.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/DateTime.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/DateTime.cpp -o CMakeFiles/unswsc.dir/DateTime.cpp.s + +CMakeFiles/unswsc.dir/IPTable.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/IPTable.cpp.o: /home/unknownobject/UNSWebServerCore/IPTable.cpp +CMakeFiles/unswsc.dir/IPTable.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object CMakeFiles/unswsc.dir/IPTable.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/IPTable.cpp.o -MF CMakeFiles/unswsc.dir/IPTable.cpp.o.d -o CMakeFiles/unswsc.dir/IPTable.cpp.o -c /home/unknownobject/UNSWebServerCore/IPTable.cpp + +CMakeFiles/unswsc.dir/IPTable.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/IPTable.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/IPTable.cpp > CMakeFiles/unswsc.dir/IPTable.cpp.i + +CMakeFiles/unswsc.dir/IPTable.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/IPTable.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/IPTable.cpp -o CMakeFiles/unswsc.dir/IPTable.cpp.s + +CMakeFiles/unswsc.dir/IPList.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/IPList.cpp.o: /home/unknownobject/UNSWebServerCore/IPList.cpp +CMakeFiles/unswsc.dir/IPList.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building CXX object CMakeFiles/unswsc.dir/IPList.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/IPList.cpp.o -MF CMakeFiles/unswsc.dir/IPList.cpp.o.d -o CMakeFiles/unswsc.dir/IPList.cpp.o -c /home/unknownobject/UNSWebServerCore/IPList.cpp + +CMakeFiles/unswsc.dir/IPList.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/IPList.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/IPList.cpp > CMakeFiles/unswsc.dir/IPList.cpp.i + +CMakeFiles/unswsc.dir/IPList.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/IPList.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/IPList.cpp -o CMakeFiles/unswsc.dir/IPList.cpp.s + +CMakeFiles/unswsc.dir/Global.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/Global.cpp.o: /home/unknownobject/UNSWebServerCore/Global.cpp +CMakeFiles/unswsc.dir/Global.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building CXX object CMakeFiles/unswsc.dir/Global.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/Global.cpp.o -MF CMakeFiles/unswsc.dir/Global.cpp.o.d -o CMakeFiles/unswsc.dir/Global.cpp.o -c /home/unknownobject/UNSWebServerCore/Global.cpp + +CMakeFiles/unswsc.dir/Global.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/Global.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/Global.cpp > CMakeFiles/unswsc.dir/Global.cpp.i + +CMakeFiles/unswsc.dir/Global.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/Global.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/Global.cpp -o CMakeFiles/unswsc.dir/Global.cpp.s + +CMakeFiles/unswsc.dir/FileReceiver.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/FileReceiver.cpp.o: /home/unknownobject/UNSWebServerCore/FileReceiver.cpp +CMakeFiles/unswsc.dir/FileReceiver.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/unswsc.dir/FileReceiver.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/FileReceiver.cpp.o -MF CMakeFiles/unswsc.dir/FileReceiver.cpp.o.d -o CMakeFiles/unswsc.dir/FileReceiver.cpp.o -c /home/unknownobject/UNSWebServerCore/FileReceiver.cpp + +CMakeFiles/unswsc.dir/FileReceiver.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/FileReceiver.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/FileReceiver.cpp > CMakeFiles/unswsc.dir/FileReceiver.cpp.i + +CMakeFiles/unswsc.dir/FileReceiver.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/FileReceiver.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/FileReceiver.cpp -o CMakeFiles/unswsc.dir/FileReceiver.cpp.s + +CMakeFiles/unswsc.dir/DataTransfer.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/DataTransfer.cpp.o: /home/unknownobject/UNSWebServerCore/DataTransfer.cpp +CMakeFiles/unswsc.dir/DataTransfer.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building CXX object CMakeFiles/unswsc.dir/DataTransfer.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/DataTransfer.cpp.o -MF CMakeFiles/unswsc.dir/DataTransfer.cpp.o.d -o CMakeFiles/unswsc.dir/DataTransfer.cpp.o -c /home/unknownobject/UNSWebServerCore/DataTransfer.cpp + +CMakeFiles/unswsc.dir/DataTransfer.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/DataTransfer.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/DataTransfer.cpp > CMakeFiles/unswsc.dir/DataTransfer.cpp.i + +CMakeFiles/unswsc.dir/DataTransfer.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/DataTransfer.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/DataTransfer.cpp -o CMakeFiles/unswsc.dir/DataTransfer.cpp.s + +CMakeFiles/unswsc.dir/ServerLogger.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/ServerLogger.cpp.o: /home/unknownobject/UNSWebServerCore/ServerLogger.cpp +CMakeFiles/unswsc.dir/ServerLogger.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building CXX object CMakeFiles/unswsc.dir/ServerLogger.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/ServerLogger.cpp.o -MF CMakeFiles/unswsc.dir/ServerLogger.cpp.o.d -o CMakeFiles/unswsc.dir/ServerLogger.cpp.o -c /home/unknownobject/UNSWebServerCore/ServerLogger.cpp + +CMakeFiles/unswsc.dir/ServerLogger.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/ServerLogger.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/ServerLogger.cpp > CMakeFiles/unswsc.dir/ServerLogger.cpp.i + +CMakeFiles/unswsc.dir/ServerLogger.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/ServerLogger.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/ServerLogger.cpp -o CMakeFiles/unswsc.dir/ServerLogger.cpp.s + +CMakeFiles/unswsc.dir/LogArg.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/LogArg.cpp.o: /home/unknownobject/UNSWebServerCore/LogArg.cpp +CMakeFiles/unswsc.dir/LogArg.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building CXX object CMakeFiles/unswsc.dir/LogArg.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/LogArg.cpp.o -MF CMakeFiles/unswsc.dir/LogArg.cpp.o.d -o CMakeFiles/unswsc.dir/LogArg.cpp.o -c /home/unknownobject/UNSWebServerCore/LogArg.cpp + +CMakeFiles/unswsc.dir/LogArg.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/LogArg.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/LogArg.cpp > CMakeFiles/unswsc.dir/LogArg.cpp.i + +CMakeFiles/unswsc.dir/LogArg.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/LogArg.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/LogArg.cpp -o CMakeFiles/unswsc.dir/LogArg.cpp.s + +CMakeFiles/unswsc.dir/ServerCore.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/ServerCore.cpp.o: /home/unknownobject/UNSWebServerCore/ServerCore.cpp +CMakeFiles/unswsc.dir/ServerCore.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building CXX object CMakeFiles/unswsc.dir/ServerCore.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/ServerCore.cpp.o -MF CMakeFiles/unswsc.dir/ServerCore.cpp.o.d -o CMakeFiles/unswsc.dir/ServerCore.cpp.o -c /home/unknownobject/UNSWebServerCore/ServerCore.cpp + +CMakeFiles/unswsc.dir/ServerCore.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/ServerCore.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/ServerCore.cpp > CMakeFiles/unswsc.dir/ServerCore.cpp.i + +CMakeFiles/unswsc.dir/ServerCore.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/ServerCore.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/ServerCore.cpp -o CMakeFiles/unswsc.dir/ServerCore.cpp.s + +CMakeFiles/unswsc.dir/SafeRNG.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/SafeRNG.cpp.o: /home/unknownobject/UNSWebServerCore/SafeRNG.cpp +CMakeFiles/unswsc.dir/SafeRNG.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building CXX object CMakeFiles/unswsc.dir/SafeRNG.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/SafeRNG.cpp.o -MF CMakeFiles/unswsc.dir/SafeRNG.cpp.o.d -o CMakeFiles/unswsc.dir/SafeRNG.cpp.o -c /home/unknownobject/UNSWebServerCore/SafeRNG.cpp + +CMakeFiles/unswsc.dir/SafeRNG.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/SafeRNG.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/SafeRNG.cpp > CMakeFiles/unswsc.dir/SafeRNG.cpp.i + +CMakeFiles/unswsc.dir/SafeRNG.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/SafeRNG.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/SafeRNG.cpp -o CMakeFiles/unswsc.dir/SafeRNG.cpp.s + +CMakeFiles/unswsc.dir/HTTPObjects.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/HTTPObjects.cpp.o: /home/unknownobject/UNSWebServerCore/HTTPObjects.cpp +CMakeFiles/unswsc.dir/HTTPObjects.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building CXX object CMakeFiles/unswsc.dir/HTTPObjects.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/HTTPObjects.cpp.o -MF CMakeFiles/unswsc.dir/HTTPObjects.cpp.o.d -o CMakeFiles/unswsc.dir/HTTPObjects.cpp.o -c /home/unknownobject/UNSWebServerCore/HTTPObjects.cpp + +CMakeFiles/unswsc.dir/HTTPObjects.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/HTTPObjects.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/HTTPObjects.cpp > CMakeFiles/unswsc.dir/HTTPObjects.cpp.i + +CMakeFiles/unswsc.dir/HTTPObjects.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/HTTPObjects.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/HTTPObjects.cpp -o CMakeFiles/unswsc.dir/HTTPObjects.cpp.s + +CMakeFiles/unswsc.dir/PathTraversal.cpp.o: CMakeFiles/unswsc.dir/flags.make +CMakeFiles/unswsc.dir/PathTraversal.cpp.o: /home/unknownobject/UNSWebServerCore/PathTraversal.cpp +CMakeFiles/unswsc.dir/PathTraversal.cpp.o: CMakeFiles/unswsc.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Building CXX object CMakeFiles/unswsc.dir/PathTraversal.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/unswsc.dir/PathTraversal.cpp.o -MF CMakeFiles/unswsc.dir/PathTraversal.cpp.o.d -o CMakeFiles/unswsc.dir/PathTraversal.cpp.o -c /home/unknownobject/UNSWebServerCore/PathTraversal.cpp + +CMakeFiles/unswsc.dir/PathTraversal.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/unswsc.dir/PathTraversal.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/unknownobject/UNSWebServerCore/PathTraversal.cpp > CMakeFiles/unswsc.dir/PathTraversal.cpp.i + +CMakeFiles/unswsc.dir/PathTraversal.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/unswsc.dir/PathTraversal.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/unknownobject/UNSWebServerCore/PathTraversal.cpp -o CMakeFiles/unswsc.dir/PathTraversal.cpp.s + +# Object files for target unswsc +unswsc_OBJECTS = \ +"CMakeFiles/unswsc.dir/CORSConfig.cpp.o" \ +"CMakeFiles/unswsc.dir/SessionManager.cpp.o" \ +"CMakeFiles/unswsc.dir/WebFileInfo.cpp.o" \ +"CMakeFiles/unswsc.dir/ServerProcessor.cpp.o" \ +"CMakeFiles/unswsc.dir/CORSProcessor.cpp.o" \ +"CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o" \ +"CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o" \ +"CMakeFiles/unswsc.dir/DateTime.cpp.o" \ +"CMakeFiles/unswsc.dir/IPTable.cpp.o" \ +"CMakeFiles/unswsc.dir/IPList.cpp.o" \ +"CMakeFiles/unswsc.dir/Global.cpp.o" \ +"CMakeFiles/unswsc.dir/FileReceiver.cpp.o" \ +"CMakeFiles/unswsc.dir/DataTransfer.cpp.o" \ +"CMakeFiles/unswsc.dir/ServerLogger.cpp.o" \ +"CMakeFiles/unswsc.dir/LogArg.cpp.o" \ +"CMakeFiles/unswsc.dir/ServerCore.cpp.o" \ +"CMakeFiles/unswsc.dir/SafeRNG.cpp.o" \ +"CMakeFiles/unswsc.dir/HTTPObjects.cpp.o" \ +"CMakeFiles/unswsc.dir/PathTraversal.cpp.o" + +# External object files for target unswsc +unswsc_EXTERNAL_OBJECTS = + +libunswsc.so: CMakeFiles/unswsc.dir/CORSConfig.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/SessionManager.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/WebFileInfo.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/ServerProcessor.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/CORSProcessor.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/DateTime.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/IPTable.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/IPList.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/Global.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/FileReceiver.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/DataTransfer.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/ServerLogger.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/LogArg.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/ServerCore.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/SafeRNG.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/HTTPObjects.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/PathTraversal.cpp.o +libunswsc.so: CMakeFiles/unswsc.dir/build.make +libunswsc.so: /home/unknownobject/UNSWebServerCore/lib/libwebcc.a +libunswsc.so: /home/unknownobject/UNSWebServerCore/so/libuohash.so +libunswsc.so: /home/unknownobject/UNSWebServerCore/so/libutextcodec.so +libunswsc.so: /home/unknownobject/vcpkg/installed/x64-linux/lib/libfmt.a +libunswsc.so: /home/unknownobject/vcpkg/installed/x64-linux/lib/libcrypto.a +libunswsc.so: /home/unknownobject/vcpkg/installed/x64-linux/lib/libsodium.a +libunswsc.so: /home/unknownobject/vcpkg/installed/x64-linux/lib/libjsoncpp.a +libunswsc.so: CMakeFiles/unswsc.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/unknownobject/UNSWebServerCore/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Linking CXX shared library libunswsc.so" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/unswsc.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/unswsc.dir/build: libunswsc.so +.PHONY : CMakeFiles/unswsc.dir/build + +CMakeFiles/unswsc.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/unswsc.dir/cmake_clean.cmake +.PHONY : CMakeFiles/unswsc.dir/clean + +CMakeFiles/unswsc.dir/depend: + cd /home/unknownobject/UNSWebServerCore/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/unknownobject/UNSWebServerCore /home/unknownobject/UNSWebServerCore /home/unknownobject/UNSWebServerCore/build /home/unknownobject/UNSWebServerCore/build /home/unknownobject/UNSWebServerCore/build/CMakeFiles/unswsc.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/unswsc.dir/depend + diff --git a/build/CMakeFiles/unswsc.dir/cmake_clean.cmake b/build/CMakeFiles/unswsc.dir/cmake_clean.cmake new file mode 100644 index 0000000..fdb881d --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/cmake_clean.cmake @@ -0,0 +1,47 @@ +file(REMOVE_RECURSE + "CMakeFiles/unswsc.dir/CORSConfig.cpp.o" + "CMakeFiles/unswsc.dir/CORSConfig.cpp.o.d" + "CMakeFiles/unswsc.dir/CORSProcessor.cpp.o" + "CMakeFiles/unswsc.dir/CORSProcessor.cpp.o.d" + "CMakeFiles/unswsc.dir/DataTransfer.cpp.o" + "CMakeFiles/unswsc.dir/DataTransfer.cpp.o.d" + "CMakeFiles/unswsc.dir/DateTime.cpp.o" + "CMakeFiles/unswsc.dir/DateTime.cpp.o.d" + "CMakeFiles/unswsc.dir/FileReceiver.cpp.o" + "CMakeFiles/unswsc.dir/FileReceiver.cpp.o.d" + "CMakeFiles/unswsc.dir/Global.cpp.o" + "CMakeFiles/unswsc.dir/Global.cpp.o.d" + "CMakeFiles/unswsc.dir/HTTPObjects.cpp.o" + "CMakeFiles/unswsc.dir/HTTPObjects.cpp.o.d" + "CMakeFiles/unswsc.dir/IPList.cpp.o" + "CMakeFiles/unswsc.dir/IPList.cpp.o.d" + "CMakeFiles/unswsc.dir/IPTable.cpp.o" + "CMakeFiles/unswsc.dir/IPTable.cpp.o.d" + "CMakeFiles/unswsc.dir/LogArg.cpp.o" + "CMakeFiles/unswsc.dir/LogArg.cpp.o.d" + "CMakeFiles/unswsc.dir/PathTraversal.cpp.o" + "CMakeFiles/unswsc.dir/PathTraversal.cpp.o.d" + "CMakeFiles/unswsc.dir/SafeRNG.cpp.o" + "CMakeFiles/unswsc.dir/SafeRNG.cpp.o.d" + "CMakeFiles/unswsc.dir/ServerCore.cpp.o" + "CMakeFiles/unswsc.dir/ServerCore.cpp.o.d" + "CMakeFiles/unswsc.dir/ServerLogger.cpp.o" + "CMakeFiles/unswsc.dir/ServerLogger.cpp.o.d" + "CMakeFiles/unswsc.dir/ServerProcessor.cpp.o" + "CMakeFiles/unswsc.dir/ServerProcessor.cpp.o.d" + "CMakeFiles/unswsc.dir/SessionManager.cpp.o" + "CMakeFiles/unswsc.dir/SessionManager.cpp.o.d" + "CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o" + "CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o.d" + "CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o" + "CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o.d" + "CMakeFiles/unswsc.dir/WebFileInfo.cpp.o" + "CMakeFiles/unswsc.dir/WebFileInfo.cpp.o.d" + "libunswsc.pdb" + "libunswsc.so" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/unswsc.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/unswsc.dir/compiler_depend.make b/build/CMakeFiles/unswsc.dir/compiler_depend.make new file mode 100644 index 0000000..5cb002f --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for unswsc. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/unswsc.dir/compiler_depend.ts b/build/CMakeFiles/unswsc.dir/compiler_depend.ts new file mode 100644 index 0000000..6600209 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for unswsc. diff --git a/build/CMakeFiles/unswsc.dir/depend.make b/build/CMakeFiles/unswsc.dir/depend.make new file mode 100644 index 0000000..45a4eff --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for unswsc. +# This may be replaced when dependencies are built. diff --git a/build/CMakeFiles/unswsc.dir/flags.make b/build/CMakeFiles/unswsc.dir/flags.make new file mode 100644 index 0000000..2e09dfc --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# compile CXX with /usr/bin/c++ +CXX_DEFINES = -Dunswsc_EXPORTS + +CXX_INCLUDES = -isystem /home/unknownobject/UNSWebServerCore/webcc -isystem /home/unknownobject/UNSWebServerCore/uohash -isystem /home/unknownobject/UNSWebServerCore/utextcodec -isystem /home/unknownobject/vcpkg/installed/x64-linux/include + +CXX_FLAGS = -O3 -DNDEBUG -std=gnu++20 -fPIC -Wno-literal-suffix + diff --git a/build/CMakeFiles/unswsc.dir/link.txt b/build/CMakeFiles/unswsc.dir/link.txt new file mode 100644 index 0000000..e4de595 --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -fPIC -O3 -DNDEBUG -shared -Wl,-soname,libunswsc.so -o libunswsc.so CMakeFiles/unswsc.dir/CORSConfig.cpp.o CMakeFiles/unswsc.dir/SessionManager.cpp.o CMakeFiles/unswsc.dir/WebFileInfo.cpp.o CMakeFiles/unswsc.dir/ServerProcessor.cpp.o CMakeFiles/unswsc.dir/CORSProcessor.cpp.o CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o CMakeFiles/unswsc.dir/DateTime.cpp.o CMakeFiles/unswsc.dir/IPTable.cpp.o CMakeFiles/unswsc.dir/IPList.cpp.o CMakeFiles/unswsc.dir/Global.cpp.o CMakeFiles/unswsc.dir/FileReceiver.cpp.o CMakeFiles/unswsc.dir/DataTransfer.cpp.o CMakeFiles/unswsc.dir/ServerLogger.cpp.o CMakeFiles/unswsc.dir/LogArg.cpp.o CMakeFiles/unswsc.dir/ServerCore.cpp.o CMakeFiles/unswsc.dir/SafeRNG.cpp.o CMakeFiles/unswsc.dir/HTTPObjects.cpp.o CMakeFiles/unswsc.dir/PathTraversal.cpp.o -Wl,-rpath,/home/unknownobject/UNSWebServerCore/so /home/unknownobject/UNSWebServerCore/lib/libwebcc.a /home/unknownobject/UNSWebServerCore/so/libuohash.so /home/unknownobject/UNSWebServerCore/so/libutextcodec.so /home/unknownobject/vcpkg/installed/x64-linux/lib/libfmt.a /home/unknownobject/vcpkg/installed/x64-linux/lib/libcrypto.a /home/unknownobject/vcpkg/installed/x64-linux/lib/libsodium.a -ldl /home/unknownobject/vcpkg/installed/x64-linux/lib/libjsoncpp.a diff --git a/build/CMakeFiles/unswsc.dir/progress.make b/build/CMakeFiles/unswsc.dir/progress.make new file mode 100644 index 0000000..756d9eb --- /dev/null +++ b/build/CMakeFiles/unswsc.dir/progress.make @@ -0,0 +1,21 @@ +CMAKE_PROGRESS_1 = 6 +CMAKE_PROGRESS_2 = 7 +CMAKE_PROGRESS_3 = 8 +CMAKE_PROGRESS_4 = 9 +CMAKE_PROGRESS_5 = 10 +CMAKE_PROGRESS_6 = 11 +CMAKE_PROGRESS_7 = 12 +CMAKE_PROGRESS_8 = 13 +CMAKE_PROGRESS_9 = 14 +CMAKE_PROGRESS_10 = 15 +CMAKE_PROGRESS_11 = 16 +CMAKE_PROGRESS_12 = 17 +CMAKE_PROGRESS_13 = 18 +CMAKE_PROGRESS_14 = 19 +CMAKE_PROGRESS_15 = 20 +CMAKE_PROGRESS_16 = 21 +CMAKE_PROGRESS_17 = 22 +CMAKE_PROGRESS_18 = 23 +CMAKE_PROGRESS_19 = 24 +CMAKE_PROGRESS_20 = 25 + diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..db7db35 --- /dev/null +++ b/build/Makefile @@ -0,0 +1,728 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.28 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/unknownobject/UNSWebServerCore + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/unknownobject/UNSWebServerCore/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles /home/unknownobject/UNSWebServerCore/build//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/unknownobject/UNSWebServerCore/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named unswsc + +# Build rule for target. +unswsc: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 unswsc +.PHONY : unswsc + +# fast build rule for target. +unswsc/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/build +.PHONY : unswsc/fast + +#============================================================================= +# Target rules for targets named logger_test + +# Build rule for target. +logger_test: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 logger_test +.PHONY : logger_test + +# fast build rule for target. +logger_test/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/build +.PHONY : logger_test/fast + +#============================================================================= +# Target rules for targets named rebuild + +# Build rule for target. +rebuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 rebuild +.PHONY : rebuild + +# fast build rule for target. +rebuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/rebuild.dir/build.make CMakeFiles/rebuild.dir/build +.PHONY : rebuild/fast + +CORSConfig.o: CORSConfig.cpp.o +.PHONY : CORSConfig.o + +# target to build an object file +CORSConfig.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/CORSConfig.cpp.o +.PHONY : CORSConfig.cpp.o + +CORSConfig.i: CORSConfig.cpp.i +.PHONY : CORSConfig.i + +# target to preprocess a source file +CORSConfig.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/CORSConfig.cpp.i +.PHONY : CORSConfig.cpp.i + +CORSConfig.s: CORSConfig.cpp.s +.PHONY : CORSConfig.s + +# target to generate assembly for a file +CORSConfig.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/CORSConfig.cpp.s +.PHONY : CORSConfig.cpp.s + +CORSProcessor.o: CORSProcessor.cpp.o +.PHONY : CORSProcessor.o + +# target to build an object file +CORSProcessor.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/CORSProcessor.cpp.o +.PHONY : CORSProcessor.cpp.o + +CORSProcessor.i: CORSProcessor.cpp.i +.PHONY : CORSProcessor.i + +# target to preprocess a source file +CORSProcessor.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/CORSProcessor.cpp.i +.PHONY : CORSProcessor.cpp.i + +CORSProcessor.s: CORSProcessor.cpp.s +.PHONY : CORSProcessor.s + +# target to generate assembly for a file +CORSProcessor.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/CORSProcessor.cpp.s +.PHONY : CORSProcessor.cpp.s + +DataTransfer.o: DataTransfer.cpp.o +.PHONY : DataTransfer.o + +# target to build an object file +DataTransfer.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/DataTransfer.cpp.o +.PHONY : DataTransfer.cpp.o + +DataTransfer.i: DataTransfer.cpp.i +.PHONY : DataTransfer.i + +# target to preprocess a source file +DataTransfer.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/DataTransfer.cpp.i +.PHONY : DataTransfer.cpp.i + +DataTransfer.s: DataTransfer.cpp.s +.PHONY : DataTransfer.s + +# target to generate assembly for a file +DataTransfer.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/DataTransfer.cpp.s +.PHONY : DataTransfer.cpp.s + +DateTime.o: DateTime.cpp.o +.PHONY : DateTime.o + +# target to build an object file +DateTime.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/DateTime.cpp.o +.PHONY : DateTime.cpp.o + +DateTime.i: DateTime.cpp.i +.PHONY : DateTime.i + +# target to preprocess a source file +DateTime.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/DateTime.cpp.i +.PHONY : DateTime.cpp.i + +DateTime.s: DateTime.cpp.s +.PHONY : DateTime.s + +# target to generate assembly for a file +DateTime.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/DateTime.cpp.s +.PHONY : DateTime.cpp.s + +FileReceiver.o: FileReceiver.cpp.o +.PHONY : FileReceiver.o + +# target to build an object file +FileReceiver.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/FileReceiver.cpp.o +.PHONY : FileReceiver.cpp.o + +FileReceiver.i: FileReceiver.cpp.i +.PHONY : FileReceiver.i + +# target to preprocess a source file +FileReceiver.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/FileReceiver.cpp.i +.PHONY : FileReceiver.cpp.i + +FileReceiver.s: FileReceiver.cpp.s +.PHONY : FileReceiver.s + +# target to generate assembly for a file +FileReceiver.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/FileReceiver.cpp.s +.PHONY : FileReceiver.cpp.s + +Global.o: Global.cpp.o +.PHONY : Global.o + +# target to build an object file +Global.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/Global.cpp.o +.PHONY : Global.cpp.o + +Global.i: Global.cpp.i +.PHONY : Global.i + +# target to preprocess a source file +Global.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/Global.cpp.i +.PHONY : Global.cpp.i + +Global.s: Global.cpp.s +.PHONY : Global.s + +# target to generate assembly for a file +Global.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/Global.cpp.s +.PHONY : Global.cpp.s + +HTTPObjects.o: HTTPObjects.cpp.o +.PHONY : HTTPObjects.o + +# target to build an object file +HTTPObjects.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/HTTPObjects.cpp.o +.PHONY : HTTPObjects.cpp.o + +HTTPObjects.i: HTTPObjects.cpp.i +.PHONY : HTTPObjects.i + +# target to preprocess a source file +HTTPObjects.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/HTTPObjects.cpp.i +.PHONY : HTTPObjects.cpp.i + +HTTPObjects.s: HTTPObjects.cpp.s +.PHONY : HTTPObjects.s + +# target to generate assembly for a file +HTTPObjects.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/HTTPObjects.cpp.s +.PHONY : HTTPObjects.cpp.s + +IPList.o: IPList.cpp.o +.PHONY : IPList.o + +# target to build an object file +IPList.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/IPList.cpp.o +.PHONY : IPList.cpp.o + +IPList.i: IPList.cpp.i +.PHONY : IPList.i + +# target to preprocess a source file +IPList.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/IPList.cpp.i +.PHONY : IPList.cpp.i + +IPList.s: IPList.cpp.s +.PHONY : IPList.s + +# target to generate assembly for a file +IPList.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/IPList.cpp.s +.PHONY : IPList.cpp.s + +IPTable.o: IPTable.cpp.o +.PHONY : IPTable.o + +# target to build an object file +IPTable.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/IPTable.cpp.o +.PHONY : IPTable.cpp.o + +IPTable.i: IPTable.cpp.i +.PHONY : IPTable.i + +# target to preprocess a source file +IPTable.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/IPTable.cpp.i +.PHONY : IPTable.cpp.i + +IPTable.s: IPTable.cpp.s +.PHONY : IPTable.s + +# target to generate assembly for a file +IPTable.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/IPTable.cpp.s +.PHONY : IPTable.cpp.s + +LogArg.o: LogArg.cpp.o +.PHONY : LogArg.o + +# target to build an object file +LogArg.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/LogArg.cpp.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/LogArg.cpp.o +.PHONY : LogArg.cpp.o + +LogArg.i: LogArg.cpp.i +.PHONY : LogArg.i + +# target to preprocess a source file +LogArg.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/LogArg.cpp.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/LogArg.cpp.i +.PHONY : LogArg.cpp.i + +LogArg.s: LogArg.cpp.s +.PHONY : LogArg.s + +# target to generate assembly for a file +LogArg.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/LogArg.cpp.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/LogArg.cpp.s +.PHONY : LogArg.cpp.s + +PathTraversal.o: PathTraversal.cpp.o +.PHONY : PathTraversal.o + +# target to build an object file +PathTraversal.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/PathTraversal.cpp.o +.PHONY : PathTraversal.cpp.o + +PathTraversal.i: PathTraversal.cpp.i +.PHONY : PathTraversal.i + +# target to preprocess a source file +PathTraversal.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/PathTraversal.cpp.i +.PHONY : PathTraversal.cpp.i + +PathTraversal.s: PathTraversal.cpp.s +.PHONY : PathTraversal.s + +# target to generate assembly for a file +PathTraversal.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/PathTraversal.cpp.s +.PHONY : PathTraversal.cpp.s + +SafeRNG.o: SafeRNG.cpp.o +.PHONY : SafeRNG.o + +# target to build an object file +SafeRNG.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SafeRNG.cpp.o +.PHONY : SafeRNG.cpp.o + +SafeRNG.i: SafeRNG.cpp.i +.PHONY : SafeRNG.i + +# target to preprocess a source file +SafeRNG.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SafeRNG.cpp.i +.PHONY : SafeRNG.cpp.i + +SafeRNG.s: SafeRNG.cpp.s +.PHONY : SafeRNG.s + +# target to generate assembly for a file +SafeRNG.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SafeRNG.cpp.s +.PHONY : SafeRNG.cpp.s + +ServerCore.o: ServerCore.cpp.o +.PHONY : ServerCore.o + +# target to build an object file +ServerCore.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerCore.cpp.o +.PHONY : ServerCore.cpp.o + +ServerCore.i: ServerCore.cpp.i +.PHONY : ServerCore.i + +# target to preprocess a source file +ServerCore.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerCore.cpp.i +.PHONY : ServerCore.cpp.i + +ServerCore.s: ServerCore.cpp.s +.PHONY : ServerCore.s + +# target to generate assembly for a file +ServerCore.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerCore.cpp.s +.PHONY : ServerCore.cpp.s + +ServerLogger.o: ServerLogger.cpp.o +.PHONY : ServerLogger.o + +# target to build an object file +ServerLogger.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerLogger.cpp.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/ServerLogger.cpp.o +.PHONY : ServerLogger.cpp.o + +ServerLogger.i: ServerLogger.cpp.i +.PHONY : ServerLogger.i + +# target to preprocess a source file +ServerLogger.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerLogger.cpp.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/ServerLogger.cpp.i +.PHONY : ServerLogger.cpp.i + +ServerLogger.s: ServerLogger.cpp.s +.PHONY : ServerLogger.s + +# target to generate assembly for a file +ServerLogger.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerLogger.cpp.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/ServerLogger.cpp.s +.PHONY : ServerLogger.cpp.s + +ServerProcessor.o: ServerProcessor.cpp.o +.PHONY : ServerProcessor.o + +# target to build an object file +ServerProcessor.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerProcessor.cpp.o +.PHONY : ServerProcessor.cpp.o + +ServerProcessor.i: ServerProcessor.cpp.i +.PHONY : ServerProcessor.i + +# target to preprocess a source file +ServerProcessor.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerProcessor.cpp.i +.PHONY : ServerProcessor.cpp.i + +ServerProcessor.s: ServerProcessor.cpp.s +.PHONY : ServerProcessor.s + +# target to generate assembly for a file +ServerProcessor.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/ServerProcessor.cpp.s +.PHONY : ServerProcessor.cpp.s + +SessionManager.o: SessionManager.cpp.o +.PHONY : SessionManager.o + +# target to build an object file +SessionManager.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SessionManager.cpp.o +.PHONY : SessionManager.cpp.o + +SessionManager.i: SessionManager.cpp.i +.PHONY : SessionManager.i + +# target to preprocess a source file +SessionManager.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SessionManager.cpp.i +.PHONY : SessionManager.cpp.i + +SessionManager.s: SessionManager.cpp.s +.PHONY : SessionManager.s + +# target to generate assembly for a file +SessionManager.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SessionManager.cpp.s +.PHONY : SessionManager.cpp.s + +SyncFileReceiver.o: SyncFileReceiver.cpp.o +.PHONY : SyncFileReceiver.o + +# target to build an object file +SyncFileReceiver.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.o +.PHONY : SyncFileReceiver.cpp.o + +SyncFileReceiver.i: SyncFileReceiver.cpp.i +.PHONY : SyncFileReceiver.i + +# target to preprocess a source file +SyncFileReceiver.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.i +.PHONY : SyncFileReceiver.cpp.i + +SyncFileReceiver.s: SyncFileReceiver.cpp.s +.PHONY : SyncFileReceiver.s + +# target to generate assembly for a file +SyncFileReceiver.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/SyncFileReceiver.cpp.s +.PHONY : SyncFileReceiver.cpp.s + +TestLogger.o: TestLogger.cpp.o +.PHONY : TestLogger.o + +# target to build an object file +TestLogger.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/TestLogger.cpp.o +.PHONY : TestLogger.cpp.o + +TestLogger.i: TestLogger.cpp.i +.PHONY : TestLogger.i + +# target to preprocess a source file +TestLogger.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/TestLogger.cpp.i +.PHONY : TestLogger.cpp.i + +TestLogger.s: TestLogger.cpp.s +.PHONY : TestLogger.s + +# target to generate assembly for a file +TestLogger.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/logger_test.dir/build.make CMakeFiles/logger_test.dir/TestLogger.cpp.s +.PHONY : TestLogger.cpp.s + +UNSResponseBuilder.o: UNSResponseBuilder.cpp.o +.PHONY : UNSResponseBuilder.o + +# target to build an object file +UNSResponseBuilder.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.o +.PHONY : UNSResponseBuilder.cpp.o + +UNSResponseBuilder.i: UNSResponseBuilder.cpp.i +.PHONY : UNSResponseBuilder.i + +# target to preprocess a source file +UNSResponseBuilder.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.i +.PHONY : UNSResponseBuilder.cpp.i + +UNSResponseBuilder.s: UNSResponseBuilder.cpp.s +.PHONY : UNSResponseBuilder.s + +# target to generate assembly for a file +UNSResponseBuilder.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/UNSResponseBuilder.cpp.s +.PHONY : UNSResponseBuilder.cpp.s + +WebFileInfo.o: WebFileInfo.cpp.o +.PHONY : WebFileInfo.o + +# target to build an object file +WebFileInfo.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/WebFileInfo.cpp.o +.PHONY : WebFileInfo.cpp.o + +WebFileInfo.i: WebFileInfo.cpp.i +.PHONY : WebFileInfo.i + +# target to preprocess a source file +WebFileInfo.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/WebFileInfo.cpp.i +.PHONY : WebFileInfo.cpp.i + +WebFileInfo.s: WebFileInfo.cpp.s +.PHONY : WebFileInfo.s + +# target to generate assembly for a file +WebFileInfo.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/unswsc.dir/build.make CMakeFiles/unswsc.dir/WebFileInfo.cpp.s +.PHONY : WebFileInfo.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... rebuild" + @echo "... logger_test" + @echo "... unswsc" + @echo "... CORSConfig.o" + @echo "... CORSConfig.i" + @echo "... CORSConfig.s" + @echo "... CORSProcessor.o" + @echo "... CORSProcessor.i" + @echo "... CORSProcessor.s" + @echo "... DataTransfer.o" + @echo "... DataTransfer.i" + @echo "... DataTransfer.s" + @echo "... DateTime.o" + @echo "... DateTime.i" + @echo "... DateTime.s" + @echo "... FileReceiver.o" + @echo "... FileReceiver.i" + @echo "... FileReceiver.s" + @echo "... Global.o" + @echo "... Global.i" + @echo "... Global.s" + @echo "... HTTPObjects.o" + @echo "... HTTPObjects.i" + @echo "... HTTPObjects.s" + @echo "... IPList.o" + @echo "... IPList.i" + @echo "... IPList.s" + @echo "... IPTable.o" + @echo "... IPTable.i" + @echo "... IPTable.s" + @echo "... LogArg.o" + @echo "... LogArg.i" + @echo "... LogArg.s" + @echo "... PathTraversal.o" + @echo "... PathTraversal.i" + @echo "... PathTraversal.s" + @echo "... SafeRNG.o" + @echo "... SafeRNG.i" + @echo "... SafeRNG.s" + @echo "... ServerCore.o" + @echo "... ServerCore.i" + @echo "... ServerCore.s" + @echo "... ServerLogger.o" + @echo "... ServerLogger.i" + @echo "... ServerLogger.s" + @echo "... ServerProcessor.o" + @echo "... ServerProcessor.i" + @echo "... ServerProcessor.s" + @echo "... SessionManager.o" + @echo "... SessionManager.i" + @echo "... SessionManager.s" + @echo "... SyncFileReceiver.o" + @echo "... SyncFileReceiver.i" + @echo "... SyncFileReceiver.s" + @echo "... TestLogger.o" + @echo "... TestLogger.i" + @echo "... TestLogger.s" + @echo "... UNSResponseBuilder.o" + @echo "... UNSResponseBuilder.i" + @echo "... UNSResponseBuilder.s" + @echo "... WebFileInfo.o" + @echo "... WebFileInfo.i" + @echo "... WebFileInfo.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/cmake_install.cmake b/build/cmake_install.cmake new file mode 100644 index 0000000..762fbdb --- /dev/null +++ b/build/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: /home/unknownobject/UNSWebServerCore + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/unknownobject/UNSWebServerCore/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/build/copy_headers.sh b/build/copy_headers.sh new file mode 100755 index 0000000..03eda38 --- /dev/null +++ b/build/copy_headers.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# 确保脚本在遇到错误时停止执行 +set -e + +# 定义路径 +TARGET_DIR="./unswsc" +SOURCE_DIR=".." + +echo "开始查找并复制头文件..." + +# 1. 如果目标文件夹已存在,先清空它(确保没有旧的残留文件);如果不存在则创建 +if [ -d "$TARGET_DIR" ]; then + echo "清理旧的 $TARGET_DIR 目录..." + rm -rf "$TARGET_DIR"/* +else + mkdir -p "$TARGET_DIR" +fi + +# 2. 查找上级目录中所有包含 UNSWSC_DLL_EXPORT 的 .h 文件并复制 +# -type f: 只找文件 +# -name "*.h": 限制扩展名为 .h +# grep -l: 只输出包含该关键字的文件名 +find "$SOURCE_DIR" -type f -name "*.h" | while read -r header_file; do + if grep -q "UNSWSC_DLL_EXPORT" "$header_file"; then + echo "发现匹配文件: $header_file" + # 复制到目标文件夹(此处直接平铺复制,不保留原有的复杂目录结构) + cp "$header_file" "$TARGET_DIR/" + fi +done + +echo "===========================================" +echo "所有匹配的头文件已成功复制到: $TARGET_DIR" +ls -l "$TARGET_DIR" \ No newline at end of file diff --git a/build/copy_libs.sh b/build/copy_libs.sh new file mode 100755 index 0000000..30cf7be --- /dev/null +++ b/build/copy_libs.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# 确保脚本在遇到错误时停止执行 +set -e + +# 定义路径 +TARGET_DIR="./so" +SRC_PARENT_SO="../so" +SRC_CURRENT_SO="./libunswsc.so" + +echo "开始收集动态链接库 (.so 文件)..." + +# 1. 如果目标文件夹已存在,先清空它;如果不存在则创建 +if [ -d "$TARGET_DIR" ]; then + echo "清理旧的 $TARGET_DIR 目录..." + rm -rf "$TARGET_DIR"/* +else + mkdir -p "$TARGET_DIR" +fi + +# 2. 复制上级目录 so 文件夹下的所有 .so 文件(如果该目录存在的话) +if [ -d "$SRC_PARENT_SO" ]; then + # 检查里面是否有 .so 文件,防止因空目录报错 + if ls "$SRC_PARENT_SO"/*.so >/dev/null 2>&1; then + echo "正在从 $SRC_PARENT_SO 复制所有 .so 文件..." + cp "$SRC_PARENT_SO"/*.so "$TARGET_DIR/" + else + echo "提示: 上级目录 $SRC_PARENT_SO 中未找到 .so 文件。" + fi +else + echo "警告: 未找到上级目录的 so 文件夹 ($SRC_PARENT_SO)" +fi + +# 3. 复制当前 build 目录下的 libunswsc.so +if [ -f "$SRC_CURRENT_SO" ]; then + echo "正在复制当前目录的 $SRC_CURRENT_SO ..." + cp "$SRC_CURRENT_SO" "$TARGET_DIR/" +else + echo "错误: 未在当前目录找到 $SRC_CURRENT_SO 文件,请确保项目已成功编译!" + exit 1 +fi + +echo "===========================================" +echo "所有动态库已成功汇总到: $TARGET_DIR" +ls -lh "$TARGET_DIR" \ No newline at end of file diff --git a/build/gen.sh b/build/gen.sh new file mode 100755 index 0000000..c9bd7f0 --- /dev/null +++ b/build/gen.sh @@ -0,0 +1,4 @@ +cmake -G"Unix Makefiles" \ + -DCMAKE_TOOLCHAIN_FILE=/home/unknownobject/vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DVCPKG_TARGET_TRIPLET=x64-linux \ + .. diff --git a/build/libunswsc.so b/build/libunswsc.so new file mode 100755 index 0000000..70f901d Binary files /dev/null and b/build/libunswsc.so differ diff --git a/build/logger_test b/build/logger_test new file mode 100755 index 0000000..a9e4384 Binary files /dev/null and b/build/logger_test differ diff --git a/build/rebuild.sh b/build/rebuild.sh new file mode 100755 index 0000000..667b7d5 --- /dev/null +++ b/build/rebuild.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +echo " _ _ _ _ ____ __ __ _ ____ ____ " +echo " | | | | \\ | / ___| \\ \\ / /__| |__ / ___| ___ _ ____ _____ _ __ / ___|___ _ __ ___ " +echo " | | | | \\| \\___ \\ \\ \\ /\\ / / _ \\ '_ \\ \\___ \\ / _ \\ '__\\ \\ / / _ \\ '__| | | / _ \\| '__/ _ \\" +echo " | |_| | |\\ |___) | \\ V V / __/ |_) | ___) | __/ | \\ V / __/ | | |__| (_) | | | __/" +echo " \\___/|_| \\_|____/ \\_/\\_/ \\___|_.__/ |____/ \\___|_| \\_/ \\___|_| \\____\\___/|_| \\___|" +echo " " + +echo ">>> CMake Configuration <<<" +./gen.sh +if [ $? -ne 0 ]; then + echo " _____ _ _ _ _____ ____ _ __ __ _ __ _ _ " + echo " | ___|_ _(_) | ___ __| | |_ _|__ / ___| ___ _ __ ___ _ __ __ _| |_ ___ | \\/ | __ _| | _____ / _(_) | ___ " + echo " | |_ / _\` | | |/ _ \\/ _\` | | |/ _ \\ | | _ / _ \\ '_ \\ / _ \\ '__/ _\` | __/ _ \\ | |\\/| |/ _\` | |/ / _ \\ |_| | |/ _ \\" + echo " | _| (_| | | | __/ (_| | | | (_) | | |_| | __/ | | | __/ | | (_| | || __/ | | | | (_| | < __/ _| | | __/" + echo " |_| \\__,_|_|_|\\___|\\__,_| |_|\\___/ \\____|\\___|_| |_|\\___|_| \\__,_|\\__\\___| |_| |_|\\__,_|_|\\_\\___|_| |_|_|\\___|" + echo " " + exit 1 +fi + +# Step 2: Run make rebuild +echo ">>> Recompiling Project <<<" +make rebuild +if [ $? -ne 0 ]; then + echo " __ __ _ ____ _ _ _ _ _____ _ _ _ " + echo " | \\/ | __ _| | _____ | _ \\ ___| |__ _ _(_) | __| | | ___|_ _(_) | ___ __| |" + echo " | |\\/| |/ _\` | |/ / _ \\ | |_) / _ \\ '_ \\| | | | | |/ _\` | | |_ / _\` | | |/ _ \\/ _\` |" + echo " | | | | (_| | < __/ | _ < __/ |_) | |_| | | | (_| | | _| (_| | | | __/ (_| |" + echo " |_| |_|\\__,_|_|\\_\\___| |_| \\_\\___|_.__/ \\__,_|_|_|\\__,_| |_| \\__,_|_|_|\\___|\\__,_|" + echo " " + exit 1 +else + echo ">>> Copy Header Files <<<" + ./copy_headers.sh + if [ $? -ne 0 ]; then + exit 1 + fi + echo ">>> Copy Dynamic Library <<<" + ./copy_libs.sh + if [ $? -ne 0 ]; then + exit 1 + fi + echo ">>> Auto Deploy Finished <<<" +fi + +echo " ____ _ _ _ ____ _ _ _ ____ __ _ _ " +echo " | __ ) _ _(_) | __| | / ___|___ _ __ ___ _ __ | | ___| |_ ___ __| | / ___| _ _ ___ ___ ___ ___ ___ / _|_ _| | |_ _ " +echo " | _ \\| | | | | |/ _\` | | | / _ \\| '_ \` _ \\| '_ \\| |/ _ \\ __/ _ \\/ _\` | \\___ \\| | | |/ __/ __/ _ \\/ __/ __| |_| | | | | | | | |" +echo " | |_) | |_| | | | (_| | | |__| (_) | | | | | | |_) | | __/ || __/ (_| | ___) | |_| | (_| (_| __/\\__ \\__ \\ _| |_| | | | |_| |" +echo " |____/ \\__,_|_|_|\\__,_| \\____\\___/|_| |_| |_| .__/|_|\\___|\\__\\___|\\__,_| |____/ \\__,_|\\___\\___\\___||___/___/_| \\__,_|_|_|\\__, |" +echo " |_| |___/ " \ No newline at end of file diff --git a/build/so/libunswsc.so b/build/so/libunswsc.so new file mode 100755 index 0000000..70f901d Binary files /dev/null and b/build/so/libunswsc.so differ diff --git a/build/so/libuohash.so b/build/so/libuohash.so new file mode 100755 index 0000000..08753bc Binary files /dev/null and b/build/so/libuohash.so differ diff --git a/build/so/libutextcodec.so b/build/so/libutextcodec.so new file mode 100755 index 0000000..ca38df6 Binary files /dev/null and b/build/so/libutextcodec.so differ diff --git a/build/unswsc/CORSConfig.h b/build/unswsc/CORSConfig.h new file mode 100644 index 0000000..afc3009 --- /dev/null +++ b/build/unswsc/CORSConfig.h @@ -0,0 +1,47 @@ +#include +#include +#include "Export.h" + +class UNSWSC_DLL_EXPORT CORSConfig +{ +private: + int max_age; + bool allow_cookie; + std::set validate_urls; + std::set validate_hosts; + std::set validate_headers; + std::set validate_methods; + +public: + CORSConfig(); + +public: + int GetMaxAge() const; + bool AllowCookie() const; + std::string GetValidateMethods() const; + bool UrlValidate(const std::string& url) const; + bool HostValidate(const std::string& host) const; + bool IsMethodAllowed(const std::string method) const; + std::string GetValidateHeaders(const std::set& headers = {}) const; + +public: + void SetMaxAge(int max_age); + void SetAllowCookie(bool allow); + + void ClearValidateUrls(); + void ClearValidateHosts(); + void ClearValidateMethods(); + void ClearValidateHeaders(); + + void AddValidateUrl(const std::string& url); + void AddValidateHost(const std::string& host); + void AddValidateMethod(const std::string& method); + void AddValidateHeader(const std::string& header); + + void AddValidateUrls(const std::set& urls); + void AddValidateHosts(const std::set& hosts); + void AddValidateMethods(const std::set& methods); + void AddValidateHeaders(const std::set& headers); +}; + +extern UNSWSC_DLL_EXPORT CORSConfig GlobalCORSConfig; \ No newline at end of file diff --git a/build/unswsc/DataTransfer.h b/build/unswsc/DataTransfer.h new file mode 100644 index 0000000..9bf5461 --- /dev/null +++ b/build/unswsc/DataTransfer.h @@ -0,0 +1,41 @@ +#pragma once +#include +#include +#include "Export.h" + +class UNSWSC_DLL_EXPORT DataTransfer +{ +private: + std::string temp_root; + std::map files; + +public: + DataTransfer(const std::string& tr = ""); + +public: + void Init(const std::string& tr); + bool ItemExist(const std::string& file); + bool InsertItem(const std::string& file); + bool RemoveItem(const std::string& file); + bool ItemValidate(const std::string& file); + void DeactivateItem(const std::string& file); + bool CopyItemTo(const std::string& file, const std::string& dest_path); + bool CopyItemAS(const std::string& file, const std::string& dest); + +public: + bool RemoveAllCacheFiles(); + std::string MakePath(const std::string& file); +}; + +extern UNSWSC_DLL_EXPORT DataTransfer GlobalDataTransfer; + +#define GDT_INIT(__tr__) GlobalDataTransfer.Init(__tr__) +#define GDT_ADDITEM(__file__) GlobalDataTransfer.InsertItem(__file__) +#define GDT_DELETEITEM(__file__) GlobalDataTransfer.RemoveItem(__file__) +#define GDT_ITEMEXIST(__file__) GlobalDataTransfer.ItemExist(__file__) +#define GDT_ITEMVALIDATE(__file__) GlobalDataTransfer.ItemValidate(__file__) +#define GDT_DEACTIVEITEM(__file__) GlobalDataTransfer.DeactivateItem(__file__) +#define GDT_GETFULLPATH(__file__ ) GlobalDataTransfer.MakePath(__file__) +#define GDT_CLEAR_ALL_CACHE() GlobalDataTransfer.RemoveAllCacheFiles() +#define GDT_COPY_TO(__file__, __dest_path__) GlobalDataTransfer.CopyItemTo(__file__, __dest_path__) +#define GDT_COPY_AS(__file__, __dest_path__) GlobalDataTransfer.CopyItemAS(__file__, __dest_path__) \ No newline at end of file diff --git a/build/unswsc/DateTime.h b/build/unswsc/DateTime.h new file mode 100644 index 0000000..d9c743d --- /dev/null +++ b/build/unswsc/DateTime.h @@ -0,0 +1,122 @@ +#pragma once +#include +#include +#include "Export.h" + +class UNSWSC_DLL_EXPORT DateTime +{ +public: + struct UNSWSC_DLL_EXPORT Full + { + int year, month, day, hour, minute, second; + }; + + struct UNSWSC_DLL_EXPORT Span + { + int days, hours, minutes, seconds; + }; + +private: + time_t storage; + Full sep_time; + +private: + // 移除了硬编码的秒数常量,内部改用 std::chrono 处理 + void UpdateDT(); + time_t FormatConvert(int year, int month, int day, int hour, int minute, int second); + time_t SpanedSeconds(Span sp); + Span ToSpan(time_t tim); + +public: + DateTime(); + DateTime(time_t t); + DateTime(const tm& stm); + DateTime(const Full& ftm); + DateTime(const DateTime& obj); + DateTime(int year, int month, int day, int hour = 0, int minute = 0, int second = 0); + +public: + static DateTime Now(); + +public: + int GetYear() const; + int GetMonth() const; + int GetDay() const; + int GetHour() const; + int GetMinute() const; + int GetSecond() const; + time_t GetTimeStamp() const; + Full GetFullDateTime() const; + std::string Format(std::string fmt_str); + +public: + bool IsAM(); + bool IsPM(); + bool TimePassed(); + +public: + operator tm(); + operator Full(); + operator time_t(); + operator std::string(); + + Span operator-(const tm& stm); + Span operator-(const Span& ts); + Span operator-(const Full& sdt); + Span operator-(const time_t& t); + Span operator-(const DateTime& dt); + + Span operator+(const tm& stm); + Span operator+(const Span& ts); + Span operator+(const Full& sdt); + Span operator+(const time_t& t); + Span operator+(const DateTime& dt); + + DateTime operator=(const tm& stm); + DateTime operator=(const Full& sdt); + DateTime operator=(const time_t& t); + DateTime operator=(const DateTime& dt); + + DateTime operator+=(const tm& stm); + DateTime operator+=(const Span& ts); + DateTime operator+=(const Full& sdt); + DateTime operator+=(const time_t& t); + DateTime operator+=(const DateTime& dt); + + DateTime operator-=(const tm& stm); + DateTime operator-=(const Span& ts); + DateTime operator-=(const Full& sdt); + DateTime operator-=(const time_t& t); + DateTime operator-=(const DateTime& dt); + + bool operator==(const tm& stm); + bool operator==(const Full& sdt); + bool operator==(const time_t& t); + bool operator==(const DateTime& dt); + + bool operator!=(const tm& stm); + bool operator!=(const Full& sdt); + bool operator!=(const time_t& t); + bool operator!=(const DateTime& dt); + + bool operator>(const tm& stm); + bool operator>(const Full& sdt); + bool operator>(const time_t& t); + bool operator>(const DateTime& dt); + + bool operator>=(const tm& stm); + bool operator>=(const Full& sdt); + bool operator>=(const time_t& t); + bool operator>=(const DateTime& dt); + + bool operator<(const tm& stm); + bool operator<(const Full& sdt); + bool operator<(const time_t& t); + bool operator<(const DateTime& dt); + bool operator<(const DateTime& dt) const; + + bool operator<=(const tm& stm); + bool operator<=(const Full& sdt); + bool operator<=(const time_t& t); + bool operator<=(const DateTime& dt); +}; \ No newline at end of file diff --git a/build/unswsc/Export.h b/build/unswsc/Export.h new file mode 100644 index 0000000..cf9e4f2 --- /dev/null +++ b/build/unswsc/Export.h @@ -0,0 +1,15 @@ +#ifdef _WINDOWS + #ifdef UNSWEBSERVERCORE_EXPORTS + #define UNSWSC_DLL_EXPORT __declspec(dllexport) + #else + #define UNSWSC_DLL_EXPORT __declspec(dllimport) + #ifdef _DEBUG + #pragma comment(lib, "UNSWebServerCored.lib") + #else + #pragma comment(lib, "UNSWebServerCore.lib") + #endif + #endif + #pragma warning(disable: 4251) +#else + #define UNSWSC_DLL_EXPORT __attribute__((visibility("default"))) +#endif \ No newline at end of file diff --git a/build/unswsc/FileReceiver.h b/build/unswsc/FileReceiver.h new file mode 100644 index 0000000..e1b782a --- /dev/null +++ b/build/unswsc/FileReceiver.h @@ -0,0 +1,44 @@ +#pragma once +#include "Global.h" +#include "IPTable.h" +#include +#include "WebFileInfo.h" +#include "HTTPObjects.h" + +using FileProcessorCallback = std::function; + +class UNSWSC_DLL_EXPORT FileReceiver +{ +protected: + class Impl; + std::unique_ptr pimpl; + +public: + FileReceiver(); + virtual ~FileReceiver(); // 基类必须有虚析构函数! + +public: + bool CallFileProcesser(); + void SetResponseMode(bool html); + void SetCORSEnable(bool enable); + std::string EncodeUploadResult(); + std::string EncodeUploadResultHTML(); + void UpdateBlockedIPs(IPTablePtr ip); + void SetTempRoot(std::string temp_root); + void SetFileCallback(FileProcessorCallback fpcb); + uns::HTTPMethod GetMethod(uns::RequestPtr request); + void AppenedBlockedIP(DateTime::Span block_time, std::string ip); + bool WriteFile(const std::string& path, const std::string& bytes); + +public: + virtual uns::Status PreCheckRequest(uns::RequestPtr request) = 0; + virtual bool PreCheckForm(uns::FormPartPtr form) = 0; + virtual uns::PathTraversalDefenceLevel PTDefence(); + virtual bool IsPathSafe(const std::string& raw_path); + +public: + // 核心驱动入口:供内部适配器调用的实际执行流 + uns::ResponsePtr Execute(uns::RequestPtr request); +}; + +using FileReceiverPtr = std::shared_ptr; \ No newline at end of file diff --git a/build/unswsc/Global.h b/build/unswsc/Global.h new file mode 100644 index 0000000..21cb029 --- /dev/null +++ b/build/unswsc/Global.h @@ -0,0 +1,155 @@ +#pragma once +#include +#include +#include +#include "Export.h" +#include "DateTime.h" + +#pragma warning(disable : 4455) + +#define G_SERVER_VERSION "2.0.0" + +constexpr double G_SERVICE_UPDATE_TIMESPAN = 1000; + +#define G_SERVER_NAME "U.N.S. Server Core/" G_SERVER_VERSION + +constexpr auto G_SERVICE_NAME = "UNS_HTTP_ServerCore"; + +constexpr auto G_ERROR_PAGE = R"( + + + + HTTP {:03d} + + +
+

HTTP ERROR {:03d}

+
+

{}

+
+ + +)"; + +// inline constexpr std::string_view G_HTTP_STD_MONTH[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + +// inline constexpr std::string_view G_HTTP_STD_WEEK[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; + +namespace uns +{ + enum HTTPMethod + { + H_GET = 0b0000000001, + H_PUT = 0b0000000010, + H_POST = 0b0000000100, + H_HEAD = 0b0000001000, + H_TRACE = 0b0000010000, + H_PATCH = 0b0000100000, + H_DELETE = 0b0001000000, + H_OPTIONS = 0b0010000000, + H_CONNECT = 0b0100000000, + H_UNKNOWN = 0b1000000000, + H_ALL_ENABLED = 0b1111111111 + }; + + namespace cors + { + inline constexpr std::string_view reqh_o = "Origin"; + inline constexpr std::string_view reqh_acrm = "Access-Control-Request-Method"; + inline constexpr std::string_view reqh_acrh = "Access-Control-Request-Headers"; + + inline constexpr std::string_view resh_acao = "Access-Control-Allow-Origin"; + inline constexpr std::string_view resh_acam = "Access-Control-Allow-Methods"; + inline constexpr std::string_view resh_acah = "Access-Control-Allow-Headers"; + inline constexpr std::string_view resh_acac = "Access-Control-Allow-Credentials"; + inline constexpr std::string_view resh_acma = "Access-Control-Max-Age"; + }; + + using POSTArgs = std::map; + + std::string UNSWSC_DLL_EXPORT EncodeErrorPage(int code); + std::string UNSWSC_DLL_EXPORT EncodeHTTPTime(time_t* time); + + std::string UNSWSC_DLL_EXPORT btos(bool val); + bool UNSWSC_DLL_EXPORT stob(const std::string& obj); + DateTime UNSWSC_DLL_EXPORT stot(const std::string& obj); + std::string UNSWSC_DLL_EXPORT RestoreURL(const std::string& url); + void UNSWSC_DLL_EXPORT Stringsplit(const std::string& str, const std::string& splits, std::vector& res); + void UNSWSC_DLL_EXPORT ProcessPOSTArgs(const std::string& args, POSTArgs& args_output); + + namespace tools + { + //基于SHA3-256,无暴力破解防护能力,不建议使用 + std::string UNSWSC_DLL_EXPORT EncryptPassword(const std::string reg_date, const std::string& password); + //安全的密码加密函数,基于libsodium + std::string UNSWSC_DLL_EXPORT EncryptPasswordSodium(const std::string& pwd); + //密码检查函数 + bool UNSWSC_DLL_EXPORT CheckPasswordSodium(const std::string& pwd, const std::string& encrypted); + + //安全随机数 + std::string UNSWSC_DLL_EXPORT SecureRandomHex(size_t bytes); + + std::string UNSWSC_DLL_EXPORT ToUpper(const std::string& s); + std::string UNSWSC_DLL_EXPORT ToLower(const std::string& s); + + std::string UNSWSC_DLL_EXPORT CalculateFileHashSHA256(const std::string& file); + } + + namespace secure + { + /** + * @brief 基于物理与逻辑边界的路径穿透(目录穿越)安全校验 + * @param safe_path 允许访问的沙盒根目录(绝对或相对路径均可) + * @param requested_path 客户端传入的、解码后的目标子路径 + * @return true 安全(在沙盒内);false 不安全(企图穿越或路径非法) + */ + bool IsSafePath(const std::string& safe_path, const std::string& requested_path); + } +}; + +#undef MIN + +inline constexpr unsigned long long operator""B(unsigned long long n) +{ + return n; +} + +inline constexpr unsigned long long operator""KB(unsigned long long n) +{ + return (n * 1024); +} + +inline constexpr unsigned long long operator""MB(unsigned long long n) +{ + return (n * 1024 * 1024); +} + +inline constexpr unsigned long long operator""GB(unsigned long long n) +{ + return (n * 1024 * 1024 * 1024); +} + +inline constexpr unsigned long long operator""TB(unsigned long long n) +{ + return (n * 1024 * 1024 * 1024 * 1024); +} + +inline constexpr time_t operator""S(unsigned long long t) +{ + return t; +} + +inline constexpr time_t operator""MIN(unsigned long long t) +{ + return (t * 60); +} + +inline constexpr time_t operator""HOUR(unsigned long long t) +{ + return (t * 60 * 60); +} + +inline constexpr time_t operator""DAY(unsigned long long t) +{ + return (t * 60 * 60 * 24); +} diff --git a/build/unswsc/HTTPObjects.h b/build/unswsc/HTTPObjects.h new file mode 100644 index 0000000..0da37c8 --- /dev/null +++ b/build/unswsc/HTTPObjects.h @@ -0,0 +1,336 @@ +#pragma once + +#include +#include +#include +#include +#include "Export.h" +#include + +class FileReceiver; + +namespace uns +{ + // HTTP status codes. + // Don't use "enum class" for converting to/from int easily. + // The full list is available here: + // https://en.wikipedia.org/wiki/List_of_HTTP_status_codes + enum Status + { + // 此临时响应表明客户端应继续请求,或者如果请求已完成,则忽略此响应。 + kContinue = 100, + // 此代码是在响应客户端的 Upgrade 请求标头时发送的,用于指示服务器即将切换到的协议。 + kSwitchingProtocols = 101, + // 此代码曾在 WebDAV 上下文中使用,表示服务器已收到请求,但在响应时无法提供状态。 + kProcessing = 102, + // 此状态码主要与 Link 标头一起使用,允许用户代理在服务器准备响应时开始预加载资源,或预连接到页面需要资源的源站。 + kEarlyHints = 103, + + // 请求成功。 + kOK = 200, + // 请求成功,并因此创建了一个新资源。 + kCreated = 201, + // 请求已被接收但尚未处理。 + kAccepted = 202, + // 此响应代码表示返回的元数据与原始服务器上可用的不完全相同,而是从本地或第三方副本收集的。这主要用于另一个资源的镜像或备份。 + kNonAuthoritativeInformation = 203, + // 对于此请求,没有内容可发送,但响应头可能有用。 + kNoContent = 204, + // 告知用户代理重置发送此请求的文档。 + kResetContent = 205, + // 当客户端请求了资源的一部分时,使用此响应代码进行响应。 + kPartialContent = 206, + // 在可能需要多个状态码的情况下,传递关于多个资源的信息。 + kMultiStatus = 207, + // 在 响应元素内部使用,以避免重复枚举同一集合的多个绑定的内部成员。 + kAlreadyReported = 208, + // 服务器已完成了对资源的 GET 请求,并且响应是对当前实例应用了一个或多个实例操作后的结果表示。 + kIMUsed = 226, + + // 在代理驱动(agent-driven)的内容协商中,请求有多个可能的响应,用户代理或用户应选择其中之一。 + kMultipleChoices = 300, + // 请求资源的 URL 已永久更改。新 URL 在响应中给出。 + kMovedPermanently = 301, + // 此响应代码意味着请求资源的 URI 已暂时更改。未来可能还会对 URI 进行进一步更改,因此客户端在未来的请求中应使用相同的 URI。 + kFound = 302, + // 服务器发送此响应以指示客户端使用 GET 请求在另一个 URI 获取请求的资源。 + kSeeOther = 303, + // 用于缓存目的。它告知客户端响应未被修改,因此客户端可以继续使用相同的缓存响应版本。 + kNotModified = 304, + // 在 HTTP 规范的前一版本中定义,表示请求的响应必须通过代理访问。由于涉及代理带内配置的安全问题,此状态码已被弃用。 + kUseProxy = 305, + // 此响应代码不再使用,但被保留。它曾在 HTTP/1.1 规范的先前版本中使用。 + k__Unused = 306, + // 服务器发送此响应以指示客户端使用与先前请求相同的方法在另一个 URI 获取请求的资源。其语义与 302 Found 响应代码相同,但用户代理不得更改使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在重定向请求中也必须使用 POST。 + kTemporaryRedirect = 307, + // 表示资源现在永久位于另一个 URI,由 Location 响应头指定。其语义与 301 Moved Permanently HTTP 响应代码相同,但用户代理不得更改使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在第二个请求中也必须使用 POST。 + kPermanentRedirect = 308, + + // 由于被认为是客户端错误的原因(例如,格式错误的请求语法、无效的请求消息结构或欺骗性的请求路由),服务器无法或不会处理该请求。 + kBadRequest = 400, + // 尽管 HTTP 标准指定为 "unauthorized",但从语义上讲,此响应的意思是 "unauthenticated"。即,客户端必须进行身份验证才能获得请求的响应。 + kUnauthorized = 401, + // 此代码最初用于数字支付系统,但此状态码很少使用,且不存在标准约定。 + kPaymentRequired = 402, + // 客户端没有访问内容的权利;也就是说,它是未授权的,因此服务器拒绝提供请求的资源。与 401 Unauthorized 不同,服务器知道客户端的身份。 + kForbidden = 403, + // 服务器找不到请求的资源。 + kNotFound = 404, + // 服务器知道请求方法,但目标资源不支持该方法。 + kMethodNotAllowed = 405, + // 当 Web 服务器执行服务器驱动的内容协商后,找不到任何符合用户代理给定条件的内容时,会发送此响应。 + kNotAcceptable = 406, + // 类似于 401 Unauthorized,但需要通过代理进行身份验证。 + kProxyAuthenticationRequired = 407, + // 某些服务器会在空闲连接上发送此响应,即使客户端之前没有任何请求。这意味着服务器希望关闭此未使用的连接。 + kRequestTimeout = 408, + // 当请求与服务器的当前状态冲突时,发送此响应。 + kConflict = 409, + // 当请求的内容已从服务器永久删除,且没有转发地址时,发送此响应。 + kGone = 410, + // 服务器拒绝了请求,因为未定义 Content-Length 标头字段,而服务器需要它。 + kLengthRequired = 411, + // 在条件请求中,客户端在其标头中指明了服务器不满足的前提条件。 + kPreconditionFailed = 412, + // 请求体大于服务器定义的限制。 + kContentTooLarge = 413, + // 客户端请求的 URI 长度超过了服务器愿意解释的长度。 + kURITooLong = 414, + // 服务器不支持请求数据的媒体格式,因此服务器拒绝该请求。 + kUnsupportedMediaType = 415, + // 无法满足请求中 Range 标头字段指定的范围。可能范围超出了目标资源数据的大小。 + kRangeNotSatisfiable = 416, + // 此响应代码表示服务器无法满足 Expect 请求标头字段指示的期望。 + kExpectationFailed = 417, + // 服务器拒绝尝试用茶壶煮咖啡。 + kIamATeapot = 418, + // 请求被发送到了一个无法产生响应的服务器。 + kMisdirectedRequest = 421, + // 请求格式正确,但由于语义错误而无法被遵循。 + kUnprocessableContent = 422, + // 正在访问的资源已被锁定。 + kLocked = 423, + // 由于先前的请求失败,导致当前请求失败。 + kFailedDependency = 424, + // 表示服务器不愿意冒险处理一个可能被重放的请求。 + kTooEarly = 425, + // 服务器拒绝使用当前协议执行请求,但可能在客户端升级到其他协议后愿意执行。服务器在 426 响应中发送 Upgrade 标头以指示所需的协议。 + kUpgradeRequired = 426, + // 原始服务器要求请求是有条件的。此响应旨在防止"丢失更新"问题,即客户端 GET 资源状态,修改后 PUT 回服务器,而同时第三方已修改了服务器上的状态,导致冲突。 + kPreconditionRequired = 428, + // 用户在给定的时间内发送了太多请求(速率限制)。 + kTooManyRequests = 429, + // 服务器因请求头字段太大而不愿意处理该请求。 + kRequestHeaderFieldsTooLarge = 431, + // 用户代理请求了一个无法合法提供的资源,例如被政府审查的网页。 + kUnavailableForLegalReasons = 451, + + // 服务器遇到了不知道如何处理的情况。此错误是通用性的,表示服务器找不到更合适的 5XX 状态码来响应。 + kInternalServerError = 500, + // 服务器不支持请求方法,无法处理。 + kNotImplemented = 501, + // 此错误响应意味着服务器作为网关或代理时,收到了一个无效的响应。 + kBadGateway = 502, + // 服务器尚未准备好处理请求。 + kServiceUnavailable = 503, + // 当服务器作为网关或代理,无法及时获得响应时,会给出此错误响应。 + kGatewayTimeout = 504, + // 服务器不支持请求中使用的 HTTP 版本。 + kHTTPVersionNotSupported = 505, + // 服务器存在内部配置错误:在内容协商过程中,被选中的变体被配置为自身参与内容协商,这导致在创建响应时出现循环引用。 + kVariantAlsoNegotiates = 506, + // 由于服务器无法存储成功完成请求所需的表示,因此无法对资源执行该方法。 + kInsufficientStorage = 507, + // 服务器在处理请求时检测到无限循环。 + kLoopDetected = 508, + // 客户端请求声明了一个应使用 HTTP 扩展(RFC 2774)来处理请求,但该扩展不受支持。 + kNotExtended = 510, + // 表示客户端需要进行身份验证才能获得网络访问权限。 + kNetworkAuthenticationRequired = 511, + + //Not Standard Code By UnknownObject + + // 请求载体的格式错误,如:无法解析的JSON等。 + k_uRequestFormatError = 489, + // 请求无效。可能是由于未正确携带数据等必要信息。 + k_uRequestInvalid = 490, + // 请求URL超范围。此响应表示请求的URL是错误的。 + k_uURLOutOfRange = 492, + // 无效的请求主机。指示请求时使用了错误的域名/IP。 + k_uInvalidRequestHost = 493, + // IP地址被封禁。 + k_uIPBlocked = 494, + // 非法上传请求。指示本次上传请求不符合服务器规定。 + k_uIllegalUpload = 495, + // 文件格式错误。指示上传的文件格式不符合服务器规定。 + k_uFileFormatError = 496, + // 无效文件。处理请求所需的文件已过期/无法访问。 + k_uInvalidFile = 497, + // 上传的文件过大。非文件上传时应使用 413 Content Too Large。 + k_uFileTooLarge = 498, + // 每秒请求数过多。仅在一些特殊API中使用,常规情况需使用 429 Too Many Requests。 + k_uRPSLimited = 499, + + // 子过程失败。服务器在处理请求的某个步骤中遇到无法恢复的错误。 + k_uSubProcessFalied = 533, + // 服务器检测到漏洞利用/可执行文件上传等网络攻击行为。 + k_uServerHateYou = 540, + // 检测到拒绝服务漏洞攻击。 + k_uDoSFound = 550, + // 检测到分布式拒绝服务漏洞攻击。 + k_uDDoSFound = 551, + // 未知的服务器错误。当服务器无法定位错误来源时返回。否则应使用 500 Internal Server Error。 + k_uUnknownServerError = 560 + }; + + // 路径穿透防御等级 + enum class PathTraversalDefenceLevel + { + DenyAll, //拒绝所有带有对应特征的路径 + AutoNormalize, //允许普通路径穿透,自动归一化,并要求进行安全路径检查 + AllowNormal, //允许普通路径穿透,原样返回,要求进行安全路径检查 + AllowAll [[deprecated("警告: AllowAll 已启用 - 路径穿透防御关闭 - 仅供测试环境使用.")]] //允许所有行为(仅供测试) + }; + + class UNSWSC_DLL_EXPORT UrlQuery + { + public: + UrlQuery(); + ~UrlQuery(); + + // 显式支持深拷贝与移动,内部完美同步 webcc 状态 + UrlQuery(const UrlQuery& other); + UrlQuery& operator=(const UrlQuery& other); + UrlQuery(UrlQuery&& other) noexcept; + UrlQuery& operator=(UrlQuery&& other) noexcept; + + public: + bool Empty() const; + std::size_t Size() const; + bool Has(const std::string& key) const; + const std::string& Get(const std::string& key) const; + std::pair Get(std::size_t index) const; + std::string ToString(bool encode = true) const; + + private: + friend class Request; + class Impl; + std::unique_ptr pimpl; + explicit UrlQuery(std::unique_ptr impl); + }; + + class UNSWSC_DLL_EXPORT FormPart + { + private: + class Impl; + + private: + friend class Request; + friend class ::FileReceiver; + + std::unique_ptr pimpl; + + private: + explicit FormPart(std::unique_ptr impl); + + public: + ~FormPart(); + + public: + std::string GetNameS() const; + std::string_view GetName() const; + std::string GetFileNameS() const; + std::string_view GetFileName() const; + std::string GetMediaTypeS() const; + std::string_view GetMediaType() const; + const std::string& GetData() const; + std::size_t GetSize() const; + std::size_t GetDataSize() const; + }; + + using FormPartPtr = std::shared_ptr; + + class UNSWSC_DLL_EXPORT Request + { + private: + class Impl; + friend class ServerCore; + friend class FileReceiverAdapter; + friend class ServerProcessorAdapter; + friend class SyncFileReceiverAdapter; + + std::unique_ptr pimpl; + + private: + explicit Request(std::unique_ptr impl); + + public: + ~Request(); + + Impl* GetImpl() const + { + return pimpl.get(); + } + + public: + // 基础请求信息 + std::string GetMethodS() const; + std::string_view GetMethod() const; + std::string GetAddressS() const; + std::string_view GetAddress() const; + size_t GetContentLength() const; + std::string GetDataS() const; + std::string_view GetData() const; + + // 扁平化后的 Url 核心数据项 + std::string GetSchemeS() const; + std::string_view GetScheme() const; + std::string GetHostS() const; + std::string_view GetHost() const; + int GetPortI() const; + std::string GetPortS() const; + std::string_view GetPort() const; + std::string GetPathS() const; + std::string_view GetPath() const; + std::string GetQueryStringS() const; + std::string_view GetQueryString() const; + + // 复杂复合对象获取 + UrlQuery GetQuery() const; + const std::vector& GetArgs() const; + + // 多部分表单(文件上传)支撑 + bool IsForm() const; + const std::vector& GetFormParts() const; + + // 请求头获取 + bool HasHeader(std::string_view header) const; + std::string GetHeader(std::string_view header, bool* existed = nullptr) const; + std::vector> GetAllHeaders() const; + }; + + class UNSWSC_DLL_EXPORT Response + { + private: + class Impl; + + private: + friend class ResponseBuilder; + + std::unique_ptr pimpl; + + private: + explicit Response(std::unique_ptr impl); + + public: + ~Response(); + + Impl* GetImpl() const + { + return pimpl.get(); + } + }; + + using RequestPtr = std::shared_ptr; + using ResponsePtr = std::shared_ptr; +} \ No newline at end of file diff --git a/build/unswsc/IPList.h b/build/unswsc/IPList.h new file mode 100644 index 0000000..daf71af --- /dev/null +++ b/build/unswsc/IPList.h @@ -0,0 +1,41 @@ +#pragma once +#include +#include +#include "Export.h" +#include + +class UNSWSC_DLL_EXPORT IPList +{ +private: + std::set list; + +private: + bool CheckIPv4(std::string ip); + +public: + IPList(); + IPList(std::initializer_list list); + IPList(const IPList& obj); + +public: + bool Push(std::string ip); + bool Pop(std::string ip); + bool Exist(std::string ip); + bool Exist(std::string ip) const; + bool Empty(); + size_t Size(); + +public: + auto begin(); + auto end(); + auto rbegin(); + auto rend(); + auto begin() const; + auto end() const; + auto rbegin() const; + auto rend() const; + +public: + bool operator<(const IPList& obj) const; +}; + diff --git a/build/unswsc/IPTable.h b/build/unswsc/IPTable.h new file mode 100644 index 0000000..3353e82 --- /dev/null +++ b/build/unswsc/IPTable.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include "IPList.h" +#include "DateTime.h" + +class UNSWSC_DLL_EXPORT IPTable +{ +private: + std::set> storage; + +public: + IPTable(); + IPTable(const IPTable& obj); + +public: + void Appened(DateTime expr_time, IPList list); + void Update(); + bool IPExist(std::string ip); +}; + +using IPTablePtr = IPTable*; +//using IPTablePtr = std::shared_ptr; \ No newline at end of file diff --git a/build/unswsc/LogArg.h b/build/unswsc/LogArg.h new file mode 100644 index 0000000..53f7af5 --- /dev/null +++ b/build/unswsc/LogArg.h @@ -0,0 +1,254 @@ +#pragma once +#include +#include +#include +#include +#include +#include "Export.h" +#include +#include +#include + +namespace uns +{ + // 前置声明捕获器 + struct RangeCapturer; + struct PairCapturer; + struct FuncCapturer; + struct TimeCapturer; + + // 终极 Variant 池:容纳所有可能解包出的原子形态 + using LogVariant = std::variant< + bool, char, int, unsigned int, long long, unsigned long long, double, std::string_view, const void*, + std::string, // 专门用于承载宽字符转换后的 UTF-8 临时字符串 + RangeCapturer, // 专门用于承载 std::vector / std::list 等容器 + PairCapturer, // 专门用于承载 std::pair (支持 std::map) + FuncCapturer, //承载 std::function + TimeCapturer //承载时间 + >; + + // --- 编译期类型推导工具链 --- + template + struct is_container : std::false_type + { + }; + + // 识别标准容器(排除字符串本身) + template + struct is_container().begin()), decltype(std::declval().end())>> : std::integral_constant && !std::is_same_v> + { + }; + + template struct is_pair : std::false_type + { + }; + + template struct is_pair> : std::true_type + { + }; + + // --- 延迟桥接结构体 --- + struct LogArg; + + struct RangeCapturer + { + const void* ptr; + void (*to_log_args)(const void*, std::vector&); + }; + + struct PairCapturer + { + const void* ptr; + void (*to_log_args)(const void*, std::vector&); + }; + + struct FuncCapturer + { + const void* code_ptr; // 真正改变:这里存真正的函数代码地址 + bool is_closure; // 标记:这究竟是个纯函数,还是个 Lambda 闭包 + }; + + // 升级版 Trait:不仅识别,还提取原生函数指针类型(R(*)(Args...)) + template struct function_traits + { + static constexpr bool is_func = false; + using pointer_type = void*; + }; + + template + struct function_traits> + { + static constexpr bool is_func = true; + using pointer_type = R(*)(Args...); // 提取出原生函数指针类型 + }; + + enum class TimeMode + { + Point, + TMPoint, + Duration + }; + + struct TimeCapturer + { + TimeMode mode{ TimeMode::Point }; + + std::tm _tm{}; + std::chrono::system_clock::time_point tp{}; + std::chrono::nanoseconds duration{ 0 }; + + std::string format_spec; // "%Y-%m-%d %H:%M:%S" or empty + + // 可选:单位策略控制 + bool smart_unit = true; + }; + + template + struct is_time_point : std::false_type + { + }; + + template + struct is_time_point> : std::true_type + { + }; + + template<> + struct is_time_point : std::true_type + { + }; + + template + inline constexpr bool is_time_point_v = is_time_point::value; + + template + struct is_duration : std::false_type + { + }; + + template + struct is_duration> : std::true_type + { + }; + + template + inline constexpr bool is_duration_v = is_duration::value; + + inline TimeCapturer MakeTimeCapturer(std::chrono::system_clock::time_point tp) + { + TimeCapturer c; + c.mode = TimeMode::Point; + c.tp = tp; + return c; + } + + template + inline TimeCapturer MakeTimeCapturer(std::chrono::duration d) + { + TimeCapturer c; + c.mode = TimeMode::Duration; + c.duration = std::chrono::duration_cast(d); + c.smart_unit = true; + return c; + } + + inline TimeCapturer MakeTimeCapturer(const std::tm& tm) + { + TimeCapturer c; + c.mode = TimeMode::TMPoint; + c._tm = tm; + return c; + } + + // --- 宽字符转换声明(实现卸载到 .cpp) --- + std::string UNSWSC_DLL_EXPORT ConvertWStringToUtf8(std::wstring_view wstr); + + // --- 核心包装类 --- + struct LogArg + { + LogVariant value; + + template + LogArg(T&& val) + { + using D = std::decay_t; + + // 1. 窄字符串系列(0拷贝) + if constexpr (std::is_same_v || std::is_same_v) + value = std::string_view(val); + else if constexpr (std::is_same_v || std::is_same_v) + value = val ? std::string_view(val) : std::string_view(""); + // 2. 宽字符串系列(特殊处理:触发内部 UTF-8 转换) + else if constexpr (std::is_same_v || std::is_same_v) + value = ConvertWStringToUtf8(val); + else if constexpr (std::is_same_v || std::is_same_v) + value = val ? ConvertWStringToUtf8(val) : std::string(""); + // 3. 基础原子类型(防范 wchar_t 被误判为整数) + else if constexpr (std::is_same_v || std::is_same_v || std::is_same_v) + value = ConvertWStringToUtf8(std::wstring_view((const wchar_t*)&val, 1)); + else if constexpr (std::is_same_v) + value = static_cast(val); + else if constexpr (std::is_same_v || std::is_same_v) + value = static_cast(val); + // 3.5 时间点类型系列(防止时间对象退化为未知类型) + else if constexpr (is_time_point_v) + value = MakeTimeCapturer(val); + else if constexpr (is_duration_v) + value = MakeTimeCapturer(val); + // 4. 全整型变种矩阵 (short, int, long, long long, unsigned...) + else if constexpr (std::is_integral_v && std::is_signed_v) + { + if constexpr (sizeof(D) <= sizeof(int)) + value = static_cast(val); + else + value = static_cast(val); + } + else if constexpr (std::is_integral_v && std::is_unsigned_v) + { + if constexpr (sizeof(D) <= sizeof(unsigned int)) + value = static_cast(val); + else + value = static_cast(val); + } + // 5. 浮点矩阵 + else if constexpr (std::is_floating_point_v) + value = static_cast(val); + // 6. 指针 + else if constexpr (std::is_pointer_v) + value = static_cast(val); + // 7. 标准库容器(关键点:利用 Lambda 闭包在不引入 fmt 的情况下擦除容器类型!) + else if constexpr (is_container::value) + { + value = RangeCapturer{ &val, [] (const void* p, std::vector& out) + { + for (const auto& item : *static_cast(p)) + out.emplace_back(item); // 递归包装子元素 + } + }; + } + // 8. 键值对(支持 Map 展开) + else if constexpr (is_pair::value) + { + value = PairCapturer{ &val, [] (const void* p, std::vector& out) + { + const auto& pair = *static_cast(p); + out.emplace_back(pair.first); + out.emplace_back(pair.second); + } + }; + } + else if constexpr (function_traits::is_func) + { + using TargetPtr = typename function_traits::pointer_type; + // 关键点:尝试用 target() 拿底层指针 + // std::function::target() 返回的是 T*,所以如果 T 是函数指针,返回的就是“函数指针的指针” + if (auto* const* func_ptr = val.template target()) // 情况 A:内部装的是普通纯函数或静态成员函数 + value = FuncCapturer{ reinterpret_cast(*func_ptr), false }; + else // 情况 B:内部装的是 Lambda 表达式或带状态的仿函数, 此时它在堆/栈上有一个闭包实体,我们退而求其次,打印这个闭包对象的地址 + value = FuncCapturer{ static_cast(&val), true }; + } + else + value = std::string_view(""); + } + }; +} \ No newline at end of file diff --git a/build/unswsc/ServerCore.h b/build/unswsc/ServerCore.h new file mode 100644 index 0000000..61e4685 --- /dev/null +++ b/build/unswsc/ServerCore.h @@ -0,0 +1,48 @@ +/* +* Unknown Network Service Web Server Core +* Version 1.2.2 +* +* TCP Core - boost::aiso +* HTTP Core - webcc +* Application Level Repack & Windows Service Interface - UnknownObject +*/ + +#pragma once +#include +#include +#include "Global.h" +#include "Export.h" +#include "FileReceiver.h" +#include "ServerProcessor.h" +#include "SyncFileReceiver.h" + +class UNSWSC_DLL_EXPORT ServerCore +{ +private: + class Impl; + std::unique_ptr pimpl; + +public: + ServerCore(int port); + ~ServerCore(); + ServerCore() = delete; + ServerCore(const ServerCore& obj) = delete; + ServerCore& operator=(const ServerCore& obj) = delete; + +public: + void Run(int worker_thread = 1, int loop_thread = 1); + void ThreadRun(int worker_thread = 1, int loop_thread = 1); + void Stop(); + bool Running(); + void UpdateProcessor(); + bool EnableCORSSupport(); + bool AppenedProcessor(std::string url, ServerProcessorPtr ptr, std::uint32_t methods, bool enable_ip_check = false); + bool AppenedFileReceiver(std::string url, FileReceiverPtr ptr, std::uint32_t methods, FileProcessorCallback fpcb, bool html_response = false); + bool AppenedFileReceiver(std::string url, SyncFileReceiverPtr ptr, std::uint32_t methods, bool html_response = false); + +public: + //启用WebCC日志 + //path: 日志存放文件夹,留空为仅控制台日志 + //level: 0-4, 0=VERB, 1=INFO, 2=USER(default), 3=WARN, 4=ERROR + static void EnableWebCCLog(const std::string& path = "", int level = 2); +}; \ No newline at end of file diff --git a/build/unswsc/ServerLogger.h b/build/unswsc/ServerLogger.h new file mode 100644 index 0000000..33df7a1 --- /dev/null +++ b/build/unswsc/ServerLogger.h @@ -0,0 +1,210 @@ +#pragma once +#pragma warning(disable : 4996) +#include +#include +#include +#include +#include +#include +#include +#include "LogArg.h" +#include "Export.h" +#include + +namespace uns +{ + enum ServerLogLevel + { + llAll = 0x000000, + llTrace = 0x000001, + llDebug = 0x000010, + llInfo = 0x000020, + llWarning = 0x000030, + llError = 0x000040, + llFatal = 0x000050, + llOff = 0xFFFFFF + }; + + enum LogRotationPeriod + { + RP_None = 0, + RP_Hourly = 1, + RP_Daily = 2 + }; + + std::string UNSWSC_DLL_EXPORT toBinary(long number, int bits); + std::string UNSWSC_DLL_EXPORT toBinary(std::uint32_t number, int bits); + std::string UNSWSC_DLL_EXPORT toBinary(unsigned long number, int bits); +}; + +class UNSWSC_DLL_EXPORT ServerLogger +{ +private: + std::fstream LogStream; + std::string LogFileName; + std::atomic CurrentLevel; //避免数据竟态UB + + // 异步队列与线程控制 + std::deque LogQueue; + std::mutex QueueMutex; + std::condition_variable QueueCV; + std::thread WorkerThread; + std::atomic_bool WorkerRunning; + std::atomic_bool ThreadRunningFlag; + + // 日志分时段(轮转)支持 + uns::LogRotationPeriod RotatePeriod; + std::time_t CurrentFilePeriodStart; + + // 新增:大小轮转支持 + std::size_t MaxFileSizeBytes; // 最大文件大小(字节) + int CurrentOSLIndex; // 当前 period 下的 OSL 索引(从 0 开始) + +private: + std::string GenerateLogHeader(uns::ServerLogLevel LogLevel); + std::string GenerateFileInfo(std::string filename, int line_num); + void WriteBatchToOutputs(const std::deque& batch) +; + void WorkerLoop(); + std::string MakeRotatedFileName(const std::string& base, std::time_t t, int osl_index = 0); + void RotateIfNeeded(std::time_t now, bool check_size_after_write = false); + + void LogImpl(uns::ServerLogLevel level, const std::string& format, const uns::LogArg* args, size_t count); + void LogFImpl(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string& format, const uns::LogArg* args, size_t count); + void LogFMTImpl(uns::ServerLogLevel level, const std::string& format, const uns::LogArg* args, size_t count); + void LogFMT_FImpl(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string& format, const uns::LogArg* args, size_t count); + +public: + ServerLogger(); + ServerLogger(uns::ServerLogLevel log_level, std::string file = "", uns::LogRotationPeriod rotation = uns::RP_None, std::size_t max_bytes = 50 * 1024 * 1024); + ServerLogger(const ServerLogger& obj) = delete; + ~ServerLogger(); + +public: + bool InitLogger(uns::ServerLogLevel log_level, const std::string& file = "", uns::LogRotationPeriod rotation = uns::RP_None, std::size_t max_bytes = 50 * 1024 * 1024); + void CloseLog(); + void DisableLog(); + void FlushLogBuffer(); + void EnableLog(uns::ServerLogLevel level); + + template + void Log(uns::ServerLogLevel level, const std::string& format, Args&&... args); + template + void LogF(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string format, Args&&... args); + template + void LogFMT(uns::ServerLogLevel level, const std::string& format, Args&&... args); + template + void LogFMT_F(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string format, Args&&... args); +}; + +template +inline void ServerLogger::Log(uns::ServerLogLevel level, const std::string& format, Args&&... args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogImpl(level, format, nullptr, 0); + else + { + // 在客户端的栈上瞬间分配数组并完成类型擦除 + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogImpl(level, format, packed_args, sizeof...(Args)); + } +} + +template +inline void ServerLogger::LogF(uns::ServerLogLevel level, const std::string& filename, int line_num, std::string format, Args&&... args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogFImpl(level, filename, line_num, format, nullptr, 0); + else + { + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogFImpl(level, filename, line_num, format, packed_args, sizeof...(Args)); + } +} + +template +inline void ServerLogger::LogFMT(uns::ServerLogLevel level, const std::string& format, Args && ...args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogFMTImpl(level, format, nullptr, 0); + else + { + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogFMTImpl(level, format, packed_args, sizeof...(Args)); + } +} + +template +inline void ServerLogger::LogFMT_F(uns::ServerLogLevel level, const std::string& filename, int line_num, const std::string format, Args && ...args) +{ + uns::ServerLogLevel curr_level = CurrentLevel.load(std::memory_order_relaxed); + if ((curr_level == uns::llOff) || (level < curr_level)) + return; + + if constexpr (sizeof...(Args) == 0) + LogFMT_FImpl(level, filename, line_num, format, nullptr, 0); + else + { + uns::LogArg packed_args[] = { uns::LogArg(std::forward(args))... }; + LogFMT_FImpl(level, filename, line_num, format, packed_args, sizeof...(Args)); + } +} + +extern UNSWSC_DLL_EXPORT ServerLogger GlobalServerLogger; + +#if (defined(_WIN32) || defined(_WIN64)) +#define __FILENAME__ std::strrchr("\\" __FILE__, '\\') + 1 +#else +#define __FILENAME__ std::strrchr("/" __FILE__, '/') + 1 +#endif + +#define SCLOG_CONSOLE_INIT(__log_level__) GlobalServerLogger.InitLogger(__log_level__) +#define SCLOG_FILE_INIT(__file_name__, __log_level__, ...) GlobalServerLogger.InitLogger(__log_level__, __file_name__, ##__VA_ARGS__) + +#define SCLOG_WRITE(__level__, __text__, ...) GlobalServerLogger.LogF(__level__, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_TRACE(__text__, ...) GlobalServerLogger.LogF(uns::llTrace, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_DEBUG(__text__, ...) GlobalServerLogger.LogF(uns::llDebug, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_INFO(__text__, ...) GlobalServerLogger.LogF(uns::llInfo, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_WARNING(__text__, ...) GlobalServerLogger.LogF(uns::llWarning, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_ERROR(__text__, ...) GlobalServerLogger.LogF(uns::llError, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOG_FATAL(__text__, ...) GlobalServerLogger.LogF(uns::llFatal, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) + +#define SCLOG_SHORT_WRITE(__level__, __text__, ...) GlobalServerLogger.Log(__level__, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_TRACE(__text__, ...) GlobalServerLogger.Log(uns::llTrace, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_DEBUG(__text__, ...) GlobalServerLogger.Log(uns::llDebug, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_INFO(__text__, ...) GlobalServerLogger.Log(uns::llInfo, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_WARNING(__text__, ...) GlobalServerLogger.Log(uns::llWarning, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_ERROR(__text__, ...) GlobalServerLogger.Log(uns::llError, __text__, ##__VA_ARGS__) +#define SCLOG_SHORT_FATAL(__text__, ...) GlobalServerLogger.Log(uns::llFatal, __text__, ##__VA_ARGS__) + +#define SCLOGF_WRITE(__level__, __text__, ...) GlobalServerLogger.LogFMT_F(__level__, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_TRACE(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llTrace, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_DEBUG(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llDebug, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_INFO(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llInfo, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_WARNING(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llWarning, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_ERROR(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llError, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) +#define SCLOGF_FATAL(__text__, ...) GlobalServerLogger.LogFMT_F(uns::llFatal, __FILENAME__, __LINE__, __text__, ##__VA_ARGS__) + +#define SCLOGF_SHORT_WRITE(__level__, __text__, ...) GlobalServerLogger.LogFMT(__level__, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_TRACE(__text__, ...) GlobalServerLogger.LogFMT(uns::llTrace, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_DEBUG(__text__, ...) GlobalServerLogger.LogFMT(uns::llDebug, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_INFO(__text__, ...) GlobalServerLogger.LogFMT(uns::llInfo, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_WARNING(__text__, ...) GlobalServerLogger.LogFMT(uns::llWarning, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_ERROR(__text__, ...) GlobalServerLogger.LogFMT(uns::llError, __text__, ##__VA_ARGS__) +#define SCLOGF_SHORT_FATAL(__text__, ...) GlobalServerLogger.LogFMT(uns::llFatal, __text__, ##__VA_ARGS__) + +#define SCLOG_ENABLE(__level__) GlobalServerLogger.EnableLog(__level__) +#define SCLOG_DISABLE() GlobalServerLogger.DisableLog() +#define SCLOG_CLOSE() GlobalServerLogger.CloseLog() \ No newline at end of file diff --git a/build/unswsc/ServerProcessor.h b/build/unswsc/ServerProcessor.h new file mode 100644 index 0000000..d9d8b70 --- /dev/null +++ b/build/unswsc/ServerProcessor.h @@ -0,0 +1,35 @@ +#pragma once +#include "Global.h" +#include "Export.h" +#include "IPTable.h" +#include "HTTPObjects.h" + +class UNSWSC_DLL_EXPORT ServerProcessor +{ +protected: + class Impl; + std::unique_ptr pimpl; + +public: + ServerProcessor(); + virtual ~ServerProcessor(); + +public: + void EnableIPCheck(); + void DisableIPCheck(); + void UpdateBlockedIPList(IPTablePtr ips); + void AppenedBlockedIP(DateTime::Span block_time, std::string ip); + uns::HTTPMethod GetMethod(uns::RequestPtr request); + void AddStreamSettings(std::string method, bool stream); + +public: + virtual uns::ResponsePtr Processor(uns::RequestPtr request) = 0; + virtual uns::PathTraversalDefenceLevel PTDefence(); + virtual bool IsPathSafe(const std::string& raw_path); + +public: + uns::ResponsePtr Handle(uns::RequestPtr request); + bool Stream(const std::string& method); +}; + +using ServerProcessorPtr = std::shared_ptr; \ No newline at end of file diff --git a/build/unswsc/SessionManager.h b/build/unswsc/SessionManager.h new file mode 100644 index 0000000..2fcf09a --- /dev/null +++ b/build/unswsc/SessionManager.h @@ -0,0 +1,86 @@ +#pragma once +#include +#include +#include +#include +#include "Export.h" +#include "HTTPObjects.h" + +namespace Json +{ + class Value; +} + +class UNSWSC_DLL_EXPORT SessionManager +{ +public: + using systime = std::chrono::system_clock::time_point; + + class UNSWSC_DLL_EXPORT Session + { + private: + int uid; + std::string cookie; + systime expiry_date; + + static const std::chrono::hours max_age; + + public: + Session(); + Session(const Session& obj); + Session(const std::string& cookie); //构造仅用于比较的临时Session对象 + Session(const Json::Value& json_obj); //从JSON反序列化 + Session(int uid, const std::string& cookie); + + public: + int GetUID() const; + bool Expired() const; + std::string GetCookie() const; + systime GetExpiryDate() const; + bool NeedExpiryDateRefresh() const; //使用超过一天且在活跃的cookie将被刷新。此处仅作时间判断 + + public: + void SetUID(int uid); + void RefreshExpiryDate(); + void SetCookie(const std::string& cookie); + void SetExpiryDate(const systime& expiry_time); + + public: + bool operator<(const Session& obj) const; //For std::map/std::set/... + operator Json::Value() const; //JSON序列化 + + static int GetMaxAgeSeconds(); + }; + +private: + std::mutex pool_mutex; + //Key: Cookie Pair(oreo=xxxxx), Value: UID + std::map cookie_storage; + //Key: UID, Value: Cookie Lists + std::map> reverse_cookie_storage; + + const std::string prefix = "oreo="; + //const std::string cookie_template = prefix + "{}; HttpOnly; Path=/; SameSite=Lax; Max-Age={}"; + const std::string cookie_template = prefix + "{}; HttpOnly; Secure; Path=/; SameSite=None; Max-Age={}"; + +public: + SessionManager(); + SessionManager(const SessionManager& obj) = delete; + +public: + static std::string Random(); + static std::string ISO8601_TimeString(); + +public: + void AutoCleanCookiePool(); + std::string GenerateCookieForUser(int uid, bool cookie_only = false); + std::string DeleteCookie(const std::string& cookie); + bool CheckRequestCookie(uns::RequestPtr request, int& uid); + std::string DeleteAllCookieForUser(int uid, const std::string& current_cookie); + + bool HasDumpedCookie(const std::string& path); + bool LoadDumpedCookie(const std::string& path); + bool DumpAllValidCookies(const std::string& path); +}; + +extern UNSWSC_DLL_EXPORT SessionManager GlobalSessionManager; diff --git a/build/unswsc/SyncFileReceiver.h b/build/unswsc/SyncFileReceiver.h new file mode 100644 index 0000000..7302aab --- /dev/null +++ b/build/unswsc/SyncFileReceiver.h @@ -0,0 +1,43 @@ +#pragma once +#include "Export.h" +#include "Global.h" +#include "IPTable.h" +#include "WebFileInfo.h" +#include "HTTPObjects.h" + +class UNSWSC_DLL_EXPORT SyncFileReceiver +{ +protected: + class Impl; + std::unique_ptr pimpl; + +public: + SyncFileReceiver(); + virtual ~SyncFileReceiver(); + +public: + void SetResponseMode(bool html); + void SetCORSEnable(bool enable); + std::string EncodeUploadResult(); + std::string EncodeUploadResultHTML(); + void UpdateBlockedIPs(IPTablePtr ip); + void SetTempRoot(std::string temp_root); + uns::HTTPMethod GetMethod(uns::RequestPtr request); + void AppenedBlockedIP(DateTime::Span block_time, std::string ip); + bool WriteFile(const std::string& path, const std::string& bytes); + +public: + virtual uns::Status PreCheckRequest(uns::RequestPtr request) = 0; + virtual bool PreCheckForm(uns::FormPartPtr form) = 0; + virtual uns::PathTraversalDefenceLevel PTDefence(); + virtual bool IsPathSafe(const std::string& raw_path); + + // 【修改】由原先的 Callback 改为可供子类重写的虚函数 + // 返回值改为 webcc::ResponsePtr,并且引入 request 参数以便子类调用 AutoCORS 或解析请求头 + virtual uns::ResponsePtr ProcessFiles(const WebFileInfoVec& file_info, const std::string& tmp_root, uns::RequestPtr request); + +public: + uns::ResponsePtr Execute(uns::RequestPtr request); +}; + +using SyncFileReceiverPtr = std::shared_ptr; \ No newline at end of file diff --git a/build/unswsc/UNSResponseBuilder.h b/build/unswsc/UNSResponseBuilder.h new file mode 100644 index 0000000..eb323b1 --- /dev/null +++ b/build/unswsc/UNSResponseBuilder.h @@ -0,0 +1,238 @@ +#pragma once +#include +#include +#include "Export.h" +#include +#include "HTTPObjects.h" + +namespace Json +{ + class Value; +} + +namespace uns +{ + class UNSWSC_DLL_EXPORT ResponseBuilder + { + private: + class Impl; + + std::unique_ptr impl; + + private: + bool FileExist(std::string file); + + public: + static void SetGlobalAllowFraming(bool allow); + + public: + ResponseBuilder(); + virtual ~ResponseBuilder(); + ResponseBuilder(uns::RequestPtr req); + ResponseBuilder(const ResponseBuilder&) = delete; + ResponseBuilder& operator=(const ResponseBuilder&) = delete; + + public: + uns::ResponsePtr operator()(); + + public: //Standard Return Code 1xx + //100 - 此临时响应表明客户端应继续请求,或者如果请求已完成,则忽略此响应。 + ResponseBuilder& Continue(); + //101 - 此代码是在响应客户端的 Upgrade 请求标头时发送的,用于指示服务器即将切换到的协议。 + ResponseBuilder& SwitchingProtocols(); + //102 - 此代码曾在 WebDAV 上下文中使用,表示服务器已收到请求,但在响应时无法提供状态。 + ResponseBuilder& Processing(); + //103 - 此状态码主要与 Link 标头一起使用,允许用户代理在服务器准备响应时开始预加载资源,或预连接到页面需要资源的源站。 + ResponseBuilder& EarlyHints(); + + public: //Standard Return Code 2xx + //200 - 请求成功。 + ResponseBuilder& OK(); + //201 - 请求成功,并因此创建了一个新资源。 + ResponseBuilder& Created(); + //202 - 请求已被接收但尚未处理。 + ResponseBuilder& Accepted(); + //203 - 此响应代码表示返回的元数据与原始服务器上可用的不完全相同,而是从本地或第三方副本收集的。这主要用于另一个资源的镜像或备份。 + ResponseBuilder& NonAuthoritativeInformation(); + //204 - 对于此请求,没有内容可发送,但响应头可能有用。 + ResponseBuilder& NoContent(); + //205 - 告知用户代理重置发送此请求的文档。 + ResponseBuilder& ResetContent(); + //206 - 当客户端请求了资源的一部分时,使用此响应代码进行响应。 + ResponseBuilder& PartialContent(); + //207 - 在可能需要多个状态码的情况下,传递关于多个资源的信息。 + ResponseBuilder& MultiStatus(); + //208 - 在 响应元素内部使用,以避免重复枚举同一集合的多个绑定的内部成员。 + ResponseBuilder& AlreadyReported(); + //226 - 服务器已完成了对资源的 GET 请求,并且响应是对当前实例应用了一个或多个实例操作后的结果表示。 + ResponseBuilder& IMUsed(); + + public: //Standard Return Code 3xx + //300 - 在代理驱动(agent-driven)的内容协商中,请求有多个可能的响应,用户代理或用户应选择其中之一。 + ResponseBuilder& MultipleChoices(); + //301 - 请求资源的 URL 已永久更改。新 URL 在响应中给出。 + ResponseBuilder& MovedPermanently(const std::string& new_url); + //302 - 此响应代码意味着请求资源的 URI 已暂时更改。未来可能还会对 URI 进行进一步更改,因此客户端在未来的请求中应使用相同的 URI。 + ResponseBuilder& Found(const std::string& new_url); + //303 - 服务器发送此响应以指示客户端使用 GET 请求在另一个 URI 获取请求的资源。 + ResponseBuilder& SeeOther(const std::string& new_url); + //304 - 用于缓存目的。它告知客户端响应未被修改,因此客户端可以继续使用相同的缓存响应版本。 + ResponseBuilder& NotModified(); + //305 - 在 HTTP 规范的前一版本中定义,表示请求的响应必须通过代理访问。由于涉及代理带内配置的安全问题,此状态码已被弃用。 + ResponseBuilder& UseProxy(); + //306 - 此响应代码不再使用,但被保留。它曾在 HTTP/1.1 规范的先前版本中使用。 + ResponseBuilder& __Unused(); + //307 - 服务器发送此响应以指示客户端使用与先前请求相同的方法在另一个 URI 获取请求的资源。其语义与 302 Found 响应代码相同,但用户代理不得更改使用的 HTTP 方法。 + ResponseBuilder& TemporaryRedirect(const std::string& new_url); + //308 - 表示资源现在永久位于另一个 URI,由 Location 响应头指定。其语义与 301 Moved Permanently HTTP 响应代码相同,但用户代理不得更改使用的 HTTP 方法。 + ResponseBuilder& PermanentRedirect(const std::string& new_url); + + public: //Recode Code 4xx + //400 - 由于被认为是客户端错误的原因(例如,格式错误的请求语法、无效的请求消息结构或欺骗性的请求路由),服务器无法或不会处理该请求。 + ResponseBuilder& BadRequest(); + //401 - 尽管 HTTP 标准指定为 "unauthorized",但从语义上讲,此响应的意思是 "unauthenticated"。即,客户端必须进行身份验证才能获得请求的响应。 + ResponseBuilder& Unauthorized(); + //402 - 此代码最初用于数字支付系统,但此状态码很少使用,且不存在标准约定。 + ResponseBuilder& PaymentRequired(); + //403 - 客户端没有访问内容的权利;也就是说,它是未授权的,因此服务器拒绝提供请求的资源。与 401 Unauthorized 不同,服务器知道客户端的身份。 + ResponseBuilder& Forbidden(); + //404 - 服务器找不到请求的资源。 + ResponseBuilder& NotFound(); + //405 - 服务器知道请求方法,但目标资源不支持该方法。 + ResponseBuilder& MethodNotAllowed(); + //406 - 当 Web 服务器执行服务器驱动的内容协商后,找不到任何符合用户代理给定条件的内容时,会发送此响应。 + ResponseBuilder& NotAcceptable(); + //407 - 类似于 401 Unauthorized,但需要通过代理进行身份验证。 + ResponseBuilder& ProxyAuthenticationRequired(); + //408 - 某些服务器会在空闲连接上发送此响应,即使客户端之前没有任何请求。这意味着服务器希望关闭此未使用的连接。 + ResponseBuilder& RequestTimeout(); + //409 - 当请求与服务器的当前状态冲突时,发送此响应。 + ResponseBuilder& Conflict(); + //410 - 当请求的内容已从服务器永久删除,且没有转发地址时,发送此响应。 + ResponseBuilder& Gone(); + //411 - 服务器拒绝了请求,因为未定义 Content-Length 标头字段,而服务器需要它。 + ResponseBuilder& LengthRequired(); + //412 - 在条件请求中,客户端在其标头中指明了服务器不满足的前提条件。 + ResponseBuilder& PreconditionFailed(); + //413 - 请求体大于服务器定义的限制。 + ResponseBuilder& ContentTooLarge(); + //414 - 客户端请求的 URI 长度超过了服务器愿意解释的长度。 + ResponseBuilder& URITooLong(); + //415 - 服务器不支持请求数据的媒体格式,因此服务器拒绝该请求。 + ResponseBuilder& UnsupportedMediaType(); + //416 - 无法满足请求中 Range 标头字段指定的范围。可能范围超出了目标资源数据的大小。 + ResponseBuilder& RangeNotSatisfiable(); + //417 - 此响应代码表示服务器无法满足 Expect 请求标头字段指示的期望。 + ResponseBuilder& ExpectationFailed(); + //418 - 服务器拒绝尝试用茶壶煮咖啡。 + ResponseBuilder& IamATeapot(); + //421 - 请求被发送到了一个无法产生响应的服务器。 + ResponseBuilder& MisdirectedRequest(); + //422 - 请求格式正确,但由于语义错误而无法被遵循。 + ResponseBuilder& UnprocessableContent(); + //423 - 正在访问的资源已被锁定。 + ResponseBuilder& Locked(); + //424 - 由于先前的请求失败,导致当前请求失败。 + ResponseBuilder& FailedDependency(); + //425 - 表示服务器不愿意冒险处理一个可能被重放的请求。 + ResponseBuilder& TooEarly(); + //426 - 服务器拒绝使用当前协议执行请求,但可能在客户端升级到其他协议后愿意执行。服务器在 426 响应中发送 Upgrade 标头以指示所需的协议。 + ResponseBuilder& UpgradeRequired(const std::string& protocol); + //428 - 原始服务器要求请求是有条件的。此响应旨在防止"丢失更新"问题,即客户端 GET 资源状态,修改后 PUT 回服务器,而同时第三方已修改了服务器上的状态,导致冲突。 + ResponseBuilder& PreconditionRequired(); + //429 - 用户在给定的时间内发送了太多请求(速率限制)。 + ResponseBuilder& TooManyRequests(); + //431 - 服务器因请求头字段太大而不愿意处理该请求。 + ResponseBuilder& RequestHeaderFieldsTooLarge(); + //451 - 用户代理请求了一个无法合法提供的资源,例如被政府审查的网页。 + ResponseBuilder& UnavailableForLegalReasons(); + + public: //Standard Return Code 5xx + //500 - 服务器遇到了不知道如何处理的情况。此错误是通用性的,表示服务器找不到更合适的 5XX 状态码来响应。 + ResponseBuilder& InternalServerError(); + //501 - 服务器不支持请求方法,无法处理。 + ResponseBuilder& NotImplemented(); + //502 - 此错误响应意味着服务器作为网关或代理时,收到了一个无效的响应。 + ResponseBuilder& BadGateway(); + //503 - 服务器尚未准备好处理请求。 + ResponseBuilder& ServiceUnavailable(); + //504 - 当服务器作为网关或代理,无法及时获得响应时,会给出此错误响应。 + ResponseBuilder& GatewayTimeout(); + //505 - 服务器不支持请求中使用的 HTTP 版本。 + ResponseBuilder& HTTPVersionNotSupported(); + //506 - 服务器存在内部配置错误:在内容协商过程中,被选中的变体被配置为自身参与内容协商,这导致在创建响应时出现循环引用。 + ResponseBuilder& VariantAlsoNegotiates(); + //507 - 由于服务器无法存储成功完成请求所需的表示,因此无法对资源执行该方法。 + ResponseBuilder& InsufficientStorage(); + //508 - 服务器在处理请求时检测到无限循环。 + ResponseBuilder& LoopDetected(); + //510 - 客户端请求声明了一个应使用 HTTP 扩展(RFC 2774)来处理请求,但该扩展不受支持。 + ResponseBuilder& NotExtended(); + //511 - 表示客户端需要进行身份验证才能获得网络访问权限。 + ResponseBuilder& NetworkAuthenticationRequired(); + + public: //Non-Standard Return Code 4xx + //489 - 请求载体的格式错误,如:无法解析的JSON等。 + ResponseBuilder& RequestFormatError(); + //490 - 请求无效。可能是由于未正确携带数据等必要信息。 + ResponseBuilder& RequestInvalid(); + //492 - 请求URL超范围。此响应表示请求的URL是错误的。 + ResponseBuilder& URLOutOfRange(); + //493 - 无效的请求主机。指示请求时使用了错误的域名/IP。 + ResponseBuilder& InvalidRequestHost(); + //494 - IP地址被封禁。 + ResponseBuilder& IPBlocked(); + //495 -非法上传请求。指示本次上传请求不符合服务器规定。 + ResponseBuilder& IllegalUpload(); + //496 - 文件格式错误。指示上传的文件格式不符合服务器规定。 + ResponseBuilder& FileFormatError(); + //497 - 无效文件。处理请求所需的文件已过期/无法访问。 + ResponseBuilder& InvalidFile(); + //498 - 上传的文件过大。非文件上传时应使用 413 Content Too Large。 + ResponseBuilder& FileTooLarge(); + //499 - 每秒请求数过多。仅在一些特殊API中使用,常规情况需使用 429 Too Many Requests。 + ResponseBuilder& RPSLimited(); + + public: //Non-Standard Code 5xx + //533 - 子过程失败。服务器在处理请求的某个步骤中遇到无法恢复的错误。 + ResponseBuilder& SubProcessFalied(); + //540 - 服务器检测到漏洞利用/可执行文件上传等网络攻击行为。 + ResponseBuilder& ServerHateYou(); + //550 - 检测到拒绝服务漏洞攻击。 + ResponseBuilder& DoSFound(); + //551 - 检测到分布式拒绝服务漏洞攻击。 + ResponseBuilder& DDoSFound(); + //560 - 未知的服务器错误。当服务器无法定位错误来源时返回。否则应使用 500 Internal Server Error。 + ResponseBuilder& UnknownServerError(); + + public: //Header Functions + ResponseBuilder& Utf8(); + ResponseBuilder& Json(); + ResponseBuilder& Date(); + ResponseBuilder& GZip(); + ResponseBuilder& DenyFraming(); + ResponseBuilder& AllowFraming(); + ResponseBuilder& Code(int code); + ResponseBuilder& Charset(std::string_view charset); + ResponseBuilder& SetCookie(std::string_view cookie); + ResponseBuilder& MediaType(std::string_view media_type); + ResponseBuilder& Header(std::string_view key, std::string_view value); + + public: //Body Functions + ResponseBuilder& EmptyBody(); + ResponseBuilder& Body(int data); + ResponseBuilder& Body(std::string&& data); + ResponseBuilder& Body(const Json::Value& data); + ResponseBuilder& Body(const std::string& data); + ResponseBuilder& ErrorPage(); + ResponseBuilder& ErrorPage(std::string_view error_page); + ResponseBuilder& File(const std::filesystem::path& path, bool infer_media_type = true, std::size_t chunk_size = 1024); + ResponseBuilder& FileForDownload(const std::filesystem::path& path, bool infer_media_type = true, std::size_t chunk_size = 1024); + + public: //CORS Functions + //Perform CORS Check and Return CORS Headers, Must be the last function called + ResponseBuilder& AutoCORS(uns::RequestPtr req); + ResponseBuilder& CORS(const std::string& origin); + ResponseBuilder& CORS_Full(const std::string& origin, const std::set& headers); + }; +}; \ No newline at end of file diff --git a/build/unswsc/WebFileInfo.h b/build/unswsc/WebFileInfo.h new file mode 100644 index 0000000..7ad0af5 --- /dev/null +++ b/build/unswsc/WebFileInfo.h @@ -0,0 +1,36 @@ +#pragma once +#include +#include +#include "Export.h" +#include "DateTime.h" + +class UNSWSC_DLL_EXPORT WebFileInfo +{ +private: + std::string OriginalFileName; + std::string StorageFileName; + std::string ExtensionName; + DateTime UploadTime; + size_t FileSize; + +private: + std::string GetRandomNumber(); + std::string GetExtension(std::string ofn); + std::string GenerateStorageName(std::string ofn); + +public: + WebFileInfo() = default; + WebFileInfo(std::string ofn, size_t size); + WebFileInfo(std::string ofn, std::string sfn, std::string en, DateTime upt, size_t siz); + WebFileInfo(const WebFileInfo& obj); + +public: + std::string MakePath(std::string storage_dir) const; + std::string GetOriginalFileName() const; + std::string GetStorageFileName() const; + std::string GetExtensionName() const; + DateTime GetUploadTime() const; + size_t GetFileSize() const; +}; + +using WebFileInfoVec = std::vector; \ No newline at end of file diff --git a/lib/libwebcc.a b/lib/libwebcc.a new file mode 100644 index 0000000..af3f1a7 Binary files /dev/null and b/lib/libwebcc.a differ diff --git a/so/libuohash.so b/so/libuohash.so new file mode 100755 index 0000000..08753bc Binary files /dev/null and b/so/libuohash.so differ diff --git a/so/libutextcodec.so b/so/libutextcodec.so new file mode 100755 index 0000000..ca38df6 Binary files /dev/null and b/so/libutextcodec.so differ diff --git a/uohash/Public.h b/uohash/Public.h new file mode 100644 index 0000000..87da218 --- /dev/null +++ b/uohash/Public.h @@ -0,0 +1,84 @@ +#pragma once +#include +#include +#include +#include +//#pragma warning(disable : 4251) + +#define UOHASH_DLL_API __attribute__((visibility("default"))) + +namespace uns +{ + enum class UOHASH_DLL_API HashID : std::int64_t + { + CRC32 = RHASH_CRC32, + MD4 = RHASH_MD4, + MD5 = RHASH_MD5, + SHA1 = RHASH_SHA1, + TIGER = RHASH_TIGER, + TTH = RHASH_TTH, + BTIH = RHASH_BTIH, + ED2K = RHASH_ED2K, + AICH = RHASH_AICH, + WHIRLPOOL = RHASH_WHIRLPOOL, + RIPEMD160 = RHASH_RIPEMD160, + GOST94 = RHASH_GOST94, + GOST94_CRYPTOPRO = RHASH_GOST94_CRYPTOPRO, + HAS160 = RHASH_HAS160, + GOST12_256 = RHASH_GOST12_256, + GOST12_512 = RHASH_GOST12_512, + SHA224 = RHASH_SHA224, + SHA256 = RHASH_SHA256, + SHA384 = RHASH_SHA384, + SHA512 = RHASH_SHA512, + EDONR256 = RHASH_EDONR256, + EDONR512 = RHASH_EDONR512, + SHA3_224 = RHASH_SHA3_224, + SHA3_256 = RHASH_SHA3_256, + SHA3_384 = RHASH_SHA3_384, + SHA3_512 = RHASH_SHA3_512, + CRC32C = RHASH_CRC32C, + SNEFRU128 = RHASH_SNEFRU128, + SNEFRU256 = RHASH_SNEFRU256, + BLAKE2S = RHASH_BLAKE2S, + BLAKE2B = RHASH_BLAKE2B, //0x40000000 + __RHASH_MAX = 0b01111111111111111111111111111111, + SHAKE128 = 0x80000000, + SHAKE256 = 0x100000000, + BASE16 = 0x200000000, + BASE32 = 0x400000000, + BASE32_HEX = 0x800000000, + BASE36 = 0x1000000000, + BASE58 = 0x2000000000, + BASE62 = 0x4000000000, + BASE64 = 0x8000000000, + BASE64_URL = 0x10000000000, + BASE85 = 0x20000000000, + BASE91 = 0x40000000000, + URL = 0x80000000000 + }; + + class UOHASH_DLL_API HashResult + { + private: + bool success; + std::string result; + std::string last_error; + public: + HashResult(); + HashResult(std::string res); + HashResult(const HashResult& obj); + HashResult(bool succ, std::string res, std::string err); + public: + static HashResult Faliure(std::string str); + static HashResult Success(std::string str); + public: + std::string GetResult(); + std::string GetLastError(); + std::string EncodeJsonString(bool unicode = false, bool styled = false); + public: + operator bool(); + operator std::string(); + operator Json::Value(); + }; +}; \ No newline at end of file diff --git a/uohash/UOHash.h b/uohash/UOHash.h new file mode 100644 index 0000000..09605b6 --- /dev/null +++ b/uohash/UOHash.h @@ -0,0 +1,29 @@ +#pragma once +#include "Public.h" + +namespace uns +{ + class UOHASH_DLL_API UOHash + { + public: + UOHash() = delete; + UOHash(const UOHash& obj) = delete; + private: + static constexpr auto INVALID_HASHEX_ARGUMENT = "Invalid HashEx Argument"; + static constexpr auto HASH_CALCULATION_ERROR = "Hash Calculation Error"; + static constexpr auto INVALID_HASH_FUNCTION = "Invalid Hash Function"; + static constexpr auto FILE_DOES_NOT_EXIST = "File Doesn't Exist"; + static constexpr auto HASH_LIBRARY_ERROR = "Hash Library Error"; + static constexpr auto HASH_FUNCTION_CODING = "Hash Function Developing"; + private: + static bool FileExist(std::string file); + static int CalculateHashSize(HashID HashID); + static std::string RemoveWhiteChar(std::string str); + static int CalculateHashExSize(HashID HashID, int output_bits = 0); + static rhash_print_sum_flags PickOutputType(HashID HashID); + public: + static HashResult DecodeString(HashID HashID, std::string Source); + static HashResult HashString(HashID HashID, std::string Source, int ex_output_bits = 128); + static HashResult HashFile(HashID HashID, std::string File, int ex_output_bits = 128); + }; +}; \ No newline at end of file diff --git a/utextcodec/UTextCodec.h b/utextcodec/UTextCodec.h new file mode 100644 index 0000000..0f51315 --- /dev/null +++ b/utextcodec/UTextCodec.h @@ -0,0 +1,40 @@ +#pragma once +#include +#ifdef _WIN32 +#include +#if defined(UTEXTCODEC_EXPORTS) +#define UTEXTCODEC_EXPORT __declspec(dllexport) +#else +#define UTEXTCODEC_EXPORT __declspec(dllimport) +#endif +#else +#define UTEXTCODEC_EXPORT __attribute__((visibility("default"))) +#endif + +class UTEXTCODEC_EXPORT UTextCodec +{ +public: + // UTF-8 ⇄ UTF-16 (wstring) + static std::wstring UTF8to16(const std::string& utf8); + static std::string UTF16to8(const std::wstring& wstr); + + // UTF-8 ⇄ UTF-32 + static std::u32string UTF8to32(const std::string& utf8); + static std::string UTF32to8(const std::u32string& u32str); + + // wstring ⇄ u32string + static std::u32string WtoUTF32(const std::wstring& wstr); + static std::wstring UTF32toW(const std::u32string& u32str); + + // wstring ⇄ string + static std::wstring StoW(const std::string& str); + static std::string WtoS(const std::wstring& wstr); + +#ifdef _WIN32 + // Windows ANSI ⇄ UTF-16 (wstring) + static std::wstring AtoW(const std::string& ansi, UINT codePage = CP_ACP); + static std::string WtoA(const std::wstring& wstr, UINT codePage = CP_ACP); +#endif + + static std::string DetectEncoding(); +}; diff --git a/webcc/webcc/base64.h b/webcc/webcc/base64.h new file mode 100644 index 0000000..4d9d5f9 --- /dev/null +++ b/webcc/webcc/base64.h @@ -0,0 +1,17 @@ +#ifndef WEBCC_BASE64_H_ +#define WEBCC_BASE64_H_ + +#include +#include + +namespace webcc { + +std::string Base64Encode(const std::uint8_t* data, std::size_t length); + +std::string Base64Encode(const std::string& input); + +std::string Base64Decode(const std::string& input); + +} // namespace webcc + +#endif // WEBCC_BASE64_H_ diff --git a/webcc/webcc/body.h b/webcc/webcc/body.h new file mode 100644 index 0000000..112c6f0 --- /dev/null +++ b/webcc/webcc/body.h @@ -0,0 +1,204 @@ +#ifndef WEBCC_BODY_H_ +#define WEBCC_BODY_H_ + +#include +#include +#include + +#include "webcc/common.h" +#include "webcc/fs.h" + +namespace webcc { + +// ----------------------------------------------------------------------------- + +class Body { +public: + Body() = default; + virtual ~Body() = default; + + // Get the size in bytes of the body. + virtual std::size_t GetSize() const { + return 0; + } + + bool IsEmpty() const { + return GetSize() == 0; + } + +#if WEBCC_ENABLE_GZIP + + // Compress the data with Gzip. + // If data size <= threshold (1400 bytes), no compression will be taken + // and false will be simply returned. + virtual bool Compress() { + return false; + } + + // Decompress the data. + virtual bool Decompress() { + return false; + } + +#endif // WEBCC_ENABLE_GZIP + + // Initialize the payload for iteration. + // Usage: + // InitPayload(); + // for (auto p = NextPayload(); !p.empty(); p = NextPayload()) { + // } + virtual void InitPayload() { + } + + // Get the next payload. + // An empty payload returned indicates the end. + virtual Payload NextPayload(bool free_previous = false) { + return {}; + } + + // Dump to output stream for logging purpose. + virtual void Dump(std::ostream& os, const std::string& prefix) const { + } +}; + +using BodyPtr = std::shared_ptr; + +// ----------------------------------------------------------------------------- + +class StringBody : public Body { +public: + explicit StringBody(const std::string& data, bool compressed) + : data_(data), compressed_(compressed) { + } + + explicit StringBody(std::string&& data, bool compressed) + : data_(std::move(data)), compressed_(compressed) { + } + + std::size_t GetSize() const override { + return data_.size(); + } + + const std::string& data() const { + return data_; + } + + bool compressed() const { + return compressed_; + } + +#if WEBCC_ENABLE_GZIP + + bool Compress() override; + + bool Decompress() override; + +#endif // WEBCC_ENABLE_GZIP + + void InitPayload() override; + + Payload NextPayload(bool free_previous = false) override; + + void Dump(std::ostream& os, const std::string& prefix) const override; + +private: + std::string data_; + + // Is the data compressed? + bool compressed_; + + // Index for (not really) iterating the payload. + std::size_t index_ = 0; +}; + +// ----------------------------------------------------------------------------- + +// Multi-part form body for request. +class FormBody : public Body { +public: + FormBody(const std::vector& parts, const std::string& boundary); + + std::size_t GetSize() const override; + + const std::vector& parts() const { + return parts_; + } + + void InitPayload() override; + + Payload NextPayload(bool free_previous = false) override; + + void Dump(std::ostream& os, const std::string& prefix) const override; + +private: + void AddBoundary(Payload* payload); + void AddBoundaryEnd(Payload* payload); + + void Free(std::size_t index); + +private: + std::vector parts_; + std::string boundary_; + + // Index for iterating the payload. + std::size_t index_ = 0; +}; + +// ----------------------------------------------------------------------------- + +// File body for server to serve a file without loading the whole of it into +// the memory. +class FileBody : public Body { +public: + // For message to be sent out. + FileBody(const fs::path& path, std::size_t chunk_size); + + // For message received. + // No |chunk_size| is needed since you don't iterate the payload of a + // received message. + // If |auto_delete| is true, the file will be deleted on destructor unless it + // is moved to another path (see Move()). + FileBody(const fs::path& path, bool auto_delete = false); + + ~FileBody() override; + + std::size_t GetSize() const override { + return size_; + } + + void InitPayload() override; + + Payload NextPayload(bool free_previous = false) override; + + void Dump(std::ostream& os, const std::string& prefix) const override; + + const fs::path& path() const { + return path_; + } + + // Move (or rename) the file. + // Used to move the streamed file of the received message to a new place. + // Applicable to both client and server. + // After move, the original path will be reset to empty. + // If |new_path| and |path_| resolve to the same file, do nothing and just + // return false. + // If |new_path| resolves to an existing non-directory file, it is removed. + // If |new_path| resolves to an existing directory, it is removed if empty + // on ISO/IEC 9945 but is an error on Windows. + // See fs::rename() for more details. + bool Move(const fs::path& new_path); + +private: + fs::path path_; + std::size_t chunk_size_; + bool auto_delete_; + + std::size_t size_; // File size in bytes + + fs::ifstream ifstream_; + std::string chunk_; +}; + +} // namespace webcc + +#endif // WEBCC_BODY_H_ diff --git a/webcc/webcc/client.h b/webcc/webcc/client.h new file mode 100644 index 0000000..712c5f8 --- /dev/null +++ b/webcc/webcc/client.h @@ -0,0 +1,29 @@ +#ifndef WEBCC_CLIENT_H_ +#define WEBCC_CLIENT_H_ + +#include "webcc/client_base.h" +#include "webcc/socket.h" + +namespace webcc { + +class Client final : public ClientBase { +public: + explicit Client(boost::asio::io_context& io_context) + : ClientBase(io_context) { + } + + ~Client() = default; + +protected: + void CreateSocket() override { + socket_.reset(new Socket{ io_context_ }); + } + + void Resolve() override { + AsyncResolve("80"); + } +}; + +} // namespace webcc + +#endif // WEBCC_CLIENT_H_ diff --git a/webcc/webcc/client_base.h b/webcc/webcc/client_base.h new file mode 100644 index 0000000..56951cb --- /dev/null +++ b/webcc/webcc/client_base.h @@ -0,0 +1,165 @@ +#ifndef WEBCC_CLIENT_BASE_H_ +#define WEBCC_CLIENT_BASE_H_ + +#include +#include +#include +#include +#include + +#include "boost/asio/io_context.hpp" +#include "boost/asio/ip/tcp.hpp" +#include "boost/asio/steady_timer.hpp" + +#include "webcc/globals.h" +#include "webcc/request.h" +#include "webcc/response.h" +#include "webcc/response_parser.h" +#include "webcc/socket_base.h" + +namespace webcc { + +class ClientBase { +public: + explicit ClientBase(boost::asio::io_context& io_context); + + ClientBase(const ClientBase&) = delete; + ClientBase& operator=(const ClientBase&) = delete; + + ~ClientBase() = default; + + void set_buffer_size(std::size_t buffer_size) { + if (buffer_size > 0) { + buffer_size_ = buffer_size; + } + } + + void set_connect_timeout(int timeout) { + if (timeout > 0) { + connect_timeout_ = timeout; + } + } + + void set_read_timeout(int timeout) { + if (timeout > 0) { + read_timeout_ = timeout; + } + } + + // Set progress callback to be informed about the read progress. + // NOTE: Don't use move semantics because in practice, there is no difference + // between copying and moving an object of a closure type. + // TODO: Support write progress + void set_progress_callback(ProgressCallback callback) { + progress_callback_ = callback; + } + + // Connect, send request, wait until response is received. + Error Request(RequestPtr request, bool stream = false); + + // Close the connection. + // The async operation on the socket will be canceled. + void Close(); + + bool connected() const { + return connected_; + } + + ResponsePtr response() const { + return response_; + } + + // Reset response object. + // Used to make sure the response object will released even the client object + // itself will be cached for keep-alive purpose. + void Reset() { + response_.reset(); + response_parser_.Init(nullptr, false); + } + +protected: + // Create Socket or SslSocket. + virtual void CreateSocket() = 0; + + // Resolve host. + virtual void Resolve() = 0; + + void CloseSocket(); + + void AsyncResolve(string_view default_port); + + void OnResolve(boost::system::error_code ec, + boost::asio::ip::tcp::resolver::results_type endpoints); + + void OnConnect(boost::system::error_code ec, + boost::asio::ip::tcp::endpoint endpoint); + + void AsyncWrite(); + void OnWrite(boost::system::error_code ec, std::size_t length); + + void AsyncWriteBody(); + void OnWriteBody(boost::system::error_code ec, std::size_t length); + + void HandleWriteError(boost::system::error_code ec); + + void AsyncRead(); + void OnRead(boost::system::error_code ec, std::size_t length); + + void AsyncWaitDeadlineTimer(int seconds); + void OnDeadlineTimer(boost::system::error_code ec); + void StopDeadlineTimer(); + + void FinishRequest(); + +protected: + boost::asio::io_context& io_context_; + + std::unique_ptr socket_; + + boost::asio::ip::tcp::resolver resolver_; + + bool request_finished_ = true; + std::condition_variable request_cv_; + std::mutex request_mutex_; + + RequestPtr request_; + + ResponsePtr response_; + ResponseParser response_parser_; + + // The length already read. + std::size_t length_read_ = 0; + + // The buffer for reading response. + std::vector buffer_; + + // The size of the buffer for reading response. + // 0 means default value will be used. + std::size_t buffer_size_ = kBufferSize; + + // Timeout (seconds) for connecting to server. + // Default as 0 to disable our own control (i.e., deadline_timer_). + int connect_timeout_ = 0; + + // Timeout (seconds) for reading response. + int read_timeout_ = kMaxReadSeconds; + + // Deadline timer for connecting to server. + boost::asio::steady_timer deadline_timer_; + bool deadline_timer_stopped_ = true; + + // Socket connected or not. + bool connected_ = false; + + // Progress callback (optional). + ProgressCallback progress_callback_; + + // Current error. + Error error_; +}; + +using ClientPtr = std::shared_ptr; + +} // namespace webcc + +#endif // WEBCC_CLIENT_BASE_H_ diff --git a/webcc/webcc/client_pool.h b/webcc/webcc/client_pool.h new file mode 100644 index 0000000..1187f19 --- /dev/null +++ b/webcc/webcc/client_pool.h @@ -0,0 +1,64 @@ +#ifndef WEBCC_CLIENT_POOL_H_ +#define WEBCC_CLIENT_POOL_H_ + +#include +#include + +#include "webcc/client.h" +#include "webcc/url.h" + +namespace webcc { + +// Connection pool for keep-alive connections. +class ClientPool { +public: + struct Key { + std::string scheme; + std::string host; + std::string port; + + Key() = default; + + explicit Key(const Url& url) + : scheme(url.scheme()), host(url.host()), port(url.port()) { + } + + bool operator==(const Key& rhs) const { + return scheme == rhs.scheme && host == rhs.host && port == rhs.port; + } + + bool operator<(const Key& rhs) const { + if (scheme < rhs.scheme) { + return true; + } + if (host < rhs.host) { + return true; + } + if (port < rhs.port) { + return true; + } + return false; + } + }; + +public: + ClientPool() = default; + + ClientPool(const ClientPool&) = delete; + ClientPool& operator=(const ClientPool&) = delete; + + ~ClientPool(); + + ClientPtr Get(const Key& key) const; + + void Add(const Key& key, ClientPtr client); + + void Remove(const Key& key); + +private: + std::map clients_; +}; + +} // namespace webcc + +#endif // WEBCC_CLIENT_POOL_H_ diff --git a/webcc/webcc/client_session.h b/webcc/webcc/client_session.h new file mode 100644 index 0000000..dc08321 --- /dev/null +++ b/webcc/webcc/client_session.h @@ -0,0 +1,169 @@ +#ifndef WEBCC_CLIENT_SESSION_H_ +#define WEBCC_CLIENT_SESSION_H_ + +#include +#include +#include +#include +#include + +#include "boost/asio/io_context.hpp" + +#include "webcc/client_pool.h" +#include "webcc/request_builder.h" +#include "webcc/response.h" + +#if WEBCC_ENABLE_SSL +#include "boost/asio/ssl/context.hpp" +#endif + +namespace webcc { + +// Client session provides connection-pooling, configuration and more. +// If a client session is shared by multiple threads, the requests sent through +// it will be serialized by using a mutex. +class ClientSession { +public: + explicit ClientSession(std::size_t buffer_size = 0); + + ClientSession(const ClientSession&) = delete; + ClientSession& operator=(const ClientSession&) = delete; + + ~ClientSession(); + + // Start Asio loop in a thread. + // You don't have to call Start() manually because it's called by the + // constructor. + void Start(); + + // Stop Asio loop. + // You can call Start() to resume the loop. + void Stop(); + + void set_connect_timeout(int timeout) { + if (timeout > 0) { + connect_timeout_ = timeout; + } + } + + void set_read_timeout(int timeout) { + if (timeout > 0) { + read_timeout_ = timeout; + } + } + + void set_buffer_size(std::size_t buffer_size) { + buffer_size_ = buffer_size; + } + + void SetHeader(string_view key, string_view value) { + headers_.Set(key, value); + } + + // Set `Content-Type` header, e.g., ("application/json", "utf-8"). + // Only applied when: + // - the request to send has no `Content-Type` header, and + // - the request has a body. + void SetContentType(string_view media_type, string_view charset = "") { + media_type_ = ToString(media_type); + charset_ = ToString(charset); + } + + // Set content types to accept. + void Accept(string_view content_types); + +#if WEBCC_ENABLE_GZIP + + // Accept Gzip compressed response data or not. + void AcceptGzip(bool gzip = true); + +#endif // WEBCC_ENABLE_GZIP + + // Set authorization. + void Auth(string_view type, string_view credentials); + + // Set Basic authorization. + void AuthBasic(string_view login, string_view password); + + // Set Token authorization. + void AuthToken(string_view token); + + // Send a request. + // Please use RequestBuilder to build the request. + // If |stream| is true, the response data will be written into a temp file, + // the response body will be FileBody, and you can easily move the temp file + // to another path with FileBody::Move(). So, |stream| is really useful for + // downloading files (JPEG, etc.) or saving memory for huge data responses. + ResponsePtr Send(RequestPtr request, bool stream = false, + ProgressCallback callback = {}); + + // Cancel any in-progress connecting, writing or reading. + // Return if any client object has been closed. + // It could be used to exit the program as soon as possible. + bool Cancel(); + +private: + void InitHeaders(); + + // Create a client object according to the URL scheme. + ClientPtr CreateClient(const std::string& url_scheme); + +#if WEBCC_ENABLE_SSL + // Create SSL context if it's not created. + void CreateSslContext(); +#endif // WEBCC_ENABLE_SSL + + ResponsePtr DoSend(RequestPtr request, bool stream, + ProgressCallback callback); + +private: + boost::asio::io_context io_context_; + + // The thread to run Asio loop. + std::unique_ptr io_thread_; + + using ExecutorType = boost::asio::io_context::executor_type; + boost::asio::executor_work_guard work_guard_; + +#if WEBCC_ENABLE_SSL + // SSL context is lazily created on the first HTTPS request. + boost::asio::ssl::context* ssl_context_ = nullptr; +#endif + + // Is Asio loop running? + bool started_ = false; + + // The media (or MIME) type of `Content-Type` header. + // E.g., "application/json". + std::string media_type_; + + // The charset of `Content-Type` header. + // E.g., "utf-8". + std::string charset_; + + // Additional headers for each request. + Headers headers_; + + // Timeout (seconds) for connecting to server. + int connect_timeout_ = 0; + + // Timeout (seconds) for reading response. + int read_timeout_ = 0; + + // The size of the buffer for reading response. + // 0 means default value will be used. + std::size_t buffer_size_; + + // Persistent (keep-alive) client connections. + ClientPool pool_; + + // Current requested client. + ClientPtr client_; + + // The mutex to serialize the requests. + std::mutex mutex_; +}; + +} // namespace webcc + +#endif // WEBCC_CLIENT_SESSION_H_ diff --git a/webcc/webcc/common.h b/webcc/webcc/common.h new file mode 100644 index 0000000..40d6fe5 --- /dev/null +++ b/webcc/webcc/common.h @@ -0,0 +1,250 @@ +#ifndef WEBCC_COMMON_H_ +#define WEBCC_COMMON_H_ + +#include +#include +#include +#include + +#include "webcc/fs.h" +#include "webcc/globals.h" + +namespace webcc { + +// ----------------------------------------------------------------------------- + +using Header = std::pair; + +class Headers { +public: + std::size_t size() const { + return headers_.size(); + } + + bool empty() const { + return headers_.empty(); + } + + const std::vector
& data() const { + return headers_; + } + + bool Set(string_view key, string_view value); + + bool Has(string_view key) const; + + // Get header by index. + const Header& Get(std::size_t index) const { + assert(index < size()); + return headers_[index]; + } + + // Get header value by key. + // If there's no such header with the given key, besides return empty, the + // optional |existed| parameter will be set to false. + const std::string& Get(string_view key, bool* existed = nullptr) const; + + void Clear() { + headers_.clear(); + } + +private: + std::vector
::iterator Find(string_view key); + + std::vector
headers_; +}; + +// ----------------------------------------------------------------------------- + +// Content-Type header. +// Syntax: +// Content-Type: text/html; charset=utf-8 +// Content-Type: multipart/form-data; boundary=something +class ContentType { +public: + explicit ContentType(string_view str = ""); + + void Parse(string_view str); + + void Reset(); + + bool Valid() const; + + bool multipart() const { + return multipart_; + } + + const std::string& media_type() const { + return media_type_; + } + + const std::string& charset() const { + assert(!multipart_); + return additional_; + } + + const std::string& boundary() const { + assert(multipart_); + return additional_; + } + +private: + void Init(string_view str); + +private: + std::string media_type_; + std::string additional_; + bool multipart_ = false; +}; + +// ----------------------------------------------------------------------------- + +// Content-Disposition header. +// Syntax: +// Content-Disposition: form-data +// Content-Disposition: form-data; name="fieldName" +// Content-Disposition: form-data; name="fieldName"; filename="filename.jpg" +// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition +class ContentDisposition { +public: + explicit ContentDisposition(string_view str) { + valid_ = Init(str); + } + + bool valid() const { + return valid_; + } + + const std::string& name() const { + return name_; + } + + const std::string& file_name() const { + return file_name_; + } + +private: + bool Init(string_view str); + +private: + std::string name_; + std::string file_name_; + bool valid_ = false; +}; + +// ----------------------------------------------------------------------------- + +class FormPart; +using FormPartPtr = std::shared_ptr; + +// A part of the multipart form data. +class FormPart { +public: + FormPart() = default; + + FormPart(const FormPart&) = delete; + FormPart& operator=(const FormPart&) = delete; + + // Construct a non-file part. + // The data will be moved, no file name is needed. + // The media type is optional. If the data is a JSON string, you can specify + // media type as "application/json". + static FormPartPtr New(string_view name, std::string&& data, + string_view media_type = ""); + + // Construct a file part. + // The file name will be extracted from path. + // The media type, if not provided, will be inferred from file extension. + static FormPartPtr NewFile(string_view name, const fs::path& path, + string_view media_type = ""); + + // API: SERVER + const std::string& name() const { + return name_; + } + + // API: SERVER/PARSER + void set_name(const std::string& name) { + name_ = name; + } + + // API: SERVER + const std::string& file_name() const { + return file_name_; + } + + // API: SERVER/PARSER + void set_file_name(const std::string& file_name) { + file_name_ = file_name; + } + + // API: SERVER + const std::string& media_type() const { + return media_type_; + } + + // API: SERVER + const std::string& data() const { + return data_; + } + + // API: SERVER/PARSER + void AppendData(const std::string& data) { + data_.append(data); + } + + // API: SERVER/PARSER + void AppendData(const char* data, std::size_t count) { + data_.append(data, count); + } + + // API: CLIENT + void Prepare(Payload* payload); + + // Free the memory of the data. + void Free(); + + // Get the size of the whole payload. + // Used by the request to calculate content length. + std::size_t GetSize(); + + // Get the size of the data. + std::size_t GetDataSize(); + + // Dump to output stream for logging purpose. + void Dump(std::ostream& os, string_view prefix) const; + +private: + // Generate headers from properties. + void SetHeaders(); + +private: + // The name within the original HTML form. + // E.g., given HTML form: + // + // the name will be "file1". + std::string name_; + + // The path of the file to post. + fs::path path_; + + // The original local file name. + // E.g., "baby.jpg". + std::string file_name_; + + // The content-type if the media type is known (e.g., inferred from the file + // extension or operating system typing information) or as + // application/octet-stream. + // E.g., "image/jpeg". + std::string media_type_; + + // Headers generated from the above properties. + // Only Used to prepare payload. + Headers headers_; + + std::string data_; +}; + +} // namespace webcc + +#endif // WEBCC_COMMON_H_ diff --git a/webcc/webcc/config.h b/webcc/webcc/config.h new file mode 100644 index 0000000..c033e72 --- /dev/null +++ b/webcc/webcc/config.h @@ -0,0 +1,28 @@ +#ifndef WEBCC_CONFIG_H_ +#define WEBCC_CONFIG_H_ + +// Compile configurations. +// This file is auto-generated by CMake during configuration +// from config.h.in. + +// Set 1/0 to enable/disable logging. +#define WEBCC_ENABLE_LOG 1 + +#if WEBCC_ENABLE_LOG +// 0:VERB, 1:INFO, 2:USER, 3:WARN or 4:ERRO +#define WEBCC_LOG_LEVEL 0 +#endif // WEBCC_ENABLE_LOG + +// Set 1/0 to enable/disable SSL/HTTPS. +#define WEBCC_ENABLE_SSL 1 + +// Set 1/0 to enable/disable GZIP compression. +#define WEBCC_ENABLE_GZIP 1 + +// Set 1 to use std::filesystem or 0 to use boost::filesystem. +#define WEBCC_USE_STD_FILESYSTEM 1 + +// Set 1 to use std::string_view or 0 to use boost::string_view. +#define WEBCC_USE_STD_STRING_VIEW 1 + +#endif // WEBCC_CONFIG_H_ diff --git a/webcc/webcc/connection.h b/webcc/webcc/connection.h new file mode 100644 index 0000000..9ff52fb --- /dev/null +++ b/webcc/webcc/connection.h @@ -0,0 +1,108 @@ +#ifndef WEBCC_CONNECTION_H_ +#define WEBCC_CONNECTION_H_ + +#include +#include +#include + +#include "boost/asio/ip/tcp.hpp" + +#include "webcc/globals.h" +#include "webcc/queue.h" +#include "webcc/request.h" +#include "webcc/request_parser.h" +#include "webcc/response.h" + +// Set 1 to enable the log for the study of server thread model. +// Need to use multiple workers and loops for Server::Run(). +// Suggest to configure the log level to USER. +#define WEBCC_STUDY_SERVER_THREADING 0 + +namespace webcc { + +class Connection; +class ConnectionPool; +class Server; + +using ConnectionPtr = std::shared_ptr; + +class Connection : public std::enable_shared_from_this { +public: + Connection(boost::asio::ip::tcp::socket socket, ConnectionPool* pool, + Queue* queue, ViewMatcher&& view_matcher, + std::size_t buffer_size); + + Connection(const Connection&) = delete; + Connection& operator=(const Connection&) = delete; + + ~Connection() = default; + + RequestPtr request() const { + return request_; + } + + // Start to read and process the client request. + void Start(); + + // Close the socket. + void Close(); + + // Send a response to the client. + // `Connection` header will be set to "Close" if |no_keep_alive| is true no + // matter whether the client asked for Keep-Alive or not. + void SendResponse(ResponsePtr response, bool no_keep_alive = false); + + // Send a response with the given status and an empty body to the client. + // `Connection` header will be set to "Close" if |no_keep_alive| is true no + // matter whether the client asked for Keep-Alive or not. + void SendResponse(Status status, bool no_keep_alive = false); + + + // Send a response with the given status and an empty body to the client,with a custom 'Server' header + // `Connection` header will be set to "Close" if |no_keep_alive| is true no + // matter whether the client asked for Keep-Alive or not. + void SendResponse(Status status, std::string server_name, bool no_keep_alive = false); + +private: + void AsyncRead(); + void OnRead(boost::system::error_code ec, std::size_t length); + + void AsyncWrite(); + void OnWriteHeaders(boost::system::error_code ec, std::size_t length); + + void AsyncWriteBody(); + void OnWriteBody(boost::system::error_code ec, std::size_t length); + + void HandleWriteOK(); + void HandleWriteError(boost::system::error_code ec); + +private: + // The socket for the connection. + boost::asio::ip::tcp::socket socket_; + + // The connection pool. + ConnectionPool* pool_; + + // The connection queue. + Queue* queue_; + + // A function for matching view once the headers of a request has been + // received. + ViewMatcher view_matcher_; + + // The buffer for incoming data. + std::vector buffer_; + + // The incoming request. + RequestPtr request_; + + // The parser for the incoming request. + RequestParser request_parser_; + + // The response to be sent back to the client. + ResponsePtr response_; +}; + +} // namespace webcc + +#endif // WEBCC_CONNECTION_H_ diff --git a/webcc/webcc/connection_pool.h b/webcc/webcc/connection_pool.h new file mode 100644 index 0000000..0a4d27f --- /dev/null +++ b/webcc/webcc/connection_pool.h @@ -0,0 +1,40 @@ +#ifndef WEBCC_CONNECTION_POOL_H_ +#define WEBCC_CONNECTION_POOL_H_ + +#include +#include + +#include "webcc/connection.h" + +namespace webcc { + +class ConnectionPool { +public: + ConnectionPool() = default; + + ConnectionPool(const ConnectionPool&) = delete; + ConnectionPool& operator=(const ConnectionPool&) = delete; + + // Add the connection and start to read the request from it. + // Called when a new connection has just been accepted. + void Start(ConnectionPtr c); + + // Close the connection. + // Called when the response of the connection has been sent back. + void Close(ConnectionPtr c); + + // Close all pending connections. + // Called when the server is about to stop. + void Clear(); + +private: + std::set connections_; + + // Mutex is necessary if the loop is running in multiple threads. + // See Server::Run(). + std::mutex mutex_; +}; + +} // namespace webcc + +#endif // WEBCC_CONNECTION_POOL_H_ diff --git a/webcc/webcc/fs.h b/webcc/webcc/fs.h new file mode 100644 index 0000000..050a7b7 --- /dev/null +++ b/webcc/webcc/fs.h @@ -0,0 +1,65 @@ +#ifndef WEBCC_FS_H_ +#define WEBCC_FS_H_ + +// Use std or boost filesystem according to config. + +#include "webcc/config.h" // for WEBCC_USE_STD_FILESYSTEM + +#if WEBCC_USE_STD_FILESYSTEM +#include +#include +#else +#include "boost/filesystem/fstream.hpp" +#include "boost/filesystem/operations.hpp" +#include "boost/filesystem/path.hpp" +#endif // WEBCC_USE_STD_FILESYSTEM + +namespace webcc { +namespace fs { + +#if WEBCC_USE_STD_FILESYSTEM + +// types +using std::error_code; +using std::ifstream; +using std::ofstream; +using std::filesystem::path; +using std::filesystem::filesystem_error; + +// functions +using std::filesystem::rename; +using std::filesystem::remove; +using std::filesystem::exists; +using std::filesystem::is_directory; +using std::filesystem::is_regular_file; +using std::filesystem::create_directory; +using std::filesystem::create_directories; +using std::filesystem::current_path; +using std::filesystem::temp_directory_path; + +#else + +// types +using boost::system::error_code; +using boost::filesystem::ifstream; +using boost::filesystem::ofstream; +using boost::filesystem::path; +using boost::filesystem::filesystem_error; + +// functions +using boost::filesystem::rename; +using boost::filesystem::remove; +using boost::filesystem::exists; +using boost::filesystem::is_directory; +using boost::filesystem::is_regular_file; +using boost::filesystem::create_directory; +using boost::filesystem::create_directories; +using boost::filesystem::current_path; +using boost::filesystem::temp_directory_path; + +#endif // WEBCC_USE_STD_FILESYSTEM + +} // namespace fs +} // namespace webcc + +#endif // WEBCC_FS_H_ diff --git a/webcc/webcc/globals.h b/webcc/webcc/globals.h new file mode 100644 index 0000000..b38666b --- /dev/null +++ b/webcc/webcc/globals.h @@ -0,0 +1,392 @@ +#ifndef WEBCC_GLOBALS_H_ +#define WEBCC_GLOBALS_H_ + +#include +#include +#include +#include +#include +#include + +#include "boost/asio/buffer.hpp" // for const_buffer + +#include "webcc/config.h" + +#if WEBCC_USE_STD_STRING_VIEW +#include +#else +#include "boost/utility/string_view.hpp" +#endif // WEBCC_USE_STD_STRING_VIEW + +namespace webcc { + +// ----------------------------------------------------------------------------- + +#if WEBCC_USE_STD_STRING_VIEW +using string_view = std::string_view; +#else +using string_view = boost::string_view; +#endif // WEBCC_USE_STD_STRING_VIEW + +inline std::string ToString(string_view sv) { +#if WEBCC_USE_STD_STRING_VIEW + return std::string{ sv.begin(), sv.end() }; +#else + return sv.to_string(); +#endif // WEBCC_USE_STD_STRING_VIEW +} + +// ----------------------------------------------------------------------------- + +using Strings = std::vector; + +// Regex sub-matches of the URL (usually resource ID's). +// Could also be considered as arguments, so named as UrlArgs. +using UrlArgs = std::vector; + +using Payload = std::vector; + +using ProgressCallback = + std::function; + +// ----------------------------------------------------------------------------- + +const char* const kCRLF = "\r\n"; + +const std::size_t kInvalidLength = -1; + +// Default timeout for reading response. +const int kMaxReadSeconds = 30; + +// Max size of the HTTP body to dump/log. +// If the HTTP, e.g., response, has a very large content, it will be truncated +// when dumped/logged. +const std::size_t kMaxDumpSize = 2048; + +// Default buffer size for socket reading. +const std::size_t kBufferSize = 1024; + +// Why 1400? See the following page: +// https://www.itworld.com/article/2693941/why-it-doesn-t-make-sense-to- +// gzip-all-content-from-your-web-server.html +const std::size_t kGzipThreshold = 1400; + +// ----------------------------------------------------------------------------- + +namespace literal_buffers { + +// Buffers for composing payload. +// Literal strings can't be used because they have an extra '\0'. + +extern const char HEADER_SEPARATOR[2]; +extern const char CRLF[2]; +extern const char DOUBLE_DASHES[2]; + +} // namespace literal_buffers + +// ----------------------------------------------------------------------------- + +namespace methods { + +// HTTP methods (verbs) in string. +// Don't use enum to avoid converting back and forth. + +const char* const kGet = "GET"; +const char* const kHead = "HEAD"; +const char* const kPost = "POST"; +const char* const kPut = "PUT"; +const char* const kDelete = "DELETE"; +const char* const kConnect = "CONNECT"; +const char* const kOptions = "OPTIONS"; +const char* const kTrace = "TRACE"; +const char* const kPatch = "PATCH"; + +} // namespace methods + +// HTTP status codes. +// Don't use "enum class" for converting to/from int easily. +// The full list is available here: +// https://en.wikipedia.org/wiki/List_of_HTTP_status_codes +enum Status { + // 此临时响应表明客户端应继续请求,或者如果请求已完成,则忽略此响应。 + kContinue = 100, + // 此代码是在响应客户端的 Upgrade 请求标头时发送的,用于指示服务器即将切换到的协议。 + kSwitchingProtocols = 101, + // 此代码曾在 WebDAV 上下文中使用,表示服务器已收到请求,但在响应时无法提供状态。 + kProcessing = 102, + // 此状态码主要与 Link 标头一起使用,允许用户代理在服务器准备响应时开始预加载资源,或预连接到页面需要资源的源站。 + kEarlyHints = 103, + + // 请求成功。 + kOK = 200, + // 请求成功,并因此创建了一个新资源。 + kCreated = 201, + // 请求已被接收但尚未处理。 + kAccepted = 202, + // 此响应代码表示返回的元数据与原始服务器上可用的不完全相同,而是从本地或第三方副本收集的。这主要用于另一个资源的镜像或备份。 + kNonAuthoritativeInformation = 203, + // 对于此请求,没有内容可发送,但响应头可能有用。 + kNoContent = 204, + // 告知用户代理重置发送此请求的文档。 + kResetContent = 205, + // 当客户端请求了资源的一部分时,使用此响应代码进行响应。 + kPartialContent = 206, + // 在可能需要多个状态码的情况下,传递关于多个资源的信息。 + kMultiStatus = 207, + // 在 响应元素内部使用,以避免重复枚举同一集合的多个绑定的内部成员。 + kAlreadyReported = 208, + // 服务器已完成了对资源的 GET 请求,并且响应是对当前实例应用了一个或多个实例操作后的结果表示。 + kIMUsed = 226, + + // 在代理驱动(agent-driven)的内容协商中,请求有多个可能的响应,用户代理或用户应选择其中之一。 + kMultipleChoices = 300, + // 请求资源的 URL 已永久更改。新 URL 在响应中给出。 + kMovedPermanently = 301, + // 此响应代码意味着请求资源的 URI 已暂时更改。未来可能还会对 URI 进行进一步更改,因此客户端在未来的请求中应使用相同的 URI。 + kFound = 302, + // 服务器发送此响应以指示客户端使用 GET 请求在另一个 URI 获取请求的资源。 + kSeeOther = 303, + // 用于缓存目的。它告知客户端响应未被修改,因此客户端可以继续使用相同的缓存响应版本。 + kNotModified = 304, + // 在 HTTP 规范的前一版本中定义,表示请求的响应必须通过代理访问。由于涉及代理带内配置的安全问题,此状态码已被弃用。 + kUseProxy = 305, + // 此响应代码不再使用,但被保留。它曾在 HTTP/1.1 规范的先前版本中使用。 + k__Unused = 306, + // 服务器发送此响应以指示客户端使用与先前请求相同的方法在另一个 URI 获取请求的资源。其语义与 302 Found 响应代码相同,但用户代理不得更改使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在重定向请求中也必须使用 POST。 + kTemporaryRedirect = 307, + // 表示资源现在永久位于另一个 URI,由 Location 响应头指定。其语义与 301 Moved Permanently HTTP 响应代码相同,但用户代理不得更改使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在第二个请求中也必须使用 POST。 + kPermanentRedirect = 308, + + // 由于被认为是客户端错误的原因(例如,格式错误的请求语法、无效的请求消息结构或欺骗性的请求路由),服务器无法或不会处理该请求。 + kBadRequest = 400, + // 尽管 HTTP 标准指定为 "unauthorized",但从语义上讲,此响应的意思是 "unauthenticated"。即,客户端必须进行身份验证才能获得请求的响应。 + kUnauthorized = 401, + // 此代码最初用于数字支付系统,但此状态码很少使用,且不存在标准约定。 + kPaymentRequired = 402, + // 客户端没有访问内容的权利;也就是说,它是未授权的,因此服务器拒绝提供请求的资源。与 401 Unauthorized 不同,服务器知道客户端的身份。 + kForbidden = 403, + // 服务器找不到请求的资源。 + kNotFound = 404, + // 服务器知道请求方法,但目标资源不支持该方法。 + kMethodNotAllowed = 405, + // 当 Web 服务器执行服务器驱动的内容协商后,找不到任何符合用户代理给定条件的内容时,会发送此响应。 + kNotAcceptable = 406, + // 类似于 401 Unauthorized,但需要通过代理进行身份验证。 + kProxyAuthenticationRequired = 407, + // 某些服务器会在空闲连接上发送此响应,即使客户端之前没有任何请求。这意味着服务器希望关闭此未使用的连接。 + kRequestTimeout = 408, + // 当请求与服务器的当前状态冲突时,发送此响应。 + kConflict = 409, + // 当请求的内容已从服务器永久删除,且没有转发地址时,发送此响应。 + kGone = 410, + // 服务器拒绝了请求,因为未定义 Content-Length 标头字段,而服务器需要它。 + kLengthRequired = 411, + // 在条件请求中,客户端在其标头中指明了服务器不满足的前提条件。 + kPreconditionFailed = 412, + // 请求体大于服务器定义的限制。 + kContentTooLarge = 413, + // 客户端请求的 URI 长度超过了服务器愿意解释的长度。 + kURITooLong = 414, + // 服务器不支持请求数据的媒体格式,因此服务器拒绝该请求。 + kUnsupportedMediaType = 415, + // 无法满足请求中 Range 标头字段指定的范围。可能范围超出了目标资源数据的大小。 + kRangeNotSatisfiable = 416, + // 此响应代码表示服务器无法满足 Expect 请求标头字段指示的期望。 + kExpectationFailed = 417, + // 服务器拒绝尝试用茶壶煮咖啡。 + kIamATeapot = 418, + // 请求被发送到了一个无法产生响应的服务器。 + kMisdirectedRequest = 421, + // 请求格式正确,但由于语义错误而无法被遵循。 + kUnprocessableContent = 422, + // 正在访问的资源已被锁定。 + kLocked = 423, + // 由于先前的请求失败,导致当前请求失败。 + kFailedDependency = 424, + // 表示服务器不愿意冒险处理一个可能被重放的请求。 + kTooEarly = 425, + // 服务器拒绝使用当前协议执行请求,但可能在客户端升级到其他协议后愿意执行。服务器在 426 响应中发送 Upgrade 标头以指示所需的协议。 + kUpgradeRequired = 426, + // 原始服务器要求请求是有条件的。此响应旨在防止"丢失更新"问题,即客户端 GET 资源状态,修改后 PUT 回服务器,而同时第三方已修改了服务器上的状态,导致冲突。 + kPreconditionRequired = 428, + // 用户在给定的时间内发送了太多请求(速率限制)。 + kTooManyRequests = 429, + // 服务器因请求头字段太大而不愿意处理该请求。 + kRequestHeaderFieldsTooLarge = 431, + // 用户代理请求了一个无法合法提供的资源,例如被政府审查的网页。 + kUnavailableForLegalReasons = 451, + + // 服务器遇到了不知道如何处理的情况。此错误是通用性的,表示服务器找不到更合适的 5XX 状态码来响应。 + kInternalServerError = 500, + // 服务器不支持请求方法,无法处理。 + kNotImplemented = 501, + // 此错误响应意味着服务器作为网关或代理时,收到了一个无效的响应。 + kBadGateway = 502, + // 服务器尚未准备好处理请求。 + kServiceUnavailable = 503, + // 当服务器作为网关或代理,无法及时获得响应时,会给出此错误响应。 + kGatewayTimeout = 504, + // 服务器不支持请求中使用的 HTTP 版本。 + kHTTPVersionNotSupported = 505, + // 服务器存在内部配置错误:在内容协商过程中,被选中的变体被配置为自身参与内容协商,这导致在创建响应时出现循环引用。 + kVariantAlsoNegotiates = 506, + // 由于服务器无法存储成功完成请求所需的表示,因此无法对资源执行该方法。 + kInsufficientStorage = 507, + // 服务器在处理请求时检测到无限循环。 + kLoopDetected = 508, + // 客户端请求声明了一个应使用 HTTP 扩展(RFC 2774)来处理请求,但该扩展不受支持。 + kNotExtended = 510, + // 表示客户端需要进行身份验证才能获得网络访问权限。 + kNetworkAuthenticationRequired = 511, + + //Not Standard Code By UnknownObject + + // 请求载体的格式错误,如:无法解析的JSON等。 + k_uRequestFormatError = 489, + // 请求无效。可能是由于未正确携带数据等必要信息。 + k_uRequestInvalid = 490, + // 请求URL超范围。此响应表示请求的URL是错误的。 + k_uURLOutOfRange = 492, + // 无效的请求主机。指示请求时使用了错误的域名/IP。 + k_uInvalidRequestHost = 493, + // IP地址被封禁。 + k_uIPBlocked = 494, + // 非法上传请求。指示本次上传请求不符合服务器规定。 + k_uIllegalUpload = 495, + // 文件格式错误。指示上传的文件格式不符合服务器规定。 + k_uFileFormatError = 496, + // 无效文件。处理请求所需的文件已过期/无法访问。 + k_uInvalidFile = 497, + // 上传的文件过大。非文件上传时应使用 413 Content Too Large。 + k_uFileTooLarge = 498, + // 每秒请求数过多。仅在一些特殊API中使用,常规情况需使用 429 Too Many Requests。 + k_uRPSLimited = 499, + + // 子过程失败。服务器在处理请求的某个步骤中遇到无法恢复的错误。 + k_uSubProcessFalied = 533, + // 服务器检测到漏洞利用/可执行文件上传等网络攻击行为。 + k_uServerHateYou = 540, + // 检测到拒绝服务漏洞攻击。 + k_uDoSFound = 550, + // 检测到分布式拒绝服务漏洞攻击。 + k_uDDoSFound = 551, + // 未知的服务器错误。当服务器无法定位错误来源时返回。否则应使用 500 Internal Server Error。 + k_uUnknownServerError = 560 +}; + +namespace headers { + +// NOTE: Field names are case-insensitive. +// See https://stackoverflow.com/a/5259004 for more details. + +const char* const kHost = "Host"; +const char* const kDate = "Date"; +const char* const kAuthorization = "Authorization"; +const char* const kContentType = "Content-Type"; +const char* const kContentLength = "Content-Length"; +const char* const kContentEncoding = "Content-Encoding"; +const char* const kContentMD5 = "Content-MD5"; +const char* const kContentDisposition = "Content-Disposition"; +const char* const kConnection = "Connection"; +const char* const kTransferEncoding = "Transfer-Encoding"; +const char* const kAccept = "Accept"; +const char* const kAcceptEncoding = "Accept-Encoding"; +const char* const kUserAgent = "User-Agent"; +const char* const kServer = "Server"; + +} // namespace headers + +namespace media_types { + +// See the following link for the full list of media types: +// https://www.iana.org/assignments/media-types/media-types.xhtml + +const char* const kApplicationJson = "application/json"; +const char* const kApplicationSoapXml = "application/soap+xml"; +const char* const kApplicationFormUrlEncoded = + "application/x-www-form-urlencoded"; +const char* const kTextPlain = "text/plain"; +const char* const kTextXml = "text/xml"; + +// Get media type from file extension. +std::string FromExtension(const std::string& ext); + +} // namespace media_types + +namespace charsets { + +const char* const kUtf8 = "utf-8"; + +} // namespace charsets + +enum class ContentEncoding { + kUnknown, + kGzip, + kDeflate, +}; + +// ----------------------------------------------------------------------------- + +// Error or exception (for client only). +class Error : public std::exception { +public: + enum Code { + kUnknownError = -1, + kOK = 0, + kStateError, + kSyntaxError, + kResolveError, + kConnectError, + kSocketReadError, + kSocketWriteError, + kParseError, + kFileError, + kDataError, + }; + +public: + explicit Error(Code code = kOK, string_view message = "") + : code_(code), message_(message) { + } + + // Note that `noexcept` is required by GCC. + const char* what() const noexcept override { + return message_.c_str(); + } + + Code code() const { + return code_; + } + + const std::string& message() const { + return message_; + } + + void Set(Code code, string_view message) { + code_ = code; + message_ = ToString(message); + } + + bool timeout() const { + return timeout_; + } + + void set_timeout(bool timeout) { + timeout_ = timeout; + } + + operator bool() const { + return code_ != kOK; + } + +private: + Code code_; + std::string message_; + bool timeout_ = false; +}; + +std::ostream& operator<<(std::ostream& os, const Error& error); + +} // namespace webcc + +#endif // WEBCC_GLOBALS_H_ diff --git a/webcc/webcc/gzip.h b/webcc/webcc/gzip.h new file mode 100644 index 0000000..fefe8bf --- /dev/null +++ b/webcc/webcc/gzip.h @@ -0,0 +1,19 @@ +#ifndef WEBCC_GZIP_H_ +#define WEBCC_GZIP_H_ + +#include + +namespace webcc { +namespace gzip { + +// Compress the input string to gzip format output. +bool Compress(const std::string& input, std::string* output); + +// Decompress the input string with auto detecting both gzip and zlib (deflate) +// formats. +bool Decompress(const std::string& input, std::string* output); + +} // namespace gzip +} // namespace webcc + +#endif // WEBCC_GZIP_H_ diff --git a/webcc/webcc/logger.h b/webcc/webcc/logger.h new file mode 100644 index 0000000..b3a09a6 --- /dev/null +++ b/webcc/webcc/logger.h @@ -0,0 +1,124 @@ +#ifndef WEBCC_LOGGER_H_ +#define WEBCC_LOGGER_H_ + +// This file was generated from "config.h.in" by CMake. +#include "webcc/config.h" + +#if WEBCC_ENABLE_LOG + +#include // for strrchr() +#include + +#include "webcc/fs.h" + +// Log levels. +// VERB is similar to DEBUG commonly used by other projects. +// USER is for the users who want to log their own logs but don't want any +// VERB or INFO. +#define WEBCC_VERB 0 +#define WEBCC_INFO 1 +#define WEBCC_USER 2 +#define WEBCC_WARN 3 +#define WEBCC_ERRO 4 + +// Default log level. +#ifndef WEBCC_LOG_LEVEL +#define WEBCC_LOG_LEVEL WEBCC_VERB +#endif + +#define WEBCC_LOG_FILE_NAME "webcc.log" + +namespace webcc +{ + + enum LogMode + { + LOG_FILE = 1, // Log to file. + LOG_CONSOLE = 2, // Log to console. + LOG_FLUSH = 4, // Flush on each log. + LOG_OVERWRITE = 8, // Overwrite any existing log file. + }; + + // Commonly used modes. + const int LOG_CONSOLE_FILE_APPEND = LOG_CONSOLE | LOG_FILE; + const int LOG_CONSOLE_FILE_OVERWRITE = LOG_CONSOLE | LOG_FILE | LOG_OVERWRITE; + const int LOG_FILE_OVERWRITE = LOG_FILE | LOG_OVERWRITE; + + // Initialize logger. + // If |dir| is empty, log file will be generated in current directory. + void LogInit(const fs::path& dir, int modes); + + void LogInit(const fs::path& dir, int modes, int log_level); + + void Log(int level, const char* file, int line, const char* format, ...); + +} // namespace webcc + +// Initialize the logger with a level. +#define WEBCC_LOG_INIT(dir, modes) webcc::LogInit(dir, modes); +#define WEBCC_LOG_INIT_2(dir, modes, level) webcc::LogInit(dir, modes, level); + +// Definition of _WIN32 & _WIN64: +// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=vs-2015 +#if (defined(_WIN32) || defined(_WIN64)) + +// See: https://stackoverflow.com/a/8488201 +// ISSUE: The last path separator of __FILE__ in a header file becomes "/" +// instead of "\". The result is that __FILENAME__ will contain a +// prefix of "webcc/". So don't log from a header file! +#define __FILENAME__ std::strrchr("\\" __FILE__, '\\') + 1 + +#else + +#define __FILENAME__ std::strrchr("/" __FILE__, '/') + 1 + +#endif // defined(_WIN32) || defined(_WIN64) + +#if WEBCC_LOG_LEVEL <= WEBCC_VERB +#define LOG_VERB(format, ...) \ + webcc::Log(WEBCC_VERB, __FILENAME__, __LINE__, format, ##__VA_ARGS__); +#else +#define LOG_VERB(format, ...) +#endif + +#if WEBCC_LOG_LEVEL <= WEBCC_INFO +#define LOG_INFO(format, ...) \ + webcc::Log(WEBCC_INFO, __FILENAME__, __LINE__, format, ##__VA_ARGS__); +#else +#define LOG_INFO(format, ...) +#endif + +#if WEBCC_LOG_LEVEL <= WEBCC_USER +#define LOG_USER(format, ...) \ + webcc::Log(WEBCC_USER, __FILENAME__, __LINE__, format, ##__VA_ARGS__); +#else +#define LOG_INFO(format, ...) +#endif + +#if WEBCC_LOG_LEVEL <= WEBCC_WARN +#define LOG_WARN(format, ...) \ + webcc::Log(WEBCC_WARN, __FILENAME__, __LINE__, format, ##__VA_ARGS__); +#else +#define LOG_WARN(format, ...) +#endif + +#if WEBCC_LOG_LEVEL <= WEBCC_ERRO +#define LOG_ERRO(format, ...) \ + webcc::Log(WEBCC_ERRO, __FILENAME__, __LINE__, format, ##__VA_ARGS__); +#else +#define LOG_ERRO(format, ...) +#endif + +#else // WEBCC_ENABLE_LOG == 0 + +#define WEBCC_LOG_INIT(dir, modes) + +#define LOG_VERB(format, ...) +#define LOG_INFO(format, ...) +#define LOG_USER(format, ...) +#define LOG_WARN(format, ...) +#define LOG_ERRO(format, ...) + +#endif // WEBCC_ENABLE_LOG + +#endif // WEBCC_LOGGER_H_ diff --git a/webcc/webcc/message.h b/webcc/webcc/message.h new file mode 100644 index 0000000..1eed643 --- /dev/null +++ b/webcc/webcc/message.h @@ -0,0 +1,122 @@ +#ifndef WEBCC_MESSAGE_H_ +#define WEBCC_MESSAGE_H_ + +#include +#include +#include +#include + +#include "webcc/body.h" +#include "webcc/common.h" +#include "webcc/globals.h" + +namespace webcc { + +class Message { +public: + Message(); + + Message(const Message&) = delete; + Message& operator=(const Message&) = delete; + + virtual ~Message() = default; + + const std::string& start_line() const { + return start_line_; + } + + void set_start_line(string_view start_line) { + start_line_ = ToString(start_line); + } + + void SetHeader(Header&& header) { + headers_.Set(std::move(header.first), std::move(header.second)); + } + + void SetHeader(string_view key, string_view value) { + headers_.Set(key, value); + } + + const std::string& GetHeader(string_view key, bool* existed = nullptr) const { + return headers_.Get(key, existed); + } + + bool HasHeader(string_view key) const { + return headers_.Has(key); + } + + std::size_t content_length() const { + return content_length_; + } + + void set_content_length(std::size_t content_length) { + content_length_ = content_length; + } + + void SetBody(BodyPtr body, bool set_length); + + BodyPtr body() const { + return body_; + } + + //Added by UnknownObject at 2023-05-17 + //Add function of get all headers. + Headers GetAllHeaders() const + { + return headers_; + } + + // Get the data from the (string) body. + // Return empty string if the body is not a StringBody. + const std::string& data() const; + + // Get the body as a FileBody. + // Return null if the body is not a FileBody. + std::shared_ptr file_body() const; + + // Check `Connection` header to see if it's "Keep-Alive". + bool IsConnectionKeepAlive() const; + + // Determine content encoding (gzip, deflate or unknown) from + // `Content-Encoding` header. + ContentEncoding GetContentEncoding() const; + + // Check `Accept-Encoding` header to see if it contains "gzip". + bool AcceptEncodingGzip() const; + + // Set `Content-Type` header. E.g., + // SetContentType("application/json; charset=utf-8") + void SetContentType(string_view content_type) { + SetHeader(headers::kContentType, content_type); + } + + // Set `Content-Type` header. E.g., + // SetContentType("application/json", "utf-8") + void SetContentType(string_view media_type, string_view charset); + + // Make the message complete in order to be sent. + virtual void Prepare() = 0; + + // Get the payload for the socket to write. + // This doesn't include the payload(s) of the body! + Payload GetPayload() const; + + // Dump to output stream for logging purpose. + void Dump(std::ostream& os) const; + + // Dump to string for logging purpose. + std::string Dump() const; + +protected: + BodyPtr body_; + + Headers headers_; + + std::string start_line_; + + std::size_t content_length_ = kInvalidLength; +}; + +} // namespace webcc + +#endif // WEBCC_MESSAGE_H_ diff --git a/webcc/webcc/parser.h b/webcc/webcc/parser.h new file mode 100644 index 0000000..dfb42c9 --- /dev/null +++ b/webcc/webcc/parser.h @@ -0,0 +1,195 @@ +#ifndef WEBCC_PARSER_H_ +#define WEBCC_PARSER_H_ + +#include +#include + +#include "webcc/common.h" +#include "webcc/fs.h" +#include "webcc/globals.h" + +namespace webcc { + +class Message; + +// ----------------------------------------------------------------------------- + +class BodyHandler { +public: + explicit BodyHandler(Message* message) : message_(message) { + } + + BodyHandler(const BodyHandler&) = delete; + BodyHandler& operator=(const BodyHandler&) = delete; + + virtual ~BodyHandler() = default; + + virtual void AddContent(const char* data, std::size_t count) = 0; + + virtual void AddContent(const std::string& data) = 0; + + virtual std::size_t GetContentLength() const = 0; + + virtual bool Finish() = 0; + +protected: + bool IsCompressed() const; + +protected: + Message* message_; +}; + +// ----------------------------------------------------------------------------- + +class StringBodyHandler : public BodyHandler { +public: + explicit StringBodyHandler(Message* message) : BodyHandler(message) { + } + + ~StringBodyHandler() override = default; + + void AddContent(const char* data, std::size_t count) override; + void AddContent(const std::string& data) override; + + std::size_t GetContentLength() const override { + return content_.size(); + } + + bool Finish() override; + +private: + std::string content_; +}; + +// ----------------------------------------------------------------------------- + +class FileBodyHandler : public BodyHandler { +public: + // NOTE: Might throw Error::kFileError. + explicit FileBodyHandler(Message* message) : BodyHandler(message) { + } + + ~FileBodyHandler() override = default; + + // Open a temp file for data streaming. + bool OpenFile(); + + void AddContent(const char* data, std::size_t count) override; + void AddContent(const std::string& data) override; + + std::size_t GetContentLength() const override { + return streamed_size_; + } + + bool Finish() override; + +private: + std::size_t streamed_size_ = 0; + fs::ofstream ofstream_; + fs::path temp_path_; +}; + +// ----------------------------------------------------------------------------- + +// HTTP request and response parser. +class Parser { +public: + Parser(); + + Parser(const Parser&) = delete; + Parser& operator=(const Parser&) = delete; + + virtual ~Parser() = default; + + void Init(Message* message); + + bool finished() const { + return finished_; + } + + // If the headers part has been parsed or not. + bool header_ended() const { + return header_ended_; + } + + // Get the length of the headers part. + // Available after the headers have been parsed (see header_ended()). + std::size_t header_length() const { + return header_length_; + } + + // The content length parsed from `Content-Length` header. + // kInvalidLength if the content is chunked. + std::size_t content_length() const { + return content_length_; + } + + // Parse the given length of data. + // Return false if the parsing is failed. + bool Parse(const char* data, std::size_t length); + +protected: + void Reset(); + + // Parse headers from pending data. + // Return false only on syntax errors. + bool ParseHeaders(); + + // Called when headers just parsed. + // Return false if something is wrong. + virtual bool OnHeadersEnd() = 0; + + void CreateBodyHandler(); + + // Get next line (using delimiter CRLF) from the pending data. + // The line will not contain a trailing CRLF. + // If |erase| is true, the line, as well as the trailing CRLF, will be erased + // from the pending data. + bool GetNextLine(std::size_t off, std::string* line, bool erase); + + virtual bool ParseStartLine(const std::string& line) = 0; + + bool ParseHeaderLine(const std::string& line); + + // Parse the given length of data. + virtual bool ParseContent(const char* data, std::size_t length); + + bool ParseFixedContent(const char* data, std::size_t length); + + bool ParseChunkedContent(const char* data, std::size_t length); + + bool ParseChunkSize(const std::string& line); + + bool IsFixedContentFull() const; + + // Return false if the compressed content cannot be decompressed. + bool Finish(); + +protected: + Message* message_ = nullptr; + + std::unique_ptr body_handler_; + + // Data streaming or not. + bool stream_ = false; + + // Data waiting to be parsed. + std::string pending_data_; + + // The length of the headers part. + std::size_t header_length_ = 0; + + // Temporary data and helper flags for parsing. + std::size_t content_length_ = kInvalidLength; + ContentType content_type_; + bool start_line_parsed_ = false; + bool content_length_parsed_ = false; + bool header_ended_ = false; + bool chunked_ = false; + std::size_t chunk_size_ = kInvalidLength; + bool finished_ = false; +}; + +} // namespace webcc + +#endif // WEBCC_PARSER_H_ diff --git a/webcc/webcc/queue.h b/webcc/webcc/queue.h new file mode 100644 index 0000000..33def42 --- /dev/null +++ b/webcc/webcc/queue.h @@ -0,0 +1,70 @@ +#ifndef WEBCC_QUEUE_H_ +#define WEBCC_QUEUE_H_ + +// A general message queue. + +#include +#include +#include +#include + +namespace webcc { + +template +class Queue { +public: + Queue() = default; + + Queue(const Queue&) = delete; + Queue& operator=(const Queue&) = delete; + + T PopOrWait() { + std::unique_lock lock(mutex_); + + // Wait for a message. + not_empty_cv_.wait(lock, [this] { return !message_list_.empty(); }); + + T message = message_list_.front(); + message_list_.pop_front(); + return message; + } + + T Pop() { + std::lock_guard lock(mutex_); + + if (message_list_.empty()) { + return T(); + } + + T message = message_list_.front(); + message_list_.pop_front(); + return message; + } + + void Clear() { + std::lock_guard lock(mutex_); + message_list_.clear(); + } + + void Push(const T& message) { + { + std::lock_guard lock(mutex_); + message_list_.push_back(message); + } + not_empty_cv_.notify_one(); + } + + std::size_t Size() const { + std::lock_guard lock(mutex_); + return message_list_.size(); + } + +private: + std::list message_list_; + mutable std::mutex mutex_; + std::condition_variable not_empty_cv_; +}; + +} // namespace webcc + +#endif // WEBCC_QUEUE_H_ diff --git a/webcc/webcc/request.h b/webcc/webcc/request.h new file mode 100644 index 0000000..482a158 --- /dev/null +++ b/webcc/webcc/request.h @@ -0,0 +1,93 @@ +#ifndef WEBCC_REQUEST_H_ +#define WEBCC_REQUEST_H_ + +#include +#include +#include + +#include "webcc/message.h" +#include "webcc/url.h" + +namespace webcc { + +class Request : public Message { +public: + Request() = default; + + explicit Request(const std::string& method) : method_(method) { + } + + ~Request() override = default; + + const std::string& method() const { + return method_; + } + + void set_method(string_view method) { + method_ = ToString(method); + } + + const Url& url() const { + return url_; + } + + void set_url(Url&& url) { + url_ = std::move(url); + } + + const std::string& host() const { + return url_.host(); + } + + const std::string& port() const { + return url_.port(); + } + + UrlQuery query() const { + return UrlQuery{ url_.query() }; + } + + const UrlArgs& args() const { + return args_; + } + + void set_args(UrlArgs&& args) { + args_ = std::move(args); + } + + const std::string& address() const { + return address_; + } + + void set_address(std::string&& address) { + address_ = std::move(address); + } + + // Check if the body is a multi-part form data. + bool IsForm() const; + + // Get the form parts from the body. + // Only applicable to FormBody (i.e., multi-part form data). + // Otherwise, exception Error(kDataError) will be thrown. + const std::vector& form_parts() const; + + void Prepare() override; + +private: + std::string method_; + + Url url_; + + // The URL regex matched arguments (usually resource ID's). + // Used by server only. + UrlArgs args_; + + // Client IP address. + std::string address_; +}; + +using RequestPtr = std::shared_ptr; + +} // namespace webcc + +#endif // WEBCC_REQUEST_H_ diff --git a/webcc/webcc/request_builder.h b/webcc/webcc/request_builder.h new file mode 100644 index 0000000..1028832 --- /dev/null +++ b/webcc/webcc/request_builder.h @@ -0,0 +1,230 @@ +#ifndef WEBCC_REQUEST_BUILDER_H_ +#define WEBCC_REQUEST_BUILDER_H_ + +#include +#include + +#include "webcc/fs.h" +#include "webcc/request.h" +#include "webcc/url.h" + +// ----------------------------------------------------------------------------- +// Handy macros for creating a RequestBuilder. + +#define WEBCC_RB webcc::RequestBuilder{} + +// clang-format off +#define WEBCC_GET(url) WEBCC_RB.Get(url, false) +#define WEBCC_GET_ENC(url) WEBCC_RB.Get(url, true) +#define WEBCC_HEAD(url) WEBCC_RB.Head(url, false) +#define WEBCC_HEAD_ENC(url) WEBCC_RB.Head(url, true) +#define WEBCC_POST(url) WEBCC_RB.Post(url, false) +#define WEBCC_POST_ENC(url) WEBCC_RB.Post(url, true) +#define WEBCC_PUT(url) WEBCC_RB.Put(url, false) +#define WEBCC_PUT_ENC(url) WEBCC_RB.Put(url, true) +#define WEBCC_DELETE(url) WEBCC_RB.Delete(url, false) +#define WEBCC_DELETE_ENC(url) WEBCC_RB.Delete(url, true) +#define WEBCC_PATCH(url) WEBCC_RB.Patch(url, false) +#define WEBCC_PATCH_ENC(url) WEBCC_RB.Patch(url, true) +// clang-format on + +// ----------------------------------------------------------------------------- + +namespace webcc { + +class RequestBuilder { +public: + RequestBuilder() = default; + + RequestBuilder(const RequestBuilder&) = delete; + RequestBuilder& operator=(const RequestBuilder&) = delete; + + // Build and return the request object. + RequestPtr operator()(); + + RequestBuilder& Method(string_view method) { + method_ = ToString(method); + return *this; + } + + RequestBuilder& Get(string_view url, bool encode = false) { + return Method(methods::kGet).Url(url, encode); + } + + RequestBuilder& Head(string_view url, bool encode = false) { + return Method(methods::kHead).Url(url, encode); + } + + RequestBuilder& Post(string_view url, bool encode = false) { + return Method(methods::kPost).Url(url, encode); + } + + RequestBuilder& Put(string_view url, bool encode = false) { + return Method(methods::kPut).Url(url, encode); + } + + RequestBuilder& Delete(string_view url, bool encode = false) { + return Method(methods::kDelete).Url(url, encode); + } + + RequestBuilder& Patch(string_view url, bool encode = false) { + return Method(methods::kPatch).Url(url, encode); + } + + RequestBuilder& Url(string_view url, bool encode = false) { + url_ = webcc::Url{ url, encode }; + return *this; + } + + RequestBuilder& Port(string_view port) { + url_.set_port(port); + return *this; + } + + RequestBuilder& Port(std::uint16_t port) { + url_.set_port(std::to_string(port)); + return *this; + } + + // Append a piece to the path. + RequestBuilder& Path(string_view path, bool encode = false) { + url_.AppendPath(path, encode); + return *this; + } + + // Append a parameter to the query. + RequestBuilder& Query(string_view key, string_view value, + bool encode = false) { + url_.AppendQuery(key, value, encode); + return *this; + } + + RequestBuilder& MediaType(string_view media_type) { + media_type_ = ToString(media_type); + return *this; + } + + RequestBuilder& Charset(string_view charset) { + charset_ = ToString(charset); + return *this; + } + + // Set Media Type to "application/json". + RequestBuilder& Json() { + media_type_ = media_types::kApplicationJson; + return *this; + } + + // Set Charset to "utf-8". + RequestBuilder& Utf8() { + charset_ = charsets::kUtf8; + return *this; + } + + // Set (comma separated) content types to accept. + // E.g., "application/json", "text/html, application/xhtml+xml". + RequestBuilder& Accept(string_view content_types) { + return Header(headers::kAccept, content_types); + } + +#if WEBCC_ENABLE_GZIP + + // Accept Gzip compressed response data or not. + RequestBuilder& AcceptGzip(bool gzip = true); + +#endif // WEBCC_ENABLE_GZIP + + RequestBuilder& Body(const std::string& data) { + body_.reset(new StringBody{ data, false }); + return *this; + } + + RequestBuilder& Body(std::string&& data) { + body_.reset(new StringBody{ std::move(data), false }); + return *this; + } + + // Use the file content as body. + // NOTE: Error::kFileError might be thrown. + RequestBuilder& File(const fs::path& path, bool infer_media_type = true, + std::size_t chunk_size = 1024); + + // Add a form part. + RequestBuilder& Form(FormPartPtr part) { + form_parts_.push_back(part); + return *this; + } + + // Add a form part of file. + RequestBuilder& FormFile(string_view name, const fs::path& path, + string_view media_type = ""); + + // Add a form part of string data. + RequestBuilder& FormData(string_view name, std::string&& data, + string_view media_type = ""); + + RequestBuilder& Header(string_view key, string_view value); + + RequestBuilder& KeepAlive(bool keep_alive = true) { + keep_alive_ = keep_alive; + return *this; + } + + RequestBuilder& Auth(string_view type, string_view credentials); + + RequestBuilder& AuthBasic(string_view login, string_view password); + + RequestBuilder& AuthToken(string_view token); + + // Add the `Date` header to the request. + RequestBuilder& Date(); + +#if WEBCC_ENABLE_GZIP + + // Compress the body data (only for string body). + // NOTE: + // Most servers don't support compressed requests. + // Even the requests module from Python doesn't have a built-in support. + // See: https://github.com/kennethreitz/requests/issues/1753 + RequestBuilder& Gzip(bool gzip = true) { + gzip_ = gzip; + return *this; + } + +#endif // WEBCC_ENABLE_GZIP + +private: + std::string method_; + + // Namespace is added to avoid the conflict with `Url()` method. + webcc::Url url_; + + // Request body. + BodyPtr body_; + + // The media (or MIME) type of `Content-Type` header. + // E.g., "application/json". + std::string media_type_; + + // The charset of `Content-Type` header. + // E.g., "utf-8". + std::string charset_; + + // Files to upload for a POST request. + std::vector form_parts_; + + // Additional headers with the following sequence: + // { key1, value1, key2, value2, ... } + Strings headers_; + + // Persistent connection. + bool keep_alive_ = true; + +#if WEBCC_ENABLE_GZIP + bool gzip_ = false; +#endif // WEBCC_ENABLE_GZIP +}; + +} // namespace webcc + +#endif // WEBCC_REQUEST_BUILDER_H_ diff --git a/webcc/webcc/request_parser.h b/webcc/webcc/request_parser.h new file mode 100644 index 0000000..98c0389 --- /dev/null +++ b/webcc/webcc/request_parser.h @@ -0,0 +1,71 @@ +#ifndef WEBCC_REQUEST_PARSER_H_ +#define WEBCC_REQUEST_PARSER_H_ + +#include +#include + +#include "webcc/parser.h" + +namespace webcc { + +using ViewMatcher = + std::function; + +class Request; + +class RequestParser : public Parser { +public: + RequestParser(); + + ~RequestParser() override = default; + + void Init(Request* request, ViewMatcher view_matcher); + +private: + // Override to match the URL against views and check if the matched view + // asks for data streaming. + bool OnHeadersEnd() override; + + bool ParseStartLine(const std::string& line) override; + + // Override to handle multipart form data which is request only. + bool ParseContent(const char* data, std::size_t length) override; + + // Multipart specific parsing helpers. + + bool ParseMultipartContent(const char* data, std::size_t length); + bool ParsePartHeaders(bool* need_more_data); + bool GetNextBoundaryLine(std::size_t* b_off, std::size_t* b_len, bool* ended); + + // Check if the str.substr(off, count) is a boundary. + bool IsBoundary(const std::string& str, std::size_t off, + std::size_t count, bool* end = nullptr) const; + +private: + // The result request message. + Request* request_ = nullptr; + + // A function for matching view once the headers of a request has been + // received. The parsing will stop and fail if no view can be matched. + ViewMatcher view_matcher_; + + // Form data parsing steps. + enum class Step { + kStart, + kBoundaryParsed, + kHeadersParsed, + kEnded, + }; + + Step step_ = Step::kStart; + + // The current form part being parsed. + FormPartPtr part_; + + // All form parts parsed. + std::vector form_parts_; +}; + +} // namespace webcc + +#endif // WEBCC_REQUEST_PARSER_H_ diff --git a/webcc/webcc/response.h b/webcc/webcc/response.h new file mode 100644 index 0000000..71fcd92 --- /dev/null +++ b/webcc/webcc/response.h @@ -0,0 +1,45 @@ +#ifndef WEBCC_RESPONSE_H_ +#define WEBCC_RESPONSE_H_ + +#include +#include + +#include "webcc/message.h" + +namespace webcc { + +class Response : public Message { +public: + explicit Response(Status status = Status::kOK) : status_(status) { + } + + ~Response() override = default; + + int status() const { + return status_; + } + + void set_status(int status) { + status_ = status; + } + + const std::string& reason() const { + return reason_; + } + + void set_reason(const std::string& reason) { + reason_ = reason; + } + + void Prepare() override; + +private: + int status_; // Status code + std::string reason_; // Reason phrase +}; + +using ResponsePtr = std::shared_ptr; + +} // namespace webcc + +#endif // WEBCC_RESPONSE_H_ diff --git a/webcc/webcc/response_builder.h b/webcc/webcc/response_builder.h new file mode 100644 index 0000000..8b07ccb --- /dev/null +++ b/webcc/webcc/response_builder.h @@ -0,0 +1,157 @@ +#ifndef WEBCC_RESPONSE_BUILDER_H_ +#define WEBCC_RESPONSE_BUILDER_H_ + +#include +#include + +#include "webcc/fs.h" +#include "webcc/request.h" +#include "webcc/response.h" + +namespace webcc { + +class ResponseBuilder { +public: + ResponseBuilder() = default; + + // NOTE: + // Currently, |request| is necessary only when Gzip is enabled and the client + // does want to accept Gzip compressed response. + explicit ResponseBuilder(RequestPtr request) : request_(request), headers_() { + } + + ResponseBuilder(const ResponseBuilder&) = delete; + ResponseBuilder& operator=(const ResponseBuilder&) = delete; + + // Build + ResponsePtr operator()(); + + // Some shortcuts for different status codes: + + ResponseBuilder& OK() { + return Code(Status::kOK); + } + + ResponseBuilder& Created() { + return Code(Status::kCreated); + } + + ResponseBuilder& BadRequest() { + return Code(Status::kBadRequest); + } + + ResponseBuilder& NotFound() { + return Code(Status::kNotFound); + } + + ResponseBuilder& InternalServerError() { + return Code(Status::kInternalServerError); + } + + ResponseBuilder& NotImplemented() { + return Code(Status::kNotImplemented); + } + + ResponseBuilder& ServiceUnavailable() { + return Code(Status::kServiceUnavailable); + } + + ResponseBuilder& Code(Status code) { + code_ = code; + return *this; + } + + ResponseBuilder& MediaType(string_view media_type) { + media_type_ = ToString(media_type); + return *this; + } + + ResponseBuilder& Charset(string_view charset) { + charset_ = ToString(charset); + return *this; + } + + // Set Media Type to "application/json". + ResponseBuilder& Json() { + media_type_ = media_types::kApplicationJson; + return *this; + } + + // Set Charset to "utf-8". + ResponseBuilder& Utf8() { + charset_ = charsets::kUtf8; + return *this; + } + + ResponseBuilder& Body(const std::string& data) { + body_.reset(new StringBody{ data, false }); + return *this; + } + + ResponseBuilder& Body(std::string&& data) { + body_.reset(new StringBody{ std::move(data), false }); + return *this; + } + + // Use the file content as body. + // NOTE: Error::kFileError might be thrown. + ResponseBuilder& File(const fs::path& path, bool infer_media_type = true, + std::size_t chunk_size = 1024); + + ResponseBuilder& Header(string_view key, string_view value); + + // Add the `Date` header to the response. + ResponseBuilder& Date(); + + //getter for information logger + int GetCode() const + { + return (int)code_; + } + + size_t GetBodySize() const + { + if(body_ == nullptr) + return 0; + return body_->GetSize(); + } + + bool IsBodyEmpty() const + { + return ((body_ == nullptr) || body_->IsEmpty()); + } + +#if WEBCC_ENABLE_GZIP + ResponseBuilder& Gzip(bool gzip = true) { + gzip_ = gzip; + return *this; + } +#endif // WEBCC_ENABLE_GZIP + +private: + RequestPtr request_; + + // Status code. + Status code_ = Status::kOK; + + // Response body. + BodyPtr body_; + + // Media type of the body (e.g., "application/json"). + std::string media_type_; + + // Character set of the body (e.g., "utf-8"). + std::string charset_; + +#if WEBCC_ENABLE_GZIP + // Compress the body data (only for string body). + bool gzip_ = false; +#endif // WEBCC_ENABLE_GZIP + + // Additional headers. + std::vector headers_; +}; + +} // namespace webcc + +#endif // WEBCC_RESPONSE_BUILDER_H_ diff --git a/webcc/webcc/response_parser.h b/webcc/webcc/response_parser.h new file mode 100644 index 0000000..dfeeab5 --- /dev/null +++ b/webcc/webcc/response_parser.h @@ -0,0 +1,45 @@ +#ifndef WEBCC_RESPONSE_PARSER_H_ +#define WEBCC_RESPONSE_PARSER_H_ + +#include + +#include "webcc/parser.h" + +namespace webcc { + +class Response; + +class ResponseParser : public Parser { +public: + ResponseParser() = default; + ~ResponseParser() override = default; + + void Init(Response* response, bool stream = false); + + void set_ignore_body(bool ignore_body) { + ignore_body_ = ignore_body; + } + +private: + bool OnHeadersEnd() override { + return true; + } + + // Parse HTTP start line; E.g., "HTTP/1.1 200 OK". + bool ParseStartLine(const std::string& line) override; + + // Override to allow to ignore the body of the response for HEAD request. + bool ParseContent(const char* data, std::size_t length) override; + +private: + // The result response message. + Response* response_ = nullptr; + + // The response for HEAD request could also have `Content-Length` header, + // set this flag to ignore it. + bool ignore_body_ = false; +}; + +} // namespace webcc + +#endif // WEBCC_RESPONSE_PARSER_H_ diff --git a/webcc/webcc/router.h b/webcc/webcc/router.h new file mode 100644 index 0000000..47f0844 --- /dev/null +++ b/webcc/webcc/router.h @@ -0,0 +1,57 @@ +#ifndef WEBCC_ROUTER_H_ +#define WEBCC_ROUTER_H_ + +#include +#include + +#include "webcc/globals.h" +#include "webcc/view.h" + +namespace webcc { + +class Router { +public: + virtual ~Router() = default; + + // Route a URL to a view. + // The URL should start with "/". E.g., "/instances". + bool Route(string_view url, ViewPtr view, + const Strings& methods = { "GET" }); + + // Route a URL (as regular expression) to a view. + // The URL should start with "/" and be a regular expression. + // E.g., "/instances/(\\d+)". + bool Route(const UrlRegex& regex_url, ViewPtr view, + const Strings& methods = { "GET" }); + + // Find the view by HTTP method and URL (path). + ViewPtr FindView(const std::string& method, const std::string& url, + UrlArgs* args); + + // Match the view by HTTP method and URL (path). + // Return if a view is matched or not. + // If the view asks for data streaming, |stream| will be set to true. + bool MatchView(const std::string& method, const std::string& url, + bool* stream); + + // Direct access for ViewPtr pointers. + // This can be used as server-based ip block/condiction checks + // Added by UnknownObject as 2022-04-15 + size_t GetViewCount(); + ViewPtr& AccessView(size_t index); + +private: + struct RouteInfo { + std::string url; + std::regex url_regex; + ViewPtr view; + Strings methods; + }; + + // Route table. + std::vector routes_; +}; + +} // namespace webcc + +#endif // WEBCC_ROUTER_H_ diff --git a/webcc/webcc/server.h b/webcc/webcc/server.h new file mode 100644 index 0000000..5ff9873 --- /dev/null +++ b/webcc/webcc/server.h @@ -0,0 +1,154 @@ +#ifndef WEBCC_SERVER_H_ +#define WEBCC_SERVER_H_ + +#include +#include +#include + +#include "boost/asio/io_context.hpp" +#include "boost/asio/ip/tcp.hpp" +#include "boost/asio/signal_set.hpp" + +#include "webcc/connection.h" +#include "webcc/connection_pool.h" +#include "webcc/fs.h" +#include "webcc/queue.h" +#include "webcc/router.h" +#include "webcc/url.h" + +namespace webcc { + +class Server : public Router { +public: + Server(boost::asio::ip::tcp protocol, std::uint16_t port, + const fs::path& doc_root = {}); + + Server(const Server&) = delete; + Server& operator=(const Server&) = delete; + + ~Server() = default; + + void set_buffer_size(std::size_t buffer_size) { + if (buffer_size > 0) { + buffer_size_ = buffer_size; + } + } + + void set_file_chunk_size(std::size_t file_chunk_size) { + assert(file_chunk_size > 0); + file_chunk_size_ = file_chunk_size; + } + + // Start and run the server. + // This method is blocking so will not return until Stop() is called (from + // another thread) or a signal like SIGINT is caught. + // When the request of a connection has been read, the connection is put into + // a queue waiting for some worker thread to process. Normally, the more + // |workers| you have, the more concurrency you gain (the concurrency also + // depends on the number of CPU cores). The worker thread pops connections + // from the queue one by one, prepares the response by the user provided View, + // then sends it back to the client. + // Meanwhile, the (event) loop, i.e., io_context, is also running in a number + // (|loops|) of threads. Normally, one thread for the loop is good enough, but + // it could be more than that. + void Run(std::size_t workers = 1, std::size_t loops = 1); + + // Stop the server. + // This should be called from another thread since the Run() is blocking. + void Stop(); + + // Is the server running? + bool IsRunning() const; + + // For High-Level api deleloper: to set the default server name insteaed of + // webcc Added by UnknownObject at 2022-09-04 + void SetDefaultServerName(std::string server_name); + +private: + // Register signals which indicate when the server should exit. + void AddSignals(); + + // Wait for a signal to stop the server. + void AsyncWaitSignals(); + + // Listen on the given port. + bool Listen(std::uint16_t port); + + // Accept connections asynchronously. + void AsyncAccept(); + + // Stop acceptor and worker threads, close all pending connections, and + // finally stop the event loop. + void DoStop(); + + // Worker thread routine. + void WorkerRoutine(); + + // Clear pending connections from the queue and stop worker threads. + void StopWorkers(); + + // Handle a connection (or more precisely, the request inside it). + // Get the request from the connection, process it, prepare the response, + // then send the response back to the client. + // The connection will keep alive if it's a persistent connection. When next + // request comes, this connection will be put back to the queue again. + virtual void Handle(ConnectionPtr connection); + + // Match the view by HTTP method and URL (path). + // Return if a view or static file is matched or not. + // If the view asks for data streaming, |stream| will be set to true. + bool MatchViewOrStatic(const std::string& method, const std::string& url, + bool* stream); + + // Serve static files from the doc root. + ResponsePtr ServeStatic(RequestPtr request); + +private: + // tcp::v4() or tcp::v6() + boost::asio::ip::tcp protocol_; + + // Port number. + std::uint16_t port_ = 0; + + // The directory with the static files to be served. + fs::path doc_root_; + + // The size of the buffer for reading request. + std::size_t buffer_size_ = kBufferSize; + + // The size of the chunk loaded into memory each time when serving a + // static file. + std::size_t file_chunk_size_ = 1024; + + // Is the server running? + bool running_ = false; + + // The mutex for guarding the state of the server. + std::mutex state_mutex_; + + // The io_context used to perform asynchronous operations. + boost::asio::io_context io_context_; + + // Acceptor used to listen for incoming connections. + boost::asio::ip::tcp::acceptor acceptor_; + + // The connection pool which owns all live connections. + ConnectionPool pool_; + + // The signals for processing termination notifications. + boost::asio::signal_set signals_; + + // Worker threads. + std::vector worker_threads_; + + // The queue with connection waiting for the workers to process. + Queue queue_; + + // For High-Level api deleloper: to set the default server name insteaed of webcc + // Added by UnknownObject at 2022-09-04 + std::string server_name__; +}; + +} // namespace webcc + +#endif // WEBCC_SERVER_H_ diff --git a/webcc/webcc/socket.h b/webcc/webcc/socket.h new file mode 100644 index 0000000..963c759 --- /dev/null +++ b/webcc/webcc/socket.h @@ -0,0 +1,29 @@ +#ifndef WEBCC_SOCKET_H_ +#define WEBCC_SOCKET_H_ + +#include "webcc/socket_base.h" + +namespace webcc { + +class Socket : public SocketBase { +public: + explicit Socket(boost::asio::io_context& io_context); + + void AsyncConnect(const std::string& host, const Endpoints& endpoints, + ConnectHandler&& handler) override; + + void AsyncWrite(const Payload& payload, WriteHandler&& handler) override; + + void AsyncReadSome(ReadHandler&& handler, std::vector* buffer) override; + + bool Shutdown() override; + + bool Close() override; + +private: + boost::asio::ip::tcp::socket socket_; +}; + +} // namespace webcc + +#endif // WEBCC_SOCKET_H_ diff --git a/webcc/webcc/socket_base.h b/webcc/webcc/socket_base.h new file mode 100644 index 0000000..a83cf8f --- /dev/null +++ b/webcc/webcc/socket_base.h @@ -0,0 +1,45 @@ +#ifndef WEBCC_SOCKET_BASE_H_ +#define WEBCC_SOCKET_BASE_H_ + +#include "boost/asio/ip/tcp.hpp" + +#include "webcc/globals.h" + +namespace webcc { + +class SocketBase { +public: + using Endpoints = boost::asio::ip::tcp::resolver::results_type; + + using ConnectHandler = std::function; + + using WriteHandler = + std::function; + + using ReadHandler = + std::function; + + SocketBase() = default; + + SocketBase(const SocketBase&) = delete; + SocketBase& operator=(const SocketBase&) = delete; + + virtual ~SocketBase() = default; + + virtual void AsyncConnect(const std::string& host, const Endpoints& endpoints, + ConnectHandler&& handler) = 0; + + virtual void AsyncWrite(const Payload& payload, WriteHandler&& handler) = 0; + + virtual void AsyncReadSome(ReadHandler&& handler, + std::vector* buffer) = 0; + + virtual bool Shutdown() = 0; + + virtual bool Close() = 0; +}; + +} // namespace webcc + +#endif // WEBCC_SOCKET_BASE_H_ diff --git a/webcc/webcc/ssl_client.h b/webcc/webcc/ssl_client.h new file mode 100644 index 0000000..6edce69 --- /dev/null +++ b/webcc/webcc/ssl_client.h @@ -0,0 +1,39 @@ +#ifndef WEBCC_SSL_CLIENT_H_ +#define WEBCC_SSL_CLIENT_H_ + +#include "boost/asio/ssl/context.hpp" + +#include "webcc/client_base.h" +#include "webcc/ssl_socket.h" + +#if !WEBCC_ENABLE_SSL +#error SSL must be enabled! +#endif + +namespace webcc { + +class SslClient final : public ClientBase { +public: + SslClient(boost::asio::io_context& io_context, + boost::asio::ssl::context& ssl_context) + : ClientBase(io_context), ssl_context_(ssl_context) { + } + + ~SslClient() = default; + +protected: + void CreateSocket() override { + socket_.reset(new SslSocket{ io_context_, ssl_context_ }); + } + + void Resolve() override { + AsyncResolve("443"); + } + +private: + boost::asio::ssl::context& ssl_context_; +}; + +} // namespace webcc + +#endif // WEBCC_SSL_CLIENT_H_ diff --git a/webcc/webcc/ssl_socket.h b/webcc/webcc/ssl_socket.h new file mode 100644 index 0000000..7afe051 --- /dev/null +++ b/webcc/webcc/ssl_socket.h @@ -0,0 +1,42 @@ +#ifndef WEBCC_SSL_SOCKET_H_ +#define WEBCC_SSL_SOCKET_H_ + +#include "webcc/socket_base.h" + +#include "boost/asio/ssl.hpp" + +#if !WEBCC_ENABLE_SSL +#error SSL must be enabled! +#endif + +namespace webcc { + +class SslSocket : public SocketBase { +public: + SslSocket(boost::asio::io_context& io_context, + boost::asio::ssl::context& ssl_context); + + void AsyncConnect(const std::string& host, const Endpoints& endpoints, + ConnectHandler&& handler) override; + + void AsyncWrite(const Payload& payload, WriteHandler&& handler) override; + + void AsyncReadSome(ReadHandler&& handler, std::vector* buffer) override; + + bool Shutdown() override; + + bool Close() override; + +private: + void OnConnect(boost::system::error_code ec, + boost::asio::ip::tcp::endpoint endpoint); + + ConnectHandler connect_handler_; + boost::asio::ip::tcp::endpoint endpoint_; + + boost::asio::ssl::stream ssl_stream_; +}; + +} // namespace webcc + +#endif // WEBCC_SSL_SOCKET_H_ diff --git a/webcc/webcc/string.h b/webcc/webcc/string.h new file mode 100644 index 0000000..2f7b297 --- /dev/null +++ b/webcc/webcc/string.h @@ -0,0 +1,37 @@ +#ifndef WEBCC_STRING_H_ +#define WEBCC_STRING_H_ + +#include +#include + +#include "webcc/globals.h" // for string_view + +namespace webcc { + +// Get a randomly generated string with the given length. +std::string RandomString(std::size_t length); + +// Convert string to size_t. +// Just a wrapper of std::stoul. +bool ToSizeT(const std::string& str, int base, std::size_t* size); + +void Trim(string_view& sv, const char* spaces = " "); + +// Split string without copy. +// |compress_token| is the same as boost::token_compress_on for boost::split. +void Split(string_view input, char delim, bool compress_token, + std::vector* output); + +// Split a key-value string. +// E.g., split "Connection: Keep-Alive". +bool SplitKV(string_view input, char delim, bool trim_spaces, string_view* key, + string_view* value); + +// Split a key-value string. +// E.g., split "Connection: Keep-Alive". +bool SplitKV(string_view input, char delim, bool trim_spaces, + std::string* key, std::string* value); + +} // namespace webcc + +#endif // WEBCC_STRING_H_ diff --git a/webcc/webcc/url.h b/webcc/webcc/url.h new file mode 100644 index 0000000..5d7ca7d --- /dev/null +++ b/webcc/webcc/url.h @@ -0,0 +1,150 @@ +#ifndef WEBCC_URL_H_ +#define WEBCC_URL_H_ + +#include +#include +#include +#include + +#include "webcc/globals.h" + +namespace webcc { + +// ----------------------------------------------------------------------------- + +// A simple implementation of URL (or URI). +// TODO: Encoding of path +class Url { +public: + // Encode URL different components. + static std::string EncodeHost(string_view utf8_str); + static std::string EncodePath(string_view utf8_str); + static std::string EncodeQuery(string_view utf8_str); + static std::string EncodeFull(string_view utf8_str); + +public: + Url() = default; + + explicit Url(string_view str, bool encode = false); + + const std::string& scheme() const { + return scheme_; + } + + const std::string& host() const { + return host_; + } + + const std::string& port() const { + return port_; + } + + const std::string& path() const { + return path_; + } + + const std::string& query() const { + return query_; + } + + void set_port(string_view port) { + port_ = ToString(port); + } + + // Force Set + void ForceSet_Path(string_view path) + { + path_ = path; + } + + // Append a piece of path. + void AppendPath(string_view piece, bool encode = false); + + // Append a query parameter. + void AppendQuery(string_view key, string_view value, bool encode = false); + +private: + void Parse(string_view str); + + void Clear(); + +private: + std::string scheme_; + std::string host_; + std::string port_; + std::string path_; + std::string query_; +}; + +// ----------------------------------------------------------------------------- + +// For accessing URL query parameters. +class UrlQuery { +public: + using Parameter = std::pair; + + UrlQuery() = default; + + // The query string should be key-value pairs separated by '&'. + explicit UrlQuery(const std::string& encoded_str); + + bool Empty() const { + return parameters_.empty(); + } + + std::size_t Size() const { + return parameters_.size(); + } + + bool Has(const std::string& key) const { + return Find(key) != parameters_.end(); + } + + // Get a value by key. + // Return empty string if the key doesn't exist. + const std::string& Get(const std::string& key) const; + + // Get a key-value pair by index. + const Parameter& Get(std::size_t index) const; + + void Add(const std::string& key, const std::string& value); + + void Remove(const std::string& key); + + // Return query string, encoded or not, joined with '&'. + // E.g., "item=12731&color=blue&size=large". + std::string ToString(bool encode = true) const; + +private: + using ConstIterator = std::vector::const_iterator; + + ConstIterator Find(const std::string& key) const; + +private: + std::vector parameters_; +}; + +// ----------------------------------------------------------------------------- + +// Wrapper for URL as regular expression. +// Used by Server::Route(). +class UrlRegex { +public: + explicit UrlRegex(string_view url) : url_(url) { + } + + std::regex operator()() const { + std::regex::flag_type flags = std::regex::ECMAScript | std::regex::icase; + return std::regex{ url_, flags }; + } + +private: + std::string url_; +}; + +// Shortcut +using R = UrlRegex; + +} // namespace webcc + +#endif // WEBCC_URL_H_ diff --git a/webcc/webcc/utility.h b/webcc/webcc/utility.h new file mode 100644 index 0000000..ba85e82 --- /dev/null +++ b/webcc/webcc/utility.h @@ -0,0 +1,51 @@ +#ifndef WEBCC_UTILITY_H_ +#define WEBCC_UTILITY_H_ + +#include +#include + +#include "boost/asio/ip/tcp.hpp" + +#include "webcc/fs.h" +#include "webcc/globals.h" + +namespace webcc { +namespace utility { + +extern std::string CustomUA; + +void SetCustomUA(const std::string& ua); + +void SetCustomUA(const std::string& software, const std::string& version); + +// Get default user agent for HTTP headers. +const std::string& UserAgent(); + +// Get the timestamp for HTTP Date header field. +// E.g., Wed, 21 Oct 2015 07:28:00 GMT +// See: https://tools.ietf.org/html/rfc7231#section-7.1.1.2 +std::string HttpDate(); + +// Tell the size in bytes of the given file. +// Return kInvalidLength (-1) on failure. +std::size_t TellSize(const fs::path& path); + +// Read entire file into string. +bool ReadFile(const fs::path& path, std::string* output); + +// Dump the string data line by line to achieve more readability. +// Also limit the maximum size of the data to be dumped. +void DumpByLine(const std::string& data, std::ostream& os, string_view prefix); + +// Print TCP endpoint. +// Usage: PrintEndpoint(std::cout, endpoint) +void PrintEndpoint(std::ostream& ostream, + const boost::asio::ip::tcp::endpoint& endpoint); + +// TCP endpoint to string. +std::string EndpointToString(const boost::asio::ip::tcp::endpoint& endpoint); + +} // namespace utility +} // namespace webcc + +#endif // WEBCC_UTILITY_H_ diff --git a/webcc/webcc/version.h b/webcc/webcc/version.h new file mode 100644 index 0000000..f3a3071 --- /dev/null +++ b/webcc/webcc/version.h @@ -0,0 +1,6 @@ +#ifndef WEBCC_VERSION_H_ +#define WEBCC_VERSION_H_ + +#define WEBCC_VERSION "0.2.0" + +#endif // WEBCC_VERSION_H_ diff --git a/webcc/webcc/view.h b/webcc/webcc/view.h new file mode 100644 index 0000000..24e9dd4 --- /dev/null +++ b/webcc/webcc/view.h @@ -0,0 +1,34 @@ +#ifndef WEBCC_VIEW_H_ +#define WEBCC_VIEW_H_ + +#include + +#include "webcc/request.h" +#include "webcc/response.h" + +namespace webcc { + +class View { +public: + View() = default; + + virtual ~View() = default; + + View(const View&) = delete; + View& operator=(const View&) = delete; + + virtual ResponsePtr Handle(RequestPtr request) = 0; + + // Return true if you want the request data of the given method to be streamed + // to a temp file. Data streaming is useful for receiving large data, e.g., + // a JPEG image, posted from the client. + virtual bool Stream(const std::string& /*method*/) { + return false; // No streaming by default + } +}; + +using ViewPtr = std::shared_ptr; + +} // namespace webcc + +#endif // WEBCC_VIEW_H_