For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

Scott_82504's avatar
Scott_82504
Icon for Nimbostratus rankNimbostratus
Nov 15, 2008

IRules Logic and wild care at the end

I am trying to figure out a set of IRULES. They are working for the most part. Here is my issue. If the rules do not match my any of my uri (kinda like a wildcard) I want to redirect the connection to another site. Example I type in lms2.tyco-training.com into the address bar and I want to redirect it to http://lms.tyco-training.com/knav/nav?BU=10003010. If I put anything else after example : lms2.tyco-training.com/abc (does not match uri in my rules below I want it to go to this same page http://lms.tyco-training.com/knav/nav?BU=10003010. How do I add this wild card rule ?

 

 

when HTTP_REQUEST {

 

 

if { [string tolower [HTTP::uri]] starts_with "/dsc"} {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002958"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/kantech" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002735"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/acvs_catalog" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?cmd=catalog&BU=15004409"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/acvs" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004408"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/mac" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005009"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/tycosafetyproducts-fire-europe" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005089"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/scansource" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004826"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/SimplexMear" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004867"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/te" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004768"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/physicalsecurity" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004506"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/swh" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002734"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/tfbp" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004445"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/scott" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002988"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/bentel" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/surgard" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/amerdyn" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002733"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/cemsys" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002736"

 

} elseif { [string tolower [HTTP::uri]] starts_with "/ADTContractors" } {

 

HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005329"

 

} else {

 

pool TIRCAP_76.24-80

 

}

 

}

 

 

 

THANKS IN ADVANCE

16 Replies

  • I got it addded in,, but know the redirects are not working. These things can drive you crazy

     

     

    when RULE_INIT {

     

    set ::ForwardList [list / .html .htm .asp .pl ]

     

    }

     

     

    when HTTP_REQUEST {

     

     

    if { ( not ( \

     

    ([string tolower {[HTTP::uri]}] starts_with "/knav/nav") or \

     

    ([string tolower "http://[HTTP::host][HTTP::path]"] eq \

     

    "http://lmsadmin2.tyco-training.com/assembler/dev") \

     

    )) and ([matchclass [HTTP::path] ends_with $::ForwardList]) \

     

    } {

     

     

    switch -glob [string tolower [HTTP::uri]] {

     

    "/dsc*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002958" }

     

    "/kantech*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002735" }

     

    "/acvs_catalog*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?cmd=catalog&BU=15004409"}

     

    "/acvs*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004408"}

     

    "/mac*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005009"}

     

    "/tycosafetyproducts-fire-europe*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005089"}

     

    "/scansource*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004826"}

     

    "/simplexmear*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004867"}

     

    "/te*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004768"}

     

    "/physicalsecurity*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004506"}

     

    "/swh*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002734"}

     

    "/tfbp*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004445"}

     

    "/scott*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002988"}

     

    "/bentel*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/surgard*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/amerdyn*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002733"}

     

    "/cemsys*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002736"}

     

    "/adtcontractors*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005329"}

     

    default

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=10003010" }

     

    }

     

     

    }

     

     

    }
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    I think one issue is that this:

     

     

    [string tolower {[HTTP::uri]}]

     

     

    would return a literal string of [http::uri]. The curly braces prevent [HTTP::uri] being evaluated. You can remove them and it should work:

     

     

    [string tolower [HTTP::uri]]

     

     

    Aaron
  • I am think I am getting closer. Thanks for all the help so far. Here is the issue

     

     

    Everytime it sees a jpg or css file it trys to redirect it so the jpg never comes up...it just redirects it to the default page on the bottom of the IRULE. see below

     

     

    + 0.8340.096499142GET302Redirect to http://lms2.tyco-training.com/knav/nav?BU=10003010http://lms2.tyco-training.com/knav/TKMStyleSheet/default/images/tyco_bgimage.jpg

     

     

     

    when RULE_INIT {

     

    set ::ForwardList [list / .html .htm .asp .pl .jpg .css]

     

    }

     

     

    when HTTP_REQUEST {

     

     

    if { ( not ( \

     

    ([string tolower [HTTP::uri]] starts_with "/knav/nav") or \

     

    ([string tolower "http://[HTTP::host][HTTP::path]"] eq \

     

    "http://lmsadmin2.tyco-training.com/assembler/dev") \

     

    )) and ([matchclass [HTTP::path] ends_with $::ForwardList]) \

     

    } {

     

     

    switch -glob [string tolower [HTTP::uri]] {

     

    "/dsc*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002958" }

     

    "/kantech*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002735" }

     

    "/acvs_catalog*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?cmd=catalog&BU=15004409"}

     

    "/acvs*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004408"}

     

    "/mac*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005009"}

     

    "/tycosafetyproducts-fire-europe*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005089"}

     

    "/scansource*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004826"}

     

    "/simplexmear*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004867"}

     

    "/te*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004768"}

     

    "/physicalsecurity*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004506"}

     

    "/swh*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002734"}

     

    "/tfbp*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004445"}

     

    "/scott*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002988"}

     

    "/bentel*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/surgard*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/amerdyn*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002733"}

     

    "/cemsys*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002736"}

     

    "/adtcontractors*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005329"}

     

    default

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=10003010" }

     

    }

     

     

    }

     

     

    }
  • Like always they have changed my requirements for the web app LB. here what they need me to do

     

     

    Goes to this site

     

    www2.tyco-training.com

     

    Redirect to

     

    http://lms2.tyco-training.com/knav/nav?BU=10003010

     

     

    Goes to this site

     

    www2.tyco-training.com/anything <----- whatever they type there could be /ABC or /hghdnsie

     

    Redirect to

     

    http://lms2.tyco-training.com/knav/nav?BU=10003010

     

     

     

    Goes to

     

    www2.tyco-training.com/dsc

     

    Redirect to

     

    http://lms2.tyco-training.com/knav/nav?BU=15002958

     

     

     

    Goes to

     

    http://lms2.tyco-training.com/kantech

     

    Redirect to

     

    http://lms2.tyco-training.com/knav/nav?BU=15002735

     

     

    I need to make sure everything pass such as graphics. Do I need that forward list ? or better way to do it ?

     

    For a graphic a url could be

     

    http://lms2.tyco-training.com/knav/TKMStyleSheet/DSC_Customers/images/tyco_bgimage.jpg ( if I dont have the forward list (could become hugh) I will run into issue it would send it to the default page)

     

     

     

    Here are rules I have tried , I want to see what the best logic is

     

     

    This is the current one I have ( I know I need to remove the following line trying to remove it the proper what with out messing up my rules)

     

     

    "http://lmsadmin2.tyco-training.com/assembler/dev")

     

     

     

    Here is my current rule

     

     

    when RULE_INIT {

     

    set ::ForwardList [list / .html .htm .asp .pl .jpg .css .jsp .gif]

     

    }

     

     

    when HTTP_REQUEST {

     

     

    if { ([string tolower [HTTP::uri]] starts_with "/knav/nav") or

     

    ([string tolower "http://[HTTP::host][HTTP::path]"] eq

     

    "http://lmsadmin2.tyco-training.com/assembler/dev") or

     

    ([matchclass [HTTP::path] ends_with $::ForwardList]) } {

     

    return

     

    } else {

     

    switch -glob [string tolower [HTTP::uri]] {

     

    "/dsc*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002958" }

     

    "/kantech*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002735" }

     

    "/acvs_catalog*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?cmd=catalog&BU=15004409"}

     

    "/acvs*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004408"}

     

    "/mac*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005009"}

     

    "/tycosafetyproducts-fire-europe*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005089"}

     

    "/scansource*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004826"}

     

    "/simplexmear*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004867"}

     

    "/te*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004768"}

     

    "/physicalsecurity*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004506"}

     

    "/swh*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002734"}

     

    "/tfbp*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004445"}

     

    "/scott*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002988"}

     

    "/bentel*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/surgard*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/amerdyn*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002733"}

     

    "/cemsys*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002736"}

     

    "/adtcontractors*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005329"}

     

    default

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=10003010" }

     

    }

     

     

    }

     

     

    }

     

  • Ignore the post above. I have it up and running once again 90 percent. thanks

     

     

    Here are my issue

     

     

    Goes to this site This is not working

     

    www2.tyco-training.com

     

    Redirect to

     

    http://lms2.tyco-training.com/knav/nav?BU=10003010

     

     

     

    I need to make sure everything pass such as graphics. Do I need that forward list ? or better way to do it

     

    For a graphic a url could be

     

    http://lms2.tyco-training.com/knav/TKMStyleSheet/DSC_Customers/images/tyco_bgimage.jpg ( if I dont have the forward list (could become hugh) I will run into issue it would send it to the default page)

     

     

    Here current irule

     

     

    when RULE_INIT {

     

    set ::ForwardList [list / .html .htm .asp .pl .jpg .css .jsp .gif]

     

    }

     

     

    when HTTP_REQUEST {

     

     

    if { ([string tolower [HTTP::uri]] starts_with "/knav/nav") or

     

    ([string tolower [HTTP::uri]] starts_with "/") or

     

    ([matchclass [HTTP::path] ends_with $::ForwardList]) } {

     

    return

     

    } else {

     

    switch -glob [string tolower [HTTP::uri]] {

     

    "/dsc*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002958" }

     

    "/kantech*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002735" }

     

    "/acvs_catalog*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?cmd=catalog&BU=15004409"}

     

    "/acvs*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004408"}

     

    "/mac*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005009"}

     

    "/tycosafetyproducts-fire-europe*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005089"}

     

    "/scansource*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004826"}

     

    "/simplexmear*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004867"}

     

    "/te*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004768"}

     

    "/physicalsecurity*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004506"}

     

    "/swh*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002734"}

     

    "/tfbp*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15004445"}

     

    "/scott*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002988"}

     

    "/bentel*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/surgard*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002959"}

     

    "/amerdyn*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002733"}

     

    "/cemsys*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002736"}

     

    "/adtcontractors*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15005329"}

     

    "/*"

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=10003010"}

     

    default

     

    { HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=10003010" }

     

    }

     

     

    }

     

     

    }

     

     

     

  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    Requests for extensions which are defined in the forward list should not be redirected. So the .jpg request should make it to the pool without the full filename/path being defined in the forward list.

    You could add some logging to the iRule, test and then check the /var/log/ltm log file. Here is a sample of the logging you could use:

     
     when RULE_INIT { 
        set ::ForwardList [list / .html .htm .asp .pl .jpg .css .jsp .gif] 
     } 
      
     when HTTP_REQUEST { 
      
        log local0. "[IP::client_addr]:[TCP::client_port]: New request to [HTTP::uri] (path: [HTTP::path])." 
      
        if { ([string tolower [HTTP::uri]] starts_with "/knav/nav") or 
           ([string tolower [HTTP::uri]] starts_with "/") or 
           ([matchclass [HTTP::path] ends_with $::ForwardList]) } { 
      
           log local0. "[IP::client_addr]:[TCP::client_port]: Matched logic to skip redirects." 
      
           return 
      
        } else { 
           switch -glob [string tolower [HTTP::uri]] { 
              "/dsc*" { 
                 log local0. "[IP::client_addr]:[TCP::client_port]: [HTTP::path] matched /dsc*." 
                 HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002958" 
              } 
              "/kantech*" { 
                 log local0. "[IP::client_addr]:[TCP::client_port]: [HTTP::path] matched /kantech*." 
                 HTTP::redirect "http://lms2.tyco-training.com/knav/nav?BU=15002735" 
              } 
              ... 
           } 
        } 
     } 
     

    Aaron