static void appendReplyMessage(StringBuffer &reply, const char *href,const char *format,...) { va_list args; va_start(args, format); StringBuffer msg; msg.valist_appendf(format, args); va_end(args); StringBuffer fmsg; const char *s=msg.str(); loop { char c=*(s++); if (!c||(c=='\n')) { Owned<IPropertyTree> tree = createPTree("Message"); tree->addProp("Value",fmsg.str()); if (href) { tree->addProp("href",href); href = NULL; } toXML(tree,reply); if (!c) break; fmsg.clear(); } else fmsg.append(c); } }
bool CLoggingManager::updateLog(IEspContext* espContext, const char* option, IPropertyTree* userContext, IPropertyTree* userRequest, const char* backEndReq, const char* backEndResp, const char* userResp, const char* logDatasets, StringBuffer& status) { if (!initialized) throw MakeStringException(-1,"LoggingManager not initialized"); bool bRet = false; try { Owned<IPropertyTree> espContextTree; if (espContext) { espContextTree.setown(createPTree("ESPContext")); short port; StringBuffer sourceIP, peerStr; const char* esdlBindingID = espContext->queryESDLBindingID(); espContext->getServAddress(sourceIP, port); espContextTree->addProp("SourceIP", sourceIP.str()); espContext->getPeer(peerStr); espContextTree->addProp("Peer", peerStr.str()); if (!isEmptyString(esdlBindingID)) espContextTree->addProp("ESDLBindingID", esdlBindingID); //More information in espContext may be added to the espContextTree later. const char* userId = espContext->queryUserId(); if (userId && *userId) espContextTree->addProp("UserName", userId); espContextTree->addProp("ResponseTime", VStringBuffer("%.4f", (msTick()-espContext->queryCreationTime())/1000.0)); } Owned<IEspUpdateLogRequestWrap> req = new CUpdateLogRequestWrap(nullptr, option, espContextTree.getClear(), LINK(userContext), LINK(userRequest), backEndReq, backEndResp, userResp, logDatasets); Owned<IEspUpdateLogResponse> resp = createUpdateLogResponse(); bRet = updateLog(espContext, *req, *resp, status); } catch (IException* e) { status.set("Failed to update log: "); e->errorMessage(status); ERRLOG("%s", status.str()); e->Release(); } return bRet; }
void createPart(const char *partname, const char *xml) { if (!partname || !*partname) throw MakeStringExceptionDirect(PKG_INFO_NOT_DEFINED, "No PackageMap Part name provided"); if (!xml || !*xml) throw MakeStringExceptionDirect(PKG_INFO_NOT_DEFINED, "No PackageMap content provided"); pmPart.setown(createPTreeFromXMLString(xml)); if (!pmPart) throw MakeStringExceptionDirect(PKG_INFO_NOT_DEFINED, "Invalid PackageMap content"); pmPart->addProp("@id", partname); StringBuffer lcPmid(pmid); pmid = lcPmid.toLowerCase().str(); fixPackageMapFileIds(pmPart, checkFlag(PKGADD_PRELOAD_ALL)); }
void createPart(const char *partname, const char *xml) { if (!partname || !*partname) throw MakeStringExceptionDirect(PKG_INFO_NOT_DEFINED, "No PackageMap Part name provided"); if (!xml || !*xml) throw MakeStringExceptionDirect(PKG_INFO_NOT_DEFINED, "No PackageMap content provided"); pmPart.setown(createPTreeFromXMLString(xml)); if (!pmPart) throw MakeStringExceptionDirect(PKG_INFO_NOT_DEFINED, "Invalid PackageMap content"); pmPart->addProp("@id", partname); StringBuffer lcPmid(pmid); pmid = lcPmid.toLowerCase().str(); Owned<IPropertyTreeIterator> iter = pmPart->getElements("Package"); ForEach(*iter) { IPropertyTree &item = iter->query(); if (checkFlag(PKGADD_PRELOAD_ALL)) item.setPropBool("@preload", true); Owned<IPropertyTreeIterator> superFiles = item.getElements("SuperFile"); ForEach(*superFiles) { IPropertyTree &superFile = superFiles->query(); StringBuffer lc(superFile.queryProp("@id")); const char *id = lc.toLowerCase().str(); if (*id == '~') id++; superFile.setProp("@id", id); Owned<IPropertyTreeIterator> subFiles = superFile.getElements("SubFile"); ForEach(*subFiles) { IPropertyTree &subFile = subFiles->query(); id = subFile.queryProp("@value"); if (id && *id == '~') { StringAttr value(id+1); subFile.setProp("@value", value.get()); } } } } }
ESP_FACTORY IEspRpcBinding * esp_binding_factory(const char *name, const char* type, IPropertyTree *cfg, const char *process) { if (strcmp(type, "ws_eclSoapBinding")==0) { StringBuffer xpath; xpath.appendf("Software/EspProcess[@name=\"%s\"]", process); Owned<IPropertyTree> bcfg = cfg->getPropTree(xpath.str()); const char* cfgFile = cfg->queryProp("@config"); if (cfgFile) bcfg->addProp("@config", cfgFile); return new CWsEclBinding(bcfg.get(), name, process); } else { throw MakeStringException(-1, "Unknown binding type %s", type); } return NULL; }
//----------------------------------------------------- // //----------------------------------------------------- int main(int argc, char* argv[]) { #ifdef _NO_LDAP fprintf(stderr, "System was built with _NO_LDAP\n"); return -1; #endif for (int x = 1; x < argc; x++) { if (0==strncmp("-h", argv[x], 2)) { usage(); exit(0); } else { fprintf(stderr, "\nERROR: Unrecognized parameter : '%s', enter 'initldap -h' for help\n", argv[x]); exit(1); } } InitModuleObjects(); //execute configgen to query the LDAP Server configuration(s) StringBuffer cmd; cmd.appendf("%s%cconfiggen -env %s%c%s -listldapservers", ADMIN_DIR,PATHSEPCHAR,CONFIG_DIR, PATHSEPCHAR, ENV_XML_FILE); char * configBuffer = NULL; //acquire LDAP configuration by executing configgen and capturing output { StringBuffer configBuff; Owned<IPipeProcess> pipe = createPipeProcess(); if (pipe->run("configgen", cmd.str(), ".", false, true, true, 0)) { Owned<ISimpleReadStream> pipeReader = pipe->getOutputStream(); const size32_t chunkSize = 8192; for (;;) { size32_t sizeRead = pipeReader->read(chunkSize, configBuff.reserve(chunkSize)); if (sizeRead < chunkSize) { configBuff.setLength(configBuff.length() - (chunkSize - sizeRead)); break; } } pipe->closeOutput(); } int retcode = pipe->wait(); if (retcode) { fprintf(stderr, "\nERROR %d: unable to execute %s", retcode, cmd.str()); exit(1); } configBuffer = strdup(configBuff.str()); } //Using the LDAP Server parms queried from configgen, build an //LDAPSecurity property tree for each LDAP Server and call the LDAP //Security Manager to create the needed entries Owned<IPropertyTree> ldapProps; char *saveptr; char * pLine = strtok_r(configBuffer, "\n", &saveptr); while (pLine) { if (pLine && 0==strcmp(pLine, "LDAPServerProcess")) { if (ldapProps) initLDAP(ldapProps); ldapProps.clear(); ldapProps.setown(createPTree("ldapSecurity")); } else { char * sep = strchr(pLine, ','); if (sep) { *sep = (char)NULL; ldapProps->addProp(pLine, sep+1); } } pLine = strtok_r(NULL, "\n", &saveptr); } if (ldapProps) initLDAP(ldapProps); if (configBuffer) free(configBuffer); ldapProps.clear(); releaseAtoms(); return 0; }
void WebServicesExtractor::addRootReference(const char * attribute) { root->addProp("USES", attribute); }