ports/167209: [patch] www/lighttpd to allow use of remote-user in conditionals
Ryan Steinmetz
rpsfa at rit.edu
Sun Apr 22 18:00:25 UTC 2012
>Number: 167209
>Category: ports
>Synopsis: [patch] www/lighttpd to allow use of remote-user in conditionals
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Sun Apr 22 18:00:24 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Ryan Steinmetz
>Release: 8.3-RELEASE
>Organization:
Rochester Institute of Technology
>Environment:
>Description:
This patch adds the ability to use syntax like the following:
$HTTP["url"] =~ "^/url" {
$HTTP["remoteuser"] !~ "myuser" {
url.access-deny = ( "" )
}
}
This makes it possible to authorize specific client certificates whenever they are used. Sample syntax could look like the following:
ssl.verifyclient.exportcert = "enable"
ssl.verifyclient.activate = "enable"
ssl.verifyclient.username = "SSL_CLIENT_S_DN_CN"
ssl.verifyclient.enforce = "disable"
ssl.verifyclient.depth = 3
ssl.verifyclient.username = "SSL_CLIENT_S_DN_CN"
ssl.verifyclient.exportcert = "enable"
$HTTP["url"] =~ "^/url" {
$HTTP["remoteuser"] !~ "mycertCN" {
url.access-deny = ( "" )
}
}
This patch has been submitted upstream in Feature request #2415, however, the last release of lighttpd was over 1 year ago.
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/www/lighttpd/Makefile,v
retrieving revision 1.107
diff -u -r1.107 Makefile
--- Makefile 19 Mar 2012 09:18:13 -0000 1.107
+++ Makefile 22 Apr 2012 17:53:40 -0000
@@ -59,7 +59,8 @@
OPENSSL "Enable SSL support" on \
SPAWNFCGI "Depend on spawn-fcgi utility" off \
VALGRIND "Enable valgrind support" off \
- WEBDAV "Enable WebDAV support" off
+ WEBDAV "Enable WebDAV support" off \
+ REMOTEUSER "Enable remote-user in conditionals" off
.if !defined(NOPORTDOCS)
DOCS= AUTHORS COPYING INSTALL NEWS README
@@ -186,6 +187,10 @@
CONFIGURE_ARGS+= --with-webdav-props --with-webdav-locks
.endif
+.if defined(WITH_REMOTEUSER)
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-remoteuser
+.endif
+
SUB_LIST+= REQUIRE="${_REQUIRE}"
post-patch:
Index: files/extra-patch-remoteuser
===================================================================
RCS file: files/extra-patch-remoteuser
diff -N files/extra-patch-remoteuser
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/extra-patch-remoteuser 22 Apr 2012 17:50:20 -0000
@@ -0,0 +1,64 @@
+diff -urN src/array.h src/array.h
+--- src/array.h 2010-02-01 18:28:20.000000000 -0500
++++ src/array.h 2012-04-22 13:25:16.000000000 -0400
+@@ -96,6 +96,7 @@
+ COMP_HTTP_QUERY_STRING,
+ COMP_HTTP_SCHEME,
+ COMP_HTTP_REQUEST_METHOD,
++ COMP_HTTP_REMOTE_USER,
+
+ COMP_LAST_ELEMENT
+ } comp_key_t;
+diff -urN src/configfile-glue.c src/configfile-glue.c
+--- src/configfile-glue.c 2010-08-17 05:04:38.000000000 -0400
++++ src/configfile-glue.c 2012-04-22 13:25:16.000000000 -0400
+@@ -455,6 +455,14 @@
+ }
+ break;
+ }
++ case COMP_HTTP_REMOTE_USER: {
++ if (NULL != con->authed_user) {
++ l = con->authed_user;
++ } else {
++ l = srv->empty_string;
++ }
++ break;
++ }
+ default:
+ return COND_RESULT_FALSE;
+ }
+diff -urN src/configparser.c src/configparser.c
+--- src/configparser.c 2011-12-18 09:54:21.000000000 -0500
++++ src/configparser.c 2012-04-22 13:25:16.000000000 -0400
+@@ -1221,6 +1221,8 @@
+ { COMP_HTTP_QUERY_STRING, CONST_STR_LEN("HTTP[\"query-string\"]") },
+ { COMP_HTTP_REQUEST_METHOD, CONST_STR_LEN("HTTP[\"request-method\"]") },
+ { COMP_HTTP_SCHEME, CONST_STR_LEN("HTTP[\"scheme\"]" ) },
++ { COMP_HTTP_REMOTE_USER, CONST_STR_LEN("HTTP[\"remoteuser\"]" ) },
++ { COMP_HTTP_REMOTE_USER, CONST_STR_LEN("HTTP[\"remote-user\"]" ) },
+ { COMP_UNSET, NULL, 0 },
+ };
+ size_t i;
+diff -urN src/configparser.y src/configparser.y
+--- src/configparser.y 2010-02-01 18:28:20.000000000 -0500
++++ src/configparser.y 2012-04-22 13:25:16.000000000 -0400
+@@ -435,6 +435,8 @@
+ { COMP_HTTP_QUERY_STRING, CONST_STR_LEN("HTTP[\"query-string\"]") },
+ { COMP_HTTP_REQUEST_METHOD, CONST_STR_LEN("HTTP[\"request-method\"]") },
+ { COMP_HTTP_SCHEME, CONST_STR_LEN("HTTP[\"scheme\"]" ) },
++ { COMP_HTTP_REMOTE_USER, CONST_STR_LEN("HTTP[\"remoteuser\"]" ) },
++ { COMP_HTTP_REMOTE_USER, CONST_STR_LEN("HTTP[\"remote-user\"]" ) },
+ { COMP_UNSET, NULL, 0 },
+ };
+ size_t i;
+diff -urN src/response.c src/response.c
+--- src/response.c 2010-08-17 05:04:38.000000000 -0400
++++ src/response.c 2012-04-22 13:25:30.000000000 -0400
+@@ -280,6 +280,7 @@
+ config_patch_connection(srv, con, COMP_HTTP_LANGUAGE); /* Accept-Language: */
+ config_patch_connection(srv, con, COMP_HTTP_COOKIE); /* Cookie: */
+ config_patch_connection(srv, con, COMP_HTTP_REQUEST_METHOD); /* REQUEST_METHOD */
++ config_patch_connection(srv, con, COMP_HTTP_REMOTE_USER); /* REMOTE_USER */
+
+ /** their might be a fragment which has to be cut away */
+ if (NULL != (qstr = strchr(con->request.uri->ptr, '#'))) {
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list