]> andersk Git - mod-vhost-ldap.git/commitdiff
Update mod_vhost_ldap to 2.0.5
authorAnders Kaseorg <andersk@mit.edu>
Sat, 17 Jul 2010 19:53:11 +0000 (19:53 +0000)
committerAnders Kaseorg <andersk@mit.edu>
Sat, 17 Jul 2010 19:53:11 +0000 (19:53 +0000)
Now that mod_vhost_ldap upstream has taken all our patches except the
non-upstreamable one that hard-codes the /~username alias for our
vhosts, it might be a good idea to upgrade.

(Hopefully, gdb’s arbitrary-directives work will eventually provide a
good way to upstream the /~username functionality.)

git-svn-id: svn://scripts.mit.edu/trunk@1588 db9d59ff-b01e-0410-9b1a-cd9a8c06840f

1  2 
mod_vhost_ldap.c

index c00e56bddf015d43c097b198c89fe3b0f0ae8c9d,3c5cde9f536fdb3be73c81c20e9c043cb834ea64..807bc13ae7ff7365a291d94e893ed6745f944365
  
  #define MIN_UID 100
  #define MIN_GID 100
 +const char USERDIR[] = "web_scripts";
  
+ #define MAX_FAILURES 5
  module AP_MODULE_DECLARE_DATA vhost_ldap_module;
  
  typedef enum {
@@@ -587,8 -605,7 +606,8 @@@ null
      }
  
      cgi = NULL;
-   
 +#if 0
      if (reqc->cgiroot) {
        cgi = strstr(r->uri, "cgi-bin/");
        if (cgi && (cgi != r->uri + strspn(r->uri, "/"))) {
        }
      }
      if (cgi) {
-       r->filename = apr_pstrcat (r->pool, reqc->cgiroot, cgi + strlen("cgi-bin"), NULL);
-       r->handler = "cgi-script";
-       apr_table_setn(r->notes, "alias-forced-type", r->handler);
+         /* Set exact filename for CGI script */
+         cgi = apr_pstrcat(r->pool, reqc->cgiroot, cgi + strlen("cgi-bin"), NULL);
+         if ((cgi = ap_server_root_relative(r->pool, cgi))) {
+         ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r,
+                       "[mod_vhost_ldap.c]: ap_document_root is: %s",
+                       ap_document_root(r));
+         r->filename = cgi;
+         r->handler = "cgi-script";
+         apr_table_setn(r->notes, "alias-forced-type", r->handler);
+       }
 +#endif
 +    /* This is a quick, dirty hack. I should be shot for taking 6.170
 +     * this term and being willing to write a quick, dirty hack. */
 +    
 +    if (strncmp(r->uri, "/~", 2) == 0) {
 +      char *username;
 +      uid_t uid = (uid_t)atoll(reqc->uid);
 +      if (apr_uid_name_get(&username, uid, r->pool) != APR_SUCCESS) {
 +          ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, r, 
 +                        "could not get username for uid %d", uid);
 +          return DECLINED;
 +      }
 +      if (strncmp(r->uri + 2, username, strlen(username)) == 0 &&
 +          (r->uri[2 + strlen(username)] == '/' ||
 +           r->uri[2 + strlen(username)] == '\0')) {
 +          char *homedir;
 +          if (apr_uid_homepath_get(&homedir, username, r->pool) != APR_SUCCESS) {
 +              ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, r, 
 +                            "could not get home directory for user %s", username);
 +              return DECLINED;
 +          }
 +          r->filename = apr_pstrcat(r->pool, homedir, "/", USERDIR, r->uri + 2 + strlen(username), NULL);
 +      }
      } else if (r->uri[0] == '/') {
-       r->filename = apr_pstrcat (r->pool, reqc->docroot, r->uri, NULL);
+         /* we don't set r->filename here, and let other modules do it
+          * this allows other modules (mod_rewrite.c) to work as usual
+        */
+         /* r->filename = apr_pstrcat (r->pool, reqc->docroot, r->uri, NULL); */
      } else {
+         /* We don't handle non-file requests here */
        return DECLINED;
      }
  
This page took 0.192054 seconds and 5 git commands to generate.