Ejemplo n.º 1
0
BOOL FMediaContainer::DownloadAdpoints(vidtype videoID) 
{
	CAtlHttpClient Client; 
	FString AdRequest; 
	AdRequest.Format("/guide/ads.php?videoID=%d", videoID); 
	FString pszUrl = g_AppSettings.ChannelGuideUrl(AdRequest);
	
	CAtlNavigateData Data; 
	
	Data.SetReadStatusCallback(mCallback, (DWORD_PTR)this); 
	Data.dwTimeout = 15000; //15 seconds good enough ?
	if (Client.Navigate(pszUrl, &Data) && Client.GetStatus() != ATL_INVALID_STATUS)
	{
		if (Client.GetStatus() == 200) // 200 = successful HTTP transaction
		{
			DWORD size = Client.GetBodyLength();
			if (size > 0)
			{
				CAutoPtr<char> Buffer (new char[size + 1]);
				memcpy(Buffer.m_p, Client.GetBody(), size); 
				FIniConfig aConf;
				if (aConf.LoadFromBuffer(Buffer, size))
				{
					if (m_CurVideoID == videoID)
						return m_AdManager->LoadAds(aConf, TRUE); 
				}
			}
		}
	}
	return FALSE; 
}
Ejemplo n.º 2
0
BOOL DomainInfo::UpdateDNS(const TCHAR* addr, EventLog* plog)
{
	CAtlHttpClient client;
	BOOL rval = FALSE;

    CAtlNavigateData navData;
	navData.SetMethod(ATL_HTTP_METHOD_GET);
	if (httpTimeout > 0)
		navData.SetSocketTimeout(httpTimeout);

	// set auth
	CBasicAuthObject auth;
	client.AddAuthObj(_T("basic"), &auth, this);

	// proxy
	if (proxy.length() > 0) {
		client.SetProxy(proxy.c_str(), (short) proxyPort);
	}

	// setup headers
	tstring headers;
	if (navData.GetExtraHeaders() != NULL)
		headers += navData.GetExtraHeaders();
	headers += _T("Connection: close");
	headers += _T("\r\n");
	navData.SetExtraHeaders(headers.c_str());

	// setup url
	TCHAR item[256];
	DWORD itemLen;
	tstring cUrl = easydnsurl;
	if (easydnsurl.length() == 0)
		cUrl = _T("http://members.easydns.com/dyn/dyndns.php");
	// hostname
	cUrl += _T("?hostname=");
	if (AtlEscapeUrl(hostname.c_str(), item, &itemLen, 256) == FALSE) {
		plog->LogEvent(EVENTLOG_ERROR_TYPE, "hostname is too long");
		return FALSE;
	}
	cUrl += item;
	// tld
	if (tld.length() > 0) {
		cUrl += _T("&tld=");
		if (AtlEscapeUrl(tld.c_str(), item, &itemLen, 256) == FALSE) {
			plog->LogEvent(EVENTLOG_ERROR_TYPE, "tld is too long");
			return FALSE;
		}
		cUrl += item;
	}
	// myip
	cUrl += _T("&myip=");
	tstring tmp = myip;
	if (tmp.length() == 0)
		tmp = addr;
	if (AtlEscapeUrl(tmp.c_str(), item, &itemLen, 256) == FALSE) {
		plog->LogEvent(EVENTLOG_ERROR_TYPE, "myip is too long");
		return FALSE;
	}
	cUrl += item;
	// mx
	if (mx.length() > 0) {
		cUrl += _T("&mx=");
		if (AtlEscapeUrl(mx.c_str(), item, &itemLen, 256) == FALSE) {
			plog->LogEvent(EVENTLOG_ERROR_TYPE, "mx is too long");
			return FALSE;
		}
		cUrl += item;
	}
	// backmx
	if (backmx.length() > 0) {
		cUrl += _T("&backmx=");
		if (AtlEscapeUrl(backmx.c_str(), item, &itemLen, 256) == FALSE) {
			plog->LogEvent(EVENTLOG_ERROR_TYPE, "backmx is too long");
			return FALSE;
		}
		cUrl += item;
	}
	// wildcard
	if (wildcard.length() > 0) {
		cUrl += _T("&wildcard=");
		if (AtlEscapeUrl(wildcard.c_str(), item, &itemLen, 256) == FALSE) {
			plog->LogEvent(EVENTLOG_ERROR_TYPE, "wildcard is too long");
			return FALSE;
		}
		cUrl += item;
	}

	// issue request
	tstring msg = _T("Result for ");
	msg += hostname;
	msg += _T(" - HTTP ");
	TCHAR s[128];
	if (client.Navigate(cUrl.c_str(), &navData) || true) {
		const BYTE* body = client.GetBody();
		wsprintf(s, _T("%d"), client.GetStatus());
		msg += s;
		msg += _T(" - ");
		WORD et = EVENTLOG_WARNING_TYPE;
		if (client.GetStatus() != 200)
			et = EVENTLOG_ERROR_TYPE;
		if (body != 0) {
			if (_tcsstr((const char*) body, "NOERROR") != 0)
				et = EVENTLOG_INFORMATION_TYPE;
			if (sizeof(TCHAR) > 1) {
				TCHAR* pData = new TCHAR[client.GetBodyLength() + 1];
				if (pData) {
					mbstowcs((wchar_t*) pData, (const char*) body, client.GetBodyLength());
					pData[client.GetBodyLength()] = 0;
					msg += pData;
					delete[] pData;
				}
			}
			else
				msg += (const char *) body;
		}
		plog->LogEvent(et, msg.c_str());
		if (client.GetStatus() == 200)
			rval = TRUE;
	}
	else {
		wsprintf(s, _T("%d"), client.GetStatus());
		msg += s;
		msg += _T(" - ");
		msg += _T("Navigate failed");
		plog->LogEvent(EVENTLOG_ERROR_TYPE, msg.c_str());
	}

	return rval;
}