⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jk_urienv.c

📁 Tomcat 4.1与WebServer集成组件的源代码包.
💻 C
📖 第 1 页 / 共 2 页
字号:
        else if (strcmp("name", name) == 0) {            jk2_uriEnv_parseName(env, uriEnv, val);        }        else if (strcmp("vhost", name) == 0) {            if (val == NULL)                uriEnv->virtual = NULL;            else                uriEnv->virtual = uriEnv->pool->pstrdup(env, uriEnv->pool, val);        }    }    return JK_OK;}static int jk2_uriEnv_init(jk_env_t *env, jk_uriEnv_t *uriEnv){/*    int err; */    char *asterisk;    char *uri=uriEnv->pool->pstrdup( env, uriEnv->pool, uriEnv->uri);    /* Set the worker */    char *wname=uriEnv->workerName;    if( uriEnv->workerEnv->timing == JK_TRUE ) {        uriEnv->timing=JK_TRUE;    }    if( uriEnv->workerName == NULL ) {        /* The default worker */        uriEnv->workerName=uriEnv->uriMap->workerEnv->defaultWorker->mbean->name;;        uriEnv->worker=uriEnv->uriMap->workerEnv->defaultWorker;        if( uriEnv->mbean->debug > 0 )            env->l->jkLog(env, env->l, JK_LOG_DEBUG,                          "uriEnv.init() map %s %s\n",                          uriEnv->uri, uriEnv->uriMap->workerEnv->defaultWorker->mbean->name);    }    /* No further init - will be called by uriMap.init() */    if( uriEnv->workerName != NULL && uriEnv->worker==NULL ) {        uriEnv->worker= env->getByName( env, wname );        if( uriEnv->worker==NULL ) {            uriEnv->worker= env->getByName2( env, "lb", wname );            if( uriEnv->worker==NULL ) {                env->l->jkLog(env, env->l, JK_LOG_ERROR,                              "uriEnv.init() map to invalid worker %s %s\n",                              uriEnv->uri, uriEnv->workerName);                /* XXX that's allways a 'lb' worker, create it */            }        }    }         if( uri==NULL )         return JK_ERR;        if (uriEnv->match_type == MATCH_TYPE_REGEXP) {        uriEnv->prefix      = uri;        uriEnv->prefix_len  = strlen( uriEnv->prefix );        uriEnv->suffix      = NULL;        if( uriEnv->mbean->debug > 0 ) {            env->l->jkLog(env, env->l, JK_LOG_DEBUG,                          "uriEnv.init() regexp mapping %s=%s \n",                          uriEnv->prefix, uriEnv->workerName);        }        return JK_OK;    }    if ('/' != uri[0]) {        /*         * JFC: please check...         * Not sure what to do, but I try to prevent problems.         * I have fixed jk_mount_context() in apaches/mod_jk2.c so we should         * not arrive here when using Apache.         */        env->l->jkLog(env, env->l, JK_LOG_ERROR,                      "uriEnv.init() context must start with '/' in %s\n",                      uri);        return JK_ERR;    }    asterisk = strchr(uri, '*');    /* set the mapping type */    if (!asterisk) {        /* Something like:  JkMount /login/j_security_check ajp13 */        uriEnv->prefix      = uri;        uriEnv->prefix_len  =strlen( uriEnv->prefix );        uriEnv->suffix      = NULL;        if( uriEnv->match_type != MATCH_TYPE_CONTEXT &&            uriEnv->match_type != MATCH_TYPE_HOST ) {            /* Context and host maps do not have ASTERISK */            uriEnv->match_type  = MATCH_TYPE_EXACT;        }        if( uriEnv->mbean->debug > 0 ) {            if( uriEnv->match_type == MATCH_TYPE_CONTEXT ) {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "uriEnv.init() context mapping %s=%s \n",                              uriEnv->prefix, uriEnv->workerName);                            } else if( uriEnv->match_type == MATCH_TYPE_HOST ) {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "uriEnv.init() host mapping %s=%s \n",                              uriEnv->virtual, uriEnv->workerName);            } else {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "uriEnv.init() exact mapping %s=%s \n",                              uriEnv->prefix, uriEnv->workerName);            }        }        return JK_OK;    }    /*     * We have an * in the uri. Check the type.     *  - /context/ASTERISK.suffix     *  - /context/PREFIX/ASTERISK     *     *  Unsupported:     *  - context path:       /ASTERISK/prefix     *  - general suffix rule /context/prefix/ASTERISKsuffix     */    asterisk--;    if ('/' == asterisk[0]) {        if ( 0 == strncmp("/*/",uri,3) ) {            /* general context path */            asterisk[1] = '\0';            uriEnv->suffix  = asterisk + 2;            uriEnv->prefix = uri;            uriEnv->prefix_len  =strlen( uriEnv->prefix );            uriEnv->match_type = MATCH_TYPE_CONTEXT_PATH;            if( uriEnv->mbean->debug > 0 ) {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "Into jk_uri_worker_map_t::uri_worker_map_open, "                              "general context path rule %s * %s -> %s was added\n",                              uri, asterisk + 2, uriEnv->workerName);            }        } else if ('.' == asterisk[2]) {            /* suffix rule: /context/ASTERISK.extension */            asterisk[1]      = '\0';            asterisk[2]      = '\0';            uriEnv->prefix      = uri;            uriEnv->prefix_len  =strlen( uriEnv->prefix );            uriEnv->suffix      = asterisk + 3;            uriEnv->suffix_len  = strlen(asterisk + 3);            uriEnv->match_type  = MATCH_TYPE_SUFFIX;            if( uriEnv->mbean->debug > 0 ) {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "uriEnv.init() suffix mapping %s .%s=%s was added\n",                              uriEnv->prefix, uriEnv->suffix, uriEnv->workerName);            }        } else if ('\0' != asterisk[2]) {            /* general suffix rule /context/prefix/ASTERISKextraData */            asterisk[1] = '\0';            uriEnv->suffix  = asterisk + 2;            uriEnv->suffix_len  = strlen(asterisk + 2);            uriEnv->prefix  = uri;            uriEnv->prefix_len  =strlen( uriEnv->prefix );            uriEnv->match_type = MATCH_TYPE_GENERAL_SUFFIX;            if( uriEnv->mbean->debug > 0 ) {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "uriEnv.init() general suffix mapping %s.%s=%s\n",                              uri, asterisk + 2, uriEnv->workerName);            }        } else {            /* context based /context/prefix/ASTERISK  */            asterisk[1]      = '\0';            uriEnv->suffix      = NULL;            uriEnv->prefix      = uri;            uriEnv->prefix_len  =strlen( uriEnv->prefix );            uriEnv->match_type  = MATCH_TYPE_PREFIX;            if( uriEnv->mbean->debug > 0 ) {                env->l->jkLog(env, env->l, JK_LOG_DEBUG,                              "uriEnv.init() prefix mapping %s=%s\n",                              uriEnv->prefix, uriEnv->workerName);            }        }    } else {        /* Something like : JkMount /servlets/exampl* ajp13 */        /* Is this valid ??? */        uriEnv->prefix      = uri;        uriEnv->prefix_len  =strlen( uriEnv->prefix );        uriEnv->suffix      = NULL;        uriEnv->match_type  = MATCH_TYPE_PREFIX;        if( uriEnv->mbean->debug > 0 ) {            env->l->jkLog(env, env->l, JK_LOG_DEBUG,                          "uriEnv.init() prefix mapping2 %s=%s\n",                          uri, uriEnv->workerName);        }    }    if( uriEnv->mbean->debug > 0 )        env->l->jkLog( env, env->l, JK_LOG_DEBUG,                       "uriEnv.init()  %s  host=%s  uri=%s type=%d ctx=%s prefix=%s suffix=%s\n",                       uriEnv->mbean->name, uriEnv->virtual, uriEnv->uri,                       uriEnv->match_type, uriEnv->contextPath, uriEnv->prefix, uriEnv->suffix );        return JK_OK;}static char *myAttInfo[]={ "host", "uri", "group", "context", NULL };    int JK_METHOD jk2_uriEnv_factory(jk_env_t *env, jk_pool_t *pool,                                 jk_bean_t *result,                                 const char *type, const char *name){    jk_pool_t *uriPool;    jk_uriEnv_t *uriEnv;    uriPool=(jk_pool_t *)pool->create( env, pool,                                       HUGE_POOL_SIZE);    uriEnv=(jk_uriEnv_t *)pool->calloc(env, uriPool,                                       sizeof(jk_uriEnv_t));        uriEnv->pool = uriPool;        jk2_map_default_create(env, &uriEnv->properties, uriPool);    uriEnv->init = jk2_uriEnv_init;    result->setAttribute = jk2_uriEnv_setAttribute;    result->getAttribute = jk2_uriEnv_getAttribute;    uriEnv->mbean = result;    result->object = uriEnv;    result->getAttributeInfo = myAttInfo;    uriEnv->name = result->localName;    if (jk2_uriEnv_parseName(env, uriEnv, result->localName) != JK_OK) {        env->l->jkLog(env, env->l, JK_LOG_ERROR,                      "uriEnv.factory() error parsing %s\n",                      uriEnv->name);        return JK_ERR;    }    uriEnv->workerEnv = env->getByName(env, "workerEnv");    uriEnv->workerEnv->uriMap->addUriEnv(env, uriEnv->workerEnv->uriMap,                                         uriEnv);    uriEnv->uriMap = uriEnv->workerEnv->uriMap;    /* ??? This may be turned on by default      * so that global mappings are always present     * on each vhost, instead of explicitly defined.     */#if 0    uriEnv->inherit_globals = 1;#endif    return JK_OK;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -