void CUpdateServersDlg::OnOK()
{
	UpdateData();

	if ( ! IsValidURL() ) return;
	if ( ! m_pRequest.SetURL( m_sURL ) ) return;
	if ( ! m_pRequest.Execute( true ) ) return;

	m_wndOK.EnableWindow( FALSE );
	m_wndURL.EnableWindow( FALSE );

	SetTimer( 1, 100, NULL );
}
BOOL CUpdateServersDlg::OnInitDialog()
{
	CSkinDialog::OnInitDialog();

	SkinMe( _T("CUpdateServersDlg"), IDR_MAINFRAME );

	// Define dlg.m_URL = Settings.DC.HubListURL etc. before dlg.DoModal()
	if ( m_sURL.GetLength() < 12 )
		m_sURL = Settings.eDonkey.ServerListURL;

	m_wndOK.EnableWindow( IsValidURL() );
	m_wndProgress.SetRange( 0, 100 );
	m_wndProgress.SetPos( 0 );

	UpdateData( FALSE );

	return TRUE;
}
void CUpdateServersDlg::OnChangeURL()
{
	UpdateData();

	m_wndOK.EnableWindow( IsValidURL() );
}
STDMETHODIMP HttpRequest::put_Url(BSTR newVal)
{
	ATLASSERT(newVal);
	if(IsValidURL(NULL,newVal,0)!=S_OK){
		ErrorMsgBox(0,_T("请求地址不合法!"));
		return S_OK;
	}

	DWORD dwSize=STRLEN_4K;
	if (!InternetCanonicalizeUrl(newVal,m_szUrl,&dwSize,ICU_BROWSER_MODE)){
		ErrorMsgBox(GetLastError(),_T("请求地址不合法或者长度太大:%s"));
		ZeroMemory(m_szUrl,sizeof(m_szUrl));
		return S_OK;
	}
	ZeroMemory(m_szUrl,sizeof(m_szUrl));
	_tcsncpy_s(m_szUrl,newVal,_tcslen(newVal));
	
	ZeroMemory(m_szUrlProtocol,sizeof(m_szUrlProtocol));
	ZeroMemory(m_szUrlHost,sizeof(m_szUrlHost));
	ZeroMemory(m_szUrlFile,sizeof(m_szUrlFile));
	m_usUrlPort=DEFAULT_HTTP_PORT;
	m_blUrlIsSSL=VARIANT_FALSE;

	if (!m_szUrl || _tcslen(m_szUrl)==0) return S_OK;

	//»ñÈ¡urlЭÒ鲿·Ö
	for(size_t i=0;i<sizeof(m_szUrl);i++){
		if (m_szUrl[i]==_T(':') || i>=sizeof(m_szUrlProtocol)) break;
		m_szUrlProtocol[i]=m_szUrl[i];
	}
	
	//ÊÇ·ñsslºÍsslĬÈ϶˿Ú
	if (_tcsicmp(m_szUrlProtocol,_T("https"))==0) {
		m_blUrlIsSSL=VARIANT_TRUE;
		if (m_usUrlPort==DEFAULT_HTTP_PORT) m_usUrlPort=DEFAULT_HTTPS_PORT;
	}

	//»ñÈ¡url¶Ë¿Ú²¿·Ö
	TCHAR* szPos1=_tcschr(m_szUrl+_tcslen(m_szUrlProtocol)+1,_T(':'));
	TCHAR* szPos2=_tcschr(m_szUrl+_tcslen(m_szUrlProtocol)+3,_T('/'));
	if (szPos1 && szPos2){
		TCHAR szPort[STRLEN_SMALL]={0};
		_tcsncpy_s(szPort,szPos1+1,szPos2-szPos1-1);
		
		TCHAR *stop;
		m_usUrlPort=(USHORT)_tcstoul(szPort,&stop,0);
	}
	
	//»ñÈ¡urlÖ÷»ú²¿·Ö
	int idx=0;
	for(size_t i=_tcslen(m_szUrlProtocol)+3;i<sizeof(m_szUrl);i++){
		if (m_szUrl[i]==_T(':') || m_szUrl[i]==_T('/')) break;
		m_szUrlHost[idx++]=m_szUrl[i];
	}
	
	//»ñÈ¡urlÎļþ²¿·Ö
	TCHAR* szPos3=_tcschr(m_szUrl+_tcslen(m_szUrlProtocol)+3,_T('/'));
	if(szPos3) _tcscpy_s(this->m_szUrlFile,szPos3);
	else this->m_szUrlFile[0]=_T('/');
	
	return S_OK;
}
Beispiel #5
0
void CMCUDemoDlg::Login()
{
	tstringstream strServerFullUrl;	

	BOOL bHasInterface;
	CConfig::Instance()->GetLoginInterface( bHasInterface );
	if ( bHasInterface )
	{
		CLoginDialog loginDlg;
		int nloginType = loginDlg.DoModal();
		if ( CLoginDialog::LOGIN_CANCEL == nloginType )
		{
			// 退出程序。
			EndDialog(0);
			return;
		}

		this->m_htmlWnd.ClearHistoryURL();

		TCHAR ServerFullUrl[1024];
		memset(ServerFullUrl, 0, sizeof(ServerFullUrl));
		if( CConfig::Instance()->GetServerFullUrl((LPTSTR)ServerFullUrl) )
		{
			Log() << L"ServerFullUrl:"<<ServerFullUrl << endl;
		}
		else
		{
			Log() << L"服务器地址不是合法的HTTP地址:"<< endl;
			MessageBox(L"服务器地址不是合法的HTTP地址!", L"错误", MB_OK);
			return;
		}

		HRESULT hr = IsValidURL( NULL, (LPCTSTR)ServerFullUrl, 0 );
		if( S_OK != hr )
		{
			MessageBox(L"服务器地址配置不合法!", L"错误", MB_OK);
			return; 
		}

		strServerFullUrl << ServerFullUrl;

		tstring strRegionId;
		CConfig::Instance()->GetRegionId( strRegionId );
		tstringstream ssAccount;
		ssAccount << (LPCTSTR)loginDlg.m_strUserId << _T( "@" ) << strRegionId;

		string strResult = UTF16toUTF8( ssAccount.str() );
		char* strAccount = (char *) LocalAlloc(LMEM_FIXED, 10240);
		memset(strAccount, 0, 10240);
		UTF_8ToAsciiDisplay( strAccount, 10240, strResult.c_str(), strlen(strResult.c_str()));

		strServerFullUrl << _T( "?" );
		//strServerFullUrl << _T( "Account=" ) << ssAccount.str() << _T( "&" );
		//strServerFullUrl << _T( "Account=" ) << L"admin@%E4%BB%96.wx.js@110000"<<_T( "&" );
		strServerFullUrl << _T( "Account=" ) << strAccount << _T( "&" );
		strServerFullUrl << _T( "Password="******"&" );
		strServerFullUrl << _T( "StreamingType=" ) << int( loginDlg.m_b3GStream ? STREAM_EVDO : STREAM_1X )  << _T( "&" );
		strServerFullUrl << _T( "LoginType=" ) << (int)loginDlg.m_eLoginType;
		LocalFree (strAccount);

		// 保存.
		CMCUSession::Instance()->UserId( ssAccount.str() );
		CMCUSession::Instance()->Password( (LPCTSTR)loginDlg.m_strPassword );
		
	}
	else
	{
		tstring strServer;
		CConfig::Instance()->GetServer( strServer );
		strServerFullUrl << strServer;
	}

	this->m_htmlWnd.OpenUrl( strServerFullUrl.str().c_str() );

}
bool is_domain(const CString& name) {
	CString domain = L"http://";
	domain += name;
	auto hr = IsValidURL(nullptr, domain, 0);
	return hr == S_OK;
}