]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Add external_acl_type %EXT_LOG and %EXT_TAG format options.
authorJames Bowe <minijb@gmail.com>
Sun, 1 May 2011 12:10:37 +0000 (00:10 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 1 May 2011 12:10:37 +0000 (00:10 +1200)
%EXT_LOG and %EXT_TAG are filled with the log= and tag= fields
returned by previous external ACLs.

-for a string that never changes after it is set, tag= is suitable.
-for a string that may need updating or overwriting by a later
external_acl, log= is suitable.

Under both circumstances it is conceivable that later external_acls
may need access to the tag= or log= values after they have been set
(e.g. for external_acl debugging, merging log messages, etc).

doc/release-notes/release-3.2.sgml
src/cf.data.pre
src/external_acl.cc

index c46d28640513de11ac880b9ae4b24a86c15ab273..c85ab03d27d656a3d471cfce41606875e0c2cc99 100644 (file)
@@ -476,6 +476,8 @@ This section gives a thorough account of those changes in three categories:
        <p>New format tags and option parameters:
        <p><em>%SRCEUI48</em> EUI-48 / MAC address of client from ARP lookup.
        <p><em>%SRCEUI64</em> EUI-64 of clients with SLAAC address.
+       <p><em>%EXT_LOG</em> log= message returned by previous external ACL calls. An updated version may be returned.
+       <p><em>%EXT_TAG</em> tag= value returned by previous external ACL calls. Tag may not be altered once set.
        <p><em>children-max=N</em> determins maximum number of helper processes used.
        <p><em>children-startup=N</em> determins minimum number of helper processes used.
        <p><em>children-idle=N</em> determines how many helper to retain as buffer against sudden traffic loads.
index 3d860a9281d9ef7791ca1472e507320079cb5a38..20e117f4a2d3877f58da220bb4a540b933379302 100644 (file)
@@ -556,7 +556,9 @@ DOC_START
        FORMAT specifications
 
          %LOGIN        Authenticated user login name
-         %EXT_USER     Username from external acl
+         %EXT_USER     Username from previous external acl
+         %EXT_LOG      Log details from previous external acl
+         %EXT_TAG      Tag from previous external acl
          %IDENT        Ident user name
          %SRC          Client IP
          %SRCPORT      Client source port
index dff0ea91d5076647d52559b92617c0b3774723ae..c661e5de7f9cd1b48f6fbd20ad54b7765cbc3e1a 100644 (file)
@@ -187,6 +187,8 @@ struct _external_acl_format {
 #if USE_AUTH
         EXT_ACL_EXT_USER,
 #endif
+        EXT_ACL_EXT_LOG,
+        EXT_ACL_TAG,
         EXT_ACL_END
     } type;
     external_acl_format *next;
@@ -464,6 +466,10 @@ parse_externalAclHelper(external_acl ** list)
         else if (strcmp(token, "%EXT_USER") == 0)
             format->type = _external_acl_format::EXT_ACL_EXT_USER;
 #endif
+        else if (strcmp(token, "%EXT_LOG") == 0)
+            format->type = _external_acl_format::EXT_ACL_EXT_LOG;
+        else if (strcmp(token, "%TAG") == 0)
+            format->type = _external_acl_format::EXT_ACL_TAG;
         else {
             debugs(0,0, "ERROR: Unknown Format token " << token);
             self_destruct();
@@ -602,6 +608,8 @@ dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl
 #if USE_AUTH
                 DUMP_EXT_ACL_TYPE(EXT_USER);
 #endif
+                DUMP_EXT_ACL_TYPE(EXT_LOG);
+                DUMP_EXT_ACL_TYPE(TAG);
             default:
                 fatal("unknown external_acl format error");
                 break;
@@ -1068,6 +1076,12 @@ makeExternalAclKey(ACLFilledChecklist * ch, external_acl_data * acl_data)
             str = request->extacl_user.termedBuf();
             break;
 #endif
+        case _external_acl_format::EXT_ACL_EXT_LOG:
+            str = request->extacl_log.termedBuf();
+            break;
+        case _external_acl_format::EXT_ACL_TAG:
+            str = request->tag.termedBuf();
+            break;
         case _external_acl_format::EXT_ACL_UNKNOWN:
 
         case _external_acl_format::EXT_ACL_END: