RemoteControllerCnn.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652
  1. #pragma once
  2. #include "SpSecureClient.h"
  3. #include "SpFSM.h"
  4. #include <list>
  5. #include <string>
  6. using namespace std;
  7. #pragma pack(1)
  8. // 请求建立远程控制通道
  9. // [StructName("RemoteR")]
  10. struct RvcCreateChannelReq
  11. {
  12. char TerminalNo[16]; // 终端号
  13. BYTE IPAddr[4]; // 终端IP地址,用于IP绑定
  14. DWORD LifeID; // 生命标识,用户判断终端是否已重启
  15. };
  16. //[StructName("RemoteA")]
  17. struct RvcCreateChannelRet
  18. {
  19. char AgentID[16]; // 远程用户
  20. char ChannelID[20]; // 通道标识
  21. };
  22. // 查看实体状态
  23. // [StructName("ViewEntR")]
  24. struct RvcViewEntityReq
  25. {
  26. int TaskID; // 任务号
  27. };
  28. // [StructName("ViewEnA1")]
  29. struct RvcViewEntityRet1
  30. {
  31. int TaskID; // 任务号
  32. };
  33. // [StructName("ViewEnA2")]
  34. struct RvcViewEntityRet2
  35. {
  36. char EntityName[32]; // 实体名
  37. int EntityState; // 具体定义参见spbase.h的EntityStateEnum
  38. int ProcessID; // 进程号
  39. int EntityID; // 实体号
  40. int UsedMemory; // 占用内存
  41. };
  42. // 查看实体状态(返回是否有静态配置和运行时配置)
  43. // [StructName("ViEnExR")]
  44. struct RvcViewEntityExReq
  45. {
  46. int TaskID; // 任务号
  47. };
  48. // [StructName("ViEnExA1")]
  49. struct RvcViewEntityExRet1
  50. {
  51. int TaskID; // 任务号
  52. };
  53. // [StructName("ViEnExA2")]
  54. struct RvcViewEntityExRet2
  55. {
  56. char EntityName[32]; // 实体名
  57. int EntityState; // 具体定义参见spbase.h的EntityStateEnum
  58. int ProcessID; // 进程号
  59. int EntityID; // 实体号
  60. int UsedMemory; // 占用内存
  61. bool HasConfig; // 是否有实体配置
  62. bool HasRunCfg; // 是否有运行时配置
  63. };
  64. // 查询实体配置文件
  65. // [StructName("ViewCfgR")]
  66. struct RvcViewConfigReq
  67. {
  68. int TaskID; // 任务号
  69. char EntityName[32]; // 实体名
  70. };
  71. //[StructName("ViewCfgA")]
  72. struct RvcViewConfigRet
  73. {
  74. int TaskID; // 任务号
  75. char ConfigData[0]; // 配置文件(变长字段)
  76. };
  77. // 查询dbg日志
  78. //[StructName("ViewDbgR")]
  79. struct RvcViewDbgReq
  80. {
  81. int TaskID; // 任务号
  82. char EntityName[32]; // 实体名
  83. char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
  84. long long StartPos; // 起始位移,0表示从头开始
  85. long long MaxRetBytes; // 最大返回字节数
  86. };
  87. //[StructName("ViewDbgA")]
  88. struct RvcViewDbgRet
  89. {
  90. int TaskID; // 任务号
  91. char EntityName[32]; // 实体名
  92. char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
  93. long long NextPos; // 下次开始位移,如果为0表示已结束
  94. long long FileLength; // 当前日志文件长度
  95. char LogData[0]; // 日志内容(变长字段)
  96. };
  97. // 操作磁盘文件
  98. //[StructName("OprDiskR")]
  99. struct RvcOperateDiskReq
  100. {
  101. int TaskID; // 任务号
  102. char current[260]; //路径,windows最大长度260
  103. int mode;
  104. int attribute;
  105. char content[260];
  106. int filter1;
  107. char filter2[260];
  108. int attachment1;
  109. char attachment2[260];
  110. };
  111. // [StructName("OprDiskJA")]
  112. struct RvcOperateDiskJsonRet
  113. {
  114. int TaskID;
  115. long long jsonLength;
  116. char jsonData[0];
  117. };
  118. #if !(defined _WIN32 || defined _WIN64)
  119. #define _TRUNCATE ((size_t)-1)
  120. int strncpy_s(char* _Destination, size_t _SizeInBytes, char const* _Source, size_t _MaxCount);
  121. int strncpy_s(char* _Destination, char const* _Source, size_t _MaxCount);
  122. #endif
  123. #include "remoteBase.h"
  124. // [StructName("OprDiskA2")]
  125. class RvcOperateDiskRet2
  126. {
  127. public:
  128. RvcOperateDiskRet2()
  129. :fileSize(0), ftCreate(0), ftModified(0), ftAccess(0), fileAttribute(0), forbidAttributes(0), reserved1(0)
  130. {
  131. ZeroMemory(fileName, sizeof(fileName));
  132. ZeroMemory(reserved2, sizeof(reserved2));
  133. }
  134. RvcOperateDiskRet2(const CSimpleStringA &oldName, const unsigned long long &oldSize, const unsigned long long &oldCreate, const unsigned long long &oldModified,
  135. const unsigned long long &oldAccess, const unsigned int &oldAttribute, const unsigned int &oldForbidAttributes, const int &oldReserved1, const CSimpleStringA &oldReserved2)
  136. :fileSize(oldSize), ftCreate(oldCreate), ftModified(oldModified), ftAccess(oldAccess), fileAttribute(oldAttribute), forbidAttributes(oldForbidAttributes), reserved1(oldReserved1)
  137. {
  138. ZeroMemory(fileName, sizeof(fileName));
  139. strncpy_s(fileName, sizeof(fileName), (const char*)oldName, _TRUNCATE);
  140. ZeroMemory(reserved2, sizeof(reserved2));
  141. strncpy_s(reserved2, sizeof(reserved2), (const char*)oldReserved2, _TRUNCATE);
  142. }
  143. public:
  144. char fileName[260];
  145. unsigned long long fileSize;
  146. unsigned long long ftCreate;
  147. unsigned long long ftModified;
  148. unsigned long long ftAccess;
  149. unsigned int fileAttribute;
  150. unsigned int forbidAttributes;
  151. int reserved1;
  152. char reserved2[260];
  153. };
  154. //[StructName("OprDiskA1")]
  155. struct RvcOperateDiskRet1
  156. {
  157. int TaskID; // 任务号
  158. int result;
  159. char header[260];
  160. int attachment1;
  161. RvcOperateDiskRet1(const int &oldID, const int &oldResult, const CSimpleStringA &oldHeader, const int &oldAttach)
  162. :TaskID(oldID), result(oldResult)
  163. {
  164. ZeroMemory(header, sizeof(header));
  165. strncpy_s(header, sizeof(header), (const char*)oldHeader, _TRUNCATE);
  166. }
  167. };
  168. // 进入维护模式
  169. // [StructName("EnterMMR")]
  170. struct RvcEnterMaintainModeReq
  171. {
  172. int TaskID; // 任务号
  173. };
  174. // [StructName("EnterMMA")]
  175. struct RvcEnterMaintainModeRet
  176. {
  177. int TaskID; // 任务号
  178. };
  179. // 退出维护模式
  180. // [StructName("ExitMMR")]
  181. struct RvcExitMaintainModeReq
  182. {
  183. int TaskID; // 任务号
  184. };
  185. // [StructName("ExitMMA")]
  186. struct RvcExitMaintainModeRet
  187. {
  188. int TaskID; // 任务号
  189. };
  190. // 手工升级
  191. // [StructName("UpgPackR")]
  192. struct RvcUpgradePackReq
  193. {
  194. int TaskID; // 任务号
  195. char PackName[64]; // 包名称
  196. };
  197. // [StructName("UpgPackA")]
  198. struct RvcUpgradePackRet
  199. {
  200. int TaskID; // 任务号
  201. };
  202. // 查询当前维护用户
  203. //[StructName("GetUserR")]
  204. struct RvcGetUserReq
  205. {
  206. int TaskID; // 任务号
  207. };
  208. // [StructName("GetUserA")]
  209. struct RvcGetUserRet
  210. {
  211. int TaskID; // 任务号
  212. char UserID[16]; // 用户号
  213. char UserName[16]; // 用户名称
  214. char CurRight[16]; // 用户权限
  215. char Authorizer[16]; // 授权人
  216. unsigned int BeginTime; // 开始时间
  217. };
  218. // 提升当前维护用户
  219. // [StructName("EnpowerR")]
  220. struct RvcEnpowerUserReq
  221. {
  222. int TaskID; // 任务号
  223. char UserID[16]; // 用户号
  224. };
  225. // [StructName("EnpowerA")]
  226. struct RvcEnpowerUserRet
  227. {
  228. int TaskID; // 任务号
  229. };
  230. // 降级当前维护用户
  231. // [StructName("TakeovrR")]
  232. struct RvcTakeoverPowerReq
  233. {
  234. int TaskID; // 任务号
  235. char UserID[16]; // 用户号
  236. };
  237. // [StructName("TakeovrA")]
  238. struct RvcTakeoverPowerRet
  239. {
  240. int TaskID; // 任务号
  241. };
  242. // 强制当前维护用户退出
  243. // [StructName("ForceQtR")]
  244. struct RvcForceQuitReq
  245. {
  246. int TaskID; // 任务号
  247. };
  248. //[StructName("ForceQtA")]
  249. struct RvcForceQuitRet
  250. {
  251. int TaskID; // 任务号
  252. };
  253. // 修改实体配置文件
  254. // [StructName("EditCfgR")]
  255. struct RvcEditConfigReq
  256. {
  257. int TaskID;
  258. char EditType; // "A"增加;"U"修改;“D" 删除
  259. char EntityName[32]; // 配置文件名
  260. char Section[32]; // 配置节
  261. char Key[32]; // 配置项
  262. char Value[256]; // 值
  263. };
  264. // [StructName("EditCfgA")]
  265. struct RvcEditConfigRet
  266. {
  267. int TaskID;
  268. };
  269. // 查询终端系统变量
  270. // [StructName("ViewVarR")]
  271. struct RvcViewSysVarReq
  272. {
  273. int TaskID;
  274. };
  275. // [StructName("ViewVarA")]
  276. struct RvcViewSysVarRet
  277. {
  278. int TaskID;
  279. char VarName[32]; // 变量名称
  280. char VarValue; // 变量值
  281. };
  282. // 手工回滚
  283. //[StructName("RollbakR")]
  284. struct RvcRollbackReq
  285. {
  286. int TaskID; // 任务号
  287. };
  288. //[StructName("RollbakA")]
  289. struct RvcRollbackRet
  290. {
  291. int TaskID; // 任务号
  292. };
  293. // 重启机器
  294. //[StructName("RestOR")]
  295. struct RvcRestartMachineReq
  296. {
  297. int TaskID; // 任务号
  298. };
  299. //[StructName("RestOA")]
  300. struct RvcRestartMachineRet
  301. {
  302. int TaskID; // 任务号
  303. };
  304. // 重启Shell
  305. //[StructName("RestSR")]
  306. struct RvcRestartShellReq
  307. {
  308. int TaskID; // 任务号
  309. };
  310. //[StructName("RestSA")]
  311. struct RvcRestartShellRet
  312. {
  313. int TaskID; // 任务号
  314. };
  315. // 删除RunInfo日志
  316. struct RvcDelRunInfoLogReq
  317. {
  318. int TaskID; // 任务号
  319. char logName[128];
  320. };
  321. struct RvcDelRunInfoLogRet
  322. {
  323. int TaskID; // 任务号
  324. };
  325. // 查询当前活动版本
  326. //[StructName("GetVerR")]
  327. struct RvcGetActiveVerReq
  328. {
  329. int TaskID; // 任务号
  330. };
  331. //[StructName("GetVerA")]
  332. struct RvcGetActiveVerRet
  333. {
  334. int TaskID; // 任务号
  335. char Version[32]; // 活动版本
  336. };
  337. // 查询实体配置文件
  338. //[StructName("VRunCfgR")]
  339. struct RvcViewRunCfgReq
  340. {
  341. int TaskID; // 任务号
  342. char ConfigName[32]; // 配置文件
  343. };
  344. //[StructName("VRunCfgA")]
  345. struct RvcViewRunCfgRet
  346. {
  347. int TaskID; // 任务号
  348. char ConfigData[0]; // 配置文件(变长字段)
  349. };
  350. // 查询实体配置文件
  351. //[StructName("VPkgLogR")]
  352. struct RvcViewInstallLogReq
  353. {
  354. int TaskID; // 任务号
  355. char InstallLog[32]; // 配置文件
  356. };
  357. //[StructName("VPkgLogA")]
  358. struct RvcViewInstallLogRet
  359. {
  360. int TaskID; // 任务号
  361. char LogData[0]; // 配置文件(变长字段)
  362. };
  363. /// <summary>
  364. /// 导出系统日志
  365. /// </summary>
  366. //[StructName("EvtLogR")]
  367. struct RvcUploadEventLogReq
  368. {
  369. RvcUploadEventLogReq()
  370. :TaskID(0), evtName(0), duration(0), startTime(0), endTime(0), reversed1(0), StartPos(0), MaxRetBytes(0)
  371. {
  372. ZeroMemory(cusEvtFileName, sizeof(cusEvtFileName));
  373. ZeroMemory(evtSrcEventName, sizeof(evtSrcEventName));
  374. ZeroMemory(reversed2, sizeof(reversed2));
  375. ZeroMemory(UploadFile, sizeof(UploadFile));
  376. }
  377. int TaskID; // 任务号
  378. unsigned short evtName; //0x0000:不筛选,0x0001:应用程序,0x0002:安全,0x0004:Setup,0x0008:系统,0x0100:自定义,0x00FF:全部类型(不包括自定义)
  379. unsigned short evtLevel; //0x0000:不筛选,0x0001:错误,0x0002:警告,0x0004:信息,0x0008:审计成功,0x0010:审计失败,0x00FF:全部类型
  380. unsigned short duration; //0x0000:任何时间,0x0001: 近1小时,0x0002:近12小时,0x0003:近1天,0x0004:近7天,0x0005:近30天,0x000F:自定义
  381. unsigned long long startTime; //当 duration == 0x000F 时有效,如下两项有效,startTime存储筛选的开始时间,endTime存储筛选的结束时间,具体到秒,需满足endTime >= startTime
  382. unsigned long long endTime;
  383. char cusEvtFileName[260]; //当 evtName == 0x0100 时有效,存储 日志名称
  384. char evtSrcEventName[260]; //存储事件日志来源,一般应用程序名称,比较常用的应该是“Application Error”,不指定请置为NULL或“”
  385. int reversed1; //保留字段
  386. char reversed2[260];
  387. char UploadFile[128]; // 第一次传入指定日志文件名, 续传时传入上传后保存文件名
  388. long long StartPos; // 起始位移,0表示从头开始
  389. long long MaxRetBytes; // 最大返回字节数
  390. };
  391. //[StructName("EvtLogA")]
  392. struct RvcUploadEventLogRet
  393. {
  394. int TaskID; // 任务号
  395. char UploadFile[128]; // 导出后文件名
  396. long long ZipFileLen; // 压缩后长度
  397. long long StartPos; // 起始位移,0表示从头开始
  398. long long NextPos; // 下次开始位移,如果为0表示已结束
  399. char LogData[0]; // 日志内容(变长字段)
  400. };
  401. /// <summary>
  402. /// 通过日期导出日志
  403. /// </summary>
  404. //[StructName("ULogBDR")]
  405. struct RvcUploadLogByDateReq
  406. {
  407. int TaskID; // 任务号
  408. char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
  409. char UploadFile[128]; // 第一次传入指定日志文件名, 续传时传入上传后保存文件名
  410. long long StartPos; // 起始位移,0表示从头开始
  411. long long MaxRetBytes; // 最大返回字节数
  412. };
  413. //[StructName("ULogBDA")]
  414. struct RvcUploadLogByDateRet
  415. {
  416. int TaskID; // 任务号
  417. char UploadFile[128]; // 导出后文件名
  418. long long ZipFileLen; // 压缩后长度
  419. long long StartPos; // 起始位移,0表示从头开始
  420. long long NextPos; // 下次开始位移,如果为0表示已结束
  421. char LogData[0]; // 日志内容(变长字段)
  422. };
  423. /// <summary>
  424. /// 上传日志
  425. /// </summary>
  426. //[StructName("UpldLogR")]
  427. struct RvcUploadLogReq
  428. {
  429. int TaskID; // 任务号
  430. char UploadFile[128]; // 第一次传入指定日志文件名, 续传时传入上传后保存文件名
  431. long long StartPos; // 起始位移,0表示从头开始
  432. long long MaxRetBytes; // 最大返回字节数
  433. };
  434. //[StructName("UpldLogA")]
  435. struct RvcUploadLogRet
  436. {
  437. int TaskID; // 任务号
  438. char UploadFile[128]; // 导出后文件名
  439. long long ZipFileLen; // 压缩后长度
  440. long long StartPos; // 起始位移,0表示从头开始
  441. long long NextPos; // 下次开始位移,如果为0表示已结束
  442. char LogData[0]; // 日志内容(变长字段)
  443. };
  444. /// <summary>
  445. /// 通过日期批量上传日志
  446. /// </summary>
  447. //[StructName("ULogsBDR")]
  448. struct RvcBatchUploadLogsByDateReq
  449. {
  450. int TaskID; // 任务号
  451. char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
  452. char UploadFile[1024]; // 批量导出日志名,以;分隔
  453. char ZipFileName[128]; // 压缩文件包名
  454. long long StartPos; // 起始位移,0表示从头开始
  455. long long MaxRetBytes; // 最大返回字节数
  456. };
  457. struct RvcBatchUploadLogsByDateReq2
  458. {
  459. int TaskID; // 任务号
  460. char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
  461. char UploadFile[512]; // 批量导出日志名,以;分隔
  462. char ZipFileName[128]; // 压缩文件包名
  463. long long StartPos; // 起始位移,0表示从头开始
  464. long long MaxRetBytes; // 最大返回字节数
  465. };
  466. //[StructName("ULogsBDA")]
  467. struct RvcBatchUploadLogsByDateRet
  468. {
  469. int TaskID; // 任务号
  470. char ZipFileName[128]; // 压缩文件包名
  471. long long ZipFileLen; // 压缩后长度
  472. long long StartPos; // 起始位移,0表示从头开始
  473. long long NextPos; // 下次开始位移,如果为0表示已结束
  474. char LogData[0]; // 日志内容(变长字段)
  475. };
  476. /// <summary>
  477. /// 批量上传日志
  478. /// </summary>
  479. //[StructName("UpdLogsR")]
  480. struct RvcBatchUploadLogsReq
  481. {
  482. int TaskID; // 任务号
  483. char UploadFile[1024]; // 批量导出日志名,以;分隔
  484. char ZipFileName[128]; // 压缩文件包名
  485. long long StartPos; // 起始位移,0表示从头开始
  486. long long MaxRetBytes; // 最大返回字节数
  487. };
  488. struct RvcBatchUploadLogsReq2
  489. {
  490. int TaskID; // 任务号
  491. char UploadFile[512]; // 批量导出日志名,以;分隔
  492. char ZipFileName[128]; // 压缩文件包名
  493. long long StartPos; // 起始位移,0表示从头开始
  494. long long MaxRetBytes; // 最大返回字节数
  495. };
  496. //[StructName("UpdLogsA")]
  497. struct RvcBatchUploadLogsRet
  498. {
  499. int TaskID; // 任务号
  500. char ZipFileName[128]; // 压缩文件包名
  501. long long ZipFileLen; // 压缩后长度
  502. long long StartPos; // 起始位移,0表示从头开始
  503. long long NextPos; // 下次开始位移,如果为0表示已结束
  504. char LogData[0]; // 日志内容(变长字段)
  505. };
  506. // 取消升级
  507. // [StructName("CancUpgR")]
  508. struct RvcCancelUpgradeReq
  509. {
  510. int TaskID; // 任务号
  511. char PackName[64]; // 包名称
  512. };
  513. // [StructName("CancUpgA")]
  514. struct RvcCancelUpgradeRet
  515. {
  516. int TaskID; // 任务号
  517. };
  518. #pragma pack()
  519. class CRemoteControllerCnn : public SpSecureClient
  520. {
  521. public:
  522. CRemoteControllerCnn(CEntityBase *pEntity, FSMBase *pFSM);
  523. ErrorCodeEnum SendCreateRemoteChannelReq();
  524. private:
  525. ~CRemoteControllerCnn(void);
  526. void OnDisconnect();
  527. void OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg);
  528. bool GetHostIPAddr(BYTE addr[4]);
  529. ErrorCodeEnum EnterMonitorMode();
  530. ErrorCodeEnum EnterMaintainMode(bool bLocalMaintain);
  531. ErrorCodeEnum EnterTerminalMode(int nRemotePort);
  532. ErrorCodeEnum HandleCreateRemoteChannelRet(const CSmartPointer<IPackage> &pRecvPkg);
  533. ErrorCodeEnum HandleEndRemoteModeReq(const CSmartPointer<IPackage> &pRecvPkg);
  534. ErrorCodeEnum HandleRestartShellReq(const CSmartPointer<IPackage> &pRecvPkg);
  535. ErrorCodeEnum HandleDelRunInfoLogReq(const CSmartPointer<IPackage> &pRecvPkg);
  536. ErrorCodeEnum HandleTest(const CSmartPointer<IPackage> &pRecvPkg);
  537. ErrorCodeEnum HandleRestartMachineReq(const CSmartPointer<IPackage> &pRecvPkg);
  538. ErrorCodeEnum HandleViewEntityStateReq(const CSmartPointer<IPackage> &pRecvPkg);
  539. ErrorCodeEnum HandleViewEntityConfigReq(const CSmartPointer<IPackage> &pRecvPkg);
  540. ErrorCodeEnum HandleViewDebugLogReq(const CSmartPointer<IPackage> &pRecvPkg);
  541. ErrorCodeEnum HandleOperateDiskReq(const CSmartPointer<IPackage> &pRecvPkg);
  542. ErrorCodeEnum HandleUploadEventLogReq(const CSmartPointer<IPackage> &pRecvPkg);
  543. ErrorCodeEnum HandleUploadLogByDateReq(const CSmartPointer<IPackage> &pRecvPkg);
  544. ErrorCodeEnum HandleBatchUploadLogsByDateReq(const CSmartPointer<IPackage> &pRecvPkg);
  545. ErrorCodeEnum HandleEnterMaintainModeReq(const CSmartPointer<IPackage> &pRecvPkg);
  546. ErrorCodeEnum HandleExitMaintainModeReq(const CSmartPointer<IPackage> &pRecvPkg);
  547. ErrorCodeEnum HandleUpgradePackReq(const CSmartPointer<IPackage> &pRecvPkg);
  548. ErrorCodeEnum HandleRollbackUpgradeReq(const CSmartPointer<IPackage> &pRecvPkg);
  549. ErrorCodeEnum HandleGetCurMaintainerReq(const CSmartPointer<IPackage> &pRecvPkg);
  550. ErrorCodeEnum HandleEnpowerMaintainerReq(const CSmartPointer<IPackage> &pRecvPkg);
  551. ErrorCodeEnum HandleTakeoverPowerReq(const CSmartPointer<IPackage> &pRecvPkg);
  552. ErrorCodeEnum HandleForceQuitMaintainReq(const CSmartPointer<IPackage> &pRecvPkg);
  553. ErrorCodeEnum HandleEditConfigReq(const CSmartPointer<IPackage> &pRecvPkg);
  554. ErrorCodeEnum HandleViewSysVarReq(const CSmartPointer<IPackage> &pRecvPkg);
  555. ErrorCodeEnum HandleViewEntityStateExReq(const CSmartPointer<IPackage> &pRecvPkg);
  556. ErrorCodeEnum HandleGetVersionReq(const CSmartPointer<IPackage> &pRecvPkg);
  557. ErrorCodeEnum HandleViewRunCfgReq(const CSmartPointer<IPackage> &pRecvPkg);
  558. ErrorCodeEnum HandleViewInstallLogReq(const CSmartPointer<IPackage> &pRecvPkg);
  559. ErrorCodeEnum HandleUploadLogReq(const CSmartPointer<IPackage> &pRecvPkg);
  560. ErrorCodeEnum ZipFile(LPCTSTR lpszZipArchive, LPCTSTR lpszSrcFile);
  561. ErrorCodeEnum BatchZipFiles(LPCTSTR lpszZipArchive, const list<string> &listSrcFiles);
  562. ErrorCodeEnum HandleBatchUploadLogsReq(const CSmartPointer<IPackage> &pRecvPkg);
  563. ErrorCodeEnum HandleCancelUpgradeReq(const CSmartPointer<IPackage> &pRecvPkg);
  564. private:
  565. FSMBase *m_pFSM;
  566. char m_chRemoteMode; // 当前模式: 初始状态N、监视O、维护M、终端控制T
  567. };