void CIPFilter::SaveToDefaultFile() { CString strFilePath = thePrefs.GetMuleDirectory(EMULE_CONFIGDIR) + DFLT_IPFILTER_FILENAME; FILE* fp = _tfsopen(strFilePath, _T("wt"), _SH_DENYWR); if (fp != NULL) { for (int i = 0; i < m_iplist.GetCount(); i++) { const SIPFilter* flt = m_iplist[i]; CHAR szStart[16]; ipstrA(szStart, _countof(szStart), htonl(flt->start)); CHAR szEnd[16]; ipstrA(szEnd, _countof(szEnd), htonl(flt->end)); if (fprintf(fp, "%-15s - %-15s , %3u , %s\n", szStart, szEnd, flt->level, flt->desc) == 0 || ferror(fp)) { CString strError; strError.Format(_T("Failed to save IP filter to file \"%s\" - %s"), strFilePath, _tcserror(errno)); throw strError; } } fclose(fp); m_bModified = false; } else { CString strError; strError.Format(_T("Failed to save IP filter to file \"%s\" - %s"), strFilePath, _tcserror(errno)); throw strError; } }
bool CHTRichEditCtrl::SaveLog(LPCTSTR pszDefName) { bool bResult = false; CFileDialog dlg(FALSE, _T("log"), pszDefName ? pszDefName : (LPCTSTR)m_strTitle, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Log Files (*.log)|*.log||"), this, 0); if (dlg.DoModal() == IDOK) { FILE* fp = _tfsopen(dlg.GetPathName(), _T("wb"), _SH_DENYWR); if (fp) { // write Unicode byte-order mark 0xFEFF fputwc(0xFEFF, fp); CString strText; GetWindowText(strText); fwrite(strText, sizeof(TCHAR), strText.GetLength(), fp); if (ferror(fp)){ CString strError; strError.Format(_T("Failed to write log file \"%s\" - %s"), dlg.GetPathName(), _tcserror(errno)); AfxMessageBox(strError, MB_ICONERROR); } else bResult = true; fclose(fp); } else{ CString strError; strError.Format(_T("Failed to create log file \"%s\" - %s"), dlg.GetPathName(), _tcserror(errno)); AfxMessageBox(strError, MB_ICONERROR); } } return bResult; }
void *gg_dochpass(GGPROTO *gg, uin_t uin, char *password, char *newPass) { // Readup email char email[255] = "\0"; DBVARIANT dbv_email; // Connection handles struct gg_http *h; struct gg_pubdir *s; GGTOKEN token; #ifdef DEBUGMODE gg->debugLogA("gg_dochpass(): Starting."); #endif if (!uin || !password || !newPass) return NULL; if (!gg->getString(GG_KEY_EMAIL, &dbv_email)) { strncpy(email, dbv_email.pszVal, sizeof(email)); db_free(&dbv_email); } // Load token if (!gg->gettoken(&token)) return NULL; if (!(h = gg_change_passwd4(uin, email, password, newPass, token.id, token.val, 0)) || !(s = (gg_pubdir*)h->data) || !s->success) { TCHAR error[128]; mir_sntprintf(error, SIZEOF(error), TranslateT("Your password cannot be changed because of error:\n\t%s"), (h && !s) ? http_error_string(h ? h->error : 0) : (s ? TranslateT("Invalid data entered") : _tcserror(errno))); MessageBox(NULL, error, gg->m_tszUserName, MB_OK | MB_ICONSTOP); gg->debugLogA("gg_dochpass(): Cannot change password. errno=%d: %s", errno, strerror(errno)); } else { gg_pubdir_free(h); gg->setString(GG_KEY_PASSWORD, newPass); gg->debugLogA("gg_dochpass(): Password change succesful."); MessageBox(NULL, TranslateT("Your password has been changed."), gg->m_tszUserName, MB_OK | MB_ICONINFORMATION); } #ifdef DEBUGMODE gg->debugLogA("gg_dochpass(): End."); #endif return NULL; }
kjm::_tstring calc_md5(const kjm::_tstring& fname, bool verbose) { bool first = false; kjm::_tstring result; FILE* fp = _tfopen(fname.c_str(), (g_binaryMode ? _T("rb") : _T("r"))); if (fp) { MD5 md5; unsigned char buffer[1024]; int len; __int64 rlen = 0; __int64 flen = _filelengthi64(_fileno(fp)); kjm::tickCounter cnt(flen); while (len = fread(buffer, sizeof(char), countof(buffer), fp)) { cnt.m_count += len; if (cnt.lap(1000)) { if (verbose && cnt.elapseSec() > 3) { if (first == false) { _tprintf(_T("計算中 << %s >>\n"), kjm::path::findFileName(fname).c_str()); first = true; } _tprintf(_T(" %lld/%lld %d%% 後 %d 秒 \r"), cnt.m_count, cnt.m_totalCount, cnt.progress(), cnt.estimateRemainingTime()/1000); } } md5.update(buffer, len); } if (verbose && cnt.elapseSec() > 3) { _tprintf(_T(" %lld/%lld %d%% \n"), cnt.m_count, cnt.m_totalCount, cnt.progress()); } md5.finalize(); fclose(fp); #if defined(UNICODE) result = kjm::util::toUnicode(md5.hex_digest()); #else result = md5.hex_digest(); #endif } else { _tprintf(_T("md5sum: %s: %s\n"), fname.c_str(), _tcserror(errno)); } return result; }
TCHAR* ws_strerror(int code) { static TCHAR err_desc[160]; // Not a windows error display WinSock if (code == 0) { TCHAR buff[128]; int len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), 0, buff, SIZEOF(buff), NULL); if (len == 0) mir_sntprintf(err_desc, SIZEOF(err_desc), _T("WinSock %u: Unknown error."), WSAGetLastError()); else mir_sntprintf(err_desc, SIZEOF(err_desc), _T("WinSock %d: %s"), WSAGetLastError(), buff); return err_desc; } // Return normal error return _tcserror(code); }
void *gg_doregister(GGPROTO *gg, char *newPass, char *newEmail) { // Connection handles struct gg_http *h = NULL; struct gg_pubdir *s = NULL; GGTOKEN token; #ifdef DEBUGMODE gg->debugLogA("gg_doregister(): Starting."); #endif if (!newPass || !newEmail) return NULL; // Load token if (!gg->gettoken(&token)) return NULL; if (!(h = gg_register3(newEmail, newPass, token.id, token.val, 0)) || !(s = (gg_pubdir*)h->data) || !s->success || !s->uin) { TCHAR error[128]; mir_sntprintf(error, SIZEOF(error), TranslateT("Cannot register new account because of error:\n\t%s"), (h && !s) ? http_error_string(h ? h->error : 0) : (s ? TranslateT("Registration rejected") : _tcserror(errno))); MessageBox(NULL, error, gg->m_tszUserName, MB_OK | MB_ICONSTOP); gg->debugLogA("gg_doregister(): Cannot register. errno=%d: %s", errno, strerror(errno)); } else { gg->setDword(GG_KEY_UIN, s->uin); gg->checknewuser(s->uin, newPass); gg->setString(GG_KEY_PASSWORD, newPass); gg->setString(GG_KEY_EMAIL, newEmail); gg_pubdir_free(h); gg->debugLogA("gg_doregister(): Account registration succesful."); MessageBox( NULL, TranslateT("You have registered new account.\nPlease fill up your personal details in \"M->View/Change My Details...\""), gg->m_tszUserName, MB_OK | MB_ICONINFORMATION); } #ifdef DEBUGMODE gg->debugLogA("gg_doregister(): End."); #endif return NULL; }
//////////////////////////////////////////////////////////////////////////////// // Remove Account : Proc void *gg_dounregister(GGPROTO *gg, uin_t uin, char *password) { // Connection handles struct gg_http *h; struct gg_pubdir *s; GGTOKEN token; #ifdef DEBUGMODE gg->debugLogA("gg_dounregister(): Starting."); #endif if (!uin || !password) return NULL; // Load token if (!gg->gettoken(&token)) return NULL; if (!(h = gg_unregister3(uin, password, token.id, token.val, 0)) || !(s = (gg_pubdir*)h->data) || !s->success || s->uin != uin) { TCHAR error[128]; mir_sntprintf(error, SIZEOF(error), TranslateT("Your account cannot be removed because of error:\n\t%s"), (h && !s) ? http_error_string(h ? h->error : 0) : (s ? TranslateT("Bad number or password") : _tcserror(errno))); MessageBox(NULL, error, gg->m_tszUserName, MB_OK | MB_ICONSTOP); gg->debugLogA("gg_dounregister(): Cannot remove account. errno=%d: %s", errno, strerror(errno)); } else { gg_pubdir_free(h); gg->delSetting(GG_KEY_PASSWORD); gg->delSetting(GG_KEY_UIN); gg->debugLogA("gg_dounregister(): Account %d has been removed.", uin); MessageBox(NULL, TranslateT("Your account has been removed."), gg->m_tszUserName, MB_OK | MB_ICONINFORMATION); } #ifdef DEBUGMODE gg->debugLogA("gg_dounregister(): End."); #endif return NULL; }
HANDLE GGPROTO::dcc7fileallow(HANDLE hTransfer, const TCHAR* szPath) { struct gg_dcc7 *dcc7 = (struct gg_dcc7 *) hTransfer; char fileName[MAX_PATH], *path = mir_t2a(szPath); mir_snprintf(fileName, "%s%s", path, dcc7->filename); dcc7->folder = _strdup((char*)path); dcc7->tick = 0; mir_free(path); // Remove transfer from waiting list gg_EnterCriticalSection(&ft_mutex, "dcc7fileallow", 40, "ft_mutex", 1); int iFtRemoveRes = list_remove(&transfers, dcc7, 0); gg_LeaveCriticalSection(&ft_mutex, "dcc7fileallow", 40, 1, "ft_mutex", 1); if (iFtRemoveRes == -1) { debugLogA("dcc7fileallow(): File transfer denied."); ProtoBroadcastAck((UINT_PTR)dcc7->contact, ACKTYPE_FILE, ACKRESULT_DENIED, dcc7, 0); // Free transfer gg_dcc7_free(dcc7); return 0; } // Open file for appending and check if ok if ((dcc7->file_fd = _open(fileName, _O_WRONLY | _O_APPEND | _O_BINARY | _O_CREAT, _S_IREAD | _S_IWRITE)) == -1) { debugLogA("dcc7fileallow(): Failed to create file \"%s\". errno=%d: %s", fileName, errno, strerror(errno)); TCHAR error[512]; mir_sntprintf(error, TranslateT("Cannot create transfer file. ERROR: %d: %s (dcc7)\n%s"), errno, _tcserror(errno), szPath); showpopup(m_tszUserName, error, GG_POPUP_ERROR); gg_dcc7_reject(dcc7, GG_DCC7_REJECT_USER); ProtoBroadcastAck((UINT_PTR)dcc7->contact, ACKTYPE_FILE, ACKRESULT_FAILED, dcc7, 0); // Free transfer gg_dcc7_free(dcc7); return 0; } // Put an offset to the file dcc7->offset = _lseek(dcc7->file_fd, 0, SEEK_END); gg_dcc7_accept(dcc7, dcc7->offset); // Add to watches and start transfer gg_EnterCriticalSection(&ft_mutex, "dcc7fileallow", 41, "ft_mutex", 1); list_add(&watches, dcc7, 0); gg_LeaveCriticalSection(&ft_mutex, "dcc7fileallow", 41, 1, "ft_mutex", 1); debugLogA("dcc7fileallow(): Receiving file \"%s\" from %d.", dcc7->filename, dcc7->peer_uin); return hTransfer; }
INT_PTR GGPROTO::getavatarinfo(WPARAM wParam, LPARAM lParam) { PROTO_AVATAR_INFORMATION *pai = (PROTO_AVATAR_INFORMATION *)lParam; pai->filename[0] = 0; pai->format = PA_FORMAT_UNKNOWN; uin_t uin = (uin_t)getDword(pai->hContact, GG_KEY_UIN, 0); if (!uin) { debugLogA("getavatarinfo(): Incoming request for avatar information. No uin found. return GAIR_NOAVATAR"); return GAIR_NOAVATAR; } if (!getByte(GG_KEY_ENABLEAVATARS, GG_KEYDEF_ENABLEAVATARS)) { debugLogA("getavatarinfo(): Incoming request for avatar information. GG_KEY_ENABLEAVATARS == 0. return GAIR_NOAVATAR"); return GAIR_NOAVATAR; } //directly check if contact has protected user avatar set by AVS, and if yes return it as protocol avatar DBVARIANT dbv; if (!db_get_ts(pai->hContact, "ContactPhoto", "Backup", &dbv)) { if ((mir_tstrlen(dbv.ptszVal)>0) && db_get_b(pai->hContact, "ContactPhoto", "Locked", 0)){ debugLogA("getavatarinfo(): Incoming request for avatar information. Contact has assigned Locked ContactPhoto. return GAIR_SUCCESS"); _tcscpy_s(pai->filename, _countof(pai->filename) ,dbv.ptszVal); pai->format = ProtoGetAvatarFormat(pai->filename); db_free(&dbv); return GAIR_SUCCESS; } db_free(&dbv); } if (!getByte(pai->hContact, GG_KEY_AVATARREQUESTED, GG_KEYDEF_AVATARREQUESTED)) { requestAvatarInfo(pai->hContact, 1); if ((wParam & GAIF_FORCE) != 0) { debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. requestAvatarInfo() fired. return GAIR_WAITFOR", uin); return GAIR_WAITFOR; } else { debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. requestAvatarInfo() fired. return GAIR_NOAVATAR", uin); return GAIR_NOAVATAR; } } pai->format = getByte(pai->hContact, GG_KEY_AVATARTYPE, GG_KEYDEF_AVATARTYPE); ptrA AvatarHash(NULL); ptrA AvatarURL( getStringA(pai->hContact, GG_KEY_AVATARURL)); ptrA AvatarTs( getStringA(pai->hContact, GG_KEY_AVATARTS)); if (AvatarURL != NULL && AvatarTs != NULL) { char *AvatarName = strrchr(AvatarURL, '/'); AvatarName++; char AvatarNameWithTS[128]; mir_snprintf(AvatarNameWithTS, "%s%s", AvatarName, AvatarTs); AvatarHash = gg_avatarhash(AvatarNameWithTS); } ptrA AvatarSavedHash( getStringA(pai->hContact, GG_KEY_AVATARHASH)); if (AvatarHash != NULL && AvatarSavedHash != NULL) { getAvatarFilename(pai->hContact, pai->filename, _countof(pai->filename)); if (!mir_strcmp(AvatarHash, AvatarSavedHash)) { if (_taccess(pai->filename, 0) == 0){ debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. Avatar hash unchanged. return GAIR_SUCCESS", uin); return GAIR_SUCCESS; } requestAvatarTransfer(pai->hContact, AvatarURL); debugLog(_T("getavatarinfo(): Incoming request for avatar information. uin=%d. Avatar hash unchanged but file %s does not exist. errno=%d: %s. requestAvatarTransfer() fired. return GAIR_WAITFOR"), uin, pai->filename, errno, strerror(errno)); return GAIR_WAITFOR; } if ((wParam & GAIF_FORCE) != 0) { if (_tremove(pai->filename) != 0){ debugLog(_T("getavatarinfo(): refresh. _tremove 1 file %s error. errno=%d: %s"), pai->filename, errno, strerror(errno)); TCHAR error[512]; mir_sntprintf(error, TranslateT("Cannot remove old avatar file before refresh. ERROR: %d: %s\n%s"), errno, _tcserror(errno), pai->filename); showpopup(m_tszUserName, error, GG_POPUP_ERROR); } setString(pai->hContact, GG_KEY_AVATARHASH, AvatarHash); requestAvatarTransfer(pai->hContact, AvatarURL); debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. Avatar hash changed, requestAvatarTransfer() fired. return GAIR_WAITFOR", uin); return GAIR_WAITFOR; } } else if ((wParam & GAIF_FORCE) != 0) { if (AvatarHash == NULL && AvatarSavedHash != NULL) { getAvatarFilename(pai->hContact, pai->filename, _countof(pai->filename)); if (_tremove(pai->filename) != 0){ debugLog(_T("getavatarinfo(): delete. _tremove file %s error. errno=%d: %s"), pai->filename, errno, strerror(errno)); TCHAR error[512]; mir_sntprintf(error, TranslateT("Cannot remove old avatar file. ERROR: %d: %s\n%s"), errno, _tcserror(errno), pai->filename); showpopup(m_tszUserName, error, GG_POPUP_ERROR); } delSetting(pai->hContact, GG_KEY_AVATARHASH); delSetting(pai->hContact, GG_KEY_AVATARURL); delSetting(pai->hContact, GG_KEY_AVATARTYPE); debugLogA("getavatarinfo(): Incoming request for avatar information. Contact %d deleted avatar. return GAIR_NOAVATAR", uin); } else if (AvatarHash != NULL && AvatarSavedHash == NULL) { setString(pai->hContact, GG_KEY_AVATARHASH, AvatarHash); requestAvatarTransfer(pai->hContact, AvatarURL); debugLogA("getavatarinfo(): Incoming request for avatar information. Contact %d set avatar. requestAvatarTransfer() fired. return GAIR_WAITFOR", uin); return GAIR_WAITFOR; } else debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. AvatarHash==AvatarSavedHash==NULL, with GAIF_FORCE param. return GAIR_NOAVATAR", uin); } else debugLogA("getavatarinfo(): Incoming request for avatar information. uin=%d. AvatarHash==null or AvatarSavedHash==null, but no GAIF_FORCE param. return GAIR_NOAVATAR", uin); return GAIR_NOAVATAR; }
void CPerfLog::WriteSamples(UINT nCurDn, UINT nCurUp, UINT nCurDnOH, UINT nCurUpOH) { ASSERT( m_bInitialized ); if (m_eFileFormat == CSV) { time_t tNow = time(NULL); char szTime[40]; // do not localize this date/time string! strftime(szTime, ARRSIZE(szTime), "%m/%d/%Y %H:%M:%S", localtime(&tNow)); FILE* fp = _tfsopen(m_strFilePath, (m_eMode == OneSample) ? _T("wt") : _T("at"), _SH_DENYWR); if (fp == NULL){ LogError(false, _T("Failed to open performance log file \"%s\" - %s"), m_strFilePath, _tcserror(errno)); return; } setvbuf(fp, NULL, _IOFBF, 16384); // ensure that all lines are written to file with one call if (m_eMode == OneSample || _filelength(_fileno(fp)) == 0) fprintf(fp, "\"(PDH-CSV 4.0)\",\"DatDown\",\"DatUp\",\"OvrDown\",\"OvrUp\"\n"); fprintf(fp, "\"%s\",\"%u\",\"%u\",\"%u\",\"%u\"\n", szTime, nCurDn, nCurUp, nCurDnOH, nCurUpOH); fclose(fp); } else { ASSERT( m_eFileFormat == MRTG ); FILE* fp = _tfsopen(m_strMRTGDataFilePath, (m_eMode == OneSample) ? _T("wt") : _T("at"), _SH_DENYWR); if (fp != NULL) { fprintf(fp, "%u\n%u\n\n\n", nCurDn, nCurUp); fclose(fp); } else { LogError(false, _T("Failed to open performance log file \"%s\" - %s"), m_strMRTGDataFilePath, _tcserror(errno)); } fp = _tfsopen(m_strMRTGOverheadFilePath, (m_eMode == OneSample) ? _T("wt") : _T("at"), _SH_DENYWR); if (fp != NULL) { fprintf(fp, "%u\n%u\n\n\n", nCurDnOH, nCurUpOH); fclose(fp); } else { LogError(false, _T("Failed to open performance log file \"%s\" - %s"), m_strMRTGOverheadFilePath, _tcserror(errno)); } } }
static void SetAvatar(TlenProtocol *proto, HANDLE hContact, TLEN_LIST_ITEM *item, char *data, int len, DWORD format) { TCHAR filename[MAX_PATH]; char md5[33]; mir_md5_state_t ctx; DWORD digest[4]; if (format == PA_FORMAT_UNKNOWN && len > 4) format = ProtoGetBufferFormat(data); mir_md5_init( &ctx ); mir_md5_append( &ctx, ( BYTE* )data, len); mir_md5_finish( &ctx, ( BYTE* )digest ); sprintf( md5, "%08x%08x%08x%08x", (int)htonl(digest[0]), (int)htonl(digest[1]), (int)htonl(digest[2]), (int)htonl(digest[3])); //!!!!!!!!!!!!!! if (item != NULL) { char *hash = item->avatarHash; item->avatarFormat = format; item->avatarHash = mir_strdup(md5); mir_free(hash); } else { proto->threadData->avatarFormat = format; strcpy(proto->threadData->avatarHash, md5); } TlenGetAvatarFileName(proto, item, filename, sizeof filename ); DeleteFile(filename); FILE *out = _tfopen(filename, TEXT("wb") ); if (out != NULL) { fwrite(data, len, 1, out); fclose(out); db_set_ts(hContact, "ContactPhoto", "File", filename ); db_set_s(hContact, proto->m_szModuleName, "AvatarHash", md5); db_set_dw(hContact, proto->m_szModuleName, "AvatarFormat", format); } else { TCHAR buffer[128]; mir_sntprintf(buffer, SIZEOF(buffer), TranslateT("Can not save new avatar file \"%s\" Error:\n\t%s (Error: %d)"), filename, _tcserror(errno), errno); PUShowMessageT(buffer, SM_WARNING); proto->debugLog(buffer); return; } ProtoBroadcastAck( proto->m_szModuleName, hContact, ACKTYPE_AVATAR, ACKRESULT_STATUS, NULL , 0); }
void TlenGetAvatarFileName(TlenProtocol *proto, TLEN_LIST_ITEM *item, TCHAR* ptszDest, int cbLen) { int tPathLen = mir_sntprintf(ptszDest, cbLen, TEXT("%s\\%S"), VARST( TEXT("%miranda_avatarcache%")), proto->m_szModuleName); if (_taccess(ptszDest, 0)) { int ret = CreateDirectoryTreeT(ptszDest); if (ret == 0) proto->debugLog(_T("getAvatarFilename(): Created new directory for avatar cache: %s."), ptszDest); else { proto->debugLog(_T("getAvatarFilename(): Can not create directory for avatar cache: %s. errno=%d: %s"), ptszDest, errno, strerror(errno)); TCHAR buffer[512]; mir_sntprintf(buffer, SIZEOF(buffer), TranslateT("Cannot create avatars cache directory. ERROR: %d: %s\n%s"), errno, _tcserror(errno), ptszDest); PUShowMessageT(buffer, SM_WARNING); } } int format = PA_FORMAT_PNG; ptszDest[ tPathLen++ ] = '\\'; if (item != NULL) format = item->avatarFormat; else if (proto->threadData != NULL) format = proto->threadData->avatarFormat; else format = db_get_dw(NULL, proto->m_szModuleName, "AvatarFormat", PA_FORMAT_UNKNOWN); const TCHAR *tszFileType = ProtoGetAvatarExtension(format); if ( item != NULL ) mir_sntprintf(ptszDest + tPathLen, MAX_PATH - tPathLen, TEXT("%S%s"), ptrA( TlenSha1(item->jid)), tszFileType); else mir_sntprintf(ptszDest + tPathLen, MAX_PATH - tPathLen, TEXT("%S_avatar%s"), proto->m_szModuleName, tszFileType); }
LRESULT CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: { RECT rectOwner, rectDlg, rectDiff; GetWindowRect(GetDesktopWindow(), &rectOwner); GetWindowRect(hwndDlg, &rectDlg); CopyRect(&rectDiff, &rectOwner); OffsetRect(&rectDlg, -rectDlg.left, -rectDlg.top); OffsetRect(&rectDiff, -rectDiff.left, -rectDiff.top); OffsetRect(&rectDiff, -rectDlg.right, -rectDlg.bottom); SetWindowPos(hwndDlg, HWND_TOP, rectOwner.left + (rectDiff.right / 2), rectOwner.top + (rectDiff.bottom / 2), 0, 0, SWP_NOSIZE); HWND hwndProg = GetDlgItem(hwndDlg, IDC_PROGRESS); DWORD dwStyle = GetWindowLong(hwndProg, GWL_STYLE); SetWindowLong(hwndProg, GWL_STYLE, dwStyle | PBS_MARQUEE); SendMessage(hwndProg, PBM_SETMARQUEE, TRUE, 70 /* = scroll speed */); HWND hwndOK = GetDlgItem(hwndDlg, IDC_OK); if (silentFlag) { RECT rectProg, rectOK; GetWindowRect(hwndProg, &rectProg); GetWindowRect(hwndOK, &rectOK); POINT posProg; posProg.x = rectProg.left; posProg.y = rectProg.top; ScreenToClient(hwndDlg, &posProg); MoveWindow(hwndProg, posProg.x, posProg.y, rectOK.right - rectProg.left, rectProg.bottom - rectProg.top, TRUE); ShowWindow(hwndOK, SW_HIDE); } else { EnableWindow(hwndOK, FALSE); } HWND hwndDetails = GetDlgItem(hwndDlg, IDC_DETAILS); ShowWindow(hwndDetails, SW_HIDE); LPTSTR dialogText = (LPTSTR)malloc(MAX_STRING_LENGTH * sizeof(TCHAR)); UINT titleID = (uninstallFlag ? IDS_UNINSTALL : IDS_INSTALL); LoadString(GetModuleHandle(NULL), titleID, dialogText, MAX_STRING_LENGTH); SetWindowText(hwndDlg, dialogText); LoadString(GetModuleHandle(NULL), IDS_CLOSE, dialogText, MAX_STRING_LENGTH); SetDlgItemText(hwndDlg, IDC_OK, dialogText); LoadString(GetModuleHandle(NULL), IDS_DETAILS, dialogText, MAX_STRING_LENGTH); SetDlgItemText(hwndDlg, IDC_DETAILS, dialogText); LPTSTR message = (LPTSTR)malloc((2 * MAX_STRING_LENGTH + 10) * sizeof(TCHAR)); UINT loadingID = (uninstallFlag ? IDS_LOADING_U : IDS_LOADING); LoadString(GetModuleHandle(NULL), loadingID, message, MAX_STRING_LENGTH); loadingID = (estTime) ? IDS_TIMESPEC : IDS_TIMEUNDEF; LoadString(GetModuleHandle(NULL), loadingID, dialogText, MAX_STRING_LENGTH); LPTSTR time = (LPTSTR)malloc(9 * sizeof(TCHAR)); _itot(estTime, time, 10); DWORD_PTR messageArguments[] = { (DWORD_PTR)time }; HLOCAL formattedString = NULL; DWORD formatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY; FormatMessage(formatFlags, dialogText, loadingID, 0, (LPTSTR)&formattedString, 0, (va_list*)messageArguments); free(time); _tcsncat(message, _T("\n"), 2 * MAX_STRING_LENGTH + 10); _tcsncat(message, formattedString, 2 * MAX_STRING_LENGTH + 10); SetDlgItemText(hwndDlg, IDC_MESSAGE, message); LocalFree(formattedString); free(dialogText); free(message); } SetTimer(hwndDlg, IDT_TIMER1, 500, (TIMERPROC)NULL); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: if (hChildProc == 0) { EndDialog(hwndDlg, wParam); return TRUE; } break; case IDC_DETAILS: { LPTSTR errorMsg = _tcserror(exitCode); LPTSTR messsageFormat = (LPTSTR)malloc(MAX_STRING_LENGTH); LoadString(NULL, IDS_ERRORCODE, messsageFormat, MAX_STRING_LENGTH); HLOCAL messageString = NULL; DWORD_PTR messageArguments[] = { (DWORD_PTR)exitCode, (DWORD_PTR)errorMsg }; DWORD formatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY; FormatMessage(formatFlags, messsageFormat, IDS_ERRORCODE, 0, (LPTSTR)&messageString, 0, (va_list*)messageArguments); MessageBox(NULL, (LPTSTR)messageString, NULL, MB_OK | MB_ICONEXCLAMATION); LocalFree(messageString); free(messsageFormat); break; } } break; case WM_TIMER: switch (wParam) { case IDT_TIMER1: GetExitCodeProcess(hChildProc, &exitCode); if (exitCode != STILL_ACTIVE) { KillTimer(hwndDlg, IDT_TIMER1); hChildProc = 0; if (silentFlag) { EndDialog(hwndDlg, 0); } else { FlashWindow(hwndDlg, TRUE); HWND hwndProg; DWORD dwStyle; hwndProg = GetDlgItem(hwndDlg, IDC_PROGRESS); SendMessage(hwndProg, PBM_SETMARQUEE, FALSE, 0); dwStyle = GetWindowLong(hwndProg, GWL_STYLE); SetWindowLong(hwndProg, GWL_STYLE, dwStyle & ~PBS_MARQUEE); SendMessage(hwndProg, PBM_SETPOS, 100, 0); LPTSTR dialogText = (LPTSTR)malloc(MAX_STRING_LENGTH * sizeof(TCHAR)); if (exitCode == ERROR_SUCCESS) { UINT successID = (uninstallFlag ? IDS_SUCCESS_U : IDS_SUCCESS); LoadString(GetModuleHandle(NULL), successID, dialogText, MAX_STRING_LENGTH); } else { UINT failureID = (uninstallFlag ? IDS_FAILURE_U : IDS_FAILURE); LoadString(GetModuleHandle(NULL), failureID, dialogText, MAX_STRING_LENGTH); SendMessage(hwndProg, PBM_SETSTATE, PBST_ERROR, 0); HWND hwndDetails = GetDlgItem(hwndDlg, IDC_DETAILS); ShowWindow(hwndDetails, SW_SHOW); } SetDlgItemText(hwndDlg, IDC_MESSAGE, dialogText); free(dialogText); HWND hwndOK = GetDlgItem(hwndDlg, IDC_OK); EnableWindow(hwndOK, TRUE); } } break; } break; } return FALSE; }
void *gg_dochemail(GGPROTO *gg, uin_t uin, char *password, char *email, char *newEmail) { // Connection handles struct gg_http *h; struct gg_pubdir *s; GGTOKEN token; #ifdef DEBUGMODE gg->debugLogA("gg_dochemail(): Starting."); #endif if (!uin || !email || !newEmail) return NULL; // Load token if (!gg->gettoken(&token)) return NULL; if (!(h = gg_change_passwd4(uin, newEmail, password, password, token.id, token.val, 0)) || !(s = (gg_pubdir*)h->data) || !s->success) { TCHAR error[128]; mir_sntprintf(error, SIZEOF(error), TranslateT("Your e-mail cannot be changed because of error:\n\t%s"), (h && !s) ? http_error_string(h ? h->error : 0) : (s ? TranslateT("Bad old e-mail or password") : _tcserror(errno))); MessageBox(NULL, error, gg->m_tszUserName, MB_OK | MB_ICONSTOP); gg->debugLogA("gg_dochemail(): Cannot change e-mail. errno=%d: %s", errno, strerror(errno)); } else { gg_pubdir_free(h); gg->setString(GG_KEY_EMAIL, newEmail); gg->debugLogA("gg_dochemail(): E-mail change succesful."); MessageBox(NULL, TranslateT("Your e-mail has been changed."), gg->m_tszUserName, MB_OK | MB_ICONINFORMATION); } #ifdef DEBUGMODE gg->debugLogA("gg_dochemail(): End."); #endif return NULL; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { exitCode = ERROR_SUCCESS; LPTSTR cmdline = GetCommandLine(); LPSTR *argv = __argv; int argc = __argc; if (argc < 2) { showUsage(); return ERROR_INVALID_PARAMETER; } cmdline = PathGetArgs(cmdline); int index = 1; BOOL switchMatch; while (index < argc) { switchMatch = FALSE; LPSTR arg = argv[index]; if (strlen(arg) >= 2) { switch (arg[0]) { case '-': case '/': switch (tolower(arg[1])) { case 's': case 'q': if (strlen(arg) == 2) { switchMatch = TRUE; silentFlag = TRUE; } break; case 'u': if (strlen(arg) == 2) { switchMatch = TRUE; uninstallFlag = TRUE; } break; case 't': if (strlen(arg) > 3 && arg[2] == '=') { switchMatch = TRUE; estTime = atoi(arg + 3); } break; } break; } } if (switchMatch) { cmdline = PathGetArgs(cmdline); index++; } else { index = argc; } } STARTUPINFO startInfo; PROCESS_INFORMATION procInfo; ZeroMemory(&startInfo, sizeof(startInfo)); startInfo.cb = sizeof(startInfo); ZeroMemory(&procInfo, sizeof(procInfo)); if (!CreateProcess(NULL, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &startInfo, &procInfo)) { exitCode = GetLastError(); MessageBox(NULL, _tcserror(exitCode), NULL, MB_ICONERROR); return exitCode; } hChildProc = procInfo.hProcess; DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOADER), 0, (DLGPROC)DlgProc); CloseHandle(procInfo.hProcess); CloseHandle(procInfo.hThread); return exitCode; }
void CPPgSecurity::OnLoadIPFFromURL() { bool bHaveNewFilterFile = false; CString url; GetDlgItemText(IDC_UPDATEURL,url); if (!url.IsEmpty()) { // add entered URL to LRU list even if it's not yet known whether we can download from this URL (it's just more convenient this way) if (m_pacIPFilterURL && m_pacIPFilterURL->IsBound()) m_pacIPFilterURL->AddItem(url, 0); CString strTempFilePath; _tmakepathlimit(strTempFilePath.GetBuffer(MAX_PATH), NULL, thePrefs.GetMuleDirectory(EMULE_CONFIGDIR), DFLT_IPFILTER_FILENAME, _T("tmp")); strTempFilePath.ReleaseBuffer(); CHttpDownloadDlg dlgDownload; dlgDownload.m_strTitle = GetResString(IDS_DWL_IPFILTERFILE); dlgDownload.m_sURLToDownload = url; dlgDownload.m_sFileToDownloadInto = strTempFilePath; if (dlgDownload.DoModal() != IDOK) { (void)_tremove(strTempFilePath); CString strError = GetResString(IDS_DWLIPFILTERFAILED); if (!dlgDownload.GetError().IsEmpty()) strError += _T("\r\n\r\n") + dlgDownload.GetError(); AfxMessageBox(strError, MB_ICONERROR); return; } CString strMimeType; GetMimeType(strTempFilePath, strMimeType); bool bIsArchiveFile = false; bool bUncompressed = false; CZIPFile zip; if (zip.Open(strTempFilePath)) { bIsArchiveFile = true; CZIPFile::File* zfile = zip.GetFile(_T("guarding.p2p")); if (zfile == NULL) zfile = zip.GetFile(_T("ipfilter.dat")); if (zfile) { CString strTempUnzipFilePath; _tmakepathlimit(strTempUnzipFilePath.GetBuffer(_MAX_PATH), NULL, thePrefs.GetMuleDirectory(EMULE_CONFIGDIR), DFLT_IPFILTER_FILENAME, _T(".unzip.tmp")); strTempUnzipFilePath.ReleaseBuffer(); if (zfile->Extract(strTempUnzipFilePath)) { zip.Close(); zfile = NULL; if (_tremove(theApp.ipfilter->GetDefaultFilePath()) != 0) TRACE(_T("*** Error: Failed to remove default IP filter file \"%s\" - %s\n"), theApp.ipfilter->GetDefaultFilePath(), _tcserror(errno)); if (_trename(strTempUnzipFilePath, theApp.ipfilter->GetDefaultFilePath()) != 0) TRACE(_T("*** Error: Failed to rename uncompressed IP filter file \"%s\" to default IP filter file \"%s\" - %s\n"), strTempUnzipFilePath, theApp.ipfilter->GetDefaultFilePath(), _tcserror(errno)); if (_tremove(strTempFilePath) != 0) TRACE(_T("*** Error: Failed to remove temporary IP filter file \"%s\" - %s\n"), strTempFilePath, _tcserror(errno)); bUncompressed = true; bHaveNewFilterFile = true; } else { CString strError; strError.Format(GetResString(IDS_ERR_IPFILTERZIPEXTR), strTempFilePath); AfxMessageBox(strError, MB_ICONERROR); } } else { CString strError; strError.Format(GetResString(IDS_ERR_IPFILTERCONTENTERR), strTempFilePath); AfxMessageBox(strError, MB_ICONERROR); } zip.Close(); } else if (strMimeType.CompareNoCase(_T("application/x-rar-compressed")) == 0) { bIsArchiveFile = true; CRARFile rar; if (rar.Open(strTempFilePath)) { CString strFile; if (rar.GetNextFile(strFile) && (strFile.CompareNoCase(_T("ipfilter.dat")) == 0 || strFile.CompareNoCase(_T("guarding.p2p")) == 0)) { CString strTempUnzipFilePath; _tmakepathlimit(strTempUnzipFilePath.GetBuffer(MAX_PATH), NULL, thePrefs.GetMuleDirectory(EMULE_CONFIGDIR), DFLT_IPFILTER_FILENAME, _T(".unzip.tmp")); strTempUnzipFilePath.ReleaseBuffer(); if (rar.Extract(strTempUnzipFilePath)) { rar.Close(); if (_tremove(theApp.ipfilter->GetDefaultFilePath()) != 0) TRACE(_T("*** Error: Failed to remove default IP filter file \"%s\" - %s\n"), theApp.ipfilter->GetDefaultFilePath(), _tcserror(errno)); if (_trename(strTempUnzipFilePath, theApp.ipfilter->GetDefaultFilePath()) != 0) TRACE(_T("*** Error: Failed to rename uncompressed IP filter file \"%s\" to default IP filter file \"%s\" - %s\n"), strTempUnzipFilePath, theApp.ipfilter->GetDefaultFilePath(), _tcserror(errno)); if (_tremove(strTempFilePath) != 0) TRACE(_T("*** Error: Failed to remove temporary IP filter file \"%s\" - %s\n"), strTempFilePath, _tcserror(errno)); bUncompressed = true; bHaveNewFilterFile = true; } else { CString strError; strError.Format(_T("Failed to extract IP filter file from RAR file \"%s\"."), strTempFilePath); AfxMessageBox(strError, MB_ICONERROR); } } else { CString strError; strError.Format(_T("Failed to find IP filter file \"guarding.p2p\" or \"ipfilter.dat\" in RAR file \"%s\"."), strTempFilePath); AfxMessageBox(strError, MB_ICONERROR); } rar.Close(); } else { CString strError; strError.Format(_T("Failed to open file \"%s\".\r\n\r\nInvalid file format?\r\n\r\nDownload latest version of UNRAR.DLL from http://www.rarlab.com and copy UNRAR.DLL into eMule installation folder."), url); AfxMessageBox(strError, MB_ICONERROR); } } else { CGZIPFile gz; if (gz.Open(strTempFilePath)) { bIsArchiveFile = true; CString strTempUnzipFilePath; _tmakepathlimit(strTempUnzipFilePath.GetBuffer(_MAX_PATH), NULL, thePrefs.GetMuleDirectory(EMULE_CONFIGDIR), DFLT_IPFILTER_FILENAME, _T(".unzip.tmp")); strTempUnzipFilePath.ReleaseBuffer(); // add filename and extension of uncompressed file to temporary file CString strUncompressedFileName = gz.GetUncompressedFileName(); if (!strUncompressedFileName.IsEmpty()) { strTempUnzipFilePath += _T('.'); strTempUnzipFilePath += strUncompressedFileName; } if (gz.Extract(strTempUnzipFilePath)) { gz.Close(); if (_tremove(theApp.ipfilter->GetDefaultFilePath()) != 0) TRACE(_T("*** Error: Failed to remove default IP filter file \"%s\" - %s\n"), theApp.ipfilter->GetDefaultFilePath(), _tcserror(errno)); if (_trename(strTempUnzipFilePath, theApp.ipfilter->GetDefaultFilePath()) != 0) TRACE(_T("*** Error: Failed to rename uncompressed IP filter file \"%s\" to default IP filter file \"%s\" - %s\n"), strTempUnzipFilePath, theApp.ipfilter->GetDefaultFilePath(), _tcserror(errno)); if (_tremove(strTempFilePath) != 0) TRACE(_T("*** Error: Failed to remove temporary IP filter file \"%s\" - %s\n"), strTempFilePath, _tcserror(errno)); bUncompressed = true; bHaveNewFilterFile = true; } else { CString strError; strError.Format(GetResString(IDS_ERR_IPFILTERZIPEXTR), strTempFilePath); AfxMessageBox(strError, MB_ICONERROR); } } gz.Close(); } if (!bIsArchiveFile && !bUncompressed) { // Check first lines of downloaded file for potential HTML content (e.g. 404 error pages) bool bValidIPFilterFile = true; FILE* fp = _tfsopen(strTempFilePath, _T("rb"), _SH_DENYWR); if (fp) { char szBuff[16384]; int iRead = fread(szBuff, 1, _countof(szBuff)-1, fp); if (iRead <= 0) bValidIPFilterFile = false; else { szBuff[iRead-1] = '\0'; const char* pc = szBuff; while (*pc == ' ' || *pc == '\t' || *pc == '\r' || *pc == '\n') pc++; if (strnicmp(pc, "<html", 5) == 0 || strnicmp(pc, "<xml", 4) == 0 || strnicmp(pc, "<!doc", 5) == 0) { bValidIPFilterFile = false; } } fclose(fp); } if (bValidIPFilterFile) { (void)_tremove(theApp.ipfilter->GetDefaultFilePath()); VERIFY( _trename(strTempFilePath, theApp.ipfilter->GetDefaultFilePath()) == 0 ); bHaveNewFilterFile = true; } else { AfxMessageBox(GetResString(IDS_DWLIPFILTERFAILED), MB_ICONERROR); } } } if (url.IsEmpty() || bHaveNewFilterFile) OnReloadIPFilter(); // In case we received an invalid IP-filter file (e.g. an 404 HTML page with HTTP status "OK"), // warn the user that there are no IP-filters available any longer. if (bHaveNewFilterFile && theApp.ipfilter->GetIPFilter().GetCount() == 0) { CString strLoaded; strLoaded.Format(GetResString(IDS_IPFILTERLOADED), theApp.ipfilter->GetIPFilter().GetCount()); CString strError; strError.Format(_T("%s\r\n\r\n%s"), GetResString(IDS_DWLIPFILTERFAILED), strLoaded); AfxMessageBox(strError, MB_ICONERROR); } }
HANDLE GGPROTO::dccfileallow(HANDLE hTransfer, const PROTOCHAR* szPath) { struct gg_dcc *dcc = (struct gg_dcc *) hTransfer; char fileName[MAX_PATH], *path = mir_t2a(szPath); strncpy(fileName, path, sizeof(fileName)); strncat(fileName, (char*)dcc->file_info.filename, sizeof(fileName) - strlen(fileName)); dcc->folder = _strdup((char *) path); dcc->tick = 0; mir_free(path); // Remove transfer from waiting list gg_EnterCriticalSection(&ft_mutex, "dccfileallow", 38, "ft_mutex", 1); list_remove(&transfers, dcc, 0); gg_LeaveCriticalSection(&ft_mutex, "dccfileallow", 38, 1, "ft_mutex", 1); // Open file for appending and check if ok if ((dcc->file_fd = _open(fileName, _O_WRONLY | _O_APPEND | _O_BINARY | _O_CREAT, _S_IREAD | _S_IWRITE)) == -1) { debugLogA("dccfileallow(): Failed to create file \"%s\". errno=%d: %s", fileName, errno, strerror(errno)); TCHAR error[512]; mir_sntprintf(error, SIZEOF(error), TranslateT("Cannot create transfer file. ERROR: %d: %s (dcc)\n%s"), errno, _tcserror(errno), szPath); showpopup(m_tszUserName, error, GG_POPUP_ERROR); ProtoBroadcastAck(dcc->contact, ACKTYPE_FILE, ACKRESULT_FAILED, dcc, 0); // Free transfer gg_free_dcc(dcc); return 0; } // Put an offset to the file dcc->offset = _lseek(dcc->file_fd, 0, SEEK_END); // Add to watches and start transfer gg_EnterCriticalSection(&ft_mutex, "dccfileallow", 39, "ft_mutex", 1); list_add(&watches, dcc, 0); gg_LeaveCriticalSection(&ft_mutex, "dccfileallow", 39, 1, "ft_mutex", 1); debugLogA("dccfileallow(): Receiving file \"%s\" from %d.", dcc->file_info.filename, dcc->peer_uin); return hTransfer; }