Netscaler Knowledgebase

NetScaler => NetScaler Tricks and Guides => Topic started by: TheOracle on July 26, 2008, 12:41:07 AM

Title: Adding a Date header
Post by: TheOracle on July 26, 2008, 12:41:07 AM
The following policies will add a header named "datex" to your http response headers.  Removing the existing date header and changing this to insert a "date" header is trivial, but this will let you test the function before modifying anything critical.

add rewrite action "dateinsert-act-hdr" insert_after http.RES.STATUS_MSG "\"\r\nDate: \""
add rewrite action "dateinsert-act-sun" insert_after http.RES.STATUS_MSG "\"Sun, \""
add rewrite action "dateinsert-act-mon" insert_after http.RES.STATUS_MSG "\"Mon, \""
add rewrite action "dateinsert-act-tue" insert_after http.RES.STATUS_MSG "\"Tue, \""
add rewrite action "dateinsert-act-wed" insert_after http.RES.STATUS_MSG "\"Wed, \""
add rewrite action "dateinsert-act-thu" insert_after http.RES.STATUS_MSG "\"Thu, \""
add rewrite action "dateinsert-act-fri" insert_after http.RES.STATUS_MSG "\"Fri, \""
add rewrite action "dateinsert-act-sat" insert_after http.RES.STATUS_MSG "\"Sat, \""
add rewrite action "dateinsert-act-daynum" insert_after http.RES.STATUS_MSG "sys.TIME.DAY+\" \""
add rewrite action "dateinsert-act-jan" insert_after http.RES.STATUS_MSG "\"Jan \""
add rewrite action "dateinsert-act-feb" insert_after http.RES.STATUS_MSG "\"Feb \""
add rewrite action "dateinsert-act-mar" insert_after http.RES.STATUS_MSG "\"Mar \""
add rewrite action "dateinsert-act-apr" insert_after http.RES.STATUS_MSG "\"Apr \""
add rewrite action "dateinsert-act-may" insert_after http.RES.STATUS_MSG "\"May \""
add rewrite action "dateinsert-act-jun" insert_after http.RES.STATUS_MSG "\"Jun \""
add rewrite action "dateinsert-act-jul" insert_after http.RES.STATUS_MSG "\"Jul \""
add rewrite action "dateinsert-act-aug" insert_after http.RES.STATUS_MSG "\"Aug \""
add rewrite action "dateinsert-act-sep" insert_after http.RES.STATUS_MSG "\"Sep \""
add rewrite action "dateinsert-act-oct" insert_after http.RES.STATUS_MSG "\"Oct \""
add rewrite action "dateinsert-act-nov" insert_after http.RES.STATUS_MSG "\"Nov \""
add rewrite action "dateinsert-act-dec" insert_after http.RES.STATUS_MSG "\"Dec \""
add rewrite action "dateinsert-act-year" insert_after http.RES.STATUS_MSG "sys.time.year+\" \""
add rewrite action "dateinsert-act-hour-0x" insert_after http.RES.STATUS_MSG "\"0\"+sys.time.HOURS"
add rewrite action "dateinsert-act-hour-xx" insert_after http.RES.STATUS_MSG sys.time.HOURS
add rewrite action "dateinsert-act-minutes-0x" insert_after http.RES.STATUS_MSG "\":0\"+sys.time.minutes"
add rewrite action "dateinsert-act-minutes-xx" insert_after http.RES.STATUS_MSG "\":\"+sys.time.minutes"
add rewrite action "dateinsert-act-seconds-0x" insert_after http.RES.STATUS_MSG "\":0\"+sys.time.seconds+\" GMT\""
add rewrite action "dateinsert-act-seconds-xx" insert_after http.RES.STATUS_MSG "\":\"+sys.time.seconds+\" GMT\""

add rewrite policy "dateinsert-pol-hdr" TRUE "dateinsert-act-hdr"
add rewrite policy "dateinsert-pol-day" TRUE NOREWRITE
add rewrite policy "dateinsert-pol-sun" TRUE "dateinsert-act-sun"
add rewrite policy "dateinsert-pol-mon" TRUE "dateinsert-act-mon"
add rewrite policy "dateinsert-pol-tue" TRUE "dateinsert-act-tue"
add rewrite policy "dateinsert-pol-wed" TRUE "dateinsert-act-wed"
add rewrite policy "dateinsert-pol-thu" TRUE "dateinsert-act-thu"
add rewrite policy "dateinsert-pol-fri" TRUE "dateinsert-act-fri"
add rewrite policy "dateinsert-pol-sat" TRUE "dateinsert-act-sat"
add rewrite policy "dateinsert-pol-daynum" TRUE "dateinsert-act-daynum"
add rewrite policy "dateinsert-pol-month" TRUE NOREWRITE
add rewrite policy "dateinsert-pol-jan" TRUE "dateinsert-act-jan"
add rewrite policy "dateinsert-pol-feb" TRUE "dateinsert-act-feb"
add rewrite policy "dateinsert-pol-mar" TRUE "dateinsert-act-mar"
add rewrite policy "dateinsert-pol-apr" TRUE "dateinsert-act-apr"
add rewrite policy "dateinsert-pol-may" TRUE "dateinsert-act-may"
add rewrite policy "dateinsert-pol-jun" TRUE "dateinsert-act-jun"
add rewrite policy "dateinsert-pol-jul" TRUE "dateinsert-act-jul"
add rewrite policy "dateinsert-pol-aug" TRUE "dateinsert-act-aug"
add rewrite policy "dateinsert-pol-sep" TRUE "dateinsert-act-sep"
add rewrite policy "dateinsert-pol-oct" TRUE "dateinsert-act-oct"
add rewrite policy "dateinsert-pol-nov" TRUE "dateinsert-act-nov"
add rewrite policy "dateinsert-pol-dec" TRUE "dateinsert-act-dec"
add rewrite policy "dateinsert-pol-year" TRUE "dateinsert-act-year"
add rewrite policy "dateinsert-pol-hour-0x" "SYS.TIME.HOURS.LE(9)" "dateinsert-act-hour-0x"
add rewrite policy "dateinsert-pol-hour-xx" "SYS.TIME.HOURS.GT(9)" "dateinsert-act-hour-xx"
add rewrite policy "dateinsert-pol-minutes-0x" "SYS.TIME.MINUTES.LE(9)" "dateinsert-act-minutes-0x"
add rewrite policy "dateinsert-pol-minutes-xx" "SYS.TIME.MINUTES.GT(9)" "dateinsert-act-minutes-xx"
add rewrite policy "dateinsert-pol-seconds-0x" "SYS.TIME.SECONDS.LE(9)" "dateinsert-act-seconds-0x"
add rewrite policy "dateinsert-pol-seconds-xx" "SYS.TIME.SECONDS.GT(9)" "dateinsert-act-seconds-xx"
add rewrite policy "dateinsert-true" TRUE NOREWRITE

add rewrite policylabel dateinsert http_res
bind rewrite policylabel dateinsert "dateinsert-pol-hdr" 10 100
bind rewrite policylabel dateinsert "dateinsert-pol-day" 100 "SYS.TIME.WEEKDAY+110"
bind rewrite policylabel dateinsert "dateinsert-pol-sun" 110 200
bind rewrite policylabel dateinsert "dateinsert-pol-mon" 111 200
bind rewrite policylabel dateinsert "dateinsert-pol-tue" 112 200
bind rewrite policylabel dateinsert "dateinsert-pol-wed" 113 200
bind rewrite policylabel dateinsert "dateinsert-pol-thu" 114 200
bind rewrite policylabel dateinsert "dateinsert-pol-fri" 115 200
bind rewrite policylabel dateinsert "dateinsert-pol-sat" 116 200
bind rewrite policylabel dateinsert "dateinsert-pol-daynum" 200 300
bind rewrite policylabel dateinsert "dateinsert-pol-month" 300 "SYS.TIME.MONTH+310"
bind rewrite policylabel dateinsert "dateinsert-pol-jan" 311 400
bind rewrite policylabel dateinsert "dateinsert-pol-feb" 312 400
bind rewrite policylabel dateinsert "dateinsert-pol-may" 315 400
bind rewrite policylabel dateinsert "dateinsert-pol-jun" 316 400
bind rewrite policylabel dateinsert "dateinsert-pol-jul" 317 400
bind rewrite policylabel dateinsert "dateinsert-pol-aug" 318 400
bind rewrite policylabel dateinsert "dateinsert-pol-sep" 319 400
bind rewrite policylabel dateinsert "dateinsert-pol-oct" 320 400
bind rewrite policylabel dateinsert "dateinsert-pol-nov" 321 400
bind rewrite policylabel dateinsert "dateinsert-pol-dec" 322 400
bind rewrite policylabel dateinsert "dateinsert-pol-year" 400 410
bind rewrite policylabel dateinsert "dateinsert-pol-hour-0x" 410 500
bind rewrite policylabel dateinsert "dateinsert-pol-hour-xx" 420 500
bind rewrite policylabel dateinsert "dateinsert-pol-minutes-0x" 500 600
bind rewrite policylabel dateinsert "dateinsert-pol-minutes-xx" 510 600
bind rewrite policylabel dateinsert "dateinsert-pol-seconds-0x" 600 10000
bind rewrite policylabel dateinsert "dateinsert-pol-seconds-xx" 610 10000

bind lb vserver "test-lb" -policyName "dateinsert-true" -priority 10 -gotoPriorityExpression END -type RESPONSE -invoke policylabel dateinsert

The Oracle
Title: Re: Adding a Date header
Post by: jmelika on February 05, 2009, 01:41:43 AM
You know, I bet I could use this trick now.  We're using Limelight and Akamai for CDN.  Developers and QA ALWAYS complain about cache being stale and not up to date, etc.  Majority of the time it turns out that they did something wrong on their end.  But if I could insert this header there and call it Origin-Timestamp, they'd be able to tell when the CDN provider they're checking hit our Origin servers on their own.

Thanks Oracle!