本文整理汇总了C++中IEspContext::validateFeatureAccess方法的典型用法代码示例。如果您正苦于以下问题:C++ IEspContext::validateFeatureAccess方法的具体用法?C++ IEspContext::validateFeatureAccess怎么用?C++ IEspContext::validateFeatureAccess使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEspContext
的用法示例。
在下文中一共展示了IEspContext::validateFeatureAccess方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onGetTransactionSeed
bool CWsLoggingServiceEx::onGetTransactionSeed(IEspContext& context, IEspGetTransactionSeedRequest& req, IEspGetTransactionSeedResponse& resp)
{
bool bRet = false;
try
{
if (!context.validateFeatureAccess(WSLOGGING_ACCESS, SecAccess_Write, false))
throw MakeStringException(EspLoggingErrors::WSLoggingAccessDenied, "Failed to get transaction seed. Permission denied.");
LOGServiceType serviceType = LGSTGetTransactionSeed;
for (unsigned int x = 0; x < loggingAgentThreads.size(); x++)
{
IUpdateLogThread* loggingThread = loggingAgentThreads[x];
if (!loggingThread->hasService(serviceType))
continue;
IEspLogAgent* loggingAgent = loggingThread->getLogAgent();
bRet = loggingAgent->getTransactionSeed(req, resp);
break;
}
}
catch (IException* e)
{
StringBuffer errorStr;
e->errorMessage(errorStr);
errorStr.insert(0, "Failed to get Transaction Seed: ");
ERRLOG("%s", errorStr.str());
resp.setStatusCode(-1);
resp.setStatusMessage(errorStr.str());
e->Release();
}
return bRet;
}
示例2: onUpdateLog
bool CWsLoggingServiceEx::onUpdateLog(IEspContext& context, IEspUpdateLogRequest& req, IEspUpdateLogResponse& resp)
{
try
{
if (!context.validateFeatureAccess(WSLOGGING_ACCESS, SecAccess_Write, false))
throw MakeStringException(EspLoggingErrors::WSLoggingAccessDenied, "Failed to update log. Permission denied.");
for (unsigned int x = 0; x < loggingAgentThreads.size(); x++)
{
IUpdateLogThread* loggingThread = loggingAgentThreads[x];
if (!loggingThread->hasService(LGSTUpdateLOG))
continue;
loggingThread->queueLog(&req);
}
resp.setStatusCode(0);
resp.setStatusMessage("Log will be updated.");
}
catch (IException* e)
{
StringBuffer errorStr;
e->errorMessage(errorStr);
ERRLOG("Failed to update log: cannot add to log queue: %s",errorStr.str());
resp.setStatusCode(-1);
resp.setStatusMessage(errorStr.str());
e->Release();
}
return true;
}
示例3: onStartStopBegin
bool Cws_machineEx::onStartStopBegin( IEspContext &context, IEspStartStopBeginRequest &req,
IEspStartStopBeginResponse &resp)
{
throw MakeStringException(ECLWATCH_INTERNAL_ERROR, "StartStopBegin feature not supported.");
//following code is no longer accessible but will remain for reference
try
{
if (!context.validateFeatureAccess(EXEC_FEATURE_URL, SecAccess_Full, false))
throw MakeStringException(ECLWATCH_EXECUTION_ACCESS_DENIED, "Permission denied.");
StringBuffer addresses;
StringArray& addresses0 = req.getAddresses();
for(unsigned i = 0; i < addresses0.length(); i++)
{
StringBuffer addrStr;
const char* address = addresses0.item(i);
updatePathInAddress(address, addrStr);
if (i > 0)
addresses.appendf("|Addresses_i%d=%s", i+1, addrStr.str());
else
addresses.appendf("Addresses_i1=%s", addrStr.str());
}
resp.setAddresses(addresses);
resp.setKey1(req.getKey1());
resp.setKey2(req.getKey2());
resp.setStop(req.getStop());
double version = context.getClientVersion();
if (version > 1.07)
{
resp.setAutoRefresh( req.getAutoRefresh() );
resp.setMemThreshold(req.getMemThreshold());
resp.setDiskThreshold(req.getDiskThreshold());
resp.setCpuThreshold(req.getCpuThreshold());
resp.setMemThresholdType(req.getMemThresholdType());
resp.setDiskThresholdType(req.getDiskThresholdType());
}
}
catch(IException* e)
{
FORWARDEXCEPTION(context, e, ECLWATCH_INTERNAL_ERROR);
}
return true;
}
示例4: onStartStop
bool Cws_machineEx::onStartStop( IEspContext &context, IEspStartStopRequest &req,
IEspStartStopResponse &resp)
{
try
{
if (!context.validateFeatureAccess(EXEC_FEATURE_URL, SecAccess_Full, false))
throw MakeStringException(ECLWATCH_EXECUTION_ACCESS_DENIED, "Permission denied.");
char* userName = (char*) m_sTestStr1.str();
char* password = (char*) m_sTestStr2.str();
doStartStop(context, req.getAddresses(), userName, password, req.getStop(), resp);
}
catch(IException* e)
{
FORWARDEXCEPTION(context, e, ECLWATCH_INTERNAL_ERROR);
}
return true;
}
示例5: onRunEclEx
bool CEclDirectEx::onRunEclEx(IEspContext &context, IEspRunEclExRequest & req, IEspRunEclExResponse & resp)
{
if (!context.validateFeatureAccess(ECLDIRECT_ACCESS, SecAccess_Full, false))
throw MakeStringException(-1, "EclDirect access permission denied.");
const char* eclText = req.getEclText();
if (!eclText || !*eclText)
{
resp.setResults("<Exception><Source>ESP</Source><Message>No Ecl Text provided</Message></Exception>");
return true;
}
StringBuffer user;
if (!context.getUserID(user).length())
user.append(req.getUserName());
Owned <IWorkUnitFactory> factory = getWorkUnitFactory(context.querySecManager(), context.queryUser());
Owned <IWorkUnit> workunit;
if (!user.length())
workunit.setown(factory->createWorkUnit(NULL, "ECL-Direct", ""));
else
{
workunit.setown(factory->createWorkUnit(NULL, "ECL-Direct", user.str()));
workunit->setUser(user.str());
}
Owned<IWUQuery> query = workunit->updateQuery();
query->setQueryText(eclText);
query.clear();
const char* cluster = req.getCluster();
if (!cluster || !*cluster || !stricmp(cluster, "default"))
cluster = defaultCluster.str();
if (!cluster || !*cluster)
throw MakeStringException(-1, "No Cluster Specified");
if (!isValidCluster(cluster))
throw MakeStringException(-1, "Invalid TargetCluster %s Specified", cluster);
workunit->setClusterName(cluster);
const char* snapshot = req.getSnapshot();
if (snapshot && *snapshot)
workunit->setSnapshot(snapshot);
if (req.getResultLimit())
workunit->setResultLimit(req.getResultLimit());
// Execute it
SCMStringBuffer wuid;
workunit->getWuid(wuid);
workunit->setAction(WUActionRun);
workunit->setState(WUStateSubmitted);
workunit.clear();
resp.setWuid(wuid.str());
submitWorkUnit(wuid.str(), context.querySecManager(), context.queryUser());
if (!waitForWorkUnitToComplete(wuid.str(), (req.getWait_isNull()) ? defaultWait : req.getWait()))
{
StringBuffer result;
result.appendf("<Exception><Source>ESP</Source><Message>Timed out waiting for job to complete: %s</Message></Exception>", wuid.str());
resp.setResults(result.str());
return true;
}
if (!deleteWorkunits && context.queryRequestParameters()->hasProp("redirect"))
{
StringBuffer url("/WsWorkunits/WUInfo?Wuid=");
resp.setRedirectUrl(url.append(wuid).str());
return true;
}
Owned<IConstWorkUnit> cw = factory->openWorkUnit(wuid.str(), false);
EclDirectWUExceptions errors(*cw);
resp.setErrors(errors);
if (req.getIncludeResults())
{
StringBuffer results;
CRunEclExFormat outputFormat = req.getFormat();
Owned<IWuWebView> web = createWuWebView(wuid.str(), NULL, NULL, getCFD(), true);
if (!web)
results.appendf("<Exception><Source>ESP</Source><Message>Failed loading result workunit %s</Message></Exception>", wuid.str());
else if (outputFormat == CRunEclExFormat_Table)
{
StringBuffer xsltfile(getCFD());
web->applyResultsXSLT(xsltfile.append("xslt/wsecl3_result.xslt").str(), results);
}
else
{
unsigned xmlflags = 0;
if (outputFormat != CRunEclExFormat_ExtendedXml)
xmlflags |= WWV_OMIT_SCHEMAS;
if (context.queryRequestParameters()->hasProp("display_xslt"))
xmlflags |= WWV_USE_DISPLAY_XSLT;
else
xmlflags |= WWV_OMIT_XML_DECLARATION;
//.........这里部分代码省略.........
示例6: onRunEcl
bool CEclDirectEx::onRunEcl(IEspContext &context, IEspRunEclRequest & req, IEspRunEclResponse & resp)
{
if (!context.validateFeatureAccess(ECLDIRECT_ACCESS, SecAccess_Full, false))
throw MakeStringException(-1, "EclDirect access permission denied.");
StringBuffer user;
if (!context.getUserID(user).length())
user.append(req.getUserName());
Owned <IWorkUnitFactory> factory = getWorkUnitFactory(context.querySecManager(), context.queryUser());
Owned <IWorkUnit> workunit;
if (!user.length())
workunit.setown(factory->createWorkUnit(NULL, "ECL-Direct", ""));
else
{
workunit.setown(factory->createWorkUnit(NULL, "ECL-Direct", user.str()));
workunit->setUser(user.str());
}
Owned<IWUQuery> query = workunit->updateQuery();
query->setQueryText(req.getEclText());
query.clear();
const char* clustername = req.getCluster();
if (!clustername || !*clustername || strieq(clustername, "default"))
clustername = defaultCluster.str();
if (!clustername || !*clustername)
throw MakeStringException(-1, "No Cluster Specified");
if (!isValidCluster(clustername))
throw MakeStringException(-1, "Invalid TargetCluster %s Specified", clustername);
workunit->setClusterName(clustername);
if (req.getLimitResults())
workunit->setResultLimit(100);
const char* snapshot = req.getSnapshot();
if (snapshot && *snapshot)
workunit->setSnapshot(snapshot);
// Execute it
SCMStringBuffer wuid;
workunit->getWuid(wuid);
workunit->setAction(WUActionRun);
workunit->setState(WUStateSubmitted);
workunit.clear();
submitWorkUnit(wuid.str(), context.querySecManager(), context.queryUser());
if (waitForWorkUnitToComplete(wuid.str(), defaultWait))
{
Owned<IConstWorkUnit> cw = factory->openWorkUnit(wuid.str(), false);
SCMStringBuffer resultXML;
getFullWorkUnitResultsXML(context.queryUserId(), context.queryPassword(), cw.get(), resultXML);
resp.setResults(resultXML.str());
cw.clear();
if (deleteWorkunits)
deleteEclDirectWorkunit(factory, wuid.str());
}
else
{
// Don't delete these ones...
DBGLOG("WorkUnit %s timed out", wuid.str());
StringBuffer result;
result.appendf("<Exception><Source>ESP</Source><Message>Timed out waiting for job to complete: %s</Message></Exception>", wuid.str());
resp.setResults(result.str());
}
return true;
}
示例7: onStartStopDone
bool Cws_machineEx::onStartStopDone( IEspContext &context, IEspStartStopDoneRequest &req,
IEspStartStopResponse &resp)
{
throw MakeStringException(ECLWATCH_INTERNAL_ERROR, "StartStopDone feature not supported.");
//following code is no longer accessible but will remain for reference
try
{
if (!context.validateFeatureAccess(EXEC_FEATURE_URL, SecAccess_Full, false))
throw MakeStringException(ECLWATCH_EXECUTION_ACCESS_DENIED, "Permission denied.");
const char*addresses0 = req.getAddresses();
bool bStop = req.getStop();
char* userName = (char*) m_sTestStr1.str();
char* password = (char*) m_sTestStr2.str();
StringArray addresses;
char* pAddr = (char*) addresses0;
while (pAddr)
{
char* ppAddr = strstr(pAddr, "|Addresses_");
if (!ppAddr)
{
char* ppAddr0 = strchr(pAddr, '=');
if (!ppAddr0)
addresses.append(pAddr);
else
addresses.append(ppAddr0+1);
break;
}
else
{
char addr[1024];
strncpy(addr, pAddr, ppAddr - pAddr);
addr[ppAddr - pAddr] = 0;
char* ppAddr0 = strchr(addr, '=');
if (!ppAddr0)
addresses.append(addr);
else
addresses.append(ppAddr0+1);
pAddr = ppAddr + 1;
}
}
doStartStop(context, addresses, userName, password, bStop, resp);
double version = context.getClientVersion();
if (version > 1.07)
{
resp.setAutoRefresh( req.getAutoRefresh() );
resp.setMemThreshold(req.getMemThreshold());
resp.setDiskThreshold(req.getDiskThreshold());
resp.setCpuThreshold(req.getCpuThreshold());
resp.setMemThresholdType(req.getMemThresholdType());
resp.setDiskThresholdType(req.getDiskThresholdType());
}
}
catch(IException* e)
{
FORWARDEXCEPTION(context, e, ECLWATCH_INTERNAL_ERROR);
}
return true;
}
示例8: onGetInstantQuery
int CFileSpraySoapBindingEx::onGetInstantQuery(IEspContext &context, CHttpRequest* request, CHttpResponse* response, const char *service, const char *method)
{
bool permission = true;
bool bDownloadFile = false;
bool bProcess;
StringBuffer sourceLogicalFile;
StringBuffer methodbuf;
StringBuffer submethod;
StringBuffer xsltFileName(getCFD());
xsltFileName.append("smc_xslt/");
if (stricmp(method, "SprayFixedInput")==0)
{
if (!context.validateFeatureAccess(FILE_SPRAY_URL, SecAccess_Write, false))
permission = false;
bProcess = true;
xsltFileName.append("fs_sprayForm.xslt");
methodbuf.append("SprayFixed");
}
else if(stricmp(method, "SprayVariableInput")==0)
{
if (!context.validateFeatureAccess(FILE_SPRAY_URL, SecAccess_Write, false))
permission = false;
bProcess = true;
xsltFileName.append("fs_sprayForm.xslt");
methodbuf.append("SprayVariable");
request->getParameter("submethod", submethod);
}
else if (stricmp(method, "DesprayInput")==0)
{
if (!context.validateFeatureAccess(FILE_DESPRAY_URL, SecAccess_Write, false))
permission = false;
request->getParameter("sourceLogicalName", sourceLogicalFile);
xsltFileName.append("fs_desprayCopyForm.xslt");
methodbuf.append("Despray");
bProcess = true;
}
else if (stricmp(method, "CopyInput") == 0)
{
if (!context.validateFeatureAccess(FILE_SPRAY_URL, SecAccess_Write, false))
permission = false;
request->getParameter("sourceLogicalName", sourceLogicalFile);
xsltFileName.append("fs_desprayCopyForm.xslt");
methodbuf.append("Copy");
bProcess = true;
}
else if (stricmp(method, "RenameInput") == 0)
{
if (!context.validateFeatureAccess(FILE_SPRAY_URL, SecAccess_Write, false))
permission = false;
request->getParameter("sourceLogicalName", sourceLogicalFile);
xsltFileName.append("fs_renameForm.xslt");
methodbuf.append("Rename");
bProcess = true;
}
else if (stricmp(method, "DownloadFile") == 0)
{
if (!context.validateFeatureAccess(FILE_SPRAY_URL, SecAccess_Full, false))
permission = false;
downloadFile(context, request, response);
bDownloadFile = true;
bProcess = true;
}
else
bProcess = false;
if (bProcess)
{
if (bDownloadFile)
return 0;
StringBuffer xml;
Owned<IProperties> params(createProperties());
if (!permission)
{
params->setProp("@method", methodbuf.str());
xml.append("<Environment><ErrorMessage>Permission denied.</ErrorMessage></Environment>");
}
else
{
if(submethod.length() > 0)
params->setProp("@submethod", submethod.str());
params->setProp("@method", methodbuf.str());
if (*sourceLogicalFile.str())
{
params->setProp("@sourceLogicalName", sourceLogicalFile.str());
Owned<IUserDescriptor> userdesc;
StringBuffer username;
context.getUserID(username);
if(username.length() > 0)
{
const char* passwd = context.queryPassword();
//.........这里部分代码省略.........