123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652 |
- #pragma once
- #include "SpSecureClient.h"
- #include "SpFSM.h"
- #include <list>
- #include <string>
- using namespace std;
- #pragma pack(1)
- // 请求建立远程控制通道
- // [StructName("RemoteR")]
- struct RvcCreateChannelReq
- {
- char TerminalNo[16]; // 终端号
- BYTE IPAddr[4]; // 终端IP地址,用于IP绑定
- DWORD LifeID; // 生命标识,用户判断终端是否已重启
- };
- //[StructName("RemoteA")]
- struct RvcCreateChannelRet
- {
- char AgentID[16]; // 远程用户
- char ChannelID[20]; // 通道标识
- };
- // 查看实体状态
- // [StructName("ViewEntR")]
- struct RvcViewEntityReq
- {
- int TaskID; // 任务号
- };
- // [StructName("ViewEnA1")]
- struct RvcViewEntityRet1
- {
- int TaskID; // 任务号
- };
- // [StructName("ViewEnA2")]
- struct RvcViewEntityRet2
- {
- char EntityName[32]; // 实体名
- int EntityState; // 具体定义参见spbase.h的EntityStateEnum
- int ProcessID; // 进程号
- int EntityID; // 实体号
- int UsedMemory; // 占用内存
- };
- // 查看实体状态(返回是否有静态配置和运行时配置)
- // [StructName("ViEnExR")]
- struct RvcViewEntityExReq
- {
- int TaskID; // 任务号
- };
- // [StructName("ViEnExA1")]
- struct RvcViewEntityExRet1
- {
- int TaskID; // 任务号
- };
- // [StructName("ViEnExA2")]
- struct RvcViewEntityExRet2
- {
- char EntityName[32]; // 实体名
- int EntityState; // 具体定义参见spbase.h的EntityStateEnum
- int ProcessID; // 进程号
- int EntityID; // 实体号
- int UsedMemory; // 占用内存
- bool HasConfig; // 是否有实体配置
- bool HasRunCfg; // 是否有运行时配置
- };
- // 查询实体配置文件
- // [StructName("ViewCfgR")]
- struct RvcViewConfigReq
- {
- int TaskID; // 任务号
- char EntityName[32]; // 实体名
- };
- //[StructName("ViewCfgA")]
- struct RvcViewConfigRet
- {
- int TaskID; // 任务号
- char ConfigData[0]; // 配置文件(变长字段)
- };
- // 查询dbg日志
- //[StructName("ViewDbgR")]
- struct RvcViewDbgReq
- {
- int TaskID; // 任务号
- char EntityName[32]; // 实体名
- char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- //[StructName("ViewDbgA")]
- struct RvcViewDbgRet
- {
- int TaskID; // 任务号
- char EntityName[32]; // 实体名
- char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
- long long NextPos; // 下次开始位移,如果为0表示已结束
- long long FileLength; // 当前日志文件长度
- char LogData[0]; // 日志内容(变长字段)
- };
- // 操作磁盘文件
- //[StructName("OprDiskR")]
- struct RvcOperateDiskReq
- {
- int TaskID; // 任务号
- char current[260]; //路径,windows最大长度260
- int mode;
- int attribute;
- char content[260];
- int filter1;
- char filter2[260];
- int attachment1;
- char attachment2[260];
- };
- // [StructName("OprDiskJA")]
- struct RvcOperateDiskJsonRet
- {
- int TaskID;
- long long jsonLength;
- char jsonData[0];
- };
- #if !(defined _WIN32 || defined _WIN64)
- #define _TRUNCATE ((size_t)-1)
- int strncpy_s(char* _Destination, size_t _SizeInBytes, char const* _Source, size_t _MaxCount);
- int strncpy_s(char* _Destination, char const* _Source, size_t _MaxCount);
- #endif
- #include "remoteBase.h"
- // [StructName("OprDiskA2")]
- class RvcOperateDiskRet2
- {
- public:
- RvcOperateDiskRet2()
- :fileSize(0), ftCreate(0), ftModified(0), ftAccess(0), fileAttribute(0), forbidAttributes(0), reserved1(0)
- {
- ZeroMemory(fileName, sizeof(fileName));
- ZeroMemory(reserved2, sizeof(reserved2));
- }
- RvcOperateDiskRet2(const CSimpleStringA &oldName, const unsigned long long &oldSize, const unsigned long long &oldCreate, const unsigned long long &oldModified,
- const unsigned long long &oldAccess, const unsigned int &oldAttribute, const unsigned int &oldForbidAttributes, const int &oldReserved1, const CSimpleStringA &oldReserved2)
- :fileSize(oldSize), ftCreate(oldCreate), ftModified(oldModified), ftAccess(oldAccess), fileAttribute(oldAttribute), forbidAttributes(oldForbidAttributes), reserved1(oldReserved1)
- {
- ZeroMemory(fileName, sizeof(fileName));
- strncpy_s(fileName, sizeof(fileName), (const char*)oldName, _TRUNCATE);
- ZeroMemory(reserved2, sizeof(reserved2));
- strncpy_s(reserved2, sizeof(reserved2), (const char*)oldReserved2, _TRUNCATE);
- }
- public:
- char fileName[260];
- unsigned long long fileSize;
- unsigned long long ftCreate;
- unsigned long long ftModified;
- unsigned long long ftAccess;
- unsigned int fileAttribute;
- unsigned int forbidAttributes;
- int reserved1;
- char reserved2[260];
- };
- //[StructName("OprDiskA1")]
- struct RvcOperateDiskRet1
- {
- int TaskID; // 任务号
- int result;
- char header[260];
- int attachment1;
- RvcOperateDiskRet1(const int &oldID, const int &oldResult, const CSimpleStringA &oldHeader, const int &oldAttach)
- :TaskID(oldID), result(oldResult)
- {
- ZeroMemory(header, sizeof(header));
- strncpy_s(header, sizeof(header), (const char*)oldHeader, _TRUNCATE);
- }
- };
- // 进入维护模式
- // [StructName("EnterMMR")]
- struct RvcEnterMaintainModeReq
- {
- int TaskID; // 任务号
- };
- // [StructName("EnterMMA")]
- struct RvcEnterMaintainModeRet
- {
- int TaskID; // 任务号
- };
- // 退出维护模式
- // [StructName("ExitMMR")]
- struct RvcExitMaintainModeReq
- {
- int TaskID; // 任务号
- };
- // [StructName("ExitMMA")]
- struct RvcExitMaintainModeRet
- {
- int TaskID; // 任务号
- };
- // 手工升级
- // [StructName("UpgPackR")]
- struct RvcUpgradePackReq
- {
- int TaskID; // 任务号
- char PackName[64]; // 包名称
- };
- // [StructName("UpgPackA")]
- struct RvcUpgradePackRet
- {
- int TaskID; // 任务号
- };
- // 查询当前维护用户
- //[StructName("GetUserR")]
- struct RvcGetUserReq
- {
- int TaskID; // 任务号
- };
- // [StructName("GetUserA")]
- struct RvcGetUserRet
- {
- int TaskID; // 任务号
- char UserID[16]; // 用户号
- char UserName[16]; // 用户名称
- char CurRight[16]; // 用户权限
- char Authorizer[16]; // 授权人
- unsigned int BeginTime; // 开始时间
- };
- // 提升当前维护用户
- // [StructName("EnpowerR")]
- struct RvcEnpowerUserReq
- {
- int TaskID; // 任务号
- char UserID[16]; // 用户号
- };
- // [StructName("EnpowerA")]
- struct RvcEnpowerUserRet
- {
- int TaskID; // 任务号
- };
- // 降级当前维护用户
- // [StructName("TakeovrR")]
- struct RvcTakeoverPowerReq
- {
- int TaskID; // 任务号
- char UserID[16]; // 用户号
- };
- // [StructName("TakeovrA")]
- struct RvcTakeoverPowerRet
- {
- int TaskID; // 任务号
- };
- // 强制当前维护用户退出
- // [StructName("ForceQtR")]
- struct RvcForceQuitReq
- {
- int TaskID; // 任务号
- };
- //[StructName("ForceQtA")]
- struct RvcForceQuitRet
- {
- int TaskID; // 任务号
- };
- // 修改实体配置文件
- // [StructName("EditCfgR")]
- struct RvcEditConfigReq
- {
- int TaskID;
- char EditType; // "A"增加;"U"修改;“D" 删除
- char EntityName[32]; // 配置文件名
- char Section[32]; // 配置节
- char Key[32]; // 配置项
- char Value[256]; // 值
- };
- // [StructName("EditCfgA")]
- struct RvcEditConfigRet
- {
- int TaskID;
- };
- // 查询终端系统变量
- // [StructName("ViewVarR")]
- struct RvcViewSysVarReq
- {
- int TaskID;
- };
- // [StructName("ViewVarA")]
- struct RvcViewSysVarRet
- {
- int TaskID;
- char VarName[32]; // 变量名称
- char VarValue; // 变量值
- };
- // 手工回滚
- //[StructName("RollbakR")]
- struct RvcRollbackReq
- {
- int TaskID; // 任务号
- };
- //[StructName("RollbakA")]
- struct RvcRollbackRet
- {
- int TaskID; // 任务号
- };
- // 重启机器
- //[StructName("RestOR")]
- struct RvcRestartMachineReq
- {
- int TaskID; // 任务号
- };
- //[StructName("RestOA")]
- struct RvcRestartMachineRet
- {
- int TaskID; // 任务号
- };
- // 重启Shell
- //[StructName("RestSR")]
- struct RvcRestartShellReq
- {
- int TaskID; // 任务号
- };
- //[StructName("RestSA")]
- struct RvcRestartShellRet
- {
- int TaskID; // 任务号
- };
- // 删除RunInfo日志
- struct RvcDelRunInfoLogReq
- {
- int TaskID; // 任务号
- char logName[128];
- };
- struct RvcDelRunInfoLogRet
- {
- int TaskID; // 任务号
- };
- // 查询当前活动版本
- //[StructName("GetVerR")]
- struct RvcGetActiveVerReq
- {
- int TaskID; // 任务号
- };
- //[StructName("GetVerA")]
- struct RvcGetActiveVerRet
- {
- int TaskID; // 任务号
- char Version[32]; // 活动版本
- };
- // 查询实体配置文件
- //[StructName("VRunCfgR")]
- struct RvcViewRunCfgReq
- {
- int TaskID; // 任务号
- char ConfigName[32]; // 配置文件
- };
- //[StructName("VRunCfgA")]
- struct RvcViewRunCfgRet
- {
- int TaskID; // 任务号
- char ConfigData[0]; // 配置文件(变长字段)
- };
- // 查询实体配置文件
- //[StructName("VPkgLogR")]
- struct RvcViewInstallLogReq
- {
- int TaskID; // 任务号
- char InstallLog[32]; // 配置文件
- };
- //[StructName("VPkgLogA")]
- struct RvcViewInstallLogRet
- {
- int TaskID; // 任务号
- char LogData[0]; // 配置文件(变长字段)
- };
- /// <summary>
- /// 导出系统日志
- /// </summary>
- //[StructName("EvtLogR")]
- struct RvcUploadEventLogReq
- {
- RvcUploadEventLogReq()
- :TaskID(0), evtName(0), duration(0), startTime(0), endTime(0), reversed1(0), StartPos(0), MaxRetBytes(0)
- {
- ZeroMemory(cusEvtFileName, sizeof(cusEvtFileName));
- ZeroMemory(evtSrcEventName, sizeof(evtSrcEventName));
- ZeroMemory(reversed2, sizeof(reversed2));
- ZeroMemory(UploadFile, sizeof(UploadFile));
- }
- int TaskID; // 任务号
- unsigned short evtName; //0x0000:不筛选,0x0001:应用程序,0x0002:安全,0x0004:Setup,0x0008:系统,0x0100:自定义,0x00FF:全部类型(不包括自定义)
- unsigned short evtLevel; //0x0000:不筛选,0x0001:错误,0x0002:警告,0x0004:信息,0x0008:审计成功,0x0010:审计失败,0x00FF:全部类型
- unsigned short duration; //0x0000:任何时间,0x0001: 近1小时,0x0002:近12小时,0x0003:近1天,0x0004:近7天,0x0005:近30天,0x000F:自定义
- unsigned long long startTime; //当 duration == 0x000F 时有效,如下两项有效,startTime存储筛选的开始时间,endTime存储筛选的结束时间,具体到秒,需满足endTime >= startTime
- unsigned long long endTime;
- char cusEvtFileName[260]; //当 evtName == 0x0100 时有效,存储 日志名称
- char evtSrcEventName[260]; //存储事件日志来源,一般应用程序名称,比较常用的应该是“Application Error”,不指定请置为NULL或“”
- int reversed1; //保留字段
- char reversed2[260];
- char UploadFile[128]; // 第一次传入指定日志文件名, 续传时传入上传后保存文件名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- //[StructName("EvtLogA")]
- struct RvcUploadEventLogRet
- {
- int TaskID; // 任务号
- char UploadFile[128]; // 导出后文件名
- long long ZipFileLen; // 压缩后长度
- long long StartPos; // 起始位移,0表示从头开始
- long long NextPos; // 下次开始位移,如果为0表示已结束
- char LogData[0]; // 日志内容(变长字段)
- };
- /// <summary>
- /// 通过日期导出日志
- /// </summary>
- //[StructName("ULogBDR")]
- struct RvcUploadLogByDateReq
- {
- int TaskID; // 任务号
- char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
- char UploadFile[128]; // 第一次传入指定日志文件名, 续传时传入上传后保存文件名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- //[StructName("ULogBDA")]
- struct RvcUploadLogByDateRet
- {
- int TaskID; // 任务号
- char UploadFile[128]; // 导出后文件名
- long long ZipFileLen; // 压缩后长度
- long long StartPos; // 起始位移,0表示从头开始
- long long NextPos; // 下次开始位移,如果为0表示已结束
- char LogData[0]; // 日志内容(变长字段)
- };
- /// <summary>
- /// 上传日志
- /// </summary>
- //[StructName("UpldLogR")]
- struct RvcUploadLogReq
- {
- int TaskID; // 任务号
- char UploadFile[128]; // 第一次传入指定日志文件名, 续传时传入上传后保存文件名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- //[StructName("UpldLogA")]
- struct RvcUploadLogRet
- {
- int TaskID; // 任务号
- char UploadFile[128]; // 导出后文件名
- long long ZipFileLen; // 压缩后长度
- long long StartPos; // 起始位移,0表示从头开始
- long long NextPos; // 下次开始位移,如果为0表示已结束
- char LogData[0]; // 日志内容(变长字段)
- };
- /// <summary>
- /// 通过日期批量上传日志
- /// </summary>
- //[StructName("ULogsBDR")]
- struct RvcBatchUploadLogsByDateReq
- {
- int TaskID; // 任务号
- char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
- char UploadFile[1024]; // 批量导出日志名,以;分隔
- char ZipFileName[128]; // 压缩文件包名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- struct RvcBatchUploadLogsByDateReq2
- {
- int TaskID; // 任务号
- char ViewDate[10]; // 查看对应日期的日志,空表示当天,如"20131218"
- char UploadFile[512]; // 批量导出日志名,以;分隔
- char ZipFileName[128]; // 压缩文件包名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- //[StructName("ULogsBDA")]
- struct RvcBatchUploadLogsByDateRet
- {
- int TaskID; // 任务号
- char ZipFileName[128]; // 压缩文件包名
- long long ZipFileLen; // 压缩后长度
- long long StartPos; // 起始位移,0表示从头开始
- long long NextPos; // 下次开始位移,如果为0表示已结束
- char LogData[0]; // 日志内容(变长字段)
- };
- /// <summary>
- /// 批量上传日志
- /// </summary>
- //[StructName("UpdLogsR")]
- struct RvcBatchUploadLogsReq
- {
- int TaskID; // 任务号
- char UploadFile[1024]; // 批量导出日志名,以;分隔
- char ZipFileName[128]; // 压缩文件包名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- struct RvcBatchUploadLogsReq2
- {
- int TaskID; // 任务号
- char UploadFile[512]; // 批量导出日志名,以;分隔
- char ZipFileName[128]; // 压缩文件包名
- long long StartPos; // 起始位移,0表示从头开始
- long long MaxRetBytes; // 最大返回字节数
- };
- //[StructName("UpdLogsA")]
- struct RvcBatchUploadLogsRet
- {
- int TaskID; // 任务号
- char ZipFileName[128]; // 压缩文件包名
- long long ZipFileLen; // 压缩后长度
- long long StartPos; // 起始位移,0表示从头开始
- long long NextPos; // 下次开始位移,如果为0表示已结束
- char LogData[0]; // 日志内容(变长字段)
- };
- // 取消升级
- // [StructName("CancUpgR")]
- struct RvcCancelUpgradeReq
- {
- int TaskID; // 任务号
- char PackName[64]; // 包名称
- };
- // [StructName("CancUpgA")]
- struct RvcCancelUpgradeRet
- {
- int TaskID; // 任务号
- };
- #pragma pack()
- class CRemoteControllerCnn : public SpSecureClient
- {
- public:
- CRemoteControllerCnn(CEntityBase *pEntity, FSMBase *pFSM);
- ErrorCodeEnum SendCreateRemoteChannelReq();
- private:
- ~CRemoteControllerCnn(void);
- void OnDisconnect();
- void OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg);
- bool GetHostIPAddr(BYTE addr[4]);
-
- ErrorCodeEnum EnterMonitorMode();
- ErrorCodeEnum EnterMaintainMode(bool bLocalMaintain);
- ErrorCodeEnum EnterTerminalMode(int nRemotePort);
- ErrorCodeEnum HandleCreateRemoteChannelRet(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleEndRemoteModeReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleRestartShellReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleDelRunInfoLogReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleTest(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleRestartMachineReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleViewEntityStateReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleViewEntityConfigReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleViewDebugLogReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleOperateDiskReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleUploadEventLogReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleUploadLogByDateReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleBatchUploadLogsByDateReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleEnterMaintainModeReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleExitMaintainModeReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleUpgradePackReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleRollbackUpgradeReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleGetCurMaintainerReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleEnpowerMaintainerReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleTakeoverPowerReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleForceQuitMaintainReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleEditConfigReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleViewSysVarReq(const CSmartPointer<IPackage> &pRecvPkg);
-
- ErrorCodeEnum HandleViewEntityStateExReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleGetVersionReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleViewRunCfgReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleViewInstallLogReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleUploadLogReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum ZipFile(LPCTSTR lpszZipArchive, LPCTSTR lpszSrcFile);
- ErrorCodeEnum BatchZipFiles(LPCTSTR lpszZipArchive, const list<string> &listSrcFiles);
- ErrorCodeEnum HandleBatchUploadLogsReq(const CSmartPointer<IPackage> &pRecvPkg);
- ErrorCodeEnum HandleCancelUpgradeReq(const CSmartPointer<IPackage> &pRecvPkg);
- private:
- FSMBase *m_pFSM;
- char m_chRemoteMode; // 当前模式: 初始状态N、监视O、维护M、终端控制T
- };
|