📄 preferences.cpp
字号:
if (sdirfile->Open(fullpath,CFile::modeRead|CFile::shareDenyWrite)){
CString toadd;
while (sdirfile->ReadString(toadd))
adresses_list.AddHead(toadd);
sdirfile->Close();
}
delete sdirfile;
delete[] fullpath;
fullpath=NULL;
userhash[5] = 14;
userhash[14] = 111;
// deadlake PROXYSUPPORT
m_UseProxyListenPort = false;
ListenPort = 0;
// Explicitly inform the user about errors with incoming/temp folders!
if (!PathFileExists(GetIncomingDir()) && !::CreateDirectory(GetIncomingDir(),0)) {
CString strError;
strError.Format(GetResString(IDS_ERR_CREATE_DIR), GetResString(IDS_PW_INCOMING), GetIncomingDir(), GetErrorMessage(GetLastError()));
AfxMessageBox(strError, MB_ICONERROR);
_stprintf(incomingdir,_T("%sincoming"),appdir);
if (!PathFileExists(GetIncomingDir()) && !::CreateDirectory(GetIncomingDir(),0)){
strError.Format(GetResString(IDS_ERR_CREATE_DIR), GetResString(IDS_PW_INCOMING), GetIncomingDir(), GetErrorMessage(GetLastError()));
AfxMessageBox(strError, MB_ICONERROR);
}
}
if (!PathFileExists(GetTempDir()) && !::CreateDirectory(GetTempDir(),0)) {
CString strError;
strError.Format(GetResString(IDS_ERR_CREATE_DIR), GetResString(IDS_PW_TEMP), GetTempDir(), GetErrorMessage(GetLastError()));
AfxMessageBox(strError, MB_ICONERROR);
_stprintf(tempdir,_T("%stemp"),appdir);
if (!PathFileExists(GetTempDir()) && !::CreateDirectory(GetTempDir(),0)){
strError.Format(GetResString(IDS_ERR_CREATE_DIR), GetResString(IDS_PW_TEMP), GetTempDir(), GetErrorMessage(GetLastError()));
AfxMessageBox(strError, MB_ICONERROR);
}
}
if (((int*)userhash[0]) == 0 && ((int*)userhash[1]) == 0 && ((int*)userhash[2]) == 0 && ((int*)userhash[3]) == 0)
CreateUserHash();
}
void CPreferences::Uninit()
{
while (!catMap.IsEmpty())
{
Category_Struct* delcat = catMap.GetAt(0);
catMap.RemoveAt(0);
delete delcat;
}
}
void CPreferences::SetStandartValues()
{
CreateUserHash();
WINDOWPLACEMENT defaultWPM;
defaultWPM.length = sizeof(WINDOWPLACEMENT);
defaultWPM.rcNormalPosition.left=10;defaultWPM.rcNormalPosition.top=10;
defaultWPM.rcNormalPosition.right=700;defaultWPM.rcNormalPosition.bottom=500;
defaultWPM.showCmd=0;
EmuleWindowPlacement=defaultWPM;
versioncheckLastAutomatic=0;
// Save();
}
bool CPreferences::IsTempFile(const CString& rstrDirectory, const CString& rstrName)
{
if (CompareDirectories(rstrDirectory, GetTempDir()))
return false;
// do not share a file from the temp directory, if it matches one of the following patterns
CString strNameLower(rstrName);
strNameLower.MakeLower();
strNameLower += _T("|"); // append an EOS character which we can query for
static const LPCTSTR _apszNotSharedExts[] = {
_T("%u.part") _T("%c"),
_T("%u.part.met") _T("%c"),
_T("%u.part.met") PARTMET_BAK_EXT _T("%c"),
_T("%u.part.met") PARTMET_TMP_EXT _T("%c")
};
for (int i = 0; i < ARRSIZE(_apszNotSharedExts); i++){
UINT uNum;
TCHAR iChar;
// "misuse" the 'scanf' function for a very simple pattern scanning.
if (_stscanf(strNameLower, _apszNotSharedExts[i], &uNum, &iChar) == 2 && iChar == _T('|'))
return true;
}
return false;
}
// SLUGFILLER: SafeHash
bool CPreferences::IsConfigFile(const CString& rstrDirectory, const CString& rstrName)
{
if (CompareDirectories(rstrDirectory, configdir))
return false;
// do not share a file from the config directory, if it contains one of the following extensions
static const LPCTSTR _apszNotSharedExts[] = { _T(".met.bak"), _T(".ini.old") };
for (int i = 0; i < ARRSIZE(_apszNotSharedExts); i++){
int iLen = _tcslen(_apszNotSharedExts[i]);
if (rstrName.GetLength()>=iLen && rstrName.Right(iLen).CompareNoCase(_apszNotSharedExts[i])==0)
return true;
}
// do not share following files from the config directory
static const LPCTSTR _apszNotSharedFiles[] =
{
_T("AC_SearchStrings.dat"),
_T("AC_ServerMetURLs.dat"),
_T("adresses.dat"),
_T("category.ini"),
_T("clients.met"),
_T("cryptkey.dat"),
_T("emfriends.met"),
_T("fileinfo.ini"),
_T("ipfilter.dat"),
_T("known.met"),
_T("preferences.dat"),
_T("preferences.ini"),
_T("server.met"),
_T("server.met.new"),
_T("server_met.download"),
_T("server_met.old"),
_T("shareddir.dat"),
_T("sharedsubdir.dat"),
_T("staticservers.dat"),
_T("webservices.dat")
};
for (int i = 0; i < ARRSIZE(_apszNotSharedFiles); i++){
if (rstrName.CompareNoCase(_apszNotSharedFiles[i])==0)
return true;
}
return false;
}
// SLUGFILLER: SafeHash
uint16 CPreferences::GetMaxDownload(){
//dont be a Lam3r :)
uint16 maxup=GetMaxUpload();
if( maxup < 4 )
return (( (maxup < 10) && (maxup*3 < maxdownload) )? maxup*3 : maxdownload);
return (( (maxup < 10) && (maxup*4 < maxdownload) )? maxup*4 : maxdownload);
}
// -khaos--+++> A whole bunch of methods! Keep going until you reach the end tag.
void CPreferences::SaveStats(int bBackUp){
// This function saves all of the new statistics in my addon. It is also used to
// save backups for the Reset Stats function, and the Restore Stats function (Which is actually LoadStats)
// bBackUp = 0: DEFAULT; save to statistics.ini
// bBackUp = 1: Save to statbkup.ini, which is used to restore after a reset
// bBackUp = 2: Save to statbkuptmp.ini, which is temporarily created during a restore and then renamed to statbkup.ini
CString fullpath(configdir);
if (bBackUp == 1)
fullpath += _T("statbkup.ini");
else if (bBackUp == 2)
fullpath += _T("statbkuptmp.ini");
else
fullpath += _T("statistics.ini");
CIni ini(fullpath, _T("Statistics"));
// Save cumulative statistics to preferences.ini, going in order as they appear in CStatisticsDlg::ShowStatistics.
// We do NOT SET the values in prefs struct here.
// Save Cum Down Data
ini.WriteUInt64(_T("TotalDownloadedBytes"), theApp.stat_sessionReceivedBytes + GetTotalDownloaded());
ini.WriteInt(_T("DownSuccessfulSessions"), cumDownSuccessfulSessions);
ini.WriteInt(_T("DownFailedSessions"), cumDownFailedSessions);
ini.WriteInt(_T("DownAvgTime"), (GetDownC_AvgTime() + GetDownS_AvgTime()) / 2);
ini.WriteUInt64(_T("LostFromCorruption"), cumLostFromCorruption + sesLostFromCorruption);
ini.WriteUInt64(_T("SavedFromCompression"), sesSavedFromCompression + cumSavedFromCompression);
ini.WriteInt(_T("PartsSavedByICH"), cumPartsSavedByICH + sesPartsSavedByICH);
ini.WriteUInt64(_T("DownData_EDONKEY"), GetCumDownData_EDONKEY());
ini.WriteUInt64(_T("DownData_EDONKEYHYBRID"), GetCumDownData_EDONKEYHYBRID());
ini.WriteUInt64(_T("DownData_EMULE"), GetCumDownData_EMULE());
ini.WriteUInt64(_T("DownData_MLDONKEY"), GetCumDownData_MLDONKEY());
ini.WriteUInt64(_T("DownData_LMULE"), GetCumDownData_EMULECOMPAT());
ini.WriteUInt64(_T("DownData_AMULE"), GetCumDownData_AMULE());
ini.WriteUInt64(_T("DownData_SHAREAZA"), GetCumDownData_SHAREAZA());
ini.WriteUInt64(_T("DownData_URL"), GetCumDownData_URL());
ini.WriteUInt64(_T("DownDataPort_4662"), GetCumDownDataPort_4662());
ini.WriteUInt64(_T("DownDataPort_OTHER"), GetCumDownDataPort_OTHER());
ini.WriteUInt64(_T("DownOverheadTotal"),theStats.GetDownDataOverheadFileRequest() +
theStats.GetDownDataOverheadSourceExchange() +
theStats.GetDownDataOverheadServer() +
theStats.GetDownDataOverheadKad() +
theStats.GetDownDataOverheadOther() +
GetDownOverheadTotal());
ini.WriteUInt64(_T("DownOverheadFileReq"), theStats.GetDownDataOverheadFileRequest() + GetDownOverheadFileReq());
ini.WriteUInt64(_T("DownOverheadSrcEx"), theStats.GetDownDataOverheadSourceExchange() + GetDownOverheadSrcEx());
ini.WriteUInt64(_T("DownOverheadServer"), theStats.GetDownDataOverheadServer() + GetDownOverheadServer());
ini.WriteUInt64(_T("DownOverheadKad"), theStats.GetDownDataOverheadKad() + GetDownOverheadKad());
ini.WriteUInt64(_T("DownOverheadTotalPackets"), theStats.GetDownDataOverheadFileRequestPackets() +
theStats.GetDownDataOverheadSourceExchangePackets() +
theStats.GetDownDataOverheadServerPackets() +
theStats.GetDownDataOverheadKadPackets() +
theStats.GetDownDataOverheadOtherPackets() +
GetDownOverheadTotalPackets());
ini.WriteUInt64(_T("DownOverheadFileReqPackets"), theStats.GetDownDataOverheadFileRequestPackets() + GetDownOverheadFileReqPackets());
ini.WriteUInt64(_T("DownOverheadSrcExPackets"), theStats.GetDownDataOverheadSourceExchangePackets() + GetDownOverheadSrcExPackets());
ini.WriteUInt64(_T("DownOverheadServerPackets"), theStats.GetDownDataOverheadServerPackets() + GetDownOverheadServerPackets());
ini.WriteUInt64(_T("DownOverheadKadPackets"), theStats.GetDownDataOverheadKadPackets() + GetDownOverheadKadPackets());
// Save Cumulative Upline Statistics
ini.WriteUInt64(_T("TotalUploadedBytes"), theApp.stat_sessionSentBytes + GetTotalUploaded());
ini.WriteInt(_T("UpSuccessfulSessions"), theApp.uploadqueue->GetSuccessfullUpCount() + GetUpSuccessfulSessions());
ini.WriteInt(_T("UpFailedSessions"), theApp.uploadqueue->GetFailedUpCount() + GetUpFailedSessions());
ini.WriteInt(_T("UpAvgTime"), (theApp.uploadqueue->GetAverageUpTime() + GetUpAvgTime())/2);
ini.WriteUInt64(_T("UpData_EDONKEY"), GetCumUpData_EDONKEY());
ini.WriteUInt64(_T("UpData_EDONKEYHYBRID"), GetCumUpData_EDONKEYHYBRID());
ini.WriteUInt64(_T("UpData_EMULE"), GetCumUpData_EMULE());
ini.WriteUInt64(_T("UpData_MLDONKEY"), GetCumUpData_MLDONKEY());
ini.WriteUInt64(_T("UpData_LMULE"), GetCumUpData_EMULECOMPAT());
ini.WriteUInt64(_T("UpData_AMULE"), GetCumUpData_AMULE());
ini.WriteUInt64(_T("UpData_SHAREAZA"), GetCumUpData_SHAREAZA());
ini.WriteUInt64(_T("UpDataPort_4662"), GetCumUpDataPort_4662());
ini.WriteUInt64(_T("UpDataPort_OTHER"), GetCumUpDataPort_OTHER());
ini.WriteUInt64(_T("UpData_File"), GetCumUpData_File());
ini.WriteUInt64(_T("UpData_Partfile"), GetCumUpData_Partfile());
ini.WriteUInt64(_T("UpOverheadTotal"), theStats.GetUpDataOverheadFileRequest() +
theStats.GetUpDataOverheadSourceExchange() +
theStats.GetUpDataOverheadServer() +
theStats.GetUpDataOverheadKad() +
theStats.GetUpDataOverheadOther() +
GetUpOverheadTotal());
ini.WriteUInt64(_T("UpOverheadFileReq"), theStats.GetUpDataOverheadFileRequest() + GetUpOverheadFileReq());
ini.WriteUInt64(_T("UpOverheadSrcEx"), theStats.GetUpDataOverheadSourceExchange() + GetUpOverheadSrcEx());
ini.WriteUInt64(_T("UpOverheadServer"), theStats.GetUpDataOverheadServer() + GetUpOverheadServer());
ini.WriteUInt64(_T("UpOverheadKad"), theStats.GetUpDataOverheadKad() + GetUpOverheadKad());
ini.WriteUInt64(_T("UpOverheadTotalPackets"), theStats.GetUpDataOverheadFileRequestPackets() +
theStats.GetUpDataOverheadSourceExchangePackets() +
theStats.GetUpDataOverheadServerPackets() +
theStats.GetUpDataOverheadKadPackets() +
theStats.GetUpDataOverheadOtherPackets() +
GetUpOverheadTotalPackets());
ini.WriteUInt64(_T("UpOverheadFileReqPackets"), theStats.GetUpDataOverheadFileRequestPackets() + GetUpOverheadFileReqPackets());
ini.WriteUInt64(_T("UpOverheadSrcExPackets"), theStats.GetUpDataOverheadSourceExchangePackets() + GetUpOverheadSrcExPackets());
ini.WriteUInt64(_T("UpOverheadServerPackets"), theStats.GetUpDataOverheadServerPackets() + GetUpOverheadServerPackets());
ini.WriteUInt64(_T("UpOverheadKadPackets"), theStats.GetUpDataOverheadKadPackets() + GetUpOverheadKadPackets());
// Save Cumulative Connection Statistics
float tempRate = 0.0F;
// Download Rate Average
tempRate = theStats.GetAvgDownloadRate(AVG_TOTAL);
ini.WriteFloat(_T("ConnAvgDownRate"), tempRate);
// Max Download Rate Average
if (tempRate > GetConnMaxAvgDownRate())
SetConnMaxAvgDownRate(tempRate);
ini.WriteFloat(_T("ConnMaxAvgDownRate"), GetConnMaxAvgDownRate());
// Max Download Rate
tempRate = (float)theApp.downloadqueue->GetDatarate() / 1024;
if (tempRate > GetConnMaxDownRate())
SetConnMaxDownRate(tempRate);
ini.WriteFloat(_T("ConnMaxDownRate"), GetConnMaxDownRate());
// Upload Rate Average
tempRate = theStats.GetAvgUploadRate(AVG_TOTAL);
ini.WriteFloat(_T("ConnAvgUpRate"), tempRate);
// Max Upload Rate Average
if (tempRate > GetConnMaxAvgUpRate())
SetConnMaxAvgUpRate(tempRate);
ini.WriteFloat(_T("ConnMaxAvgUpRate"), GetConnMaxAvgUpRate());
// Max Upload Rate
tempRate = (float)theApp.uploadqueue->GetDatarate() / 1024;
if (tempRate > GetConnMaxUpRate())
SetConnMaxUpRate(tempRate);
ini.WriteFloat(_T("ConnMaxUpRate"), GetConnMaxUpRate());
// Overall Run Time
ini.WriteInt(_T("ConnRunTime"), (GetTickCount() - theApp.stat_starttime)/1000 + GetConnRunTime());
// Number of Reconnects
ini.WriteInt(_T("ConnNumReconnects"), (theApp.stat_reconnects>0) ? (theApp.stat_reconnects - 1 + GetConnNumReconnects()) : GetConnNumReconnects());
// Average Connections
if (theApp.serverconnect->IsConnected())
ini.WriteInt(_T("ConnAvgConnections"), (theApp.listensocket->GetAverageConnections() + cumConnAvgConnections)/2);
// Peak Connections
if (theApp.listensocket->GetPeakConnections() > cumConnPeakConnections)
cumConnPeakConnections = theApp.listensocket->GetPeakConnections();
ini.WriteInt(_T("ConnPeakConnections"), cumConnPeakConnections);
// Max Connection Limit Reached
if (theApp.listensocket->GetMaxConnectionReached() + cumConnMaxConnLimitReached > cumConnMaxConnLimitReached)
ini.WriteInt(_T("ConnMaxConnLimitReached"), theApp.listensocket->GetMaxConnectionReached() + cumConnMaxConnLimitReached);
// Time Stuff...
ini.WriteInt(_T("ConnTransferTime"), GetConnTransferTime() + theStats.GetTransferTime());
ini.WriteInt(_T("ConnUploadTime"), GetConnUploadTime() + theStats.GetUploadTime());
ini.WriteInt(_T("ConnDownloadTime"), GetConnDownloadTime() + theStats.GetDownloadTime());
ini.WriteInt(_T("ConnServerDuration"), GetConnServerDuration() + theStats.GetServerDuration());
// Compare and Save Server Records
uint32 servtotal, servfail, servuser, servfile, servlowiduser, servtuser, servtfile;
float servocc;
theApp.serverlist->GetStatus(servtotal, servfail, servuser, servfile, servlowiduser, servtuser, servtfile, servocc);
if (servtotal - servfail > cumSrvrsMostWorkingServers)
cumSrvrsMostWorkingServers = servtotal - servfail;
ini.WriteInt(_T("SrvrsMostWorkingServers"), cumSrvrsMostWorkingServers);
if (servtuser > cumSrvrsMostUsersOnline)
cumSrvrsMostUsersOnline = servtuser;
ini.WriteInt(_T("SrvrsMostUsersOnline"), cumSrvrsMostUsersOnline);
if (servtfile > cumSrvrsMostFilesAvail)
cumSrvrsMostFilesAvail = servtfile;
ini.WriteInt(_T("SrvrsMostFilesAvail"), cumSrvrsMostFilesAvail);
// Compare and Save Shared File Records
if (theApp.sharedfiles->GetCount() > cumSharedMostFilesShared)
cumSharedMostFilesShared = theApp.sharedfiles->GetCount();
ini.WriteInt(_T("SharedMostFilesShared"), cumSharedMostFilesShared);
uint64 bytesLargestFile = 0;
uint64 allsize = theApp.sharedfiles->GetDatasize(bytesLargestFile);
if (allsize > cumSharedLargestShareSize)
cumSharedLargestShareSize = allsize;
ini.WriteUInt64(_T("SharedLargestShareSize"), cumSharedLargestShareSize);
if (bytesLargestFile > cumSharedLargestFileSize)
cumSharedLargestFileSize = bytesLargestFile;
ini.WriteUInt64(_T("SharedLargestFileSize"), cumSharedLargestFileSize);
if (theApp.sharedfiles->GetCount() != 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -