📄 jk_urienv.c
字号:
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 + -