CModTools.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #ifndef CHROMIUM_CMODTOOLS_H
  2. #define CHROMIUM_CMODTOOLS_H
  3. #include "precompile.h"
  4. #include "SpBase.h"
  5. #define CHROMIUM_TIMER_ID 0xF001
  6. #include <tuple>
  7. #include "guitask/enum.h"
  8. #include <memory>
  9. //#include <boost/serialization/singleton.hpp>
  10. //using boost::serialization::singleton;
  11. #include "guitask/singleton.hpp"
  12. #if (defined _WIN32 || defined _WIN64)
  13. #define CEFCLIENT_NAME "cefclient.exe"
  14. #else
  15. #define CEFCLIENT_NAME "cefclient"
  16. #endif
  17. namespace Chromium {
  18. BETTER_ENUM(ERR_PAGE_REASON, int, CameraConfig, CardStoreIsBusy, MachineTypeError, TerminalManagerKickOut,
  19. TerminalManagerOff, breakdown, warnPrompt, disabled, jobuncomplete, ErrNotify, main, Ad, extend, OutsideRequest, SpecialPageFromOtherEntity
  20. , Install, startup, performance_monitor, audioErr, redirect)
  21. BETTER_ENUM(PAGE_TYPE, int, Deploy, CameraConfig, TerminalManager, errPage, Ad, slv, init, TradeManager
  22. , breakdown, extend, CardStoreIsBusy, Install, startup, performance_monitor)
  23. BETTER_ENUM(TradeManageCodeEnum, int, Undefined, Trade, JobUncomplete, Disabled)
  24. BETTER_ENUM(TerminalManageCodeEnum, int, Off, On, KickOut)
  25. class CModTools : public singleton_t::singleton<CModTools>
  26. {
  27. private:
  28. CEntityBase* m_pEntity;
  29. public:
  30. void InitCModTools(CEntityBase* pEntity);
  31. //绝望,c++98没有初始化列表
  32. std::pair<ErrorCodeEnum, int> StartChromiumBrowser(ERR_PAGE_REASON reason = ERR_PAGE_REASON::main,
  33. std::tuple < std::string, std::string> normalParam = std::tuple <std::string, std::string>("", ""),
  34. std::tuple<std::string, std::string, std::string, DWORD, DWORD> exParam = std::tuple<std::string, std::string, std::string, DWORD, DWORD>("", "", "", 0, 0));
  35. std::pair<ErrorCodeEnum, int> startCommonPage(std::string name, std::string url, int width, int height, int point_x, int point_y, std::string top);
  36. void stopCommonPage(std::string name);
  37. void StopChromiumBrowser(ERR_PAGE_REASON reason, bool stopAll = false);
  38. void StopChromiumBrowser_security(ERR_PAGE_REASON reason, int times);
  39. void StopSingleChromiumBrowserByName(std::string cefName);
  40. bool killAllChromium(); //通过taskkill 关闭掉所有的cefclient
  41. void killAllChromiumByThread(int seconds);
  42. bool killChromiumByName(std::string name);
  43. bool RestartProxyServer();
  44. std::string getMagicStr() { return m_magicStr; };
  45. int getUosBrowser() { return m_UseUOSBrowser; };
  46. bool IsConfigWork()
  47. {
  48. return ConfigManager::getInstance().m_UserMgrUrlFultureStr.GetLength() > 0;
  49. }
  50. CSimpleString getFultureUrl() {
  51. return ConfigManager::getInstance().m_UserMgrUrlFultureStr;
  52. }
  53. void lockGuard();
  54. void unlockGuard();
  55. void SetSpecialPageParam(std::string t_name, std::string t_size, std::string t_point, int t_top)
  56. {
  57. m_specialPage_temp_name = t_name;
  58. m_specialPage_temp_size = t_size;
  59. m_specialPage_temp_point = t_point;
  60. m_specialPage_temp_top = t_top;
  61. }
  62. private:
  63. std::tuple<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA> ReadCenterConfigStr(CSimpleStringA entityName = "");
  64. std::pair<bool, std::string> getMainUrl();
  65. std::pair<bool, std::string> getAdUrl();
  66. std::pair<bool, std::string> getErrUrl(ERR_PAGE_REASON errType = ERR_PAGE_REASON::breakdown);
  67. std::pair<bool, std::string> getExtendUrl();
  68. #if defined(RVC_OS_WIN)
  69. std::string generateCefclientCmd(bool isExtend, std::string mainUrl);
  70. #endif //RVC_OS_WIN
  71. std::string generateMainCmd(std::string mainUrl);
  72. std::string generateInstallCmd(std::string installUrl);
  73. std::string generateAdCmd(std::string AdUrl);
  74. std::string generateSpecialPageFromOtherEntityCmd(std::string mainUrl);
  75. std::string generateCommonPage(std::string url, std::string name, int width, int height, int point_x, int point_y, int top);
  76. #if defined(RVC_OS_LINUX)
  77. //pagetype: 0: 首页全屏, 1:副屏全屏,2:错误页;3:外部调用
  78. std::string generateBrowserCMDForEverything(const std::string& url, int pageType, bool ignoreSecurity);
  79. #endif //RVC_OS_LINUX
  80. /** [Gifur@2022125]*/
  81. /**n [Gifur@2022228]*/
  82. /*!
  83. * @brief
  84. * @param[in]
  85. * nBrowswerType:0:cefclientt,1:UOS;2:UOS2
  86. * nMonitorType:0:通用,1主屏,2:副屏
  87. * @param[out]
  88. * @return :
  89. */
  90. std::string getAdditionalUOSBrowserSettings(int nBrowswerType, int nMonitorType = 0);
  91. std::pair<bool, std::string> GenerateErrPage(ERR_PAGE_REASON errType,
  92. std::tuple < std::string, std::string> norParam, std::tuple<std::string, std::string, std::string, DWORD, DWORD> exParam);
  93. #if defined(_MSC_VER)
  94. std::pair<ErrorCodeEnum, int> openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = true);
  95. #else
  96. std::pair<ErrorCodeEnum, int> openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = false);
  97. #endif //_MSC_VER
  98. void cefClientGuardian(std::string cmdline);
  99. std::pair<bool, std::string> openAdPage();
  100. /** 应该跟健康约定了,准入不过,通过监护进程触发框架重启,这里默认框架启动时间再加上10分钟 [Gifur@2022324]*/
  101. std::string GetSpShellNextRebootTime();
  102. void setLimitReason(const char* reason);
  103. int StandardToStamp(const char* str_time, bool dateOnly);
  104. bool CheckTradeRecord();
  105. void InitBrowserUseMode();
  106. //0: 检测失败;1:使用旧版UOS浏览器uos-browser-stable ;2:使用新版UOS浏览器org.deepin.browser
  107. int ToGetUOSBrowserType();
  108. void UploadBrowserInfo(int usingType, LPCTSTR info);
  109. bool findRestartCode(DWORD userCode);//if true, restart the terminal
  110. DWORD spiltErrMsg(std::string errMsg);//split the errmsg to usercode
  111. public:
  112. bool notifyExist, breakdownExist, m_isAdOpen; //if notify exist, do not start other err page
  113. private:
  114. std::string m_magicStr;
  115. /** 0:使用CefClient,1:使用旧版UOS浏览器uos-browser-stable ;2:使用新版UOS浏览器org.deepin.browser [Gifur@2022228]*/
  116. int m_UseUOSBrowser;
  117. bool m_isGuardMainBrowser;
  118. //for special page
  119. std::string m_specialPage_temp_name, m_specialPage_temp_size, m_specialPage_temp_point;
  120. int m_specialPage_temp_top;
  121. };
  122. template<class T>
  123. class TimerOutHelper : public ITimerListener
  124. {
  125. public:
  126. typedef void (T::* FuncTimer)(void* pUserdata);
  127. TimerOutHelper(T* p, FuncTimer pTimerFunc, void* pUserData, bool bDeleteSelf = false)
  128. : m_pObject(p), m_pUserData(pUserData), m_pTimer(pTimerFunc), m_bDeleteSelf(bDeleteSelf) {}
  129. virtual void OnTimeout(DWORD dwTimerID)
  130. {
  131. (m_pObject->*m_pTimer)(m_pUserData);
  132. if (m_bDeleteSelf)
  133. delete this;
  134. }
  135. private:
  136. void* m_pUserData;
  137. T* m_pObject;
  138. FuncTimer m_pTimer;
  139. bool m_bDeleteSelf;
  140. };
  141. }
  142. #endif