nacho 02/04/19 16:08:53 Modified: jk/native2/server/isapi isapi.dsp jk_iis.h jk_isapi_plugin.c jk_service_iis.c Log: * Work in progress Near :) Revision Changes Path 1.3 +1 -1 jakarta-tomcat-connectors/jk/native2/server/isapi/isapi.dsp Index: isapi.dsp =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/isapi.dsp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- isapi.dsp 19 Apr 2002 17:26:08 -0000 1.2 +++ isapi.dsp 19 Apr 2002 23:08:53 -0000 1.3 @@ -79,7 +79,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libapr.lib libaprutil.lib kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /dll /debug /machine:I386 /out:"Debug/isapi_redirector2.dll" /pdbtype:sept /libpath:"$(APACHE20_HOME)\Release" /libpath:"$(APR_HOME)\apr\Release" /libpath:"$(APR_HOME)\apr-util\Release" +# ADD LINK32 libapr.lib libaprutil.lib kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /dll /debug /machine:I386 /out:"e:\tomcat\jakarta-tomcat\build\tomcat\bin\native\isapi_redirector2.dll" /pdbtype:sept /libpath:"$(APACHE20_HOME)\Release" /libpath:"$(APR_HOME)\apr\Release" /libpath:"$(APR_HOME)\apr-util\Release" !ENDIF 1.5 +10 -16 jakarta-tomcat-connectors/jk/native2/server/isapi/jk_iis.h Index: jk_iis.h =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_iis.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- jk_iis.h 19 Apr 2002 17:26:08 -0000 1.4 +++ jk_iis.h 19 Apr 2002 23:08:53 -0000 1.5 @@ -77,7 +77,7 @@ #define DEFAULT_WORKER_NAME ("ajp13") /* - * We use special headers to pass values from the filter to the + * We use special headers to pass values from the filter to the * extension. These values are: * * 1. The real URI before redirection took place @@ -95,18 +95,11 @@ #define HTTP_QUERY_HEADER_NAME ("HTTP_TOMCATQUERY") #define HTTP_WORKER_HEADER_NAME ("HTTP_TOMCATWORKER") -#define SERVER_NAME ("SERVER_NAME" ) +#define SERVER_NAME ("SERVER_NAME" ) #define SERVER_SOFTWARE ("SERVER_SOFTWARE") #define REGISTRY_LOCATION ("Software\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0") -#define EXTENSION_URI_TAG ("extension_uri") - -#define URI_SELECT_TAG ("uri_select") - -#define URI_SELECT_PARSED_VERB ("parsed") -#define URI_SELECT_UNPARSED_VERB ("unparsed") -#define URI_SELECT_ESCAPED_VERB ("escaped") #define BAD_REQUEST -1 #define BAD_PATH -2 @@ -114,10 +107,10 @@ #define GET_SERVER_VARIABLE_VALUE(name, place) { \ - (place) = NULL; \ + (place) = NULL; \ huge_buf_sz = sizeof(huge_buf); \ - if (get_server_value(env, \ - lpEcb, \ + if (get_server_value(env, \ + lpEcb, \ (name), \ huge_buf, \ huge_buf_sz, \ @@ -128,14 +121,14 @@ #define GET_SERVER_VARIABLE_VALUE_INT(name, place, def) { \ huge_buf_sz = sizeof(huge_buf); \ - if (get_server_value(env,\ - lpEcb, \ + if (get_server_value(env, \ + lpEcb, \ (name), \ huge_buf, \ huge_buf_sz, \ "")) { \ (place) = atoi(huge_buf); \ - if (0 == (place)) { \ + if (0 == (place)) { \ (place) = def; \ } \ } else { \ @@ -157,9 +150,10 @@ static int JK_METHOD jk2_service_iis_init_ws_service( struct jk_env *env, jk_ws_service_t *_this, struct jk_worker *w, void *serverObj ); +int jk2_service_iis_init(jk_env_t *env, jk_ws_service_t *s); #ifdef __cplusplus } #endif /* __cplusplus */ -#endif +#endif 1.6 +76 -124 jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c Index: jk_isapi_plugin.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- jk_isapi_plugin.c 19 Apr 2002 17:26:08 -0000 1.5 +++ jk_isapi_plugin.c 19 Apr 2002 23:08:53 -0000 1.6 @@ -60,7 +60,7 @@ * Author: Gal Shachor <[EMAIL PROTECTED]> * * Author: Larry Isaacs <[EMAIL PROTECTED]> * * Author: Ignacio J. Ortega <[EMAIL PROTECTED]> * - * Version: $Revision: 1.5 $ * + * Version: $Revision: 1.6 $ * ***************************************************************************/ // This define is needed to include wincrypt,h, needed to get client certificates @@ -82,6 +82,14 @@ #include "jk_iis.h" //#include "jk_uri_worker_map.h" +#define EXTENSION_URI_TAG ("extension_uri") +#define SERVER_ROOT_TAG ("server_root") +#define URI_SELECT_TAG ("uri_select") + +#define URI_SELECT_PARSED_VERB ("parsed") +#define URI_SELECT_UNPARSED_VERB ("unparsed") +#define URI_SELECT_ESCAPED_VERB ("escaped") + static char ini_file_name[MAX_PATH]; static int using_ini_file = JK_FALSE; @@ -95,8 +103,9 @@ static char extension_uri[INTERNET_MAX_URL_LENGTH] = "/jakarta/isapi_redirector2.dll"; static char log_file[MAX_PATH * 2]; static int log_level = JK_LOG_EMERG_LEVEL; -static char worker_file[MAX_PATH * 2]; -static char worker_mount_file[MAX_PATH * 2]; +//static char worker_file[MAX_PATH * 2]; +static char server_root[MAX_PATH * 2]; +//static char worker_mount_file[MAX_PATH * 2]; #define URI_SELECT_OPT_PARSED 0 #define URI_SELECT_OPT_UNPARSED 1 @@ -105,7 +114,7 @@ static int uri_select_option = URI_SELECT_OPT_PARSED; -static int init_jk(jk_env_t *env,char *serverName); +static int init_jk(char *serverName); static int initialize_extension(void); @@ -123,6 +132,9 @@ DWORD bufsz, char *def_val); +static jk_env_t* jk2_create_config(); + + static void write_error_response(PHTTP_FILTER_CONTEXT pfc,char *status,char * msg) { char crlf[3] = { (char)13, (char)10, '\0' }; @@ -173,7 +185,8 @@ DWORD dwNotificationType, LPVOID pvNotification) { - jk_env_t *env = workerEnv->globalEnv->getEnv( workerEnv->globalEnv ); + jk_env_t *env; + jk_uriEnv_t *uriEnv; /* Initialise jk */ if (is_inited && !is_mapread) { @@ -182,14 +195,14 @@ if (pfc->GetServerVariable(pfc, SERVER_NAME, serverName, &dwLen)){ if (dwLen > 0) serverName[dwLen-1] = '\0'; - if (init_jk(env,serverName)) + if (init_jk(serverName)) is_mapread = JK_TRUE; } /* If we can't read the map we become dormant */ if (!is_mapread) is_inited = JK_FALSE; } - + env = workerEnv->globalEnv->getEnv( workerEnv->globalEnv ); if (is_inited && (iis5 < 0) ) { char serverSoftware[256]; DWORD dwLen = sizeof(serverSoftware); @@ -203,7 +216,6 @@ } } } - if (is_inited && (((SF_NOTIFY_PREPROC_HEADERS == dwNotificationType) && !iis5) || ((SF_NOTIFY_AUTH_COMPLETE == dwNotificationType) && iis5) @@ -251,6 +263,7 @@ if (!GetHeader(pfc, "url", (LPVOID)uri, (LPDWORD)&sz)) { env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc error while getting the url\n"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_ERROR; } @@ -269,6 +282,7 @@ uri); write_error_response(pfc,"400 Bad Request", "<HTML><BODY><H1>Request contains invalid encoding</H1></BODY></HTML>"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_FINISHED; } else if(rc == BAD_PATH) { @@ -277,26 +291,27 @@ uri); write_error_response(pfc,"403 Forbidden", "<HTML><BODY><H1>Access is Forbidden</H1></BODY></HTML>"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_FINISHED; } jk_requtil_getParents(uri); + if(GetHeader(pfc, "Host:", (LPVOID)Host, (LPDWORD)&szHost)) { - strcat(snuri,Host); - strcat(snuri,uri); env->l->jkLog(env, env->l, JK_LOG_DEBUG, "In HttpFilterProc Virtual Host redirection of %s\n", - snuri); -// worker = map_uri_to_worker(uw_map, snuri, logger); + Host); + uriEnv = workerEnv->uriMap->mapUri(env, workerEnv->uriMap,Host,uri ); } - if (!worker) { + + if (uriEnv==NULL) { env->l->jkLog(env, env->l, JK_LOG_DEBUG, "In HttpFilterProc test Default redirection of %s\n", uri); -// worker = map_uri_to_worker(uw_map, uri, logger); + uriEnv = workerEnv->uriMap->mapUri(env, workerEnv->uriMap,NULL,uri ); } - if (worker) { + if (uriEnv!=NULL) { char *forwardURI; /* This is a servlet, should redirect ... */ @@ -321,6 +336,7 @@ uri); write_error_response(pfc,"400 Bad Request", "<HTML><BODY><H1>Request contains too many characters that need to be encoded.</H1></BODY></HTML>"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_FINISHED; } env->l->jkLog(env, env->l, JK_LOG_DEBUG, @@ -333,10 +349,11 @@ if(!AddHeader(pfc, URI_HEADER_NAME, forwardURI) || ( (query != NULL && strlen(query) > 0) ? !AddHeader(pfc, QUERY_HEADER_NAME, query) : FALSE ) || - !AddHeader(pfc, WORKER_HEADER_NAME, worker) || + !AddHeader(pfc, WORKER_HEADER_NAME, uriEnv->workerName) || !SetHeader(pfc, "url", extension_uri)) { env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc error while adding request headers\n"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_ERROR; } @@ -349,6 +366,7 @@ if (!AddHeader(pfc, TOMCAT_TRANSLATE_HEADER_NAME, Translate)) { env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc error while adding Tomcat-Translate headers\n"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_ERROR; } SetHeader(pfc, "Translate:", NULL); @@ -374,10 +392,12 @@ write_error_response(pfc,"403 Forbidden", "<HTML><BODY><H1>Access is Forbidden</H1></BODY></HTML>"); + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_FINISHED; } } } + workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env ); return SF_STATUS_REQ_NEXT_NOTIFICATION; } @@ -412,7 +432,7 @@ DWORD dwLen = sizeof(serverName); if (lpEcb->GetServerVariable(lpEcb->ConnID, SERVER_NAME, serverName, &dwLen)){ if (dwLen > 0) serverName[dwLen-1] = '\0'; - if (init_jk(env,serverName)) + if (init_jk(serverName)) is_mapread = JK_TRUE; } if (!is_mapread) @@ -481,15 +501,7 @@ if (is_inited) { is_inited = JK_FALSE; -/* - if (is_mapread) { - uri_worker_map_free(&uw_map, logger); - is_mapread = JK_FALSE; - } - wc_close(logger); - if (logger) { - jk_close_file_logger(&logger); - } +/* XXX Here goes a graceful shutdown of jk2, Free resources and pools */ } @@ -528,13 +540,11 @@ return fReturn; } -static int init_jk(jk_env_t *env,char *serverName) +static int init_jk(char *serverName) { int rc = JK_FALSE; - jk_map_t *map; - ; - - /* XXX Copy jk init code from apache2 */ + + jk_env_t *env=jk2_create_config(); /* Logging the initialization type: registry or properties file in virtual dir */ @@ -546,63 +556,9 @@ env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using log file %s.\n", log_file); env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using log level %d.\n", log_level); env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using extension uri %s.\n", extension_uri); - env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using worker file %s.\n", worker_file); - env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using worker mount file %s.\n", worker_mount_file); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using server root %s.\n", server_root); +// env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using worker mount file %s.\n", worker_mount_file); env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using uri select %d.\n", uri_select_option); -/* - if (map_alloc(&map)) { - if (map_read_properties(map, worker_mount_file)) { - jk_map_t *map2; - if (map_alloc(&map2)) { - int sz,i; - void* old; - - sz = map_size(map); - for(i = 0; i < sz ; i++) { - char *name = map_name_at(map, i); - if ('/' == *name) { - map_put(map2, name, map_value_at(map, i), &old); - } else { - env->l->jkLog(env, env->l, JK_LOG_DEBUG, - "Ignoring worker mount file entry %s=%s.\n", - name, map_value_at(map, i)); - } - } - - if (uri_worker_map_alloc(&uw_map, map2, logger)) { - rc = JK_TRUE; - } - - map_free(&map2); - } - } else { - env->l->jkLog(env, env->l, JK_LOG_EMERG, - "Unable to read worker mount file %s.\n", - worker_mount_file); - } - map_free(&map); - } - if (rc) { - rc = JK_FALSE; - if (map_alloc(&map)) { - if (map_read_properties(map, worker_file)) { - - worker_env.uri_to_worker = uw_map; - worker_env.server_name = serverName; - - if (wc_open(map, &worker_env, logger)) { - rc = JK_TRUE; - } - } else { - env->l->jkLog(env, env->l, JK_LOG_EMERG, - "Unable to read worker file %s.\n", - worker_file); - } - map_free(&map); - } - } -*/ - return rc; } @@ -641,6 +597,7 @@ char *tmp; jk_map_t *map; +/* if (map_alloc(&map)) { if (map_read_properties(map, ini_file_name)) { using_ini_file = JK_TRUE; @@ -655,7 +612,7 @@ } tmp = map_get_string(map, JK_LOG_LEVEL_TAG, NULL); if (tmp) { - log_level = jk_parse_log_level(tmp); + log_level = jk2_logger_file_parseLogLevel(tmp); } else { ok = JK_FALSE; } @@ -665,15 +622,9 @@ } else { ok = JK_FALSE; } - tmp = map_get_string(map, JK_WORKER_FILE_TAG, NULL); - if (tmp) { - strcpy(worker_file, tmp); - } else { - ok = JK_FALSE; - } - tmp = map_get_string(map, JK_MOUNT_FILE_TAG, NULL); + tmp = map_get_string(map, SERVER_ROOT_TAG, NULL); if (tmp) { - strcpy(worker_mount_file, tmp); + strcpy(server_root, tmp); } else { ok = JK_FALSE; } @@ -687,7 +638,7 @@ } } - } else { + } else */ { rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_LOCATION, (DWORD)0, @@ -710,7 +661,7 @@ JK_LOG_LEVEL_TAG, tmpbuf, sizeof(tmpbuf))) { - log_level = jk_parse_log_level(tmpbuf); + log_level = jk2_logger_file_parseLogLevel(tmpbuf); } else { ok = JK_FALSE; } @@ -725,6 +676,15 @@ } if(get_registry_config_parameter(hkey, + SERVER_ROOT_TAG, + tmpbuf, + sizeof(server_root))) { + strcpy(server_root, tmpbuf); + } else { + ok = JK_FALSE; + } +/* + if(get_registry_config_parameter(hkey, JK_WORKER_FILE_TAG, tmpbuf, sizeof(worker_file))) { @@ -741,7 +701,7 @@ } else { ok = JK_FALSE; } - +*/ if(get_registry_config_parameter(hkey, URI_SELECT_TAG, tmpbuf, @@ -788,12 +748,12 @@ */ -static void jk2_create_workerEnv (LPEXTENSION_CONTROL_BLOCK *s) { - jk_env_t *env; +static jk_env_t* jk2_create_workerEnv (void) { + jk_logger_t *l; jk_pool_t *globalPool; jk_bean_t *jkb; - + jk_env_t *env; /** First create a pool. Compile time option */ jk2_pool_create( NULL, &globalPool, NULL, 2048 ); @@ -823,46 +783,38 @@ if( workerEnv==NULL ) { env->l->jkLog(env, env->l, JK_LOG_ERROR, "Error creating workerEnv\n"); - return; + return env; } /* XXX Detect install dir, be means of service configs, */ -/* -workerEnv->initData->add( env, workerEnv->initData, "serverRoot", - workerEnv->pool->pstrdup( env, workerEnv->pool, ap_server_root)); - env->l->jkLog(env, env->l, JK_LOG_ERROR, "Set serverRoot %s\n", ap_server_root); - -*/ - /* Local initialization */ - workerEnv->_private = s; + workerEnv->initData->add( env, workerEnv->initData, "serverRoot", + workerEnv->pool->pstrdup( env, workerEnv->pool, server_root)); + env->l->jkLog(env, env->l, JK_LOG_ERROR, "Set serverRoot %s\n", server_root); + + return env; } -static void *jk2_create_config(LPEXTENSION_CONTROL_BLOCK *s) +static jk_env_t * jk2_create_config() { jk_uriEnv_t *newUri; jk_bean_t *jkb; - + jk_env_t *env; if( workerEnv==NULL ) { - jk2_create_workerEnv( s ); + env=jk2_create_workerEnv(); } -/* if( s->is_virtual == 1 ) { - /* Virtual host */ -// fprintf( stderr, "Create config for virtual host\n"); -// } else { - /* Default host */ - fprintf( stderr, "Create config for main host\n"); -// } + + env->l->jkLog(env, env->l, JK_LOG_ERROR, "JK2 Config Created"); jkb = workerEnv->globalEnv->createBean2( workerEnv->globalEnv, workerEnv->pool, "uri", NULL ); - newUri=jkb->object; + newUri=jkb->object; - newUri->workerEnv=workerEnv; + newUri->workerEnv=workerEnv; - return newUri; + return env; } 1.8 +1 -1 jakarta-tomcat-connectors/jk/native2/server/isapi/jk_service_iis.c Index: jk_service_iis.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_service_iis.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- jk_service_iis.c 19 Apr 2002 18:48:57 -0000 1.7 +++ jk_service_iis.c 19 Apr 2002 23:08:53 -0000 1.8 @@ -508,7 +508,7 @@ if (s->content_read < s->content_length || (s->is_chunked && ! s->no_more_chunks)) { - LPEXTENSION_CONTROL_BLOCK lpEcb=(LPEXTENSION_CONTROL_BLOCK)s->ws_private; + LPEXTENSION_CONTROL_BLOCK lpEcb=(LPEXTENSION_CONTROL_BLOCK)s->ws_private; char *buff = s->pool->calloc(env,s->pool, 2048); if (buff != NULL) {
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>