From 3d7b0db114a3f783571451f4a76e3ebbe4c57ccd Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 17 Feb 2009 16:39:02 -0500 Subject: [PATCH] Updater uses a core.cfg specified URL now. --- configs/core.cfg | 6 ++++++ extensions/updater/Updater.cpp | 14 ++++++-------- extensions/updater/Updater.h | 3 ++- extensions/updater/extension.cpp | 12 +++++++++++- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/configs/core.cfg b/configs/core.cfg index cab5c4497..21b99c3e0 100644 --- a/configs/core.cfg +++ b/configs/core.cfg @@ -96,6 +96,12 @@ */ "ForceRestartAfterUpdate" "no" + /** + * URL to use for retrieving update information. + * SSL is not yet supported. + */ + "AutoUpdateURL" "http://www.sourcemod.net/update/" + /** * Whether to show debug spew. * Currently this will log details about the gamedata updating process. diff --git a/extensions/updater/Updater.cpp b/extensions/updater/Updater.cpp index 6e465084e..c7d708e03 100644 --- a/extensions/updater/Updater.cpp +++ b/extensions/updater/Updater.cpp @@ -34,8 +34,6 @@ #include "Updater.h" #include "md5.h" -#define UPDATE_URL "http://www.sourcemod.net/update/" - #define USTATE_NONE 0 #define USTATE_FOLDERS 1 #define USTATE_CHANGED 2 @@ -125,7 +123,7 @@ SMCResult UpdateReader::ReadSMC_KeyValue(const SMCStates *states, } else if (strcmp(key, "location") == 0) { - url.assign(UPDATE_URL); + url.assign(update_url); url.append(value); } break; @@ -330,18 +328,18 @@ static void add_folders(IWebForm *form, const char *root, unsigned int &num_file libsys->CloseDirectory(dir); } -void UpdateReader::PerformUpdate() +void UpdateReader::PerformUpdate(const char *url) { IWebForm *form; MemoryDownloader master; SMCStates states = {0, 0}; + update_url = url; + form = webternet->CreateForm(); xfer = webternet->CreateSession(); xfer->SetFailOnHTTPError(true); - const char *root_url = UPDATE_URL "gamedata.php"; - form->AddString("version", SVN_FULL_VERSION); form->AddString("build", SM_BUILD_UNIQUEID); @@ -352,9 +350,9 @@ void UpdateReader::PerformUpdate() smutils->Format(temp, sizeof(temp), "%d", num_files); form->AddString("files", temp); - if (!xfer->PostAndDownload(root_url, form, &master, NULL)) + if (!xfer->PostAndDownload(url, form, &master, NULL)) { - AddUpdateError("Could not download \"%s\"", root_url); + AddUpdateError("Could not download \"%s\"", url); AddUpdateError("Error: %s", xfer->LastErrorMessage()); goto cleanup; } diff --git a/extensions/updater/Updater.h b/extensions/updater/Updater.h index ce84372e5..a8c3c6c74 100644 --- a/extensions/updater/Updater.h +++ b/extensions/updater/Updater.h @@ -59,7 +59,7 @@ namespace SourceMod SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value); SMCResult ReadSMC_LeavingSection(const SMCStates *states); public: - void PerformUpdate(); + void PerformUpdate(const char *url); UpdatePart *DetachParts(); private: void HandleFile(); @@ -75,6 +75,7 @@ namespace SourceMod char checksum[33]; UpdatePart *partFirst; UpdatePart *partLast; + const char *update_url; }; } diff --git a/extensions/updater/extension.cpp b/extensions/updater/extension.cpp index 255831cdc..9d0e7b217 100644 --- a/extensions/updater/extension.cpp +++ b/extensions/updater/extension.cpp @@ -38,6 +38,8 @@ #include #include +#define DEFAULT_UPDATE_URL "http://www.sourcemod.net/update/" + using namespace SourceHook; SmUpdater g_Updater; /**< Global singleton for extension's main interface */ @@ -46,6 +48,7 @@ SMEXT_LINK(&g_Updater); IWebternet *webternet; static List update_errors; static IThreadHandle *update_thread; +static String update_url; bool SmUpdater::SDK_OnLoad(char *error, size_t maxlength, bool late) { @@ -64,6 +67,13 @@ bool SmUpdater::SDK_OnLoad(char *error, size_t maxlength, bool late) return false; } + const char *url = smutils->GetCoreConfigValue("AutoUpdateURL"); + if (url == NULL) + { + url = DEFAULT_UPDATE_URL; + } + update_url.assign(url); + return true; } @@ -175,7 +185,7 @@ void SmUpdater::RunThread(IThreadHandle *pHandle) { UpdateReader ur; - ur.PerformUpdate(); + ur.PerformUpdate(update_url.c_str()); smutils->AddFrameAction(PumpUpdate, ur.DetachParts()); }