Because I needed it in my situation - here's a quick patch to allow changing of the "x-forwarded-for" header by using a suboption to "option forwardfor".
Suboption "header XYZ" will set the header from "x-forwarded-for" to "XYZ".
Default is still "x-forwarded-for" if the header value isn't defined. Also the suboption 'except a.b.c.d/z' still works on the same line.
So it's now: option forwardfor [except a.b.c.d[/z]] [header XYZ]
If people want to check/test/merge/etc, that would be great. diffed against a fresh 1.3.15.2 src package (mine being renamed for 15.2.1)
Cheers,
  Ross.
-= start
diff -r -x '*.o' -x '*.dist' haproxy-1.3.15.2/include/common/defaults.h haproxy-1.3.15.2.1/include/common/defaults.h
110a111,113
> // X-Forwarded-For header default
> #define DEF_XFORWARDFOR_HDR   "X-Forwarded-For"
>
diff -r -x '*.o' -x '*.dist' haproxy-1.3.15.2/include/types/proxy.h haproxy-1.3.15.2.1/include/types/proxy.h
200a201,202
>       char *forwardforhdr_name;               /* header to use - default: "x-forwarded-for" */
>       int forwardforhdr_len;                  /* length of "x-forwarded-for" header */
diff -r -x '*.o' -x '*.dist' haproxy-1.3.15.2/src/cfgparse.c haproxy-1.3.15.2.1/src/cfgparse.c 1320,1324c1320,1358
<                       if (*(args[2])) {
<                               if (!strcmp(args[2], "except")) {
<                                       if (!*args[3] || !str2net(args[3], &curproxy->except_net, &curproxy->except_mask)) {
<                                               Alert("parsing [%s:%d] : '%s' only supports optional 'except' address[/mask].\n",
<                                                     file, linenum, args[0]);
---
>                       /* set default options (ie: bitfield, header name, etc) */
>
<                                       /* flush useless bits */
<                                       curproxy->except_net.s_addr &= curproxy->except_mask.s_addr;
<                               } else {
<                                       Alert("parsing [%s:%d] : '%s' only supports optional 'except' address[/mask].\n",
<                                             file, linenum, args[0]);
<                                       return -1;
<                               }
<                       }
<                       curproxy->options |= PR_O_FWDFOR;
---
>                               }
>                       } /* end while loop */
diff -r -x '*.o' -x '*.dist' haproxy-1.3.15.2/src/proto_http.c haproxy-1.3.15.2.1/src/proto_http.c 2036,2037c2036,2038
< len = sprintf(trash, "X-Forwarded-For: %d.%d.%d.%d", < pn[0], pn[1], pn[2], pn[3]); ---
> /* FIXME: fe or be, which is right? - assume "be" (backend) is best */
> len = sprintf(trash, "%s: %d.%d.%d.%d",
> t->be->forwardforhdr_name, pn[0], pn[1], pn[2], pn[3]);
-= end
--Received on 2008/07/17 23:40
This archive was generated by hypermail 2.2.0 : 2008/07/17 23:45 CEST