Forum Discussion
Example Irule
Hi, I try to translate a content switching rule from netscaler to F5 Irule for migration which still keeps going on.
I need a rule that if first 2 path of uri /cookies/set/xyz
then rule does 302 temp redirect to www.123.com with 3rd path string pasted to Set-cookie header member as Set-Cookie:TESTROUTER=xyz; and the rest mentioned below example.
curl -I 10.35.72.172/cookies/set/xyz
HTTP/1.1 302 Temporary Redirect
Location: http://www.123.com
Set-Cookie:TESTROUTER=xyz; path=/; expires=Tue, 08 Apr 2014 12:38:25 GMT; domain=.123.com
Any idea how can i do this? I try to do couple things but did not succeed yet
- JRahmAdmin
Give this a try (untested):
when HTTP_REQUEST { if { [string tolower [HTTP::path]] starts_with "/cookies/set/" } { set ckname "TESTROUTER" set ckvalue [getfield [HTTP::path] "/" 3] set cookie [format "%s=%s; path=/; domain=%s" $ckname $ckvalue ".123.com"] HTTP::respond 302 Location [HTTP::host] "Set-Cookie" $cookie } }
- maximillean_953Nimbostratus
Thanks Jason works perfectly except that cookie header doesnot have expires which includes in example i post above. How sould i change set cookie line formatting to include expires date with it?
- John_Alam_45640Historic F5 Account
This is untested.
Also see this page: https://devcentral.f5.com/wiki/iRules.HTTP__respond.ashxwhen HTTP_REQUEST { if { [HTTP::uri] starts_with "/cookies/set" } { set fmt "%d %b %Y %H:%M:%S %Z" set expiry [clock format [clock seconds] -format $fmt] set domain ".[getfield [HTTP::host] . 2].[getfield [HTTP::host] . 3]" set testrouter [string trim [URI::path [HTTP::uri] 3] "/"] HTTP::respond 302 -version 1.1 Set-Cookie "TESTROUTER=$testrouter; path=/; expires=$expiry; domain=$domain" Location "http://www.123.com" } }
- maximillean_953Nimbostratus
OK I solved it with
expires=[clock format [expr ([clock seconds]+86400)] -format "%a, %d %h %Y %T GMT" -gmt true];
So new one is ;
when HTTP_REQUEST { if { [string tolower [HTTP::path]] starts_with "/cookies/set/" } { set ckname "TESTROUTER" set ckvalue [getfield [HTTP::path] "/" 4] set cookie [format "%s=%s; path=/; expires=[clock format [expr ([clock seconds]+86400)] -format "%a, %d %h %Y %T GMT" -gmt true]; domain=%s" $ckname $ckvalue ".123.com"] HTTP::respond 302 Location [HTTP::host] "Set-Cookie" $cookie } }
- maximillean_953Nimbostratus
this one above is tested and works perfectly same output. As others only thing left is one respond with http 1.1 f5 respond with http 1.0
Netscaler One curl -I 10.35.72.172/cookies/set/xyz HTTP/1.1 302 Temporary Redirect Location: http://www.123.com Set-Cookie:TESTROUTER=xyz; path=/; expires=Tue, 08 Apr 2014 13:43:25 GMT; domain=.123.com F5 One curl -H "Host:www.123.com" -I 10.35.78.76/cookies/set/xyz
HTTP/1.0 302 Found Location: www.gittigidiyor.com Set-Cookie: TESTROUTER=xyz; path=/; expires=Tue, 08 Apr 2014 13:43:52 GMT; domain=.123.com Server: BigIP Connection: Keep-Alive Content-Length: 0
- maximillean_953Nimbostratus
Thanks Jason all set.
- Robert_47833Altostratusif I want to set expires as 7 days,how to achieve this?
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com