RemoteControllerCnn.h 17 KB

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