Forum Discussion

Antonino's avatar
Antonino
Icon for Nimbostratus rankNimbostratus
Aug 21, 2019

Clock based irule

Hello guys,

 

I have the follow irules:

 

when HTTP_REQUEST {

           set url [HTTP::uri]

           set metodo [HTTP::method]

   if {([HTTP::method] eq "PUT") and ([HTTP::host] contains "xxxx")} {

       HTTP::path "URLpath"

       pool xxxxx

   }

}

 

I would that this irule doesn't work ( so it been stopped ) in a specify time (ex: in the morning from 8 to 9 am). It is possible to set it with some variable?

 

Thanks for any tips or idea.

Regards,

 

Antonino.

4 Replies

  • Hi Lidev,

     

    Thanks for your quick reply. I saw that previusly you wrote about the iCall. The best way is your irule example or use iCall?

     

    Thanks,

    Regards.

    • Lidev's avatar
      Lidev
      Icon for MVP rankMVP

      hello Antonio, sorry for the delay. use an iRule will be better

  • Hi Antonino,

    You have also Stanislas Irule that I find very well:

    https://devcentral.f5.com/s/feed/0D51T00006j3fU3SAI

    when RULE_INIT {
        array set static::timerange {
            Sunday {"05:30" "16:00"}
            Monday {"05:30" "16:00"}
            Tuesday {"05:30" "16:00"}
            Wednesday {"05:30" "16:00"}
            Thursday {"05:30" "16:00"}
            Friday {}
            Saturday {}
        }
    }
     
    when HTTP_REQUEST {
        if { ([string tolower [HTTP::uri]] contains "/contractor/") } {
            if {!([class match [IP::remote_addr] equals clntip])} {
                set denied 1
            } else {
                set now [clock seconds]
                set current_day [clock format $now -format {%A}]
                set start [lindex $static::timerange($current_day) 0]
                set end [lindex $static::timerange($current_day) 1]
                if {($start ne "") && ($end ne "") && ($now >= [clock scan $start]) && ($now < [clock scan $end])} {
                    set denied 0
                } else {set denied 1}
                unset start end
            }
        } else {set denied 0}
     
        if { $denied } {
            HTTP::respond 200 content "Not Authorised! Contact AdministratorNot Authorised! Contact Administrator..."
        } else {pool POOL_443}
        unset denied
    }

    regards