nacho 02/04/19 10:26:08
Modified: jk/native2/server/isapi isapi.dsp jk_iis.h jk_isapi_plugin.c
Log:
* Work in progress
More cleanup, starting get things in place, some shakes need, but everything is
there, compiles..
Revision Changes Path
1.2 +4 -8 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.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- isapi.dsp 18 Apr 2002 15:03:32 -0000 1.1
+++ isapi.dsp 19 Apr 2002 17:26:08 -0000 1.2
@@ -140,10 +140,6 @@
# End Source File
# Begin Source File
-SOURCE=..\..\common\jk_nwmain.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\common\jk_objCache.c
# End Source File
# Begin Source File
@@ -216,10 +212,6 @@
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
-SOURCE=.\iis.h
-# End Source File
-# Begin Source File
-
SOURCE=..\..\include\jk_channel.h
# End Source File
# Begin Source File
@@ -241,6 +233,10 @@
# Begin Source File
SOURCE=..\..\include\jk_handler.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\jk_iis.h
# End Source File
# Begin Source File
1.4 +19 -10 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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- jk_iis.h 19 Apr 2002 14:03:28 -0000 1.3
+++ jk_iis.h 19 Apr 2002 17:26:08 -0000 1.4
@@ -95,9 +95,9 @@
#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 SERVER_SOFTWARE ("SERVER_SOFTWARE")
#define REGISTRY_LOCATION ("Software\\Apache Software Foundation\\Jakarta
Isapi Redirector\\2.0")
#define EXTENSION_URI_TAG ("extension_uri")
@@ -108,16 +108,16 @@
#define URI_SELECT_UNPARSED_VERB ("unparsed")
#define URI_SELECT_ESCAPED_VERB ("escaped")
-#define BAD_REQUEST -1
-#define BAD_PATH -2
-#define MAX_SERVERNAME 128
+#define BAD_REQUEST -1
+#define BAD_PATH -2
+#define MAX_SERVERNAME 128
#define GET_SERVER_VARIABLE_VALUE(name, place) { \
(place) = NULL; \
huge_buf_sz = sizeof(huge_buf); \
if (get_server_value(env, \
- lpEcb, \
+ lpEcb, \
(name), \
huge_buf, \
huge_buf_sz, \
@@ -129,7 +129,7 @@
#define GET_SERVER_VARIABLE_VALUE_INT(name, place, def) { \
huge_buf_sz = sizeof(huge_buf); \
if (get_server_value(env,\
- lpEcb, \
+ lpEcb, \
(name), \
huge_buf, \
huge_buf_sz, \
@@ -143,11 +143,20 @@
} \
}\
-void JK_METHOD getparents(char *name);
-int JK_METHOD escape_url(const char *path, char *dest, int destsize);
+static int JK_METHOD jk2_service_iis_head(jk_env_t *env, jk_ws_service_t *s );
+
+static int JK_METHOD jk2_service_iis_read(jk_env_t *env, jk_ws_service_t *s,
+ void *b, unsigned len,
+ unsigned *actually_read);
+
+static int JK_METHOD jk2_service_iis_write(jk_env_t *env,jk_ws_service_t *s,
+ const void *b,
+ unsigned l);
+
+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 JK_METHOD unescape_url(char *url);
#ifdef __cplusplus
}
1.5 +50 -66
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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jk_isapi_plugin.c 19 Apr 2002 03:31:05 -0000 1.4
+++ jk_isapi_plugin.c 19 Apr 2002 17:26:08 -0000 1.5
@@ -60,7 +60,7 @@
* Author: Gal Shachor <[EMAIL PROTECTED]> *
* Author: Larry Isaacs <[EMAIL PROTECTED]> *
* Author: Ignacio J. Ortega <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.4 $ *
+ * Version: $Revision: 1.5 $ *
***************************************************************************/
// This define is needed to include wincrypt,h, needed to get client certificates
@@ -71,9 +71,10 @@
#include <wininet.h>
#include "jk_global.h"
-//#include "jk_util.h"
+#include "jk_requtil.h"
#include "jk_map.h"
#include "jk_pool.h"
+#include "jk_logger.h"
#include "jk_env.h"
#include "jk_service.h"
#include "jk_worker.h"
@@ -81,8 +82,6 @@
#include "jk_iis.h"
//#include "jk_uri_worker_map.h"
-#define jk_log(a,b,c)
-
static char ini_file_name[MAX_PATH];
static int using_ini_file = JK_FALSE;
@@ -106,12 +105,7 @@
static int uri_select_option = URI_SELECT_OPT_PARSED;
-static int init_ws_service(jk_env_t *env,isapi_private_data_t *private_data,
- jk_ws_service_t *s,
- char **worker_name);
-
-
-static int init_jk(char *serverName);
+static int init_jk(jk_env_t *env,char *serverName);
static int initialize_extension(void);
@@ -129,29 +123,24 @@
DWORD bufsz,
char *def_val);
-static int base64_encode_cert_len(int len);
-
-static int base64_encode_cert(char *encoded,
- const unsigned char *string,
- int len);
-
-
-
-static int uri_is_web_inf(char *uri)
+static void write_error_response(PHTTP_FILTER_CONTEXT pfc,char *status,char * msg)
{
- char *c = uri;
- while(*c) {
- *c = tolower(*c);
- c++;
- }
- if(strstr(uri, "web-inf")) {
- return JK_TRUE;
- }
- if(strstr(uri, "meta-inf")) {
- return JK_TRUE;
- }
-
- return JK_FALSE;
+ char crlf[3] = { (char)13, (char)10, '\0' };
+ char ctype[30];
+ DWORD len = strlen(msg);
+
+ sprintf(ctype,
+ "Content-Type:text/html%s%s",
+ crlf,
+ crlf);
+
+ /* reject !!! */
+ pfc->ServerSupportFunction(pfc,
+ SF_REQ_SEND_RESPONSE_HEADER,
+ status,
+ (DWORD)crlf,
+ (DWORD)ctype);
+ pfc->WriteClient(pfc, msg, &len, 0);
}
@@ -193,7 +182,7 @@
if (pfc->GetServerVariable(pfc, SERVER_NAME, serverName, &dwLen)){
if (dwLen > 0) serverName[dwLen-1] = '\0';
- if (init_jk(serverName))
+ if (init_jk(env,serverName))
is_mapread = JK_TRUE;
}
/* If we can't read the map we become dormant */
@@ -273,7 +262,7 @@
*query++ = '\0';
}
- rc = unescape_url(uri);
+ rc = jk_requtil_unescapeUrl(uri);
if (rc == BAD_REQUEST) {
env->l->jkLog(env, env->l, JK_LOG_ERROR,
"HttpFilterProc [%s] contains one or more invalid escape
sequences.\n",
@@ -290,7 +279,7 @@
"<HTML><BODY><H1>Access is Forbidden</H1></BODY></HTML>");
return SF_STATUS_REQ_FINISHED;
}
- getparents(uri);
+ jk_requtil_getParents(uri);
if(GetHeader(pfc, "Host:", (LPVOID)Host, (LPDWORD)&szHost)) {
strcat(snuri,Host);
@@ -326,7 +315,7 @@
"HttpFilterProc fowarding original URI [%s]\n",uri);
forwardURI = uri;
} else if (uri_select_option == URI_SELECT_OPT_ESCAPED) {
- if (!escape_url(uri,snuri,INTERNET_MAX_URL_LENGTH)) {
+ if (!jk_requtil_escapeUrl(uri,snuri,INTERNET_MAX_URL_LENGTH)) {
env->l->jkLog(env, env->l, JK_LOG_ERROR,
"HttpFilterProc [%s] re-encoding request exceeds
maximum buffer size.\n",
uri);
@@ -371,14 +360,14 @@
}
/*
- * Check if somebody is feading us with his own TOMCAT data headers.
+ * Check if somebody is feeding us with his own TOMCAT data headers.
* We reject such postings !
*/
env->l->jkLog(env, env->l, JK_LOG_DEBUG,
"HttpFilterProc check if [%s] is points to the web-inf
directory\n",
uri);
- if(uri_is_web_inf(uri)) {
+ if(jk_requtil_uriIsWebInf(uri)) {
env->l->jkLog(env, env->l, JK_LOG_EMERG,
"HttpFilterProc [%s] points to the web-inf or meta-inf
directory.\nSomebody try to hack into the site!!!\n",
uri);
@@ -411,8 +400,8 @@
DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpEcb)
{
DWORD rc = HSE_STATUS_ERROR;
- lpEcb->dwHttpStatusCode = HTTP_STATUS_SERVER_ERROR;
jk_env_t *env = workerEnv->globalEnv->getEnv( workerEnv->globalEnv );
+ lpEcb->dwHttpStatusCode = HTTP_STATUS_SERVER_ERROR;
env->l->jkLog(env, env->l, JK_LOG_DEBUG,
"HttpExtensionProc started\n");
@@ -423,7 +412,7 @@
DWORD dwLen = sizeof(serverName);
if (lpEcb->GetServerVariable(lpEcb->ConnID, SERVER_NAME, serverName,
&dwLen)){
if (dwLen > 0) serverName[dwLen-1] = '\0';
- if (init_jk(serverName))
+ if (init_jk(env,serverName))
is_mapread = JK_TRUE;
}
if (!is_mapread)
@@ -455,13 +444,13 @@
s->ws_private = lpEcb;
/* Initialize the ws_service structure */
- s->init( env, s, worker, r );
+ s->init( env, s, worker, lpEcb );
- env->l->jkLog(env, env->l, JK_LOG_DEBUG,
+ /* env->l->jkLog(env, env->l, JK_LOG_DEBUG,
"HttpExtensionProc %s a worker for name %s\n",
worker ? "got" : "could not get",
worker_name);
-
+ */
rc = worker->service(env, worker, s);
s->afterRequest(env, s);
@@ -539,11 +528,11 @@
return fReturn;
}
-static int init_jk(char *serverName)
+static int init_jk(jk_env_t *env,char *serverName)
{
int rc = JK_FALSE;
jk_map_t *map;
- jk_env_t *env;
+ ;
/* XXX Copy jk init code from apache2 */
@@ -799,7 +788,7 @@
*/
-static void jk2_create_workerEnv(apr_pool_t *p /*, server_rec *s*/) {
+static void jk2_create_workerEnv (LPEXTENSION_CONTROL_BLOCK *s) {
jk_env_t *env;
jk_logger_t *l;
jk_pool_t *globalPool;
@@ -807,11 +796,7 @@
/** First create a pool. Compile time option
*/
-#ifdef NO_APACHE_POOL
jk2_pool_create( NULL, &globalPool, NULL, 2048 );
-#else
- jk2_pool_apr_create( NULL, &globalPool, NULL, p );
-#endif
/** Create the global environment. This will register the default
factories
@@ -822,17 +807,9 @@
/* Init the environment. */
/* Create the logger */
-#ifdef NO_APACHE_LOGGER
jkb=env->createBean2( env, env->globalPool, "logger.file", "");
env->alias( env, "logger.file:", "logger");
l = jkb->object;
-#else
- env->registerFactory( env, "logger.apache2", jk2_logger_apache2_factory );
- jkb=env->createBean2( env, env->globalPool, "logger.apache2", "");
- env->alias( env, "logger.apache2:", "logger");
- l = jkb->object;
- l->logger_private=s;
-#endif
env->l=l;
@@ -849,29 +826,36 @@
return;
}
- workerEnv->initData->add( env, workerEnv->initData, "serverRoot",
+/* 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;
}
-static void *jk2_create_config(apr_pool_t *p /*, server_rec *s*/)
+static void *jk2_create_config(LPEXTENSION_CONTROL_BLOCK *s)
{
jk_uriEnv_t *newUri;
jk_bean_t *jkb;
if( workerEnv==NULL ) {
- jk2_create_workerEnv(p, s );
+ jk2_create_workerEnv( s );
}
- if( s->is_virtual == 1 ) {
+/* if( s->is_virtual == 1 ) {
/* Virtual host */
- fprintf( stderr, "Create config for virtual host\n");
- } else {
+// fprintf( stderr, "Create config for virtual host\n");
+// } else {
/* Default host */
fprintf( stderr, "Create config for main host\n");
- }
+// }
jkb = workerEnv->globalEnv->createBean2( workerEnv->globalEnv,
workerEnv->pool,
@@ -881,4 +865,4 @@
newUri->workerEnv=workerEnv;
return newUri;
-}
+}
\ No newline at end of file
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>