📄 webserver.cpp
字号:
CWebServer *pThis = (CWebServer *)Data.pThis;
if(pThis == NULL)
return "";
CString sSession = _ParseURL(Data.sURL, "ses");
if (!IsSessionAdmin(Data,sSession)) return "";
CString Out = pThis->m_Templates.sDownloadLink;
Out.Replace("[Download]", _GetPlainResString(IDS_SW_DOWNLOAD));
Out.Replace("[Ed2klink]", _GetPlainResString(IDS_SW_LINK));
Out.Replace("[Start]", _GetPlainResString(IDS_SW_START));
Out.Replace("[Session]", sSession);
return Out;
}
CString CWebServer::_GetSharedFilesList(ThreadData Data)
{
CWebServer *pThis = (CWebServer *)Data.pThis;
CString sSession = _ParseURL(Data.sURL, "ses");
if(pThis == NULL)
return "";
if (_ParseURL(Data.sURL, "sort") != "")
{
if(_ParseURL(Data.sURL, "sort") == "name")
pThis->m_Params.SharedSort = SHARED_SORT_NAME;
else
if(_ParseURL(Data.sURL, "sort") == "size")
pThis->m_Params.SharedSort = SHARED_SORT_SIZE;
else
if(_ParseURL(Data.sURL, "sort") == "transferred")
pThis->m_Params.SharedSort = SHARED_SORT_TRANSFERRED;
else
if(_ParseURL(Data.sURL, "sort") == "alltimetransferred")
pThis->m_Params.SharedSort = SHARED_SORT_ALL_TIME_TRANSFERRED;
else
if(_ParseURL(Data.sURL, "sort") == "requests")
pThis->m_Params.SharedSort = SHARED_SORT_REQUESTS;
else
if(_ParseURL(Data.sURL, "sort") == "alltimerequests")
pThis->m_Params.SharedSort = SHARED_SORT_ALL_TIME_REQUESTS;
else
if(_ParseURL(Data.sURL, "sort") == "accepts")
pThis->m_Params.SharedSort = SHARED_SORT_ACCEPTS;
else
if(_ParseURL(Data.sURL, "sort") == "alltimeaccepts")
pThis->m_Params.SharedSort = SHARED_SORT_ALL_TIME_ACCEPTS;
else
if(_ParseURL(Data.sURL, "sort") == "priority")
pThis->m_Params.SharedSort = SHARED_SORT_PRIORITY;
if(_ParseURL(Data.sURL, "sortreverse") == "")
pThis->m_Params.bSharedSortReverse = false;
}
if (_ParseURL(Data.sURL, "sortreverse") != "")
pThis->m_Params.bSharedSortReverse = (_ParseURL(Data.sURL, "sortreverse") == "true");
if(_ParseURL(Data.sURL, "hash") != "" && _ParseURL(Data.sURL, "setpriority") != "" && IsSessionAdmin(Data,sSession))
_SetSharedFilePriority(_ParseURL(Data.sURL, "hash"),atoi(_ParseURL(Data.sURL, "setpriority")));
if(_ParseURL(Data.sURL, "reload") == "true")
{
theApp.emuledlg->SendMessage(WEB_SHARED_FILES_RELOAD);
}
CString sSharedSortRev;
if(pThis->m_Params.bSharedSortReverse)
sSharedSortRev = "false";
else
sSharedSortRev = "true";
//Name sorting link
CString Out = pThis->m_Templates.sSharedList;
if(pThis->m_Params.SharedSort == SHARED_SORT_NAME)
Out.Replace("[SortName]", "sort=name&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortName]", "sort=name");
//Size sorting Link
if(pThis->m_Params.SharedSort == SHARED_SORT_SIZE)
Out.Replace("[SortSize]", "sort=size&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortSize]", "sort=size");
//Priority sorting Link
if(pThis->m_Params.SharedSort == SHARED_SORT_PRIORITY)
Out.Replace("[SortPriority]", "sort=priority&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortPriority]", "sort=priority");
//Transferred sorting link
if(pThis->m_Params.SharedSort == SHARED_SORT_TRANSFERRED)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace("[SortTransferred]", "sort=alltimetransferred&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortTransferred]", "sort=transferred&sortreverse=" + sSharedSortRev);
}
else
if(pThis->m_Params.SharedSort == SHARED_SORT_ALL_TIME_TRANSFERRED)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace("[SortTransferred]", "sort=transferred&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortTransferred]", "sort=alltimetransferred&sortreverse=" + sSharedSortRev);
}
else
Out.Replace("[SortTransferred]", "&sort=transferred&sortreverse=false");
//Request sorting link
if(pThis->m_Params.SharedSort == SHARED_SORT_REQUESTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace("[SortRequests]", "sort=alltimerequests&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortRequests]", "sort=requests&sortreverse=" + sSharedSortRev);
}
else
if(pThis->m_Params.SharedSort == SHARED_SORT_ALL_TIME_REQUESTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace("[SortRequests]", "sort=requests&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortRequests]", "sort=alltimerequests&sortreverse=" + sSharedSortRev);
}
else
Out.Replace("[SortRequests]", "&sort=requests&sortreverse=false");
//Accepts sorting link
if(pThis->m_Params.SharedSort == SHARED_SORT_ACCEPTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace("[SortAccepts]", "sort=alltimeaccepts&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortAccepts]", "sort=accepts&sortreverse=" + sSharedSortRev);
}
else
if(pThis->m_Params.SharedSort == SHARED_SORT_ALL_TIME_ACCEPTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace("[SortAccepts]", "sort=accepts&sortreverse=" + sSharedSortRev);
else
Out.Replace("[SortAccepts]", "sort=alltimeaccepts&sortreverse=" + sSharedSortRev);
}
else
Out.Replace("[SortAccepts]", "&sort=accepts&sortreverse=false");
if(_ParseURL(Data.sURL, "reload") == "true")
{
CString resultlog = _SpecialChars(theApp.emuledlg->logtext); //Pick-up last line of the log
resultlog = resultlog.TrimRight('\n');
resultlog = resultlog.Mid(resultlog.ReverseFind('\n'));
Out.Replace("[Message]",resultlog);
}
else
Out.Replace("[Message]","");
Out.Replace("[Filename]", _GetPlainResString(IDS_DL_FILENAME));
Out.Replace("[Priority]", _GetPlainResString(IDS_PRIORITY));
Out.Replace("[FileTransferred]", _GetPlainResString(IDS_SF_TRANSFERRED));
Out.Replace("[FileRequests]", _GetPlainResString(IDS_SF_REQUESTS));
Out.Replace("[FileAccepts]", _GetPlainResString(IDS_SF_ACCEPTS));
Out.Replace("[Size]", _GetPlainResString(IDS_DL_SIZE));
Out.Replace("[Ed2klink]", _GetPlainResString(IDS_SW_LINK));
Out.Replace("[Reload]", _GetPlainResString(IDS_SF_RELOAD));
Out.Replace("[Session]", sSession);
CString OutE = pThis->m_Templates.sSharedLine;
OutE.Replace("[Ed2klink]", _GetPlainResString(IDS_SW_LINK));
OutE.Replace("[PriorityUp]", _GetPlainResString(IDS_PRIORITY_UP));
OutE.Replace("[PriorityDown]", _GetPlainResString(IDS_PRIORITY_DOWN));
CString OutE2 = pThis->m_Templates.sSharedLineChanged;
OutE.Replace("[Ed2klink]", _GetPlainResString(IDS_SW_LINK));
OutE.Replace("[PriorityUp]", _GetPlainResString(IDS_PRIORITY_UP));
OutE.Replace("[PriorityUp]", _GetPlainResString(IDS_PRIORITY_DOWN));
CArray<SharedFiles, SharedFiles> SharedArray;
// Populating array
for (int ix=0;ix<theApp.sharedfiles->GetCount();ix++)
{
CCKey bufKey;
CKnownFile* cur_file;
cur_file=theApp.sharedfiles->GetFileByIndex(ix);// m_Files_map.GetNextAssoc(pos,bufKey,cur_file);
SharedFiles dFile;
dFile.sFileName = _SpecialChars(cur_file->GetFileName());
dFile.lFileSize = cur_file->GetFileSize();
if (theApp.serverconnect->IsConnected())
dFile.sED2kLink = theApp.CreateED2kSourceLink(cur_file);
else
dFile.sED2kLink = theApp.CreateED2kLink(cur_file);
dFile.nFileTransferred = cur_file->statistic.GetTransferred();
dFile.nFileAllTimeTransferred = cur_file->statistic.GetAllTimeTransferred();
dFile.nFileRequests = cur_file->statistic.GetRequests();
dFile.nFileAllTimeRequests = cur_file->statistic.GetAllTimeRequests();
dFile.nFileAccepts = cur_file->statistic.GetAccepts();
dFile.nFileAllTimeAccepts = cur_file->statistic.GetAllTimeAccepts();
dFile.sFileHash = EncodeBase16(cur_file->GetFileHash(), 16);
if (cur_file->IsAutoUpPriority())
{
if (cur_file->GetUpPriority() == PR_NORMAL)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOAUTONORMAL);
else if (cur_file->GetUpPriority() == PR_HIGH)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOAUTOHIGH);
else if (cur_file->GetUpPriority() == PR_VERYHIGH)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOAUTORELEASE);
}
else
{
if (cur_file->GetUpPriority() == PR_VERYLOW)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOVERYLOW);
else if (cur_file->GetUpPriority() == PR_LOW)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOLOW);
else if (cur_file->GetUpPriority() == PR_NORMAL)
dFile.sFilePriority = _GetPlainResString(IDS_PRIONORMAL);
else if (cur_file->GetUpPriority() == PR_HIGH)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOHIGH);
else if (cur_file->GetUpPriority() == PR_VERYHIGH)
dFile.sFilePriority = _GetPlainResString(IDS_PRIORELEASE);
}
dFile.nFilePriority = cur_file->GetUpPriority();
dFile.bFileAutoPriority = cur_file->IsAutoUpPriority();
SharedArray.Add(dFile);
}
// Sorting (simple bubble sort, we don't have tons of data here)
bool bSorted = true;
for(int nMax = 0;bSorted && nMax < SharedArray.GetCount()*2; nMax++)
{
bSorted = false;
for(int i = 0; i < SharedArray.GetCount() - 1; i++)
{
bool bSwap = false;
switch(pThis->m_Params.SharedSort)
{
case SHARED_SORT_NAME:
bSwap = SharedArray[i].sFileName.CompareNoCase(SharedArray[i+1].sFileName) > 0;
break;
case SHARED_SORT_SIZE:
bSwap = SharedArray[i].lFileSize < SharedArray[i+1].lFileSize;
break;
case SHARED_SORT_TRANSFERRED:
bSwap = SharedArray[i].nFileTransferred < SharedArray[i+1].nFileTransferred;
break;
case SHARED_SORT_ALL_TIME_TRANSFERRED:
bSwap = SharedArray[i].nFileAllTimeTransferred < SharedArray[i+1].nFileAllTimeTransferred;
break;
case SHARED_SORT_REQUESTS:
bSwap = SharedArray[i].nFileRequests < SharedArray[i+1].nFileRequests;
break;
case SHARED_SORT_ALL_TIME_REQUESTS:
bSwap = SharedArray[i].nFileAllTimeRequests < SharedArray[i+1].nFileAllTimeRequests;
break;
case SHARED_SORT_ACCEPTS:
bSwap = SharedArray[i].nFileAccepts < SharedArray[i+1].nFileAccepts;
break;
case SHARED_SORT_ALL_TIME_ACCEPTS:
bSwap = SharedArray[i].nFileAllTimeAccepts < SharedArray[i+1].nFileAllTimeAccepts;
break;
case SHARED_SORT_PRIORITY:
//Very low priority is define equal to 4 ! Must adapte sorting code
if(SharedArray[i].nFilePriority == 4)
{
if(SharedArray[i+1].nFilePriority == 4)
bSwap = false;
else
bSwap = true;
}
else
if(SharedArray[i+1].nFilePriority == 4)
{
if(SharedArray[i].nFilePriority == 4)
bSwap = true;
else
bSwap = false;
}
else
bSwap = SharedArray[i].nFilePriority < SharedArray[i+1].nFilePriority;
break;
}
if(pThis->m_Params.bSharedSortReverse)
{
bSwap = !bSwap;
}
if(bSwap)
{
bSorted = true;
SharedFiles TmpFile = SharedArray[i];
SharedArray[i] = SharedArray[i+1];
SharedArray[i+1] = TmpFile;
}
}
}
// Displaying
CString sSharedList = "";
for(int i = 0; i < SharedArray.GetCount(); i++)
{
char HTTPTempC[100] = "";
CString HTTPProcessData;
if (SharedArray[i].sFileHash == _ParseURL(Data.sURL,"hash") )
HTTPProcessData = OutE2;
else
HTTPProcessData = OutE;
HTTPProcessData.Replace("[FileName]", _SpecialChars(SharedArray[i].sFileName));
if(SharedArray[i].sFileName.GetLength() > SHORT_FILENAME_LENGTH)
HTTPProcessData.Replace("[ShortFileName]", _SpecialChars(SharedArray[i].sFileName.Left(SHORT_FILENAME_LENGTH)) + "...");
else
HTTPProcessData.Replace("[ShortFileName]", _SpecialChars(SharedArray[i].sFileName));
sprintf(HTTPTempC, "%s",CastItoXBytes(SharedArray[i].lFileSize));
HTTPProcessData.Replace("[FileSize]", CString(HTTPTempC));
HTTPProcessData.Replace("[FileLink]", SharedArray[i].sED2kLink);
sprintf(HTTPTempC, "%s",CastItoXBytes(SharedArray[i].nFileTransferred));
HTTPProcessData.Replace("[FileTransferred]", CString(HTTPTempC));
sprintf(HTTPTempC, "%s",CastItoXBytes(SharedArray[i].nFileAllTimeTransferred));
HTTPProcessData.Replace("[FileAllTimeTransferred]", CString(HTTPTempC));
sprintf(HTTPTempC, "%i", SharedArray[i].nFileRequests);
HTTPProcessData.Replace("[FileRequests]", CString(HTTPTempC));
sprintf(HTTPTempC, "%i", SharedArray[i].nFileAllTimeRequests);
HTTPProcessData.Replace("[FileAllTimeRequests]", CString(HTTPTempC));
sprintf(HTTPTempC, "%i", SharedArray[i].nFileAccepts);
HTTPProcessData.Replace("[FileAccepts]", CString(HTTPTempC));
sprintf(HTTPTempC, "%i", SharedArray[i].nFileAllTimeAccepts);
HTTPProcessData.Replace("[FileAllTimeAccepts]", CString(HTTPTempC));
HTTPProcessData.Replace("[Priority]", SharedArray[i].sFilePriority);
HTTPProcessData.Replace("[FileHash]", SharedArray[i].sFileHash);
uint8 upperpriority, lesserpriority;
if(SharedArray[i].nFilePriority == 4)
{
upperpriority = 0; lesserpriority = 4;
}
else
if(SharedArray[i].nFilePriority == 0)
{
upperpriority = 1; lesserpriority = 4;
}
else
if(SharedArray[i].nFilePriority == 1)
{
upperpriority = 2; lesserpriority = 0;
}
else
if(SharedArray[i].nFilePriority == 2)
{
upperpriority = 3; lesserpriority = 1;
}
else
if(SharedArray[i].nFilePriority == 3)
{
upperpriority = 5; lesserpriority = 2;
}
else
if(SharedArray[i].nFilePriority == 5)
{
upperpriority = 5; lesserpriority = 3;
}
if(SharedArray[i].bFileAutoPriority)
{
upperpriority = 5; lesserpriority = 3;
}
sprintf(HTTPTempC, "%i", upperpriority);
HTTPProcessData.Replace("[PriorityUpLink]", "hash=" + SharedArray[i].sFileHash +"&setpriority=" + CString(HTTPTempC));
sprintf(HTTPTempC, "%i", lesserpriority);
HTTPProcessData.Replace("[PriorityDownLink]", "hash=" + SharedArray[i].sFileHash +"&setpriority=" + CString(HTTPTempC));
sSharedList += HTTPProcessData;
}
Out.Replace("[SharedFilesList]", sSharedList);
Out.Replace("[Session]", sSession);
return Out;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -