Updater uses a core.cfg specified URL now.

This commit is contained in:
David Anderson 2009-02-17 16:39:02 -05:00
parent 9e445a5adf
commit 3d7b0db114
4 changed files with 25 additions and 10 deletions

View File

@ -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.

View File

@ -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;
}

View File

@ -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;
};
}

View File

@ -38,6 +38,8 @@
#include <sh_list.h>
#include <sh_string.h>
#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<String *> 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());
}