Merge branch 'code/dynamicurl2' into 'develop'
[Cache] Support multiple iw4xcache domains Rewrote Code to support multiple iw4xcache domains.
This commit is contained in:
commit
003b95ba7c
@ -492,14 +492,14 @@ namespace Components
|
||||
{
|
||||
Dvar::Register<bool>("isDlcInstalled_All", false, Game::DVAR_FLAG_USERCREATED | Game::DVAR_FLAG_WRITEPROTECTED, "");
|
||||
|
||||
Maps::AddDlc({ 1, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.1.Stimulus.Package.zip", { "mp_complex", "mp_compact", "mp_storm", "mp_overgrown", "mp_crash" } });
|
||||
Maps::AddDlc({ 2, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.2.Resurgence.Pack.zip", { "mp_abandon", "mp_vacant", "mp_trailerpark", "mp_strike", "mp_fuel2" } });
|
||||
Maps::AddDlc({ 3, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.3.Nuketown.zip", { "mp_nuked" } });
|
||||
Maps::AddDlc({ 4, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.4.Classics.1.zip", { "mp_cross_fire", "mp_cargoship", "mp_bloc" } });
|
||||
Maps::AddDlc({ 5, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.5.Classics.2.zip", { "mp_killhouse", "mp_bog_sh" } });
|
||||
Maps::AddDlc({ 6, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.6.Cargoship.Winter.zip", { "mp_cargoship_sh" } });
|
||||
Maps::AddDlc({ 7, "https://iw4xcachep26muba.onion.to/dlc/IW4.DLC.7.Resurrection.Pack.zip", { "mp_shipment_long", "mp_rust_long", "mp_firingrange" } });
|
||||
Maps::AddDlc({ 8, "",{ /*"mp_bloc_sh", "mp_crash_tropical", "mp_estate_tropical", "mp_fav_tropical", "mp_storm_spring"*/ } });
|
||||
Maps::AddDlc({ 1, Utils::Cache::GetUrl("/dlc/IW4.DLC.1.Stimulus.Package.zip"), { "mp_complex", "mp_compact", "mp_storm", "mp_overgrown", "mp_crash" } });
|
||||
Maps::AddDlc({ 2, Utils::Cache::GetUrl("/dlc/IW4.DLC.2.Resurgence.Pack.zip"), { "mp_abandon", "mp_vacant", "mp_trailerpark", "mp_strike", "mp_fuel2" } });
|
||||
Maps::AddDlc({ 3, Utils::Cache::GetUrl("/dlc/IW4.DLC.3.Nuketown.zip"), { "mp_nuked" } });
|
||||
Maps::AddDlc({ 4, Utils::Cache::GetUrl("/dlc/IW4.DLC.4.Classics.1.zip"), { "mp_cross_fire", "mp_cargoship", "mp_bloc" } });
|
||||
Maps::AddDlc({ 5, Utils::Cache::GetUrl("/dlc/IW4.DLC.5.Classics.2.zip"), { "mp_killhouse", "mp_bog_sh" } });
|
||||
Maps::AddDlc({ 6, Utils::Cache::GetUrl("/dlc/IW4.DLC.6.Cargoship.Winter.zip"), { "mp_cargoship_sh" } });
|
||||
Maps::AddDlc({ 7, Utils::Cache::GetUrl("/dlc/IW4.DLC.7.Resurrection.Pack.zip"), { "mp_shipment_long", "mp_rust_long", "mp_firingrange" } });
|
||||
Maps::AddDlc({ 8, ""/*Utils::Cache::GetUrl("/dlc/")*/,{ /*"mp_bloc_sh", "mp_crash_tropical", "mp_estate_tropical", "mp_fav_tropical", "mp_storm_spring"*/ } });
|
||||
|
||||
Maps::UpdateDlcStatus();
|
||||
|
||||
|
@ -73,7 +73,7 @@ namespace Components
|
||||
|
||||
void News::CheckForUpdate()
|
||||
{
|
||||
std::string caches = Utils::WebIO("IW4x", "https://iw4xcachep26muba.onion.to/iw4/caches.xml").setTimeout(5000)->get();
|
||||
std::string caches = Utils::Cache::GetFile("/iw4/caches.xml");
|
||||
|
||||
if (!caches.empty())
|
||||
{
|
||||
@ -134,7 +134,7 @@ namespace Components
|
||||
|
||||
std::thread([] ()
|
||||
{
|
||||
std::string data = Utils::WebIO("IW4x", "https://iw4xcachep26muba.onion.to/iw4/updater.exe").setTimeout(5000)->get();
|
||||
std::string data = Utils::Cache::GetFile("/iw4/updater.exe");
|
||||
|
||||
if (data.empty())
|
||||
{
|
||||
@ -156,9 +156,9 @@ namespace Components
|
||||
News::Terminate = false;
|
||||
News::Thread = std::thread([] ()
|
||||
{
|
||||
Localization::Set("MPUI_CHANGELOG_TEXT", Utils::WebIO("IW4x", "https://iw4xcachep26muba.onion.to/iw4/changelog.txt").setTimeout(5000)->get());
|
||||
Localization::Set("MPUI_CHANGELOG_TEXT", Utils::Cache::GetFile("/iw4/changelog.txt"));
|
||||
|
||||
std::string data = Utils::WebIO("IW4x", "https://iw4xcachep26muba.onion.to/iw4/motd.txt").setTimeout(5000)->get();
|
||||
std::string data = Utils::Cache::GetFile("/iw4/motd.txt");
|
||||
|
||||
if (!data.empty())
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ namespace Components
|
||||
|
||||
void Node::LoadNodeRemotePreset()
|
||||
{
|
||||
std::string nodes = Utils::WebIO("IW4x", "https://iw4xcachep26muba.onion.to/iw4/nodes.txt").setTimeout(5000)->get();
|
||||
std::string nodes = Utils::Cache::GetFile("/iw4/nodes.txt");
|
||||
if (nodes.empty()) return;
|
||||
|
||||
auto nodeList = Utils::String::Explode(nodes, '\n');
|
||||
|
@ -101,6 +101,7 @@ template <size_t S> class Sizer { };
|
||||
#include "Utils\IO.hpp"
|
||||
#include "Utils\CSV.hpp"
|
||||
#include "Utils\Time.hpp"
|
||||
#include "Utils\Cache.hpp"
|
||||
#include "Utils\Chain.hpp"
|
||||
#include "Utils\Utils.hpp"
|
||||
#include "Utils\WebIO.hpp"
|
||||
|
58
src/Utils/Cache.cpp
Normal file
58
src/Utils/Cache.cpp
Normal file
@ -0,0 +1,58 @@
|
||||
#include "STDInclude.hpp"
|
||||
|
||||
namespace Utils
|
||||
{
|
||||
const char* Cache::Urls[] =
|
||||
{
|
||||
"https://iw4xcachep26muba.onion.to"/*,
|
||||
"https://iw4xcachejnetuln.onion.to",
|
||||
"https://iw4xcachedjodc4y.onion.to",
|
||||
*/
|
||||
};
|
||||
std::string Cache::ValidUrl;
|
||||
std::mutex Cache::CacheMutex;
|
||||
|
||||
std::string Cache::GetUrl(std::string path)
|
||||
{
|
||||
std::lock_guard<std::mutex> _(Cache::CacheMutex);
|
||||
|
||||
if (Cache::ValidUrl.empty())
|
||||
{
|
||||
return Cache::Urls[0] + path;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Cache::ValidUrl + path;
|
||||
}
|
||||
}
|
||||
|
||||
std::string Cache::GetUrl(std::string url, std::string path)
|
||||
{
|
||||
return url + path;
|
||||
}
|
||||
|
||||
std::string Cache::GetFile(std::string path, int timeout, std::string useragent)
|
||||
{
|
||||
std::lock_guard<std::mutex> _(Cache::CacheMutex);
|
||||
|
||||
if (Cache::ValidUrl.empty())
|
||||
{
|
||||
for (int i = 0; i < ARRAY_SIZE(Cache::Urls); i++)
|
||||
{
|
||||
std::string result = Utils::WebIO(useragent, Cache::GetUrl(Cache::Urls[i], path)).setTimeout(timeout)->get();
|
||||
|
||||
if (!result.empty())
|
||||
{
|
||||
Cache::ValidUrl = Cache::Urls[i];
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
return Utils::WebIO(useragent, Cache::GetUrl(Cache::ValidUrl, path)).setTimeout(timeout)->get();
|
||||
}
|
||||
}
|
||||
}
|
15
src/Utils/Cache.hpp
Normal file
15
src/Utils/Cache.hpp
Normal file
@ -0,0 +1,15 @@
|
||||
namespace Utils
|
||||
{
|
||||
class Cache
|
||||
{
|
||||
public:
|
||||
static std::string GetUrl(std::string path);
|
||||
static std::string GetFile(std::string path, int timeout = 5000, std::string useragent = "IW4x");
|
||||
|
||||
private:
|
||||
static std::mutex CacheMutex;
|
||||
static const char* Urls[];
|
||||
static std::string ValidUrl;
|
||||
static std::string GetUrl(std::string url, std::string path);
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user