From 6d0b1bb07b15d797158a4303031ca21c5232c97f Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Tue, 30 Jun 2026 22:44:31 +0200 Subject: [PATCH] Feat: Add privilege column (SYSTEM/Admin/User) to online host list --- server/2015Remote/2015RemoteDlg.cpp | 19 ++++++++++++------- server/2015Remote/NotifyConfig.h | 21 +++++++++++---------- server/2015Remote/NotifySettingsDlg.cpp | 25 +++++++++++++------------ server/2015Remote/context.h | 1 + server/2015Remote/lang/en_US.ini | 1 + server/2015Remote/lang/zh_TW.ini | 1 + 6 files changed, 39 insertions(+), 29 deletions(-) diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index fef8e0f..d418342 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -139,15 +139,16 @@ COLUMNSTRUCT g_Column_Data_Online[g_Column_Count_Online] = { {"预览", 60 }, {"IP", 130 }, {"端口", 60 }, - {"地理位置", 130 }, - {"计算机名/备注", 150 }, + {"地理位置", 140 }, + {"计算机名/备注", 140 }, {"操作系统", 120 }, {"CPU", 80 }, - {"摄像头", 70 }, - {"RTT", 70 }, + {"摄像头", 60 }, + {"RTT", 60 }, {"版本", 90 }, - {"安装时间", 120 }, - {"活动窗口", 140 }, + {"权限", 60 }, + {"安装时间", 130 }, + {"活动窗口", 130 }, {"类型", 50 }, }; @@ -1462,8 +1463,12 @@ VOID CMy2015RemoteDlg::AddList(CString strIP, CString strAddr, CString strPCName capStr = ver.Mid(dashPos + 1); } + const std::string& privUser = v[RES_USERNAME]; + const std::string& privAdmin = v[RES_ISADMIN]; + CString privilegeStr = privUser == "SYSTEM" ? "SYSTEM" : privAdmin == "1" ? "Admin" : "User"; + CString data[ONLINELIST_MAX] = { strIP, strAddr, "", strPCName, strOS, strCPU, strVideo, strPing, - verDisplay, install, startTime, v[RES_CLIENT_TYPE].empty() ? "?" : v[RES_CLIENT_TYPE].c_str(), path, + verDisplay, privilegeStr, install, startTime, v[RES_CLIENT_TYPE].empty() ? "?" : v[RES_CLIENT_TYPE].c_str(), path, v[RES_CLIENT_PUBIP].empty() ? strIP : v[RES_CLIENT_PUBIP].c_str(), startTime, capStr, }; // 优先采用客户端自报的 ID(新客户端用 V2 算法 = MachineGuid + 归一化路径, diff --git a/server/2015Remote/NotifyConfig.h b/server/2015Remote/NotifyConfig.h index 11eab2c..b818fce 100644 --- a/server/2015Remote/NotifyConfig.h +++ b/server/2015Remote/NotifyConfig.h @@ -96,17 +96,18 @@ struct NotifyConfig { inline const char* GetColumnName(int index) { static const char* names[] = { "IP", // 0 - "Address", // 1 - "Location", // 2 + "Address", // 1 + "Location", // 2 "ComputerName", // 3 - "OS", // 4 - "CPU", // 5 - "Camera", // 6 - "RTT", // 7 - "Version", // 8 - "InstallTime", // 9 - "ActiveWindow", // 10 - "ClientType", // 11 + "OS", // 4 + "CPU", // 5 + "Camera", // 6 + "RTT", // 7 + "Version", // 8 + "Privilege", // 9 ONLINELIST_PRIVILEGE + "InstallTime", // 10 ONLINELIST_INSTALLTIME + "ActiveWindow", // 11 ONLINELIST_LOGINTIME + "ClientType", // 12 ONLINELIST_CLIENTTYPE }; if (index >= 0 && index < sizeof(names)/sizeof(names[0])) { return names[index]; diff --git a/server/2015Remote/NotifySettingsDlg.cpp b/server/2015Remote/NotifySettingsDlg.cpp index 1b57ec3..c0e652e 100644 --- a/server/2015Remote/NotifySettingsDlg.cpp +++ b/server/2015Remote/NotifySettingsDlg.cpp @@ -102,18 +102,19 @@ void NotifySettingsDlg::PopulateComboBoxes() // Column combo - use translatable strings m_comboNotifyColumn.ResetContent(); struct { int id; const TCHAR* name; } columns[] = { - { 0, _T("IP地址") }, - { 1, _T("地址") }, - { 2, _T("地理位置") }, - { 3, _T("计算机名") }, - { 4, _T("操作系统") }, - { 5, _T("CPU") }, - { 6, _T("摄像头") }, - { 7, _T("延迟") }, - { 8, _T("版本") }, - { 9, _T("安装时间") }, - { 10, _T("活动窗口") }, - { 11, _T("客户端类型") }, + { ONLINELIST_IP, _T("IP地址") }, + { ONLINELIST_ADDR, _T("地址") }, + { ONLINELIST_LOCATION, _T("地理位置") }, + { ONLINELIST_COMPUTER_NAME,_T("计算机名") }, + { ONLINELIST_OS, _T("操作系统") }, + { ONLINELIST_CPU, _T("CPU") }, + { ONLINELIST_VIDEO, _T("摄像头") }, + { ONLINELIST_PING, _T("延迟") }, + { ONLINELIST_VERSION, _T("版本") }, + { ONLINELIST_PRIVILEGE, _T("权限") }, + { ONLINELIST_INSTALLTIME, _T("安装时间") }, + { ONLINELIST_LOGINTIME, _T("活动窗口") }, + { ONLINELIST_CLIENTTYPE, _T("客户端类型") }, }; for (const auto& col : columns) { CString item; diff --git a/server/2015Remote/context.h b/server/2015Remote/context.h index 67c123f..7570b5c 100644 --- a/server/2015Remote/context.h +++ b/server/2015Remote/context.h @@ -14,6 +14,7 @@ enum { ONLINELIST_VIDEO, // 摄像头(有无) ONLINELIST_PING, // PING(对方的网速) ONLINELIST_VERSION, // 版本信息 + ONLINELIST_PRIVILEGE, // 权限级别 (SYSTEM/Admin/User) ONLINELIST_INSTALLTIME, // 安装时间 ONLINELIST_LOGINTIME, // 活动窗口 ONLINELIST_CLIENTTYPE, // 客户端类型 diff --git a/server/2015Remote/lang/en_US.ini b/server/2015Remote/lang/en_US.ini index 80b5341..b3535b9 100644 --- a/server/2015Remote/lang/en_US.ini +++ b/server/2015Remote/lang/en_US.ini @@ -1945,3 +1945,4 @@ FRPC Զ Ȩ %s ¼\n¼֤Ч=Sub-license limit for %s has been cleared.\nTakes effect when the sub-client re-authenticates. ʾ: APK ѱ޸ģԭǩʧЧҪǩܰװ豸=Note: APK has been patched and the original signature is invalid. Re-sign before installing. ǩ ( Android SDK build-tools):=Re-sign command (requires Android SDK build-tools): +Ȩ=Access diff --git a/server/2015Remote/lang/zh_TW.ini b/server/2015Remote/lang/zh_TW.ini index 46fc620..30f6cea 100644 --- a/server/2015Remote/lang/zh_TW.ini +++ b/server/2015Remote/lang/zh_TW.ini @@ -1936,3 +1936,4 @@ FRPC Զ Ȩ %s ¼\n¼֤Ч=Ȩ %s ¼\n¼֤Ч ʾ: APK ѱ޸ģԭǩʧЧҪǩܰװ豸=ʾ: APK ѱ޸ģԭʧЧҪغܰbbá ǩ ( Android SDK build-tools):=غ ( Android SDK build-tools): +Ȩ=Ȩ