Exemple #1
0
static bool isSafeUrl(const char* url, MainAppProviderI* pMainApp)
{
	if (!url)
		return false;

	if (gcString(url) == "about:blank")
		return true;

	wxURI wxurl(url);

	if (wxurl.GetScheme() == "file")
		return true;

	wxString server = wxurl.GetServer();

	size_t x=0;

	for (auto s : g_szSafeList)
	{
		if (isSafeUrl(server, s))
			return true;

		x++;
	}

	if (pMainApp && pMainApp->getProvider())
	{
		wxString cusProvider(pMainApp->getProvider());

		if (cusProvider.empty())
			cusProvider = "desura.com";

		if (isSafeUrl(server, cusProvider))
			return true;

		cusProvider = "." + cusProvider;
		return isSafeUrl(server, cusProvider);
	}

	return false;
}
    void *Entry()
        {
            wxURL wxurl(url);

            if(wxurl.GetError() != wxURL_NOERR) {
                exitcode = 1;
                return NULL;
            }

            wxInputStream *input = wxurl.GetInputStream();
            if(!input) {
                exitcode = 2;
                return NULL;
            }

            size = input->GetSize();
            if(size < 0) {
                exitcode = 3;
                return NULL;
            }

            wxFileOutputStream output(filename);
            while(!input->Eof() && !TestDestroy() && !please_quit) {
                if(input->CanRead()) {
                    char buffer[16384];
                    input->Read(buffer, sizeof buffer);
                    int lastread = input->LastRead();
                    output.Write(buffer, lastread);
                    position += lastread;
                } else
                    wxThread::Sleep(100);

                if(position >= size)
                    break;
            }
            return NULL;
        }
Exemple #3
0
bool isSafeUrl(const char* url)
{

	if (!url)
		return false;

	if (gcString(url) == "about:blank")
		return true;

	wxURI wxurl(url);

	if (wxurl.GetScheme() == "file")
		return true;

	wxString server = wxurl.GetServer();

	size_t x=0;

	while (g_szSafeList[x])
	{
		if (g_szSafeList[x][0] == '.')
		{
			if (server.Contains(wxString(g_szSafeList[x])))
				return true;
		}
		else
		{
			if (server == wxString(g_szSafeList[x]))
				return true;
		}

		x++;
	}
	
	return false;
}