📄 webserver.cpp
字号:
pos != 0;theApp.uploadqueue->GetNextFromUploadList(pos))
{
CUpDownClient* cur_client = theApp.uploadqueue->GetQueueClientAt(pos);
CString HTTPProcessData = OutE;
HTTPProcessData.Replace(_T("[1]"), _SpecialChars(cur_client->GetUserName()));
HTTPProcessData.Replace(_T("[FileInfo]"), _SpecialChars(GetUploadFileInfo(cur_client)));
CKnownFile* file = theApp.sharedfiles->GetFileByID(cur_client->GetUploadFileID());
if (file)
HTTPProcessData.Replace(_T("[2]"), _SpecialChars(CString(file->GetFileName())));
else
HTTPProcessData.Replace(_T("[2]"), _GetPlainResString(IDS_REQ_UNKNOWNFILE));
fTotalSize += cur_client->GetTransferedDown();
fTotalTransferred += cur_client->GetTransferedUp();
CString HTTPTemp;
HTTPTemp.Format(_T("%s / %s"), CastItoXBytes(cur_client->GetTransferedDown()),CastItoXBytes(cur_client->GetTransferedUp()));
HTTPProcessData.Replace(_T("[3]"), HTTPTemp);
fTotalSpeed += cur_client->GetDatarate();
HTTPTemp.Format(_T("%8.2f ") + _GetPlainResString(IDS_KBYTESEC), cur_client->GetDatarate()/1024.0);
HTTPProcessData.Replace(_T("[4]"), HTTPTemp);
sUpList += HTTPProcessData;
}
Out.Replace(_T("[UploadFilesList]"), sUpList);
// Elandal: cast from float to integral type always drops fractions.
// avoids implicit cast warning
HTTPTemp.Format(_T("%s / %s"), CastItoXBytes((uint64)fTotalSize), CastItoXBytes((uint64)fTotalTransferred));
Out.Replace(_T("[TotalUpTransferred]"), HTTPTemp);
HTTPTemp.Format(_T("%8.2f ") + _GetPlainResString(IDS_KBYTESEC), fTotalSpeed/1024.0);
Out.Replace(_T("[TotalUpSpeed]"), HTTPTemp);
if(pThis->m_Params.bShowUploadQueue)
{
Out.Replace(_T("[UploadQueue]"), pThis->m_Templates.sTransferUpQueueShow);
Out.Replace(_T("[UploadQueueList]"), _GetPlainResString(IDS_ONQUEUE));
Out.Replace(_T("[UserNameTitle]"), _GetPlainResString(IDS_QL_USERNAME));
Out.Replace(_T("[FileNameTitle]"), _GetPlainResString(IDS_DL_FILENAME));
Out.Replace(_T("[ScoreTitle]"), _GetPlainResString(IDS_SCORE));
Out.Replace(_T("[BannedTitle]"), _GetPlainResString(IDS_BANNED));
OutE = pThis->m_Templates.sTransferUpQueueLine;
// Replace [xx]
CString sQueue = _T("");
for (POSITION pos = theApp.uploadqueue->GetFirstFromWaitingList(); pos != 0;theApp.uploadqueue->GetNextFromWaitingList(pos)){
CUpDownClient* cur_client = theApp.uploadqueue->GetWaitClientAt(pos);
CString HTTPProcessData;
TCHAR HTTPTempC[100] = _T("");
HTTPProcessData = OutE;
HTTPProcessData.Replace(_T("[UserName]"), _SpecialChars(cur_client->GetUserName()));
if (!cur_client->reqfile) continue;
CKnownFile* file = theApp.sharedfiles->GetFileByID(cur_client->reqfile->GetFileHash());
if (file)
HTTPProcessData.Replace(_T("[FileName]"), _SpecialChars(cur_client->reqfile->GetFileName()));
else
HTTPProcessData.Replace(_T("[FileName]"), _T("?"));
_stprintf(HTTPTempC, _T("%i") , cur_client->GetScore(false));
CString HTTPTemp = HTTPTempC;
HTTPProcessData.Replace(_T("[Score]"), HTTPTemp);
if (cur_client->IsBanned())
HTTPProcessData.Replace(_T("[Banned]"), _GetPlainResString(IDS_YES));
else
HTTPProcessData.Replace(_T("[Banned]"), _GetPlainResString(IDS_NO));
sQueue += HTTPProcessData;
}
Out.Replace(_T("[QueueList]"), sQueue);
}
else {
Out.Replace(_T("[UploadQueue]"), pThis->m_Templates.sTransferUpQueueHide);
}
Out.Replace(_T("[ShowQueue]"), _GetPlainResString(IDS_WEB_SHOW_UPLOAD_QUEUE));
Out.Replace(_T("[HideQueue]"), _GetPlainResString(IDS_WEB_HIDE_UPLOAD_QUEUE));
Out.Replace(_T("[Session]"), sSession);
Out.Replace(_T("[CLEARCOMPLETED]"),_GetPlainResString(IDS_DL_CLEAR));
CString buffer;
buffer.Format(_T("%s (%i)"), _GetPlainResString(IDS_TW_DOWNLOADS),FilesArray.GetCount());
Out.Replace(_T("[DownloadList]"),buffer);
buffer.Format(_T("%s (%i)"),_GetPlainResString(IDS_PW_CON_UPLBL),theApp.uploadqueue->GetUploadQueueLength());
Out.Replace(_T("[UploadList]"), buffer );
Out.Replace(_T("[CatSel]"),sCat);
return Out;
}
CString CWebServer::_GetDownloadLink(ThreadData Data)
{
CWebServer *pThis = (CWebServer *)Data.pThis;
if(pThis == NULL)
return _T("");
CString sSession = _ParseURL(Data.sURL, _T("ses"));
if (!IsSessionAdmin(Data,sSession)) {
CString ad=_T("<br><br><div align=\"center\" class=\"message\">[Message]</div>");
ad.Replace(_T("[Message]"),_GetPlainResString(IDS_ACCESSDENIED));
return ad;
}
CString Out = pThis->m_Templates.sDownloadLink;
Out.Replace(_T("[Download]"), _GetPlainResString(IDS_SW_DOWNLOAD));
Out.Replace(_T("[Ed2klink]"), _GetPlainResString(IDS_SW_LINK));
Out.Replace(_T("[Start]"), _GetPlainResString(IDS_SW_START));
Out.Replace(_T("[Session]"), sSession);
if (thePrefs.GetCatCount()>1)
InsertCatBox(Out,0, pThis->m_Templates.sCatArrow );
else Out.Replace(_T("[CATBOX]"),_T(""));
return Out;
}
CString CWebServer::_GetSharedFilesList(ThreadData Data)
{
CWebServer *pThis = (CWebServer *)Data.pThis;
CString sSession = _ParseURL(Data.sURL, _T("ses"));
if(pThis == NULL)
return _T("");
if (_ParseURL(Data.sURL, _T("sort")) != _T(""))
{
if(_ParseURL(Data.sURL, _T("sort")) == _T("name"))
pThis->m_Params.SharedSort = SHARED_SORT_NAME;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("size"))
pThis->m_Params.SharedSort = SHARED_SORT_SIZE;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("transferred"))
pThis->m_Params.SharedSort = SHARED_SORT_TRANSFERRED;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("alltimetransferred"))
pThis->m_Params.SharedSort = SHARED_SORT_ALL_TIME_TRANSFERRED;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("requests"))
pThis->m_Params.SharedSort = SHARED_SORT_REQUESTS;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("alltimerequests"))
pThis->m_Params.SharedSort = SHARED_SORT_ALL_TIME_REQUESTS;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("accepts"))
pThis->m_Params.SharedSort = SHARED_SORT_ACCEPTS;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("alltimeaccepts"))
pThis->m_Params.SharedSort = SHARED_SORT_ALL_TIME_ACCEPTS;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("priority"))
pThis->m_Params.SharedSort = SHARED_SORT_PRIORITY;
if(_ParseURL(Data.sURL, _T("sortreverse")) == _T(""))
pThis->m_Params.bSharedSortReverse = false;
}
if (_ParseURL(Data.sURL, _T("sortreverse")) != _T(""))
pThis->m_Params.bSharedSortReverse = (_ParseURL(Data.sURL, _T("sortreverse")) == _T("true"));
if(_ParseURL(Data.sURL, _T("hash")) != _T("") && _ParseURL(Data.sURL, _T("setpriority")) != _T("") && IsSessionAdmin(Data,sSession))
_SetSharedFilePriority(_ParseURL(Data.sURL, _T("hash")),_tstoi(_ParseURL(Data.sURL, _T("setpriority"))));
if(_ParseURL(Data.sURL, _T("reload")) == _T("true"))
{
theApp.emuledlg->SendMessage(WEB_SHARED_FILES_RELOAD);
}
CString sSharedSortRev;
if(pThis->m_Params.bSharedSortReverse)
sSharedSortRev = _T("false");
else
sSharedSortRev = _T("true");
CString sortimg;
if (pThis->m_Params.bSharedSortReverse) sortimg=_T("<img src=\"l_up.gif\">");
else sortimg=_T("<img src=\"l_down.gif\">");
//Name sorting link
CString Out = pThis->m_Templates.sSharedList;
if(pThis->m_Params.SharedSort == SHARED_SORT_NAME)
Out.Replace(_T("[SortName]"), _T("sort=name&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortName]"), _T("sort=name"));
//Size sorting Link
if(pThis->m_Params.SharedSort == SHARED_SORT_SIZE)
Out.Replace(_T("[SortSize]"), _T("sort=size&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortSize]"), _T("sort=size"));
//Priority sorting Link
if(pThis->m_Params.SharedSort == SHARED_SORT_PRIORITY)
Out.Replace(_T("[SortPriority]"), _T("sort=priority&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortPriority]"), _T("sort=priority"));
//Transferred sorting link
if(pThis->m_Params.SharedSort == SHARED_SORT_TRANSFERRED)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace(_T("[SortTransferred]"), _T("sort=alltimetransferred&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortTransferred]"), _T("sort=transferred&sortreverse=") + sSharedSortRev);
}
else
if(pThis->m_Params.SharedSort == SHARED_SORT_ALL_TIME_TRANSFERRED)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace(_T("[SortTransferred]"), _T("sort=transferred&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortTransferred]"), _T("sort=alltimetransferred&sortreverse=") + sSharedSortRev);
}
else
Out.Replace(_T("[SortTransferred]"), _T("&sort=transferred&sortreverse=false"));
//Request sorting link
if(pThis->m_Params.SharedSort == SHARED_SORT_REQUESTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace(_T("[SortRequests]"), _T("sort=alltimerequests&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortRequests]"), _T("sort=requests&sortreverse=") + sSharedSortRev);
}
else
if(pThis->m_Params.SharedSort == SHARED_SORT_ALL_TIME_REQUESTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace(_T("[SortRequests]"), _T("sort=requests&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortRequests]"), _T("sort=alltimerequests&sortreverse=") + sSharedSortRev);
}
else
Out.Replace(_T("[SortRequests]"), _T("&sort=requests&sortreverse=false"));
//Accepts sorting link
if(pThis->m_Params.SharedSort == SHARED_SORT_ACCEPTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace(_T("[SortAccepts]"), _T("sort=alltimeaccepts&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortAccepts]"), _T("sort=accepts&sortreverse=") + sSharedSortRev);
}
else
if(pThis->m_Params.SharedSort == SHARED_SORT_ALL_TIME_ACCEPTS)
{
if(pThis->m_Params.bSharedSortReverse)
Out.Replace(_T("[SortAccepts]"), _T("sort=accepts&sortreverse=") + sSharedSortRev);
else
Out.Replace(_T("[SortAccepts]"), _T("sort=alltimeaccepts&sortreverse=") + sSharedSortRev);
}
else
Out.Replace(_T("[SortAccepts]"), _T("&sort=accepts&sortreverse=false"));
if(_ParseURL(Data.sURL, _T("reload")) == _T("true"))
{
//CString resultlog = _SpecialChars(theApp.emuledlg->logtext); //Pick-up last line of the log
//resultlog = resultlog.TrimRight(_T('\n'));
//resultlog = resultlog.Mid(resultlog.ReverseFind(_T('\n')));
CString resultlog = _SpecialChars(theApp.emuledlg->GetLastLogEntry());
Out.Replace(_T("[Message]"),resultlog);
}
else
Out.Replace(_T("[Message]"),_T(""));
Out.Replace(_T("[Filename]"), _GetPlainResString(IDS_DL_FILENAME)+CString((pThis->m_Params.SharedSort == SHARED_SORT_NAME)?sortimg:_T("")));
Out.Replace(_T("[Priority]"), _GetPlainResString(IDS_PRIORITY)+CString((pThis->m_Params.SharedSort == SHARED_SORT_PRIORITY)?sortimg:_T("")));
Out.Replace(_T("[FileTransferred]"), _GetPlainResString(IDS_SF_TRANSFERRED)+CString((pThis->m_Params.SharedSort == SHARED_SORT_TRANSFERRED)?sortimg:_T("")));
Out.Replace(_T("[FileRequests]"), _GetPlainResString(IDS_SF_REQUESTS)+CString((pThis->m_Params.SharedSort == SHARED_SORT_REQUESTS)?sortimg:_T("")));
Out.Replace(_T("[FileAccepts]"), _GetPlainResString(IDS_SF_ACCEPTS)+CString((pThis->m_Params.SharedSort == SHARED_SORT_ACCEPTS)?sortimg:_T("")));
Out.Replace(_T("[Size]"), _GetPlainResString(IDS_DL_SIZE)+CString((pThis->m_Params.SharedSort == SHARED_SORT_SIZE)?sortimg:_T("")));
Out.Replace(_T("[Ed2klink]"), _GetPlainResString(IDS_SW_LINK));
Out.Replace(_T("[Reload]"), _GetPlainResString(IDS_SF_RELOAD));
Out.Replace(_T("[Session]"), sSession);
CString OutE = pThis->m_Templates.sSharedLine;
OutE.Replace(_T("[Ed2klink]"), _GetPlainResString(IDS_SW_LINK));
OutE.Replace(_T("[PriorityUp]"), _GetPlainResString(IDS_PRIORITY_UP));
OutE.Replace(_T("[PriorityDown]"), _GetPlainResString(IDS_PRIORITY_DOWN));
CString OutE2 = pThis->m_Templates.sSharedLineChanged;
OutE.Replace(_T("[Ed2klink]"), _GetPlainResString(IDS_SW_LINK));
OutE.Replace(_T("[PriorityUp]"), _GetPlainResString(IDS_PRIORITY_UP));
OutE.Replace(_T("[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.IsConnected() && !theApp.IsFirewalled())
dFile.sED2kLink = theApp.CreateED2kSourceLink(cur_file);
else
dFile.sED2kLink = 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_LOW)
dFile.sFilePriority = _GetPlainResString(IDS_PRIOAUTOLOW);
else 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 = Sh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -