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]>

Reply via email to