update dlhttp, make / work

This commit is contained in:
Lion Kortlepel
2022-07-24 15:29:20 +02:00
parent de2a3795cc
commit f48b8ff1a1
3 changed files with 31 additions and 11 deletions

View File

@@ -9,6 +9,9 @@ project(BeamMP-Server
HOMEPAGE_URL https://beammp.com HOMEPAGE_URL https://beammp.com
LANGUAGES CXX C) LANGUAGES CXX C)
option(BEAMMP_RUN_GIT "Run git to make sure submodules are updated (leave this on unless you know what you're doing)" ON)
if (BEAMMP_RUN_GIT)
find_package(Git REQUIRED) find_package(Git REQUIRED)
# Update submodules as needed # Update submodules as needed
option(GIT_SUBMODULE "Check submodules during build" ON) option(GIT_SUBMODULE "Check submodules during build" ON)
@@ -21,6 +24,7 @@ if(GIT_SUBMODULE)
message(FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules") message(FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
endif() endif()
endif() endif()
endif()
set(HTTPLIB_REQUIRE_OPENSSL ON) set(HTTPLIB_REQUIRE_OPENSSL ON)
@@ -145,6 +149,7 @@ set(BeamMP_Libraries
${LUA_LIBRARIES} ${LUA_LIBRARIES}
commandline commandline
sentry sentry
dlhttp
) )
if (WIN32) if (WIN32)

2
deps/dlhttp vendored

View File

@@ -6,6 +6,7 @@
#include <Http.h> #include <Http.h>
#include <array> #include <array>
#include <cstring> #include <cstring>
#include <dlhttp/dlhttp.h>
TNetwork::TNetwork(TServer& Server, TPPSMonitor& PPSMonitor, TResourceManager& ResourceManager) TNetwork::TNetwork(TServer& Server, TPPSMonitor& PPSMonitor, TResourceManager& ResourceManager)
: mServer(Server) : mServer(Server)
@@ -148,6 +149,11 @@ void TNetwork::TCPServerMain() {
} }
Application::SetSubsystemStatus("TCPNetwork", Application::Status::Good); Application::SetSubsystemStatus("TCPNetwork", Application::Status::Good);
beammp_info("Vehicle event network online"); beammp_info("Vehicle event network online");
dlhttp::AsyncContext Ctx(4);
dlhttp::EndpointHandlerMap Map {
{ "/", []() -> dlhttp::Response { return { 200, "Hello! :)" }; } },
{ "/fuck", []() -> dlhttp::Response { return { 200, "fuck lol" }; } },
};
do { do {
try { try {
if (Application::IsShuttingDown()) { if (Application::IsShuttingDown()) {
@@ -173,6 +179,15 @@ void TNetwork::TCPServerMain() {
if (ret < 0) { if (ret < 0) {
throw std::runtime_error("setsockopt recv timeout: " + GetPlatformAgnosticErrorString()); throw std::runtime_error("setsockopt recv timeout: " + GetPlatformAgnosticErrorString());
} }
// check for http
if (dlhttp::is_http(client.Socket)) {
beammp_info("IS HTTP!");
dlhttp::handle_http(client.Socket, Ctx, Map);
} else {
beammp_info("IS NOT HTTP!");
}
std::thread ID(&TNetwork::Identify, this, client); std::thread ID(&TNetwork::Identify, this, client);
ID.detach(); // TODO: Add to a queue and attempt to join periodically ID.detach(); // TODO: Add to a queue and attempt to join periodically
} catch (const std::exception& e) { } catch (const std::exception& e) {