<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 15/11/2021 15:08, Batanun B wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:PR3P190MB0922D10C8BC799451545D4B4AC989@PR3P190MB0922.EURP190.PROD.OUTLOOK.COM">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <style type="text/css" style="display:none;">P {margin-top:0;margin-bottom:0;}</style>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        Hi,</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        We use Varnish Cache 6.0 LTS, with varnish modules 0.15.0. As
        far as I can see, this includes a version of the cookie vmod
        that doesn't support regex. Yet, our use case leans towards
        using a regex, or at least a substring.</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        Case in point. Our frontend uses a bunch of cookies. And a
        handful of them is needed by the backend too. I have done a
        simple test case, with a just a single cookie, and was able to
        use the built in cookie vmod to allow that cookie to go through
        to the backend. But in order for this to be useful for us, we
        need to allow multiple cookies. Cookies that we don't know the
        exact name of when writing the VCL. But they will all start with
        a defined prefix.</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        Example:</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        The incoming request contains the following cookie header:</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <b>Cookie: _fbp=fb.123; _gid=GA1.2.3; custom-x=qwerty;
          _ga_ABCD=GS1.123; custom-y=qwerty; _ga=GA1123</b><br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        And we want to keep all cookies that start with "custom-", hence
        we want the rewritten cookie header to be:</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <b>Cookie: custom-x=qwerty; custom-y=qwerty</b><br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        How can we achieve this with our version of Varnish and
        varnish-modules?</div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
varnish-misc mailing list
<a class="moz-txt-link-abbreviated" href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a>
<a class="moz-txt-link-freetext" href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a>
</pre>
    </blockquote>
    <p><br>
    </p>
    <p>Maybe you can use the cookie config from the drupal vcl example
      on
<a class="moz-txt-link-freetext" href="https://www.varnish-software.com/developers/tutorials/configuring-varnish-drupal/">https://www.varnish-software.com/developers/tutorials/configuring-varnish-drupal/</a><br>
      <br>
      if (req.http.Cookie) {<br>
              set req.http.Cookie = ";" + req.http.Cookie;<br>
              set req.http.Cookie = regsuball(req.http.Cookie, "; +",
      ";");<br>
              set req.http.Cookie = regsuball(req.http.Cookie,
      ";(S?custom-[a-z0-9]+)=", "; \1=");<br>
              set req.http.Cookie = regsuball(req.http.Cookie, ";[^
      ][^;]*", "");<br>
              set req.http.Cookie = regsuball(req.http.Cookie, "^[;
      ]+|[; ]+$", "");<br>
      <br>
              if (req.http.cookie ~ "^\s*$") {<br>
                  unset req.http.cookie;<br>
              } else {<br>
                  return(pass);<br>
              }<br>
      }<br>
      <br>
      <br>
      If my regex foo is not failing me it will keep all cookie's that
      start with custom- and what comes after the dash.<br>
      For this there is no need to use the cookie module as this works
      with a plain varnish-cache install.<br>
      <br>
      <br>
      regards<br>
      Johan Hendriks<br>
    </p>
  </body>
</html>