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