Improvement: Support authorize master online

This commit is contained in:
yuanyuanxiang
2025-06-14 23:40:11 +08:00
parent f4364a4368
commit f1cf45dd3b
17 changed files with 332 additions and 37 deletions

View File

@@ -75,6 +75,10 @@ typedef void* LPVOID, * HANDLE;
// <20><><EFBFBD>س<EFBFBD><D8B3><EFBFBD>Ψһ<CEA8><D2BB>ʶ
#define MASTER_HASH "61f04dd637a74ee34493fc1025de2c131022536da751c29e3ff4e9024d8eec43"
#ifndef GET_FILEPATH
#define GET_FILEPATH(dir,file) [](char*d,const char*f){char*p=d;while(*p)++p;while('\\'!=*p&&p!=d)--p;strcpy(p+1,f);return d;}(dir,file)
#endif
inline int isValid() {
static time_t tm = time(nullptr);
return time(nullptr) - tm <= 60;
@@ -228,6 +232,7 @@ enum
CMD_RUNASADMIN=214, // ADMIN <20><><EFBFBD><EFBFBD>
CMD_MASTERSETTING = 215, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_HEARTBEAT_ACK = 216, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
CMD_AUTHORIZATION = 222, // <20><>Ȩ
CMD_SERVER_ADDR = 229, // <20><><EFBFBD>ص<EFBFBD>ַ
TOKEN_ERROR = 230, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TOKEN_SHELL_DATA = 231, // <20>ն˽<D5B6><CBBD><EFBFBD>
@@ -473,7 +478,8 @@ public:
int iMultiOpen;
int iStartup; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
int iHeaderEnc; // <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char szReserved[126]; // ռλ<D5BC><CEBB>ʹ<EFBFBD><EFBFBD><E1B9B9>ռ<EFBFBD><D5BC>300<30>ֽ<EFBFBD>
char szReserved[62]; // ռλ<D5BC><CEBB>ʹ<EFBFBD><EFBFBD><E1B9B9>ռ<EFBFBD><D5BC>300<30>ֽ<EFBFBD>
char pwdHash[64];
public:
void SetType(int typ) {
@@ -749,6 +755,28 @@ inline std::string ToPekingTimeAsString(const time_t* t) {
return buffer;
}
typedef struct Validation {
char From[20]; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
char To[20]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char Admin[100]; // <20><><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>صĹ<D8B5><C4B9><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
int Port; // <20><><EFBFBD><EFBFBD>Ա<EFBFBD>˿ڣ<CBBF>Ĭ<EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD>˿ڣ<CBBF>
char Reserved[16]; // Ԥ<><D4A4><EFBFBD>ֶ<EFBFBD>
Validation(float days, const char* admin, int port) {
time_t from = time(NULL), to = from + time_t(86400 * days);
memset(this, 0, sizeof(Validation));
std::string fromStr = ToPekingTimeAsString(&from);
std::string toStr = ToPekingTimeAsString(&to);
strcpy_s(From, fromStr.c_str());
strcpy_s(To, toStr.c_str());
strcpy_s(Admin, admin);
Port = port;
}
bool IsValid() const {
std::string now = ToPekingTimeAsString(NULL);
return From <= now && now <= To;
}
}Validation;
#ifdef _DEBUG
// Ϊ<>˽<EFBFBD><CBBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ꣬<C4BA><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʹ<CAB1>ã<EFBFBD><C3A3><EFBFBD>ʽ<EFBFBD>汾û<E6B1BE><C3BB>
#define SCREENYSPY_IMPROVE 0