Exemple #1
0
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);
}
Exemple #3
0
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;
}