So how should we move this proposal forward? I'm glad to contribute more
patches...

On Fri, Jan 24, 2020 at 2:15 AM Willy Tarreau <[email protected]> wrote:

> On Fri, Jan 24, 2020 at 10:26:34AM +0100, Christopher Faulet wrote:
> > Le 24/01/2020 à 09:17, Willy Tarreau a écrit :
> > > On Fri, Jan 24, 2020 at 08:28:33AM +0100, Christopher Faulet wrote:
> > > > Le 23/01/2020 à 19:59, James Brown a écrit :
> > > > > I spent a couple of minutes and made the attached (pretty bad)
> patch to
> > > > > add a del-header-by-prefix.
> > > > >
> > > >
> > > > Just an idea. Instead of adding a new action, it could be cleaner to
> extend
> > > > the del-header action adding some keywords. Something like:
> > > >
> > > >    http-request del-header begin-with <prefix>
> > > >    http-request del-header end-with   <sufix>
> > > >    http-request del-header match      <regex>
> > > >
> > > > It could be also extended to replace-header and replace-value
> actions.
> > >
> > > I would also prefer to extend existing syntax, however it's problematic
> > > to insert optional words *before* arguments. This will complicate the
> > > parsing, and even config manipulation scripts.
> > >
> > > That's why I thought we could instead just append an extra optional
> > > keyword appended after the name, eventhough it's less elegant.
> > >
> >
> > From the configuration parsing point of view, it is more or less the same
> > thing. You must test if the second argument is defined or not. And in
> fact,
> > moving it after the header name is not a "better" solution because there
> is
> > an optional condition too at the end. So this one will not be the last
> one.
>
> No, it's more complicated this way because you have to check each and every
> word to figure the syntax. Example: how do you mention that you want to
> remove the header field matching regex "unless" ? You'd have to do this :
>
>      http-request del-header match unless
>
> And it's ambiguous, as it can either mean :
>
>    - delete header name "match" unless a condition which needs to be
> parsed,
>      and once figured invalid, you can roll back ;
>    - delete header described by regex "unless" with no condition
>
> When you do it the other way around it's way easier, because the name
> always being the first argument makes sure the second one is limited to
> a small subset (match/prefix/if/unless for example):
>
>      http-request del-header unless match
>
> A variant of this could be to use the same syntax as the options we already
> use on ACL matches, which are "-m reg", "-m beg", "-m end". But these will
> also need to be placed after to avoid the same ambiguity (since "-m" is a
> token hence a valid header name). That would give for example :
>
>      http-request del-header server
>      http-request del-header x-private-  -m beg
>      http-request del-header x-.*company -m reg
>      http-request del-header -tracea     -m end
>
> Willy
>


-- 
James Brown
Engineer

Reply via email to