BOOL CProxyIP::GetFirstGoalUrl(const TCHAR* pSrcUrl, TCHAR* pGoalUrl) { BOOL bRet = FALSE; CHttpFile* pHttpFile = (CHttpFile *)m_pSession->OpenURL(pSrcUrl); DWORD dwStatusCode = 0; pHttpFile->QueryInfoStatusCode(dwStatusCode); if (dwStatusCode == HTTP_STATUS_OK) { CString strData; wstring subStr = _T("国内网页http代理ip地址服务器"); while(pHttpFile->ReadString(strData)) { TCHAR mainStr[MAX_STR_LEN] = {0}; ConvertMultiByteToWideChar((char *)strData.GetBuffer(), mainStr, MAX_STR_LEN); wstring wMainStr = mainStr; if (wMainStr.find(subStr) < wMainStr.length()) { int startLoc = wMainStr.find(_T("href")); int endLoc = wMainStr.find(_T("title")); endLoc -= 2; startLoc += 6; wstring wTempUrl = wMainStr.substr(startLoc, endLoc-startLoc).c_str(); wmemcpy(pGoalUrl, wTempUrl.c_str(), wcslen(wTempUrl.c_str())+1); bRet = TRUE; break; } } } pHttpFile->Close(); delete pHttpFile; return bRet; }
std::wstring string2wstring (const std::string& aNarrow) { int max = ConvertMultiByteToWideChar(aNarrow.c_str(),aNarrow.length(),0,0, CP_OEMCP); std::wstring reply; if (max > 0 ) { wchar_t* buffer = new wchar_t [max]; try { ConvertMultiByteToWideChar(aNarrow.c_str(),aNarrow.length(),buffer,max,CP_OEMCP); reply = std::wstring (buffer, max); } catch (...) { } delete [] buffer; } return reply.c_str(); }
BOOL CProxyIP::FillGoalUrlVec(const TCHAR* pFirstGoalUrl) { BOOL bRet = FALSE; int totalPage = 0; CHttpFile* pHttpFile = (CHttpFile *)m_pSession->OpenURL(pFirstGoalUrl); DWORD dwStatusCode = 0; pHttpFile->QueryInfoStatusCode(dwStatusCode); if (dwStatusCode == HTTP_STATUS_OK) { BOOL bCheck = FALSE; CString strData; wstring subStrPage = _T("class=\"pagelist\""); while(pHttpFile->ReadString(strData)) { TCHAR mainStr[MAX_STR_LEN] = {0}; ConvertMultiByteToWideChar((char *)strData.GetBuffer(), mainStr, MAX_STR_LEN); wstring wMainStr = mainStr; if (bCheck) { int lenn = wMainStr.find(_T("共")); wstring wsPage = wMainStr.substr(lenn+1, 1).c_str(); totalPage = _wtoi(wsPage.c_str()); bCheck = FALSE; break; } if (wMainStr.find(subStrPage) < wMainStr.length()) { bCheck = TRUE; } } wstring strGoalUrl = pFirstGoalUrl; int lenHtml = strGoalUrl.find(_T(".html")); wstring newStrGoalUrl = strGoalUrl.substr(0, lenHtml); for (int j = 2; j <= totalPage; j++) { TCHAR tChar[MAX_URL_LEN] = {0}; swprintf(tChar, MAX_URL_LEN, _T("%s_%d.html"), newStrGoalUrl.c_str(), j); m_goalUrlVec.push_back(tChar); } bRet = TRUE; } pHttpFile->Close(); delete pHttpFile; return bRet; }
BOOL CProxyIP::FillIpVec() { int i = 0; for (i = 0; i < m_goalUrlVec.size(); i++) { CHttpFile* pHttpFile = (CHttpFile *)m_pSession->OpenURL(m_goalUrlVec[i].c_str()); DWORD dwStatusCode = 0; pHttpFile->QueryInfoStatusCode(dwStatusCode); if (dwStatusCode == HTTP_STATUS_OK) { BOOL bCheck = FALSE; CString strData; wstring subStr = _T("class=\"cont_ad\""); while(pHttpFile->ReadString(strData)) { TCHAR mainStr[MAX_STR_LEN] = {0}; ConvertMultiByteToWideChar((char *)strData.GetBuffer(), mainStr, MAX_STR_LEN); wstring wMainStr = mainStr; if (bCheck) { if (wMainStr.find(_T("</span>")) < wMainStr.length()) { break; } TCHAR firstPosChar = wMainStr.at(0); if (firstPosChar < 48 || firstPosChar > 57) { continue; } m_IpVec.push_back(wMainStr); m_totalIp++; } if (wMainStr.find(subStr) < wMainStr.length()) { bCheck = TRUE; } } } pHttpFile->Close(); delete pHttpFile; } return TRUE; }
bool CCommandParser::ParseParam(int argc, const char**argv, CParameterList* aParamList) { if (argc < 2) { throw CCommandParser::ECmdLineUnknownOption; } bool bContinue = true; while ((--argc > 0) && bContinue) { ++argv; if (**argv != '-') { continue; } bool err = false; const char* optPtr = *argv; switch (toupper(*++optPtr)) { #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK case 'A': { if (argc <= 1) throw CCommandParser::ECmdLineNoDirArgument; --argc; aParamList->SetResourceFilePath(*(++argv)); break; } #endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK case 'C': { if (argc <= 1) throw CCommandParser::ECmdLineNoDirArgument; --argc; aParamList->SetSystemDrive(*(++argv)); break; } case 'D': { --argc; wchar_t buf[2048]; ConvertMultiByteToWideChar(*++argv,-1, buf, 2048); aParamList->SetSystemDriveLetter(tolower(buf[0])); break; } case 'E': { aParamList->SetFlag(CParameterList::EFlagsDisableZDriveChecksSet); break; } #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK case 'F': { aParamList->SetOriginVerificationStatus(false); break; } #endif case 'H': case '?': { DisplayUsage(); bContinue = false; break; } case 'I': { if (argc <= 1) throw CCommandParser::ECmdLineNoConfigFileArgument; --argc; aParamList->SetConfigFile(*(++argv)); break; } case 'K': { // Last command if (argc == 1) { aParamList->SetSisRegistryVersion(SisRegistry::KRegistryV40string); } else { // Check that the next arg is valid std::string versionStr = *(++argv); if (**argv == '-') { aParamList->SetSisRegistryVersion(SisRegistry::KRegistryV40string); --argv; } else { --argc; aParamList->SetSisRegistryVersion(versionStr); } } break; } case 'L': { if (argc > 1) { --argc; wchar_t buf[2048]; ConvertMultiByteToWideChar(*++argv,-1, buf, 2048); iLogFile = buf; } break; } case 'N': { if (argc <= 1) throw CCommandParser::ECmdLineInvalidLanguage; --argc; aParamList->SetLanguage(static_cast< CSISLanguage::TLanguage >( String2Language( *(++argv) ) )); break; } case 'O': { DisplayOpenSSLCopyright(); bContinue = false; break; } case 'P': { if (!(err = argc <= 1)) { --argc; std::string paramFile = *(++argv); ParseParam(argc, paramFile, aParamList); } break; } case 'R': { if (argc <= 1) throw CCommandParser::ECmdLineNoRomRofsLogsArgument; --argc; aParamList->EmptyRomLogFiles(); #ifdef _MSC_VER FilePtr funtionPtr = aParamList->AddRomLogFile; #else FilePtr funtionPtr = &(aParamList->AddRomLogFile); #endif // _MSC_VER String2List(*aParamList, funtionPtr, *(++argv) ); break; } case 'S': { if (argc <= 1) throw CCommandParser::ECmdLineNoSisArgument; --argc; String2SISFileList(*aParamList, argc, ++argv); break; } case 'T': { if (argc <= 1) throw CCommandParser::ECmdLineNoSisStubPathArgument; --argc; aParamList->SetStubDir(*(++argv)); break; } case 'V': { DisplayVersion(); bContinue = false; break; } case 'W': { --argc; iWarnLevel = String2Warn(*(++argv)); break; } case 'X': { if (argc <= 1) throw CCommandParser::ECmdLineMissingPackageUID; --argc; aParamList->EmptyPkgUids(); #ifdef _MSC_VER FilePtr funtionPtr = (aParamList->AddPkgUid); #else FilePtr funtionPtr = &(aParamList->AddPkgUid); #endif // _MSC_VER String2List(*aParamList, funtionPtr, *(++argv) ); break; } case 'Z': { if (argc <= 1) throw CCommandParser::ECmdLineNoDirArgument; --argc; aParamList->SetZDrive(*(++argv)); break; } default: { LERROR(string2wstring(std::string(optPtr))); throw CCommandParser::ECmdLineUnknownOption; } } if (err) { throw CCommandParser::ECmdLineUnknownOption; } } // Finished parsing all the command line options return !bContinue; }