From 44784cf3635968129acedfcb9927f36d81d5e5db Mon Sep 17 00:00:00 2001 From: spycrab Date: Tue, 29 May 2018 03:55:52 +0200 Subject: [PATCH 1/2] Common/HttpRequest: Add option to set cookies --- Source/Core/Common/HttpRequest.cpp | 11 +++++++++++ Source/Core/Common/HttpRequest.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/Source/Core/Common/HttpRequest.cpp b/Source/Core/Common/HttpRequest.cpp index ff8fa32c2e..af8eb5f5c5 100644 --- a/Source/Core/Common/HttpRequest.cpp +++ b/Source/Core/Common/HttpRequest.cpp @@ -28,6 +28,7 @@ public: explicit Impl(std::chrono::milliseconds timeout_ms, ProgressCallback callback); bool IsValid() const; + void SetCookies(const std::string& cookies); Response Fetch(const std::string& url, Method method, const Headers& headers, const u8* payload, size_t size); @@ -56,6 +57,11 @@ bool HttpRequest::IsValid() const return m_impl->IsValid(); } +void HttpRequest::SetCookies(const std::string& cookies) +{ + m_impl->SetCookies(cookies); +} + HttpRequest::Response HttpRequest::Get(const std::string& url, const Headers& headers) { return m_impl->Fetch(url, Impl::Method::GET, headers, nullptr, 0); @@ -125,6 +131,11 @@ bool HttpRequest::Impl::IsValid() const return m_curl != nullptr; } +void HttpRequest::Impl::SetCookies(const std::string& cookies) +{ + curl_easy_setopt(m_curl.get(), CURLOPT_COOKIE, cookies.c_str()); +} + static size_t CurlWriteCallback(char* data, size_t size, size_t nmemb, void* userdata) { auto* buffer = static_cast*>(userdata); diff --git a/Source/Core/Common/HttpRequest.h b/Source/Core/Common/HttpRequest.h index 92bae2307e..fefb54c784 100644 --- a/Source/Core/Common/HttpRequest.h +++ b/Source/Core/Common/HttpRequest.h @@ -30,6 +30,8 @@ public: using Response = std::optional>; using Headers = std::map>; + + void SetCookies(const std::string& cookies); Response Get(const std::string& url, const Headers& headers = {}); Response Post(const std::string& url, const std::vector& payload, const Headers& headers = {}); From c086f894b1954efc371d652ef20002868b778fe9 Mon Sep 17 00:00:00 2001 From: spycrab Date: Tue, 29 May 2018 03:56:12 +0200 Subject: [PATCH 2/2] Core/GeckoCodeConfig: Circumvent DDOS protection --- Source/Core/Core/GeckoCodeConfig.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Core/Core/GeckoCodeConfig.cpp b/Source/Core/Core/GeckoCodeConfig.cpp index df62768acd..8810aee3b1 100644 --- a/Source/Core/Core/GeckoCodeConfig.cpp +++ b/Source/Core/Core/GeckoCodeConfig.cpp @@ -32,6 +32,10 @@ std::vector DownloadCodes(std::string gameid, bool* succeeded) std::string endpoint{"http://geckocodes.org/txt.php?txt=" + gameid}; Common::HttpRequest http; + + // Circumvent high-tech DDOS protection + http.SetCookies("challenge=BitMitigate.com;"); + const Common::HttpRequest::Response response = http.Get(endpoint); *succeeded = response.has_value(); if (!response)