|
@@ -28,7 +28,11 @@ extern std::pair<bool, std::string> DetectActiveHttp(std::vector<std::string> ur
|
|
|
auto GetCefHead = [](CEntityBase* curEntity)->CSimpleStringA {
|
|
|
CSimpleStringA strChromiumPath, basePath;
|
|
|
curEntity->GetFunction()->GetPath("Base", basePath);
|
|
|
- strChromiumPath.Append("sudo ").Append(basePath);
|
|
|
+#if (defined _WIN32 || defined _WIN64)
|
|
|
+#else
|
|
|
+ strChromiumPath.Append("sudo ");
|
|
|
+#endif
|
|
|
+ strChromiumPath.Append(basePath);
|
|
|
strChromiumPath.Append(CSimpleStringA(SPLIT_SLASH_STR) + "bin" + SPLIT_SLASH_STR + "Chromium" + SPLIT_SLASH_STR);
|
|
|
return strChromiumPath;
|
|
|
};
|
|
@@ -68,6 +72,13 @@ namespace Chromium {
|
|
|
DbgEx("ReadConfigValue, get MachineType value failed");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ auto configRet = ReadCenterConfigStr();
|
|
|
+ m_UserMgrUrlStr = std::get<0>(configRet);
|
|
|
+ m_UserMgrUrlNoSidebarStr = std::get<1>(configRet);
|
|
|
+ m_UserMgrUrlNoSidebarMutiStr = std::get<2>(configRet);
|
|
|
+ m_UserMgrUrlFultureStr = std::get<3>(configRet);
|
|
|
+ m_UserMgrAdStr = std::get<4>(configRet);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -126,8 +137,7 @@ namespace Chromium {
|
|
|
|
|
|
std::pair<bool, std::string> CModTools::getAdUrl()
|
|
|
{
|
|
|
- auto configRet = ReadCenterConfigStr();
|
|
|
- auto AdUrl = std::get<4>(configRet);
|
|
|
+ auto AdUrl = m_UserMgrAdStr;
|
|
|
auto strUrl = detectUrls(AdUrl.GetData());
|
|
|
return strUrl.length() > 0 ? std::make_pair(true, strUrl) : std::make_pair(false, strUrl);
|
|
|
}
|
|
@@ -156,7 +166,9 @@ namespace Chromium {
|
|
|
case ERR_PAGE_REASON::MachineTypeError:
|
|
|
errPagePath.Append(CSimpleStringA("?reason=") + errType._to_string() + "&errmsg=双屏版只检测到单屏");
|
|
|
setLimitReason("breakdown");
|
|
|
- break;*/
|
|
|
+ break;
|
|
|
+ case ERR_PAGE_REASON::CameraConfig:
|
|
|
+ */
|
|
|
case ERR_PAGE_REASON::breakdown:
|
|
|
{
|
|
|
CSimpleStringA m_sAuthErrMsg, ts;
|
|
@@ -172,10 +184,10 @@ namespace Chromium {
|
|
|
errPagePath = CSimpleStringA("\'file:///") + errPagePath + CSimpleStringA("\'");
|
|
|
}
|
|
|
break;
|
|
|
- case ERR_PAGE_REASON::CameraConfig:
|
|
|
- case ERR_PAGE_REASON::disabled:
|
|
|
case ERR_PAGE_REASON::TerminalManagerKickOut:
|
|
|
case ERR_PAGE_REASON::TerminalManagerOff:
|
|
|
+ /*
|
|
|
+ case ERR_PAGE_REASON::disabled:
|
|
|
case ERR_PAGE_REASON::jobuncomplete:
|
|
|
errPagePath.Append(CSimpleStringA("?reason=") + errType._to_string());
|
|
|
|
|
@@ -185,6 +197,7 @@ namespace Chromium {
|
|
|
|
|
|
errPagePath = CSimpleStringA("\'file:///") + errPagePath + CSimpleStringA("\'");
|
|
|
break;
|
|
|
+ */
|
|
|
case ERR_PAGE_REASON::ErrNotify:
|
|
|
{
|
|
|
errPagePath.Append(CSimpleStringA("?reason=")).Append(std::get<0>(exParam).c_str()).Append("&errmsg=").Append(std::get<1>(exParam).c_str());
|
|
@@ -297,27 +310,26 @@ namespace Chromium {
|
|
|
this->m_pEntity->GetFunction()->GetPath("Base", strChromiumPath);
|
|
|
strChromiumPath.Append(CSimpleStringA(SPLIT_SLASH_STR) + "bin" + SPLIT_SLASH_STR + "Chromium" + SPLIT_SLASH_STR);
|
|
|
|
|
|
- //get major version
|
|
|
- CSystemStaticInfo sysInfo;
|
|
|
- m_pEntity->GetFunction()->GetSystemStaticInfo(sysInfo);
|
|
|
- auto majorVersion = sysInfo.MachineVersion.GetMajor();
|
|
|
+ CSimpleStringA strUrl;
|
|
|
+ bool isOpenExtend = false;
|
|
|
|
|
|
+ auto mainUrl = m_UserMgrUrlFultureStr;
|
|
|
+ strUrl = detectUrls(mainUrl.GetData()).c_str();
|
|
|
+ //detect main url
|
|
|
+ strUrl = mainUrl;
|
|
|
+ isOpenExtend = false;
|
|
|
|
|
|
- auto configRet = ReadCenterConfigStr();
|
|
|
+ return std::make_pair(isOpenExtend, strUrl.GetData());
|
|
|
+ }
|
|
|
+
|
|
|
+ std::pair<bool, std::string> CModTools::getExtendUrl()
|
|
|
+ {
|
|
|
CSimpleStringA strUrl;
|
|
|
- bool isOpenExtend = false;
|
|
|
- if (majorVersion >= 5)
|
|
|
- {
|
|
|
- auto mainUrl = std::get<3>(configRet);
|
|
|
- strUrl = detectUrls(mainUrl.GetData()).c_str();
|
|
|
- //detect main url
|
|
|
- strUrl = mainUrl;
|
|
|
- isOpenExtend = false;
|
|
|
- }
|
|
|
- else if (std::get<1>(configRet).Compare(""))
|
|
|
+
|
|
|
+ if (m_UserMgrUrlNoSidebarStr.Compare(""))
|
|
|
{
|
|
|
- auto mainUrl = std::get<1>(configRet);
|
|
|
- auto exUrl = std::get<2>(configRet);
|
|
|
+ auto mainUrl = m_UserMgrUrlNoSidebarStr;
|
|
|
+ auto exUrl = m_UserMgrUrlNoSidebarMutiStr;
|
|
|
auto t_Arr = exUrl.Split('|');
|
|
|
std::vector<std::string> urlArr;
|
|
|
urlArr.push_back(mainUrl.GetData());
|
|
@@ -329,15 +341,11 @@ namespace Chromium {
|
|
|
strUrl = checkRet.second.c_str();
|
|
|
else
|
|
|
strUrl = mainUrl;
|
|
|
- isOpenExtend = true;
|
|
|
}
|
|
|
else
|
|
|
- {
|
|
|
- strUrl = std::get<0>(configRet);
|
|
|
- isOpenExtend = false;
|
|
|
- }
|
|
|
+ strUrl = m_UserMgrUrlStr;
|
|
|
|
|
|
- return std::make_pair(isOpenExtend, strUrl.GetData());
|
|
|
+ return std::make_pair(strUrl.GetLength() > 0, strUrl.GetData());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -364,7 +372,6 @@ namespace Chromium {
|
|
|
std::string CModTools::generateCefclientCmd(bool isExtend, std::string mainUrl)
|
|
|
{
|
|
|
CSimpleStringA strChromiumPath = GetCefHead(this->m_pEntity), strCmdLine = "";
|
|
|
-
|
|
|
strCmdLine.Append(strChromiumPath).Append(CEFCLIENT_NAME).Append(" --url=").Append(mainUrl.c_str());
|
|
|
|
|
|
if (isExtend)
|
|
@@ -398,25 +405,37 @@ namespace Chromium {
|
|
|
return strCmdLine.GetData();
|
|
|
}
|
|
|
|
|
|
- void CModTools::openAdPage() {
|
|
|
- //get major version
|
|
|
- CSystemStaticInfo sysInfo;
|
|
|
- m_pEntity->GetFunction()->GetSystemStaticInfo(sysInfo);
|
|
|
- auto majorVersion = sysInfo.MachineVersion.GetMajor();
|
|
|
- if (majorVersion >= 5)
|
|
|
+ std::string CModTools::generateMainCmd(std::string mainUrl)
|
|
|
+ {
|
|
|
+ return generateCefclientCmd(false, mainUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+ std::string CModTools::generateExtendCmd(std::string extendUrl)
|
|
|
+ {
|
|
|
+ return generateCefclientCmd(true, extendUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+ std::pair<bool, std::string> CModTools::openAdPage() {
|
|
|
+ static bool adOpen = false;
|
|
|
+ if (adOpen)//only open ad in first time
|
|
|
+ return std::make_pair(false, "open AdPage failed! Already exist.");
|
|
|
+
|
|
|
+ auto AdUrlRet = getAdUrl();
|
|
|
+ if (AdUrlRet.first)
|
|
|
{
|
|
|
- auto AdUrlRet = getAdUrl();
|
|
|
- if (AdUrlRet.first)
|
|
|
+ auto strAdCmd = generateAdCmd(AdUrlRet.second);
|
|
|
+ auto openAdRet = openCef(strAdCmd);
|
|
|
+ if (Error_Succeed != openAdRet.first)
|
|
|
+ return std::make_pair(false, "open Ad err!");
|
|
|
+ else
|
|
|
{
|
|
|
- auto strAdCmd = generateAdCmd(AdUrlRet.second);
|
|
|
- auto openAdRet = openCef(strAdCmd);
|
|
|
- if (Error_Succeed != openAdRet.first)
|
|
|
- DbgEx("open Ad err!");
|
|
|
+ adOpen = true;
|
|
|
+ return std::make_pair(true, "");
|
|
|
}
|
|
|
- else
|
|
|
- DbgEx("StartChromiumBrowser Ad url err!");
|
|
|
+
|
|
|
}
|
|
|
- //open ad do not affect the result of cef open
|
|
|
+ else
|
|
|
+ return std::make_pair(false, "StartChromiumBrowser Ad url err!");
|
|
|
}
|
|
|
|
|
|
|
|
@@ -426,28 +445,43 @@ namespace Chromium {
|
|
|
std::shared_ptr<void> delHandleFun((void*)0, [&](void*) {
|
|
|
g_mutexFreerdp.unlock();
|
|
|
});
|
|
|
- static bool adOpen = false;
|
|
|
- if (!adOpen) {//only open ad in first time
|
|
|
- openAdPage();
|
|
|
- adOpen = true;
|
|
|
- }
|
|
|
|
|
|
- if (reason._to_integral() == ERR_PAGE_REASON::normal)
|
|
|
+ if (reason._to_integral() == ERR_PAGE_REASON::main)
|
|
|
{
|
|
|
auto mainUrlRet = getMainUrl();
|
|
|
|
|
|
if (0 == mainUrlRet.second.length())
|
|
|
{
|
|
|
- DbgEx("StartChromiumBrowser get url failed!");
|
|
|
+ DbgEx("StartChromiumBrowser get %s url failed!", reason._to_string());
|
|
|
return std::make_pair(Error_Unexpect, 0);
|
|
|
}
|
|
|
|
|
|
- auto strCmdLine = generateCefclientCmd(mainUrlRet.first, mainUrlRet.second);
|
|
|
+ auto strCmdLine = generateMainCmd(mainUrlRet.second);
|
|
|
+
|
|
|
+ auto openCefRet = openCef(strCmdLine, true);//with guard
|
|
|
+ if (Error_Succeed == openCefRet.first)
|
|
|
+ return std::make_pair(Error_Succeed, openCefRet.second);
|
|
|
+ }
|
|
|
+ else if (reason._to_integral() == ERR_PAGE_REASON::extend)
|
|
|
+ {
|
|
|
+ auto extendUrlRet = getExtendUrl();
|
|
|
+ if (!extendUrlRet.first)
|
|
|
+ {
|
|
|
+ DbgEx("StartChromiumBrowser get %s url failed!", reason._to_string());
|
|
|
+ return std::make_pair(Error_Unexpect, 0);
|
|
|
+ }
|
|
|
|
|
|
- auto openCefRet = openCef(strCmdLine, true);
|
|
|
+ auto strCmdLine = generateExtendCmd(extendUrlRet.second);
|
|
|
+ auto openCefRet = openCef(strCmdLine, true);//with guard
|
|
|
if (Error_Succeed == openCefRet.first)
|
|
|
return std::make_pair(Error_Succeed, openCefRet.second);
|
|
|
}
|
|
|
+ else if (reason._to_integral() == ERR_PAGE_REASON::Ad)
|
|
|
+ {
|
|
|
+ auto AdRet = openAdPage();
|
|
|
+ if (!AdRet.first) DbgEx("%s", AdRet.second.c_str());
|
|
|
+ return std::make_pair(AdRet.first ? Error_Succeed : Error_Unexpect, 0);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
//open err page
|