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.

Time based iRule example

Problem this snippet solves:

Here's a simple example of taking action in an iRule based on a time window. We use the clock scan and clock seconds commands to convert a timestamp in a user-friendly format to UTC (time since the Unix epoch of 0.0.1970) and check it against the current time.

Tcl clock wiki page: http://www.tcl.tk/man/tcl8.4/TclCmd/clock.htm

Contribution

Hoolio plus help with others in the forums

Code :

when RULE_INIT {

   # Start of maintenance window in YYYY-mm-dd HH:MM format
   set static::start_date "2011-05-29 18:45"

   # End of maintenance window in YYYY-mm-dd HH:MM format
   set static::end_date "2011-05-29 18:50"

   # Convert start/end times to seconds from the epoch for easier date comparisons
   set static::start [clock scan $static::start_date]
   set static::end [clock scan $static::end_date]
}
when CLIENT_ACCEPTED {

   # Get the current time in seconds since the Unix epoch of 0-0-1970
   set now [clock seconds]
   # Check if the current time is between the start and end times
   if {$now > $static::start and $now < $static::end}{
      pool MAINT_POOL
   }
   # Default action is to use the virtual server default pool
}
Published Mar 18, 2015
Version 1.0

4 Comments