Improve master authorization logs and web remote desktop cursor
This commit is contained in:
@@ -25,6 +25,26 @@ static UINT indicators[] = {
|
||||
#define MAX_SEND_BUFFER 65535
|
||||
#define MAX_RECV_BUFFER 65535
|
||||
|
||||
// 静态成员变量定义 - 历史路径记录
|
||||
CString CFileManagerDlg::s_strLocalHistoryPath;
|
||||
std::map<uint64_t, CString> CFileManagerDlg::s_mapRemoteHistoryPath;
|
||||
CLock CFileManagerDlg::s_lockHistory;
|
||||
|
||||
// 获取有效的客户端ID:优先用 m_ClientID,否则通过 IP 找主连接
|
||||
uint64_t CFileManagerDlg::GetClientID() const
|
||||
{
|
||||
// 优先使用已设置的 m_ClientID(未来 TOKEN_CLIENTID 会设置这个)
|
||||
if (m_ClientID != 0) {
|
||||
return m_ClientID;
|
||||
}
|
||||
// 回退:通过 IP 找主连接获取 ClientID(线程安全)
|
||||
if (g_2015RemoteDlg && m_ContextObject) {
|
||||
std::string peerIP = m_ContextObject->GetPeerName();
|
||||
return g_2015RemoteDlg->FindClientIDByIP(peerIP);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
LVITEM* plvi;
|
||||
CString sCol2;
|
||||
@@ -137,10 +157,12 @@ BEGIN_MESSAGE_MAP(CFileManagerDlg, CDialog)
|
||||
ON_COMMAND(IDT_LOCAL_DOWNLOADS, OnLocalDownloads)
|
||||
ON_COMMAND(IDT_LOCAL_HOME, OnLocalHome)
|
||||
ON_COMMAND(IDT_LOCAL_SEARCH, OnLocalSearch)
|
||||
ON_COMMAND(IDT_LOCAL_HISTORY, OnLocalHistory)
|
||||
ON_COMMAND(IDT_REMOTE_DESKTOP, OnRemoteDesktop)
|
||||
ON_COMMAND(IDT_REMOTE_DOWNLOADS, OnRemoteDownloads)
|
||||
ON_COMMAND(IDT_REMOTE_HOME, OnRemoteHome)
|
||||
ON_COMMAND(IDT_REMOTE_SEARCH, OnRemoteSearch)
|
||||
ON_COMMAND(IDT_REMOTE_HISTORY, OnRemoteHistory)
|
||||
ON_COMMAND(IDM_TRANSFER, OnTransfer)
|
||||
ON_COMMAND(IDM_RENAME, OnRename)
|
||||
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_LOCAL, OnEndlabeleditListLocal)
|
||||
@@ -494,6 +516,12 @@ void CFileManagerDlg::FixedLocalFileList(CString directory)
|
||||
}
|
||||
|
||||
ShowMessage(_TRF("本地:装载目录 %s 完成"), m_Local_Path);
|
||||
|
||||
// 记录本地历史路径
|
||||
if (m_Local_Path.GetLength() > 0) {
|
||||
CAutoCLock lock(s_lockHistory);
|
||||
s_strLocalHistoryPath = m_Local_Path;
|
||||
}
|
||||
}
|
||||
|
||||
void CFileManagerDlg::DropItemOnList(CListCtrl* pDragList, CListCtrl* pDropList)
|
||||
@@ -966,6 +994,8 @@ void CFileManagerDlg::OnReceiveComplete()
|
||||
ShowMessage(_TRF("搜索 \"%s\" 在 %s 完成,共 %d 个结果 (耗时 %d秒)"), m_strSearchName, m_strSearchPath, m_nSearchResultCount, dwElapsed);
|
||||
}
|
||||
break;
|
||||
case TOKEN_CLIENTID:
|
||||
break;
|
||||
default:
|
||||
SendException();
|
||||
break;
|
||||
@@ -1024,6 +1054,13 @@ void CFileManagerDlg::GetRemoteFileList(CString directory)
|
||||
m_Remote_Directory_ComboBox.InsertStringL(0, m_Remote_Path);
|
||||
m_Remote_Directory_ComboBox.SetCurSel(0);
|
||||
|
||||
// 记录远程历史路径(按客户端ID区分)
|
||||
uint64_t clientID = GetClientID();
|
||||
if (m_Remote_Path.GetLength() > 0 && clientID != 0) {
|
||||
CAutoCLock lock(s_lockHistory);
|
||||
s_mapRemoteHistoryPath[clientID] = m_Remote_Path;
|
||||
}
|
||||
|
||||
// 得到返回数据前禁窗口
|
||||
m_list_remote.EnableWindow(FALSE);
|
||||
m_ProgressCtrl->SetPos(0);
|
||||
@@ -1594,6 +1631,57 @@ void CFileManagerDlg::OnRemoteSearch()
|
||||
}
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnLocalHistory()
|
||||
{
|
||||
// 跳转到上次打开的本地文件夹
|
||||
CString historyPath;
|
||||
{
|
||||
CAutoCLock lock(s_lockHistory);
|
||||
historyPath = s_strLocalHistoryPath;
|
||||
}
|
||||
|
||||
if (historyPath.IsEmpty()) {
|
||||
ShowMessage(_TR("没有本地历史记录"));
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查目录是否存在
|
||||
if (GetFileAttributesA(historyPath) == INVALID_FILE_ATTRIBUTES) {
|
||||
ShowMessage(_TRF("历史目录不存在: %s"), historyPath);
|
||||
return;
|
||||
}
|
||||
|
||||
m_Local_Path = historyPath;
|
||||
FixedLocalFileList(".");
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnRemoteHistory()
|
||||
{
|
||||
// 跳转到上次打开的远程文件夹(按客户端ID区分)
|
||||
uint64_t clientID = GetClientID();
|
||||
if (clientID == 0) {
|
||||
ShowMessage(_TR("无法识别远程主机"));
|
||||
return;
|
||||
}
|
||||
|
||||
CString historyPath;
|
||||
{
|
||||
CAutoCLock lock(s_lockHistory);
|
||||
auto it = s_mapRemoteHistoryPath.find(clientID);
|
||||
if (it != s_mapRemoteHistoryPath.end()) {
|
||||
historyPath = it->second;
|
||||
}
|
||||
}
|
||||
|
||||
if (historyPath.IsEmpty()) {
|
||||
ShowMessage(_TR("没有远程历史记录"));
|
||||
return;
|
||||
}
|
||||
|
||||
m_Remote_Path = historyPath;
|
||||
GetRemoteFileList(".");
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnLocalView()
|
||||
{
|
||||
// TODO: Add your command handler code here
|
||||
|
||||
Reference in New Issue
Block a user