=== modified file 'src/cf.data.pre' --- src/cf.data.pre 2011-11-27 10:59:41 +0000 +++ src/cf.data.pre 2011-12-12 09:14:49 +0000 @@ -563,7 +563,10 @@ FORMAT specifications - %LOGIN Authenticated user login name + %LOGIN Authenticated user login name. Will perform authenticateion + challenges if no valid credentials are present. + %un A user name. Pulls any name available from both + authenticated and non-authenticated sources. %EXT_USER Username from previous external acl %EXT_LOG Log details from previous external acl %EXT_TAG Tag from previous external acl === modified file 'src/external_acl.cc' --- src/external_acl.cc 2011-12-04 06:44:05 +0000 +++ src/external_acl.cc 2011-12-12 09:08:11 +0000 @@ -187,6 +187,7 @@ #endif #if USE_AUTH EXT_ACL_EXT_USER, + EXT_ACL_USERNAME, #endif EXT_ACL_EXT_LOG, EXT_ACL_TAG, @@ -467,6 +468,8 @@ #if USE_AUTH else if (strcmp(token, "%EXT_USER") == 0) format->type = _external_acl_format::EXT_ACL_EXT_USER; + else if (strcmp(token, "%un") == 0) + format->type = _external_acl_format::EXT_ACL_USERNAME; #endif else if (strcmp(token, "%EXT_LOG") == 0) format->type = _external_acl_format::EXT_ACL_EXT_LOG; @@ -611,6 +614,9 @@ #endif #if USE_AUTH DUMP_EXT_ACL_TYPE(EXT_USER); + case _external_acl_format::EXT_ACL_USERNAME: + storeAppendPrintf(sentry, " %%un"); + break; #endif DUMP_EXT_ACL_TYPE(EXT_LOG); DUMP_EXT_ACL_TYPE(TAG); @@ -1104,6 +1110,17 @@ case _external_acl_format::EXT_ACL_EXT_USER: str = request->extacl_user.termedBuf(); break; + case _external_acl_format::EXT_ACL_USERNAME: + // find any name from: auth, ext ACL, ssl cert, and rfc931 usernames; in that order of preference. + if (!str && ch->auth_user_request != NULL) + str = ch->auth_user_request->username(); + if(!str && strcmp(request->extacl_user.termedBuf(), "-") != 0) + str = request->extacl_user.termedBuf(); + // TODO ssl client certificate name + // TODO rfc931 user identity + + // TODO apply URL-encoding + break; #endif case _external_acl_format::EXT_ACL_EXT_LOG: str = request->extacl_log.termedBuf();