void HttpReq::setReferer(const char *pNewReferer, int newRefererLen) { updateReqHeader(HttpHeader::H_REFERER, pNewReferer, newRefererLen); addEnv("ESI_INCLUDED_BY", 15, pNewReferer, newRefererLen); addEnv("ESI_REFERER", 11, pNewReferer, newRefererLen); }
void KScgiFetchObject::buildHead(KHttpRequest *rq) { content_length_added = false; KHttpObject *obj = rq->ctx->obj; SET(obj->index.flags,ANSW_LOCAL_SERVER); make_http_env(rq,brd, rq->ctx->lastModified, rq->file, this, false); addEnv("SCGI","1"); if (!content_length_added) { addEnv("CONTENT_LENGTH","0"); } int len = buffer.getLen(); buff *buf = (buff *)malloc(sizeof(buff)); buf->data = (char *)malloc(16); len = snprintf(buf->data,16,"%d:",len); buf->used = len; buffer.insertBuffer(buf); buffer.write_all(",",1); hook.init(rq->ctx->obj,rq); hook.setProto(Proto_scgi); }
bool Project::init( const char * projectName, const char * dataFile ) { projectName_ = projectName; auto defManager = contextManager_.queryInterface<IDefinitionManager>(); auto controller = contextManager_.queryInterface<IReflectionController>(); auto fileSystem = contextManager_.queryInterface<IFileSystem>(); assert( defManager != nullptr && controller != nullptr && fileSystem != nullptr ); if( dataFile == nullptr || !fileSystem->exists(dataFile)) { projectData_ = defManager->create< ProjectData >(); } else { IFileSystem::IStreamPtr fileStream = fileSystem->readFile( dataFile, std::ios::in | std::ios::binary ); XMLSerializer serializer( *fileStream, *defManager ); defManager->deserializeDefinitions( serializer ); Variant variant; bool br = serializer.deserialize( variant ); assert( br ); if(!br) { NGT_WARNING_MSG( "Error loading project data\n" ); return false; } br = variant.tryCast( projectData_ ); assert( br ); if(!br) { NGT_WARNING_MSG( "Error loading project data\n" ); return false; } } auto model = std::unique_ptr< ITreeModel >( new ReflectedTreeModel( projectData_, *defManager, controller ) ); auto em = contextManager_.queryInterface<IEnvManager>(); envId_ = em->addEnv( projectName_.c_str() ); em->loadEnvState( envId_ ); em->selectEnv( envId_ ); auto uiFramework = contextManager_.queryInterface<IUIFramework>(); auto uiApplication = contextManager_.queryInterface<IUIApplication>(); assert( uiFramework != nullptr && uiApplication != nullptr ); view_ = uiFramework->createView( projectName_.c_str(), "TestingProjectControl/ProjectDataPanel.qml", IUIFramework::ResourceType::Url, std::move( model ) ); if(view_ == nullptr) { return false; } uiApplication->addView( *view_ ); return true; }
void ExtWorkerConfig::config(const XmlNode *pNode) { const char *pValue; int iMaxConns = ConfigCtx::getCurConfigCtx()->getLongValue(pNode, "maxConns", 1, 2000, 1); int iRetryTimeout = ConfigCtx::getCurConfigCtx()->getLongValue(pNode, "retryTimeout", 0, LONG_MAX, 10); int iInitTimeout = ConfigCtx::getCurConfigCtx()->getLongValue(pNode, "initTimeout", 1, LONG_MAX, 3); int iBuffer = ConfigCtx::getCurConfigCtx()->getLongValue(pNode, "respBuffer", 0, 2, 1); int iKeepAlive = ConfigCtx::getCurConfigCtx()->getLongValue(pNode, "persistConn", 0, 1, 1); int iKeepAliveTimeout = ConfigCtx::getCurConfigCtx()->getLongValue(pNode, "pcKeepAliveTimeout", -1, INT_MAX, INT_MAX); if (iKeepAliveTimeout == -1) iKeepAliveTimeout = INT_MAX; if (iBuffer == 1) iBuffer = 0; else if (iBuffer == 0) iBuffer = HEC_RESP_NOBUFFER; else if (iBuffer == 2) iBuffer = HEC_RESP_NPH; setPersistConn(iKeepAlive); setKeepAliveTimeout(iKeepAliveTimeout); setMaxConns(iMaxConns); setTimeout(iInitTimeout); setRetryTimeout(iRetryTimeout); setBuffering(iBuffer); clearEnv(); const XmlNodeList *pList = pNode->getChildren("env"); if (pList) { XmlNodeList::const_iterator iter; for (iter = pList->begin(); iter != pList->end(); ++iter) { pValue = (*iter)->getValue(); if (pValue) addEnv((*iter)->getValue()); } } }
bool KScgiFetchObject::addHttpHeader(char *attr, char *val) { char *hot = attr; while (*hot) { if (*hot == '-') { *hot = '_'; } else { *hot = toupper(*hot); } hot++; } if(strcmp(attr,"CONTENT_LENGTH")==0 || strcmp(attr,"CONTENT_TYPE")==0){ return addEnv(attr,val); } int len = strlen(attr); buffer.write_all("HTTP_",5); buffer.write_all(attr,len+1); len = strlen(val); buffer.write_all(val,len+1); return true; }