<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Colin Walker</title>
        <link>http://devcentral.f5.com/weblogs/cwalker/Default.aspx</link>
        <description>Wielding the Power of the Network to Better Applications Everywhere</description>
        <language>en-US</language>
        <copyright>Colin Walker</copyright>
        <generator>Subtext Version 2.1.1.1</generator>
        <image>
            <title>Colin Walker</title>
            <url>http://devcentral.f5.com/weblogs/images/RSS2Image.gif</url>
            <link>http://devcentral.f5.com/weblogs/cwalker/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <geo:lat>47.63877</geo:lat><geo:long>-122.366941</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/f5/cwalker" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/f5/cwalker" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://my.feedlounge.com/external/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://static.feedlounge.com/buttons/subscribe_0.gif">Subscribe with FeedLounge</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Ff5%2Fcwalker" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>DevCentral Top5 11/06/2009</title>
            <category>DC Top5</category>
            <category>DevCentral</category>
            <category>iControl</category>
            <category>iRules</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/Y2OyxLzejic/devcentral-top5-11062009.aspx</link>
            <description>&lt;p&gt;While ramping up for "The Next Big Thing" continues amongst the DC staff, there is much to talk about in regards to content that's happening in the here and now, not just in the eagerly awaited future (with jet-packs and stuff…). &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; has seen its share of cool content this week, as it does every week, so let's talk about what needs talking about. Bringing you everything from TCL strings to a philosophical discussions of when vs. where and which is more important, I'm here with my Top5 picks for the week. And here they are:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;When Is More Important Than Where in Web Application Security&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/06/when-is-more-important-than-where-in-web-application-security.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/06/when-is-more-important-than-where-in-web-application-security.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this post Lori was as insightful and informative as ever, discussing why being timely is more important, in general, than being perfect when it comes to application security. It's a pretty simple concept to me. When it comes right down to it, no one really cares where you solve a security problem, they care about when you solve it. It's well and good that you want to argue that things should be solved at the app layer vs. the WAF, but if I can provide a solution in 10 minutes...how long is it going to take you to patch every single application for even a miniscule security flaw? I agree just as much with Lori's reminder that WAF and app security models shouldn't compete. They are complimentary in the war against attacks, not mutually exclusive, and should be treated as such.&lt;/p&gt;  &lt;p&gt;Every time someone tries to tell you which method is more "proper" or "correct", though, I'd ask them just how much they care about being proper in very real terms. How much is it worth in terms of hours (or days) of their application being exposed? At what point is it worth trading 20, 40, 120 hours of being exposed to a known exploit for an ounce of being "proper", which is already debatable at best, as opposed to getting the fix in place in a fraction of the time? Lori being insightful and informative isn't anything new. She knew she had a solid point to make and I tend to agree. What she didn't know was just how timely she was in setting the stage for her point to be illustrated, but we'll get to that in a moment. They call that foreshadowing, I think. I can tell you're on pins and needles.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;20 Lines or Less #31 - Traffic shaping, header re-writing, and TLS renegotiation&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/20-lines-or-less-31-ndash-traffic-shaping-header-re-writing.aspx"&gt;http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/20-lines-or-less-31-ndash-traffic-shaping-header-re-writing.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Behold, your suspense is relieved! I unveil before your very eyes the payoff to Lori's unintentional setting of the stage. But how, you ask, does the 20LoL tie in with the When vs. Where of App Security? Via the much discussed TLS renegotiation vulnerability that has been burning up the net, of course. When a security measure as deeply rooted and common as TLS encryption is found to be susceptible to attacks, there is much to talk about, and talk they have. It turns out that via a man in the middle attack would-be ne'er-do-wells have the potential to insert information into a renegotiated SSL connection. This is very bad. What's very good, however, is that a user from the DevCentral community drafted a simple fix, at least in their deployment, the very next day. That's the power of iRules. Agility at its very finest, if I've ever seen it. We could debate all day where the best place, technically speaking, to implement the fix is. Or we could just fix it in about 10 minutes of coding and another 30 minutes of testing, and be done with it. That's just one of the rules in the 20LoL, of course. There are two more very cool examples of iRules doing the cool things they do in less than 21 lines of code. Check them out.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;iRules 101 - #16 - Parsing Strings with the TCL Scan Command&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=2346"&gt;http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=2346&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jason digs into the amazingly powerful yet often overlooked scan command in his latest contribution to the iRules 101 series. The scan command has some pretty staggeringly powerful capabilities to parse strings in an ultra efficient manner. It takes a little getting used to but it's definitely a command that has potential beyond what's obvious at first glance. Jason does a good job of breaking down some of the options and giving clear examples of not only the command itself but how you might use it in the context of an iRule. Very cool stuff, and worth a read for any current or would be iRulers out there.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Operations Manager Debugging Part I: Top 10 Tools for Developing and Debugging Management Packs&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/04/operations-manager-debugging-part-i-top-10-tools-for-developing.aspx"&gt;http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/04/operations-manager-debugging-part-i-top-10-tools-for-developing.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You've been hearing a lot about the Management Pack lately. That's not likely to change, especially if they keep putting out not only consistent, timely releases with new features, but awesome documentation and commentary along the way. Case in point, Joel Hendrickson put up a blog post this week about his Top 10 favorite tools for the kind of debugging he ends up doing often times as a member of that team. Whether or not you're directly involved with the Management Pack, this is a very cool list. It's interesting to see him walk through each tool, what it does and in some cases how he uses them. I'm always a sucker for hearing a geek talk about … well … being a geek, and that's just what Joel's up to in this informative post. Take a look for all your code debugging needs.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;pyControl Just as Happy on Linux&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2009/11/04/pycontrol-just-as-happy-on-linux.aspx"&gt;http://devcentral.f5.com/weblogs/jason/archive/2009/11/04/pycontrol-just-as-happy-on-linux.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In response to the many questions asking about pyControl and whether or not it's viable as a Linux solution to iControl programming, Jason put together this tidy little post that not only answers the question (yes, by the way), but shows you just how to get started. This was a cool reminder to me not only of how awesome the pyControl project is, but of just how easy it can be to get started digging into iControl and all the cool things that it can do. With just a few commands, outlined in Jason's post, you can have an environment up and running, ready to start developing. I'm even more excited to see what's coming in pyControl2, whenever I get a chance to play with that. But that's a post for another day.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There you have it, five picks for this week that you just really should not miss. As always, don't be shy with your feedback, and check out previous versions here: &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=101"&gt;http://devcentral.f5.com/Default.aspx?tabid=101&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b4221b8e-854c-4e90-bbed-fe9418a5679d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral+Top5" rel="tag"&gt;DevCentral Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/pyControl" rel="tag"&gt;pyControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TLS" rel="tag"&gt;TLS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MitM" rel="tag"&gt;MitM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/renegotiation" rel="tag"&gt;renegotiation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Linux" rel="tag"&gt;Linux&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mpack" rel="tag"&gt;Mpack&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6192.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=Y2OyxLzejic:SLB8elra3hg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=Y2OyxLzejic:SLB8elra3hg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=Y2OyxLzejic:SLB8elra3hg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Y2OyxLzejic:SLB8elra3hg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/Y2OyxLzejic" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/devcentral-top5-11062009.aspx</guid>
            <pubDate>Sat, 07 Nov 2009 00:18:16 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6192.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/devcentral-top5-11062009.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6192.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/devcentral-top5-11062009.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #31 &amp;ndash; Traffic shaping, header re-writing and TLS renegotiation</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <category>Security</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/gn-f6wQgHhk/20-lines-or-less-31-ndash-traffic-shaping-header-re-writing.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;  &lt;p&gt;This week not only are the examples cool and interesting, but one of them at least is extremely timely. You’ve no doubt heard about the client-initiated MITM attack for TLS that was recently disclosed.  It’s front-page news around the web and for good reason.  While research needs to be done and a real fix needs to be put in place, one crafty community member was quick to draft up a simple fix to at least help mitigate their own issues. And in under 20 lines, no less. Here are this week’s offerings:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple traffic shaping&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/Simple_traffic_shaping.html"&gt;http://devcentral.f5.com/wiki/default.aspx/iRules/Simple_traffic_shaping.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;User JackofallTrades brings us a great example of iRules simplicity via the codeshare. If you’re looking for a way to send folks to different rateclasses based on their usage, this is one way you can get there. It’s highly customizable, too, since it’s an iRule.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;when SERVER_DATA {
                set srvAge [IP::stats age]
                set srvBytes [IP::stats bytes in]
                # change 10000ms/10s to your desired time        
                if {$srvAge &amp;gt; 10000 } {
                                # change the recieved bytes if needed
                                if {$srvBytes &amp;gt; 3000000 } { 
                                                 # makesure you create the rate class
                                                rateclass bandHog
                                                #log local0. "Bandwidth Hog: [IP::client_addr] server bytes $srvBytes"
                                }

}              
                
                #log local0. " [IP::client_addr]:[TCP::client_port] server age: $srvAge server bytes: $srvBytes"
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rewrite Host header to server name&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/rewrite_host_header_to_server_name.html"&gt;http://devcentral.f5.com/wiki/default.aspx/iRules/rewrite_host_header_to_server_name.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hoolio’s at it again with his latest codeshare entry.  In this example he shows how you can write in custom host address headers based on the destination server your request is being sent to.  Fun stuff.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;when HTTP_REQUEST_SEND {

   # Need to force the host header replacement and HTTP:: commands into the clientside context
   #  as the HTTP_REQUEST_SEND event is in the serverside context
   clientside {

      if {$::host_debug}{log local0. "[IP::client_addr][TCP::client_port]: New [HTTP::method] request to [HTTP::host][HTTP::uri]"}

      # Look up the selected server IP in the datagroup to get the host header value
      set host_header_value [findclass [LB::server addr] $::ip_to_host_class " "]

      if {$::host_debug}{log local0. "[IP::client_addr][TCP::client_port]: Looked up [LB::server addr], found: $host_header_value."}

      # Check if the lookup returned a value
      if {$host_header_value ne ""}{
   
         # Replace the host header value
         HTTP::header replace Host $host_header_value
         if {$::host_debug}{log local0. "[IP::client_addr][TCP::client_port]: Replaced Host header with $host_header_value."}
      }
   }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigating the TLS client-initiated renegotiation MITM attack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=86456&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=86456&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last but certainly not least, user Lupo comes to us with a simple yet hawesome iRule to show an easy way to put a stop to renegotiation MITM attacks in your environment…just so long as you have iRules handy (and don’t need to renegotiate your SSL connections). I love it when users share cool things they’re doing. I love it even more when those cool things are timely, interesting, and almost certainly useful to many other people.  Way to go Lupo, thanks for sharing. Note that this, as with all 20LoL entries, isn’t tested/guaranteed/endorsed, etc. But it’s pretty sound logic and I don’t see any good reason it shouldn’t work.  Test it in your environment and see for yourself.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;when CLIENT_ACCEPTED { &lt;br /&gt;   # initialize TLS/SSL handshake count for this connection &lt;br /&gt;   set sslhandshakecount 0 &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; # if you have lower priority iRules on the CLIENTSSL_HANDSHAKE event, you have to make sure, that they don't interfere with this iRule &lt;br /&gt; when CLIENTSSL_HANDSHAKE priority 100 { &lt;br /&gt;   # a handshake just occurred &lt;br /&gt;   incr sslhandshakecount &lt;br /&gt;  &lt;br /&gt;   # is this the first handshake in this connection? &lt;br /&gt;   if { $sslhandshakecount != 1 } { &lt;br /&gt;     # log (rate limited) the event (to /var/log/tmm) &lt;br /&gt;     log "\[VS [virtual] client [IP::client_addr]:[TCP::client_port]\]: TLS/SSL renegotiation occurred, dropping connection" &lt;br /&gt;     # close the clientside connection &lt;br /&gt;     TCP::close &lt;br /&gt;   } &lt;br /&gt; }&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are three more awesome examples for you.  20 lines of code or less packed with all sorts of iRuley goodness to make your lives easier, better, faster or safer.  How can you not love that?  See you next time.&lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7756ad40-a657-4b3f-be06-caf7716014d6" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/20+Lines+or+Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20LoL" rel="tag"&gt;20LoL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TLS" rel="tag"&gt;TLS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MitM" rel="tag"&gt;MitM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rate+shape" rel="tag"&gt;rate shape&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6190.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=gn-f6wQgHhk:VLjDT8CoBrE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=gn-f6wQgHhk:VLjDT8CoBrE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=gn-f6wQgHhk:VLjDT8CoBrE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=gn-f6wQgHhk:VLjDT8CoBrE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/gn-f6wQgHhk" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/20-lines-or-less-31-ndash-traffic-shaping-header-re-writing.aspx</guid>
            <pubDate>Fri, 06 Nov 2009 19:42:47 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6190.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/20-lines-or-less-31-ndash-traffic-shaping-header-re-writing.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6190.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/11/06/20-lines-or-less-31-ndash-traffic-shaping-header-re-writing.aspx</feedburner:origLink></item>
        <item>
            <title>DevCentral Top5 10/30/2009</title>
            <category>DC Top5</category>
            <category>Cloud Computing</category>
            <category>DevCentral</category>
            <category>iRules</category>
            <category>Microsoft Solutions</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/2MT6_lZAMu0/devcentral-top5-10302009.aspx</link>
            <description>&lt;p&gt;Released into the wild, the &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; team is back from our week of being sequestered in a conference room discussing the meaning of life, the universe and everything. Well…everything as it pertains to DC, at least. We even rolled successfully to save against being mauled by zombies or turned into newts (hey…it's almost Halloween, gimme a break…). As such there is plenty of content to pour through this week, including a very cool talk with a newbie to the F5 family. As always I'll give you my picks and hope they serve you well. Here is the Top5 for this week:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Cast Your Vote for Best iRule for the 2009 Contest&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/JeffB/archive/2009/10/29/6170.aspx"&gt;http://devcentral.f5.com/weblogs/JeffB/archive/2009/10/29/6170.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We're almost there! I'm sure some of you that were paying close attention have been looking at your calendars with all of the days marked off, waiting with baited breath for the announcement of the winners of this year's iRule Do You? contest. There is but one more person that needs to vote before we can be finished - you! We've made our picks, cast our ballots and bet on our respective ponies, as it were, and now it's time for the community to get involved. Take a minute to go look at the top 6 iRule entries this year. You'll get to feast your eyes on what people are doing with the coolest coding language in the networking world, then vote for your favorite to win the grand prize. Not only is this post informative, but it's interactive as well. Take a few minutes and go take a look at what the community is up to.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;DevCentral Weekly Roundup Episode 109 - Branch Cache Chumby&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/10/29/devcentral-weekly-roundup-episode-109-branch-cache-chumby.aspx"&gt;http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/10/29/devcentral-weekly-roundup-episode-109-branch-cache-chumby.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It's all right, I have no idea what the heck "Branch Cache Chumby" means either. Regardless of the title, this week's podcast was very cool. We talked about a few of the usual things as well as Jeff mentioning the above post wherein the community gets to help steer the ship directly for a change, rather than indirectly. Most interesting of all, though, was the in-depth discussion that we had with the guest this week, F5's own James Hendergart. James is a relatively new player on the F5 team but he's got plenty of experience, so he comes across as anything but new. We talked at length about what he and the Business Development team are up to with Microsoft, ranging from Sharepoint to Exchange to Branch Caching and beyond. It's always good to hear what other teams are up to and James has some definite passion about what he's doing, so it turned into a great talk. This one is worth a listen.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;A First Look at the F5 PRO-Enabled Management Pack for Microsoft Virtual Machine Manager 2008&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/10/27/a-first-look-at-the-f5-pro-enabled-management-pack-for.aspx"&gt;http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/10/27/a-first-look-at-the-f5-pro-enabled-management-pack-for.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Speaking of Microsoft, the guys on the Management Pack team are on a roll. They just keep dropping release after release with new, cool features for you to play with. In this post Joel Hendrickson, one of the devs on that team, walks through some of the new bells and whistles in their newest deployment. I love seeing what these guys are going to come up with next, and they haven't disappointed so far. If you've been following or have interest in the management pack at all, I think this is definitely worth a read. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;To Take Advantage of Cloud Computing You Must Unlearn, Luke.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/28/to-take-advantage-of-cloud-computing-you-must-unlearn.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/28/to-take-advantage-of-cloud-computing-you-must-unlearn.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The unlearning Lori is talking about is all that knowledge you have about application scaling and sizing. It's common practice to over-supply resources for an application. You think the app needs x amount of CPU and y amount of RAM to comfortably run at normal operating levels? Great. Now go buy servers with 2-3x those resources so you can be sure that things are always running smoothly, even during spikes in usage. That might not sound so bad, but what if "x cpu and y RAM" ends up being 40 physical machines worth once you've tripled it? Now scale that out across many applications and you start to see the problem that companies running their own infrastructure have often had to deal with. They have all this capacity going to waste a huge percentage of the time, but they have to have it for those 5 or 6 times a year when usage spikes. This, as Lori says, is one of the large draws to the cloud computing and virtualization model(s). There are a few hiccups, of course, if you treat your options for virtualized resources in the cloud the same as you always have your physical systems. Lori goes into much more depth in her post, I suggest you give it a read to find out more.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;20 Lines or Less #30&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/20-lines-or-less-30.aspx"&gt;http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/20-lines-or-less-30.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Back at it this week the 20LoL is here with three more great iRules examples courtesy of the community. In this particular case when I say "community" I mean "hoolio". I didn't realize it until after I'd pulled all three examples that they all ended up being from one guy. That's less shocking, though, if you look at the 5,000+ posts Aaron has put out there for the iRulers worldwide. This week I grabbed a couple good ones dealing with pre-loading search queries via http redirects, even more fun with the ever popular nested switch statement, and updating referrer headers in-line. We're darn close to breaking 100 unique iRule examples under 21 lines of code in this series, and every week I love digging around to see what I can find that people are up to in just a few short commands. Take a look if you want to get some ideas on how to use small iRules to have a big impact.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;That’s it for this week. As always, check out previous versions here: &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=101"&gt;http://devcentral.f5.com/Default.aspx?tabid=101&lt;/a&gt; and don't be shy with your feedback.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a1fa1535-20af-4a8c-8b4b-c2874db5b873" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Top5" rel="tag"&gt;Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Computing" rel="tag"&gt;Cloud Computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mpack" rel="tag"&gt;Mpack&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6173.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=2MT6_lZAMu0:jq5msPn5Ro4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=2MT6_lZAMu0:jq5msPn5Ro4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=2MT6_lZAMu0:jq5msPn5Ro4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=2MT6_lZAMu0:jq5msPn5Ro4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/2MT6_lZAMu0" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/devcentral-top5-10302009.aspx</guid>
            <pubDate>Fri, 30 Oct 2009 19:36:11 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6173.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/devcentral-top5-10302009.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6173.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/devcentral-top5-10302009.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #30</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/3p908W8ging/20-lines-or-less-30.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;
&lt;p&gt;Well we made it to 30 editions of the 20LoL.  Soon we’ll break 100 iRule examples that are under 21 lines of code each.  Pretty neat stuff, if you ask me.  This week is the hoolio show, it seems.  The guy is just a monster in the forums, what can I say?  I sure am glad he’s on our side.  I’ve got three examples that I randomly pulled from the forums because I thought they were cool.  Only later did I realize that he had penned them all.  So big thanks yet again to Aaron and all his hard work to better the community.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pre-loaded searches based on host name&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=86016&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=86016&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This cool little example is a neat spin on a simple HTTP redirect.  The basic idea is to redirect to a given search site and set the search parameter to be the original host name of the request.  So I could request bobschickenshack.com and be redirected to a search for bobschickenshack on the search page of my choosing.  Very cool idea, and darn easy to implement.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt; &lt;br /&gt; when HTTP_REQUEST { &lt;br /&gt;&lt;br /&gt;    # Rewrite the host header to www.yahoo.com and the&lt;br /&gt;    # uri to /search?q=$host where $host is the originally requested hostname &lt;br /&gt;    HTTP::header replace "www.yahoo.com" &lt;br /&gt;    HTTP::uri "/search?q=[HTTP::host]" &lt;br /&gt; } &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;More fun with nested switch&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=85807&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=85807&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I know we’ve covered switch before, but this is yet another good use of it and I really like the idea of selecting snatpools based on which server the request is going to end up going to.  I trimmed this one down a little but only by removing a few of the possible snatpool options, all logic is the same, even though it’s just an excerpt of the overall solution provided.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt; when LB_SELECTED { &lt;br /&gt;    switch [LB::server addr] { &lt;br /&gt;       222.35.42.126 { &lt;br /&gt;          switch [IP::client_addr] { &lt;br /&gt;             192.168.3.11 { snatpool snat_crt_test2 } &lt;br /&gt;             default { snatpool snat_crt_pool } &lt;br /&gt;          } &lt;br /&gt;       } &lt;br /&gt;       221.218.248.155 { &lt;br /&gt;          switch [IP::client_addr] { &lt;br /&gt;             192.168.3.11 { snatpool snat_uni_test2 } &lt;br /&gt;             default { snatpool snat_uni_pool } &lt;br /&gt;          } &lt;br /&gt;       } &lt;br /&gt;       default { snat automap } &lt;br /&gt;    } &lt;br /&gt; } &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;Updating referrers&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=85807&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=85807&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hoolio does a good job of not only pointing out the inherent problem with trying to replace referrer headers with hostnames from requests, but giving an option that works as desired even if it’s a little bit different direction than the OP was headed.  This is a good example of in-line string replacement with string map, too, which is an often under used command that’s worth a look.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt; &lt;br /&gt; when HTTP_REQUEST { &lt;br /&gt;&lt;br /&gt;    log local0. "[IP::client_addr]:[TCP::client_port]: New [HTTP::method] request to [HTTP::host][HTTP::uri]\ &lt;br /&gt;       with Referer [HTTP::header Referer]" &lt;br /&gt;&lt;br /&gt;    if {[HTTP::header exists "MyHeader"]} {  &lt;br /&gt;       log local0. "[IP::client_addr]:[TCP::client_port]: Updating Referer to\ &lt;br /&gt;          [string map -nocase {http:// https://} [HTTP::header Referer]" &lt;br /&gt;       HTTP::header replace Referer "[string map -nocase {http:// https://} [HTTP::header Referer]" &lt;br /&gt;    } &lt;br /&gt; } &lt;br /&gt; when HTTP_REQUEST priority 501 { &lt;br /&gt;    log local0. "[IP::client_addr]:[TCP::client_port] (501): Current Referer [HTTP::header Referer]" &lt;br /&gt; } &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;p&gt;There you have it, 3 more iRules to show off just how much you can do in only 20 lines of code. Next time we’ll break past the 100 examples mark.  See ya then.&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9eac6b1f-0753-4ca5-b5dc-876e1e121d0a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/20+lines+or+less"&gt;20 lines or less&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/20LoL"&gt;20LoL&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/iRules"&gt;iRules&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colin+Walker"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6172.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=3p908W8ging:y8ithiDpIiY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=3p908W8ging:y8ithiDpIiY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=3p908W8ging:y8ithiDpIiY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=3p908W8ging:y8ithiDpIiY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/3p908W8ging" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/20-lines-or-less-30.aspx</guid>
            <pubDate>Fri, 30 Oct 2009 17:12:56 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6172.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/20-lines-or-less-30.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6172.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/30/20-lines-or-less-30.aspx</feedburner:origLink></item>
        <item>
            <title>DevCentral Top5 10/16/2009</title>
            <category>DC Top5</category>
            <category>DevCentral</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/5mpI9jo2XjY/devcentral-top5-10162009.aspx</link>
            <description>&lt;p&gt;After some much needed vacation I'm back at the helm this week to deliver your Top5. I'm sure you've managed to find some tasty morsels on &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; while I was away, but hopefully I'll be able to help out and point you in the direction of some more DC goodness now that I'm back. The past couple weeks have been busy and I have only 5 slots to fill with my picks, so make sure to keep checking out DevCentral if you're looking for more, but here is this week's Top5:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;DevCentral Weekly Roundup Episode 107 - The F5 Guy&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/10/15/devcentral-weekly-roundup-episode-107-the-f5-guy.aspx"&gt;http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/10/15/devcentral-weekly-roundup-episode-107-the-f5-guy.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Weekly Roundup is no stranger to the Top5. Indeed I find it's often a valuable entry as it gives some perspective on what the team and community are up to, cool things you should see, etc. It's kind of my way of fitting more than 5 entries into the Top5, but shhh, don’t' tell anyone. This week, however, there's even more reason than normal to check it out. Blogger and F5 expert The F5 Guy graced us with his presence on the cast this week, and it was filled with hawesomeness as was expected when I heard he was joining us. We talked about what he's been up to, how he came to work with F5 gear, what kinds of products and technologies he works with, how and why he started his blog, &lt;a href="http://www.thef5guy.com"&gt;www.thef5guy.com&lt;/a&gt;, and how the team should all have iPhones. Okay, that last part was an inside joke, but it's in there too. In any event, there was some awesome F5 and DevCentral talk going on and if you missed the live stream, you should definitely check out the podcast if you get a chance.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;OOW Coverage on DevCentral&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2009/10/15/oow-coverage-on-devcentral.aspx"&gt;http://devcentral.f5.com/weblogs/dmacvittie/archive/2009/10/15/oow-coverage-on-devcentral.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Don made a smart move this week and made a blog post rounding up and listing all the awesome videos that Pete Silva took while attending Oracle's Open World event. So while I'm linking to Don's blog, I think he'll agree that Pete is the one that did the leg work and deserves the credit along with his assorted cast of guests ranging from Calvin Rowland to Andy Ohler to Ron Carovano and beyond. Pete shot a series of short, easily consumed clips interviewing different F5ers at Open World about the event, F5's work with Oracle, what was new and exciting, and their take on the show. It was pretty cool to get a feel for the happenings without actually being there and Pete's classic style and enthusiasm shone through as always. These vids are worth a gander if you're interested to hear about F5 and Oracle. I know I was, and I'm glad I got a chance to watch them.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;F5 Management Pack v1.4.1.93 Released: Globalization Support!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/druddell/archive/2009/09/30/f5-management-pack-v1.4.1.93-released-globalization-support.aspx"&gt;http://devcentral.f5.com/weblogs/druddell/archive/2009/09/30/f5-management-pack-v1.4.1.93-released-globalization-support.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The post itself may be short, but the implications and impact are…long? Regardless of my grammatical failings, another new version of the F5 Management Pack has been dropped courtesy of the ever busy MPack team here at F5. If you haven't gotten your hands on the Management Pack yet, you should. There are way too many cool things that you can do to not have at least taken a look yet. With new versions dropping frequently and a steady stream of tutorial content coming straight from the Devs, it's not hard to get started. With this newest release the Management Pack now boasts globalization support to support localized versions of Windows Server 2003 and 2008 R2. This is good news for those worldwide audiences looking to dig further into the world of monitoring and management with the F5 Management Pack. Very cool stuff.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Using Network-Side Scripting to Implement Mock API Endpoints&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/05/using-network-side-scripting-to-implement-mock-api-endpoints.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/05/using-network-side-scripting-to-implement-mock-api-endpoints.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It's a shame, really, to try and distill Lori's ever expanding army of posts down to just a single entry for the time I was out, but such is my lot in life. Using the tried and true "throw a dart at the dart-board" method seemed out of the question, so I just picked the one that talked about iRules and had code in it. What…you're surprised? Have you read my stuff before? In this post Lori delves into mocking up an API endpoint in iRules, our very own brand of network-side scripting. It's built to inspect an API call, determine what call it is, then return canned responses based on that call. Pretty cool stuff, right? What's even more cool is that this can end up saving time and resources for plenty of people that happen to have F5's ADC devices already deployed and could use it to test against. I'll admit it, I'm a sucker for a good iRules post, and Lori's got my attention straight away. Good stuff for anyone interested in network-side scripting, APIs, or SOA-ish type stuff.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Creating Cacti Templates for BIG-IP CPU Utilization&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=4324"&gt;http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=4324&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Taking you step by step through the process of creating these Cacti templates, all the way from the data collection Perl script to the Cacti configuration, is our resident Cacti expert, Jason. This very cool Tech Tip goes into stellar detail to get you from point A to B without losing you along the way. Complete with big animal pictures and the actual code you'll need to get started, Jason leads you down the path towards a state of Cacti zen. I'm not a huge SNMP or Cacti guy experience-wise, but it's some pretty cool stuff in the right hands and Jason makes it plenty interesting. It's cool to see what he's up to. Take a look for yourself.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There you have it, the Top5 for the week. I'm glad to be back and hope you found this helpful. As always, feedback is appreciated, and you can check out previous Top5s here - &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=101"&gt;http://devcentral.f5.com/Default.aspx?tabid=101&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;  &lt;/p&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9afcf6e5-16be-4ae7-bdce-9587f8ed1ccb" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Top5" rel="tag"&gt;Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Oracle" rel="tag"&gt;Oracle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cacti" rel="tag"&gt;Cacti&lt;/a&gt;,&lt;a href="http://technorati.com/tags/The+F5+Guy" rel="tag"&gt;The F5 Guy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;   &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6153.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=5mpI9jo2XjY:LgqQzNIWtPo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=5mpI9jo2XjY:LgqQzNIWtPo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=5mpI9jo2XjY:LgqQzNIWtPo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=5mpI9jo2XjY:LgqQzNIWtPo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/5mpI9jo2XjY" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/16/devcentral-top5-10162009.aspx</guid>
            <pubDate>Fri, 16 Oct 2009 22:31:11 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6153.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/16/devcentral-top5-10162009.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6153.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/10/16/devcentral-top5-10162009.aspx</feedburner:origLink></item>
        <item>
            <title>Do you Rule? Do you &amp;hellip; iRule?</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/cIma4tXaaGA/do-you-rule-do-you-hellip-irule.aspx</link>
            <description>&lt;p&gt;&lt;img style="display: inline; margin: 0px" src="http://devcentral.f5.com/Portals/0/images/iRuleDoYouv1.jpg" align="right" /&gt;If so, you had better hurry.  You’re running out of time to submit your cool, unique, amazing or otherwise interesting iRules to &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=156" target="_blank"&gt;this year’s iRule. Do You?&lt;/a&gt; contest.  All you have to do is fill out &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=158" target="_blank"&gt;one simple form&lt;/a&gt; and you’ll be entered to win some &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=2190" target="_blank"&gt;pretty hawesome prizes&lt;/a&gt;.  If I weren’t disqualified for being an employee (and one of the judges) I would have submitted 10 entries by now for a chance at not only the sweet swag, but the glory of being the #1 iRuler on &lt;a href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This contest is fun, for sure, but it’s also a fantastic way to showcase just how innovative and powerful iRules are. As someone with a deep affection for the technology it makes me extremely excited to see all the entries coming in from around the world.  We’ve seen all sorts of solutions, big and small, simple and complex, and all of them have an equal shot.  We don’t just want the 400 line monsters. There’s a good chance that some of the iRules from the 20LoL would fare just fine in this contest, if they’re interesting enough.&lt;/p&gt;  &lt;p&gt;So take a few minutes, go through your iRules library (what…doesn’t everyone have one?) and dig out your favorite few to submit.  It only takes a couple minutes and it’s well worth it.  &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:feb70dd9-751f-41e1-ae03-0dd6449a2950" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRule.+Do+You%3f" rel="tag"&gt;iRule. Do You?&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Contest" rel="tag"&gt;Contest&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Prizes" rel="tag"&gt;Prizes&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/8031.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=cIma4tXaaGA:F9Q_jx55FlA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=cIma4tXaaGA:F9Q_jx55FlA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=cIma4tXaaGA:F9Q_jx55FlA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=cIma4tXaaGA:F9Q_jx55FlA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/cIma4tXaaGA" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/29/do-you-rule-do-you-hellip-irule.aspx</guid>
            <pubDate>Tue, 29 Sep 2009 17:57:31 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/8031.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/29/do-you-rule-do-you-hellip-irule.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/8031.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/29/do-you-rule-do-you-hellip-irule.aspx</feedburner:origLink></item>
        <item>
            <title>DevCentral Top5 09/25/2009</title>
            <category>DC Top5</category>
            <category>DevCentral</category>
            <category>iRules</category>
            <category>Security</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/oS4z6FMrXMQ/devcentral-top5-09252009.aspx</link>
            <description>&lt;p&gt;Side-projects and behind the scenes activities abound as the &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; team works towards the next goal on our plans for world domination, carefully sketched on Jeff's whiteboard. I'm glad to say that the extended DC team has been helping, as always, to keep the content flowing though, and there's plenty to highlight this week. Take a look at this week's Top5:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Closing in on the iRules Contest Deadline&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2009/09/15/closing-in-on-the-irules-contest-deadline.aspx"&gt;http://devcentral.f5.com/weblogs/jason/archive/2009/09/15/closing-in-on-the-irules-contest-deadline.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jason points out a very important, timely fact. It's nearly the end of your window to submit killer iRules for great prizes! The iRules contest is coming to a close. We've gotten some awesome entries so far and I've personally loved seeing them flow in from all over the world. There is still time, though. If you've got an iRule that you use that is cool and unique and warrants sharing, now is the time! Get it submitted and put your bid in for one of the pretty killer prizes offered to the winners. Check out Jason's post to get the details of what they are, where to apply, and a cool example iRule from the forums that could easily be submitted.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Despite Rumors to the Contrary F5 Remains In the Lead&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/25/despite-rumors-to-the-contrary-f5-remains-in-the-lead.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/25/despite-rumors-to-the-contrary-f5-remains-in-the-lead.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Lori comes to you this week with an important news bulletin: F5 is still leading the charge in the ADC market, despite the mutterings you may have heard recently. With the release of the new Magic Quadrant from Gartner there is always a fair amount of posturing and hubbub. Lucky are we that our positioning continues to speak for itself, well in the lead. I'm not usually one to go in for marketing type stuff, but the geek in me loves that we have the coolest technology at the party, bar-none. This is one of the many indicators of that, and I was glad to see Lori point it out.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;DevCentral Weekly Roundup Episode 104 - Guru, Guy, and My BIG-IP&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/09/24/devcentral-weekly-roundup-episode-104-guru-guy-and-my.aspx"&gt;http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/09/24/devcentral-weekly-roundup-episode-104-guru-guy-and-my.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This week's podcast was a particularly cool one, thanks to the caller that decided to join us. A few weeks ago we started dabbling in live-streaming our podcasts as we record them. This week Joe added the functionality to allow users to call in and chat with us in real-time, while we record. I was pleasantly surprised that we had a community member do precisely that, and share with us what they're currently doing with our tech. If you ever doubt that DevCentral is a far-reaching community with active members, an impromptu call from an international user to chat with us about what they're doing should cure what ails you.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Turn Your Podcast Into An Interactive Live Streaming Experience&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/Joe/archive/2009/09/25/turn-your-podcast-into-a-interactive-live-streaming-experience.aspx"&gt;http://devcentral.f5.com/weblogs/Joe/archive/2009/09/25/turn-your-podcast-into-a-interactive-live-streaming-experience.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As I mentioned above, the past few weeks we've been adding functionality to our podcasts. This once simple process has become increasingly more complex as we've tried to leverage new and cool features to make them more engaging and interactive for our users. With Joe at the helm we've incorporated several tools that make this possible. Today he put out a blog post detailing just how these all work together and exactly how it is that he crafted this bigger, better mousetrap. I found it quite interesting and it's a neat peek behind the curtains into one of the things we do here in DC Land.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Reduce your Risk&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2009/09/24/reduce-your-risk.aspx"&gt;http://devcentral.f5.com/weblogs/psilva/archive/2009/09/24/reduce-your-risk.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In Pete's 13&lt;sup&gt;th&lt;/sup&gt; of 26 short topics about security he discusses mitigation. He touches on the fact that you should generally assume, if you're dealing with a publicly facing application, that you will eventually be the target of some malicious activity. He also details a few ways in which we all help to mitigate those risks on a daily basis. From firewalls to strong passwords to access cards to secure facilities, there are many hoops we all jump through daily, whether we think about it or not, to try and mitigate the risks inherent in today's IT world. This series is an interesting one and the pieces are easy to digest. I intend to keep following it as it moves towards topic #26, and I recommend you do the same.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There you have it, my Top5 picks from DevCentral for the week. Hopefully you enjoyed them, and I'll be back with more soon. Be sure to check out previous editions of the Top5 here - &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=101"&gt;http://devcentral.f5.com/Default.aspx?tabid=101&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8f5fee80-f9cf-4f70-94cf-518585668ad5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral+Top5" rel="tag"&gt;DevCentral Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules+Contest" rel="tag"&gt;iRules Contest&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Security" rel="tag"&gt;Security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Podcast" rel="tag"&gt;Podcast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gartner" rel="tag"&gt;Gartner&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/8026.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=oS4z6FMrXMQ:m9_Vr9QXJes:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=oS4z6FMrXMQ:m9_Vr9QXJes:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=oS4z6FMrXMQ:m9_Vr9QXJes:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=oS4z6FMrXMQ:m9_Vr9QXJes:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/oS4z6FMrXMQ" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/25/devcentral-top5-09252009.aspx</guid>
            <pubDate>Fri, 25 Sep 2009 23:25:31 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/8026.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/25/devcentral-top5-09252009.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/8026.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/25/devcentral-top5-09252009.aspx</feedburner:origLink></item>
        <item>
            <title>DevCentral Top5 09/11/2009</title>
            <category>DC Top5</category>
            <category>DevCentral</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/d92mvNor3RY/devcentral-top5-09112009.aspx</link>
            <description>&lt;p&gt;The extended &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; team has been hard at work this week, as always, fulfilling your geek needs and then some. As such, this Friday's Top5 brings to you all types of DevCentral-y goodness. From text, to audio, to informative pictures, we've got it all this week. I've picked a few of the best, five to be exact, to share with you. Here they are:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;The Threat Behind the Firewall&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2009/09/09/the-threat-behind-the-firewall.aspx"&gt;http://devcentral.f5.com/weblogs/psilva/archive/2009/09/09/the-threat-behind-the-firewall.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pete Silva dives into drives this week in his piece on the dangers lurking behind seemingly benign usb drives. These undeniably handy devices can do just as much, if not more, harm than good if you're not careful. Pete points out a few ways in which you can find yourself in trouble, and how these devices make up an increasingly large portion of the distribution means for malware infections. I use them, I'm sure you do, and this is an interesting read. It never hurts to be safe with your systems, but to do that you have to know what to watch out for. This is a good read if you're looking to get to know more about how you can stay safe with your usb devices, and knowing is half the battle, or so they say.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;iRules Insight - HTTP Event Order&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2009/09/08/irules-insight-http-event-order.aspx"&gt;http://devcentral.f5.com/weblogs/jason/archive/2009/09/08/irules-insight-http-event-order.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jason found a fantastic forum post this week, that featured a pretty darn cool image. An image so cool, in fact, that he turned it into a blog post. There isn't a ton of text to read through, because there's plenty to digest in this image which attempts to detail the logical flow of an iRule firing HTTP events. This is something that might be quite useful for those building or starting to build iRules. I know the event order topic has come up numerous times. There are documents out now that show the order, but I thought this visual representation was very cool. One of the follow-up comments is pretty outstanding also. Go take a look.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;WILS: Automation versus Orchestration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/10/wils-automation-versus-orchestration.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/10/wils-automation-versus-orchestration.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Maybe it's the fact that she was writing it like Seth, maybe it's because the point came across clearly and made me nod my head repeatedly while I read the piece, maybe it's just because it made me think of orchestras and music and conductors, and I have a soft spot for all those things, but this was my favorite blog post by Lori this week. She had several, as always, and this was by no means the most commented on or the most in-depth. I think it is extremely clear and concise, though, and there is something to be said for both of those things. Discussing the difference between automating a single, rigid, clearly defined task, even if it has multiple steps, and orchestrating an entire process, I.E. many tasks being performed together, each dependant on multiple situational variables, is not an easy thing to do. I think this clear-cut post did it well, so it makes my Top5. Seth would be proud.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;20 Lines or Less #29&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/10/20-lines-or-less-29.aspx"&gt;http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/10/20-lines-or-less-29.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;More iRules! Yes, this week brought another edition of the 20LoL. As I near the 30&lt;sup&gt;th&lt;/sup&gt; edition I talk about HTTP port numbers in a request and how to deal with them, checking pool member status in real-time and reporting it, and some fun with nested switching and pool selection. These are always fun for me to write and I think there's value in them for anyone that's using or looking into iRules. Whether you're an iRule newbie, a veteran, or just trying to figure out what the heck you'd use one for, I recommend taking a look. The 20 Lines or Less is always a good place to get simple, easy to follow examples of iRules doing real world things that benefit real people.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Audio White Paper - Create A Smarter Storage Strategy&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/interviews/archive/2009/09/11/create-a-smarter-storage-strategy.aspx"&gt;http://devcentral.f5.com/weblogs/interviews/archive/2009/09/11/create-a-smarter-storage-strategy.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In another edition of his Audio White Paper series, Pete peps up another storage white paper. If you've been looking to learn more about how you can lighten your storage management burden, but haven't taken the time to dig into the documents that discuss how, you might be able to squeeze in giving this a listen to help you out. The white-paper, linked to from the post, discusses file data growth and how this will continue to be a concern for companies, how there is a wealth of options to the degree of making what to do unclear, and gives some options that might help clear things up. I wasn't convinced that audio versions of white papers would be popular at first. Given the response we've seen over the history of DevCentral, including this series of Pete's, I've become a believer and for good reason. If you don't have the time or inclination to dig through the document itself, the audio version might just do the trick.&lt;/p&gt;  &lt;p&gt;There are my five favorites from DevCentral this week. I hope you enjoyed them as much as I did. Let me know if you've got any feedback, as always, and I'll see you next week.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:daaa1d1b-d3f3-4b65-9d6d-5b12a285a971" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Top5" rel="tag"&gt;Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iControl" rel="tag"&gt;iControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Automation" rel="tag"&gt;Automation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6101.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=d92mvNor3RY:RfFSvtxhQeQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=d92mvNor3RY:RfFSvtxhQeQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=d92mvNor3RY:RfFSvtxhQeQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=d92mvNor3RY:RfFSvtxhQeQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/d92mvNor3RY" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/11/devcentral-top5-09112009.aspx</guid>
            <pubDate>Fri, 11 Sep 2009 23:38:56 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6101.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/11/devcentral-top5-09112009.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6101.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/11/devcentral-top5-09112009.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #29</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/Wcty5omSdDo/20-lines-or-less-29.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;  &lt;p&gt;29 editions later and still going strong. The 20LoL is a testament to just how many different things can be done with iRules in just a few lines of code.  Just imagine the possibilities if this were the 30LoL. &lt;/p&gt;  &lt;p&gt;This week I’ve got three more examples, all from the forums. Today we’ll cover dealing with port numbers in HTTP requests, checking pool status from within an iRule, and more fun with nested switching.  The community keeps putting out fantastic examples so I just keep on writing about them.  Keep it up.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Removing HTTP request port numbers&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=62227&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=62227&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hoolio came up with a trio if examples of how to deal with port numbers in your HTTP requests. All of them are good, depending on your situation, but I’m only going to highlight one here.  Go check out the forum post above to see the other two and get the context of the thread.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;  # Check if Host contains a colon         &lt;br /&gt;  if {[HTTP::host] contains ":"}{         &lt;br /&gt;    # Redirect client to requested host minus the port and preserve the original URI         &lt;br /&gt;    HTTP::redirect "&lt;/font&gt;&lt;a href="https://[getfield"&gt;&lt;font face="courier new"&gt;https://[getfield&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; [HTTP::host] ":" 1][HTTP::uri]"        &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Checking pool member status&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=62093&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=62093&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;User cmbhatt, another one of our power-users, came up with a very cool example of using the LB::select command and HTTP::respond to show the status of a selected pool member.  It even has a built in meta-refresh so you can continually monitor the status. Pretty neat stuff.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;     if {[HTTP::uri] eq "/status" } {         &lt;br /&gt;         scan [LB::select] %s%s%s%s%d command current_pool command2 current_member current_port        &lt;br /&gt;         eval [LB::select]         &lt;br /&gt;         set response "&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;$current_pool Pool Status - [clock format [clock seconds]]&amp;lt;/title&amp;gt;&amp;lt;meta http-equiv='refresh' content='10; url=&lt;/font&gt;&lt;a href="http://[HTTP::host]/status'"&gt;&lt;font face="courier new"&gt;http://[HTTP::host]/status'&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt;&amp;gt;&amp;lt;/head&amp;gt;"        &lt;br /&gt;         if { [active_members $current_pool] &amp;lt; 1 } {         &lt;br /&gt;             append response "POOL NAME:$current_pool&amp;lt;br/&amp;gt; CURRENT MEMBER:$current_member:$current_port&amp;lt;br/&amp;gt; STATUS: DOWN &amp;lt;br/&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"         &lt;br /&gt;         } else {         &lt;br /&gt;             append response "POOL NAME:$current_pool&amp;lt;br/&amp;gt; CURRENT MEMBER:$current_member:$current_port&amp;lt;br/&amp;gt; STATUS: UP &amp;lt;br/&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"         &lt;br /&gt;         }         &lt;br /&gt;     }         &lt;br /&gt;     HTTP::respond 200 content $response "Content-Type" "text/html"         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;More nested switching and pool selection vs. redirection&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;view=topic&amp;amp;postid=62162"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;view=topic&amp;amp;postid=62162&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This rule stemmed from cmbhatt, once again, then I went in and made some tweaks where I think it made sense, as you can see in the thread.  The idea is that the user is looking to do some inspection of first the host, then in some cases, depending on what the host is, the URI as well.  Based on what’s found either a load balancing decision is made or a redirect is issued.  This is yet another awesome example of how iRules can turn something that would be ridiculously tricky or even impossible elsewhere into something pretty straight-forward.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;  switch [HTTP::host] {  &lt;br /&gt;    "www.mydomain.eu" {         &lt;br /&gt;      switch [HTTP::uri] {         &lt;br /&gt;        "/" {  HTTP::respond 301 Location "&lt;/font&gt;&lt;a href="http://www.mydomain.eu/zz/index.html&amp;quot;"&gt;&lt;font face="courier new"&gt;http://www.mydomain.eu/zz/index.html"&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; }        &lt;br /&gt;        default { pool mydomain_eu_pool    }         &lt;br /&gt;      }         &lt;br /&gt;    }         &lt;br /&gt;    "www.mydomain.be" {         &lt;br /&gt;      switch [HTTP::uri] {         &lt;br /&gt;        "/" { HTTP::respond 301 Location "&lt;/font&gt;&lt;a href="http://www.mydomain.eu/be/zz/index.jsp&amp;quot;"&gt;&lt;font face="courier new"&gt;http://www.mydomain.eu/be/zz/index.jsp"&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; }        &lt;br /&gt;         default { pool mydomain_be_pool }         &lt;br /&gt;      }         &lt;br /&gt;    }         &lt;br /&gt;    "www.mydomain.nl" { HTTP::respond 301 Location "&lt;/font&gt;&lt;a href="http://www.mydomain.eu/nl/zz/index.jsp&amp;quot;"&gt;&lt;font face="courier new"&gt;http://www.mydomain.eu/nl/zz/index.jsp"&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; }        &lt;br /&gt;    "www.mydomain.fr" -         &lt;br /&gt;    "mydomain.fr" { HTTP::respond 301 Location "&lt;/font&gt;&lt;a href="http://www.mydomain.eu/fr/zz/index.jsp"&gt;&lt;font face="courier new"&gt;http://www.mydomain.eu/fr/zz/index.jsp&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; }        &lt;br /&gt;    "www.mydomain.lu" { HTTP::respond 301 Location "&lt;/font&gt;&lt;a href="http://www.mydomain.eu/lu/zz&amp;quot;"&gt;&lt;font face="courier new"&gt;http://www.mydomain.eu/lu/zz"&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; }        &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There you have it, three more iRules to get you on your way in less than 21 lines of code.  Feel free to submit ideas, suggestions of feedback, as always.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e8512473-a5d1-4aa9-9eea-6f18a5f01866" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20LoL" rel="tag"&gt;20LoL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20+Lines+or+Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/switch" rel="tag"&gt;switch&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP%3a%3arespond" rel="tag"&gt;HTTP::respond&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin &lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6097.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=Wcty5omSdDo:CLvaYXj71vI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=Wcty5omSdDo:CLvaYXj71vI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=Wcty5omSdDo:CLvaYXj71vI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=Wcty5omSdDo:CLvaYXj71vI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/Wcty5omSdDo" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/10/20-lines-or-less-29.aspx</guid>
            <pubDate>Thu, 10 Sep 2009 20:24:50 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6097.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/10/20-lines-or-less-29.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6097.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/10/20-lines-or-less-29.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #28</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/xCunM54TaIk/20-lines-or-less-28-again.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;  &lt;p&gt;Nearing the thirty mark with the 20LoL it occurs to me that I’m having a harder and harder time with something. No, it’s not finding interesting ideas to feature. The community has been absolutely stellar with that part. There are always plenty of iRules for me to grab either directly or with some modification (which is half the fun). No the issue is that I’m having a tough time remembering if I’ve covered a topic too similar to the current one already.  Forgive me if I end up double dipping at some point. At the very least it will be a new slant on the idea. &lt;/p&gt;  &lt;p&gt;I’m pretty sure this week these are all original concepts. I bring to you examples of SSL and Non SSL traffic sharing a vip in harmony, making use of the scan command to dissect URIs, and some more persistence trickery.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SSL and plaintext living together&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61869&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61869&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61869&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There was a need to serve SSL traffic for all but only a few URIs, and the desire was to use an iRule to do so.  Fortunately for the original poster someone was quick to seek out some of hoolio’s earlier work via the search function. In this example you can see how to selectively disable encryption for a particular URI.  This could work in the inverse just as easily (selectively enable for only a few secure URIs).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST { &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;   # Check if request matches the criteria to disable server-side SSL        &lt;br /&gt;   if { [HTTP::uri] starts_with "/clear"}{ &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;      # disable SSL on the serverside context        &lt;br /&gt;      SSL::disable serverside &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;      # select the http pool        &lt;br /&gt;      pool http_pool &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;   } else {        &lt;br /&gt;      # default is to use server-side SSL and the https pool         &lt;br /&gt;      pool https_pool         &lt;br /&gt;   }         &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Multiple Persistence timeouts based on URI&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61948&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61948&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61948&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In a very cool juggling act, hoolio puts on yet another seminar on how to use iRules to meet your tricky and extremely specific needs.  He shows here how you can manage a single type of persistence (source address in this case) with multiple timeouts based on the URI that’s requested. The additional trick here is to have the longer timeout not overwritten by the shorter timeout the next time that user requests a URI not in the “extended timeout” list.  I like it.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST { &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;    # Check requested path        &lt;br /&gt;    switch -glob [HTTP::path] {         &lt;br /&gt;       "/apps/aml/*" {         &lt;br /&gt;          # Persist client for 10 hours         &lt;br /&gt;          persist source_addr 36000         &lt;br /&gt;       }         &lt;br /&gt;       default {         &lt;br /&gt;          # Persist client for 1 hour         &lt;br /&gt;          persist source_addr 3600         &lt;br /&gt;       }         &lt;br /&gt;    }         &lt;br /&gt; } &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Scanning URIs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61774&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61774&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=61774&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The need from the user was to alter multiple variables in a URI. This was complicated further by the structure of the URI and the type of replacement that needed to be done.  Aaron (hoolio) though, swift as ever, managed to whip up a tidy solution to the problem making use of the powerful scan command. This one is definitely cool and shows off this under-used command.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST { &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;    log local0. "[IP::client_addr]:[TCP::client_port]: New HTTP request to [HTTP::uri]" &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;    if { [HTTP::uri] contains "adserver/impression" }{        &lt;br /&gt;       log local0. "[IP::client_addr]:[TCP::client_port]: Matched URI check" &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;       # Scan the URI looking for the pid, oid and rand values        &lt;br /&gt;       if { [scan [HTTP::uri] {/adserver/impression/pid=%[^/]/oid=%[^/]/rand=%[^/]} pid oid rand] == 3 } {    &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;          log local0. "[IP::client_addr]:[TCP::client_port]: Scanned three values: pid = $pid, oid = $oid, rand = $rand"        &lt;br /&gt;          HTTP::uri [string map "adserver/impression/pid=$pid/oid=$oid/rand=$rand/?click ad.imp?pid=$pid&amp;amp;oid=$oid&amp;amp;rand=$rand/?pclk" [HTTP::uri]]         &lt;br /&gt;       }         &lt;br /&gt;    }         &lt;br /&gt; }         &lt;br /&gt; when HTTP_REQUEST priority 501 {         &lt;br /&gt;    log local0. "[IP::client_addr]:[TCP::client_port]: 501: Updated URI: [HTTP::uri]"         &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There are your three examples for the week in an aggregate 60 lines or less (see what I did there?).  Hopefully you’re continuing to find these interesting to read. I’m definitely still enjoying putting them together and want to give yet another massive thanks to the amazing community as a whole and specifically Hoolio for the continued contributions.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3b7f1823-c4bd-4565-bd19-ba8be2bf142c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20+Lines+or+Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20LoL" rel="tag"&gt;20LoL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6089.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=xCunM54TaIk:I4RmAOxcEp0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=xCunM54TaIk:I4RmAOxcEp0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=xCunM54TaIk:I4RmAOxcEp0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=xCunM54TaIk:I4RmAOxcEp0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/xCunM54TaIk" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/03/20-lines-or-less-28-again.aspx</guid>
            <pubDate>Thu, 03 Sep 2009 21:00:53 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6089.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/03/20-lines-or-less-28-again.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6089.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/09/03/20-lines-or-less-28-again.aspx</feedburner:origLink></item>
        <item>
            <title>DevCentral Top5 08/28/2009</title>
            <category>Cloud Computing</category>
            <category>DC Top5</category>
            <category>DevCentral</category>
            <category>Development / General IT Goodness</category>
            <category>Microsoft Solutions</category>
            <category>Monitoring/Management</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/sWpqcNOZi-Q/devcentral-top5-08282009.aspx</link>
            <description>&lt;p&gt;I submit to you my second attempt at this week's Top5 after a vile BSoD swooped down and smote my first attempt into a pile of fiery ash. There were a couple announcements this week on &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; along with the expected awesome technical content. I'll try to touch on those as well as a couple other things that you should definitely check out in this week's DevCentral Top5:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Announcing F5 Management Pack 1.4 for Microsoft System Center Operations Manager 2007&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/sfisher/archive/2009/08/25/announcing-f5-management-pack-1.4-for-microsoft-system-center-operations.aspx"&gt;http://devcentral.f5.com/weblogs/sfisher/archive/2009/08/25/announcing-f5-management-pack-1.4-for-microsoft-system-center-operations.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The hard-working, quick-moving management pack team here at F5 brings you the newest version of the Management Pack for SCOM. This version includes increased platform support, auth roles integration, built-in discovery, device config and more. If you haven't looked into what the Management Pack can do for you, I highly suggest you take a look. You can check out all sorts of things that the package can be used for in the frequently updated tutorials on DevCentral. If you're using SCOM and have F5 devices, this is definitely something you should look into.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;DevCentral Weekly Roundup Episode 100 - The Century Mark&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/08/27/devcentral-weekly-roundup-episode-100-the-century-mark.aspx"&gt;http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/08/27/devcentral-weekly-roundup-episode-100-the-century-mark.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The weekly podcast is not new to the Top5, but this week's is particularly special. This week we crossed the century mark with our 100&lt;sup&gt;th&lt;/sup&gt; podcast. It took us longer than 100 weeks, but we made it. We've grown immensely as a community and as a team in that time and it was fun to take a few minutes to reminisce on our favorite moments in time with DC. Listen to Jeff talk about electrical storms in Malaysia, Joe talk about sumo wrestling in Japan, and other things that are at least somewhat related to DC and the technology, I promise. Whether you've been with us for years or you're new to DevCentral, this one's a fun look at where we've been and perhaps some hints at where we're going. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Survey iPod Touch Winners + Thanks for the Fantastic Response&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/JeffB/archive/2009/08/27/6076.aspx"&gt;http://devcentral.f5.com/weblogs/JeffB/archive/2009/08/27/6076.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jeff extended a hearty thank you to all of the respondents to the most recent DevCentral survey, and I wanted to point it out and extend mine as well. We got some absolutely fantastic results, with over 500 people responding with some very interesting and useful information. This kind of thing is amazingly useful to driving the DevCentral community forward and making sure we're doing so in a direction that makes the most sense for the members. This one isn't a super deep technical post but it's noteworthy just the same and I wanted to call it out. I'm sure you'll be seeing some snippets of this info as we absorb it and choose bits to share, so keep an eye out and thank you again for your involvement.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;The End of DNS As We Know It&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/28/the-end-of-dns-as-we-know-it.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/28/the-end-of-dns-as-we-know-it.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Lori talks about the imminent death of DNS as we know it, foretelling the rise of GSLB in its place. Given the up and coming infrastructures that seemingly all rely on multiple points of data storage/processing interacting together to deliver a given application, I can see where she'd get that impression. While I'm not quite ready to get the nails out for the coffin, and to be fair that's not what Lori is saying either, I do completely agree with her in that DNS was not designed to handle the demands of the distributed architectures of today and certainly not those of tomorrow. As such it's going to have to be replaced sooner or later. There are already serious pain points when dealing with DNS for applications that demand more of it than it is prepared to deliver, and those issues are only going to continue getting worse, not better. GSLB seems to be the natural successor, with many people already well on-board. Are you ready for the change? If not, it might be time to start thinking about it.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;The Importance Of Integration In The Future Of The Cloud With BlueLock&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/interviews/archive/2009/08/25/the_future_of_the_cloud_with_bluelock.aspx"&gt;http://devcentral.f5.com/weblogs/interviews/archive/2009/08/25/the_future_of_the_cloud_with_bluelock.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tune in as Ken Salchow talks with Pat O'Day from BlueLock about cloud computing, F5's role in making some of the features BlueLock offers possible, and how important integrating that technology with server virtualization technology is to them. If you're looking for an inside scoop on what at least one cloud provider is up to, what they're thinking and how they're doing what they do, this is a pretty cool look at just that. It also provides some solid insight into how virtualization of both the hardware and network resources is vital to making the scaling that clouds are so famous for possible. I enjoyed getting to hear from the horse's mouth how these technologies are being put to use today to produce a robust platform for your application.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;That's the Top5 for this week. If you've got questions, comments or otherwise, don't hesitate to drop me a line. You can always check out previous editions of the Top5 here - &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=101"&gt;http://devcentral.f5.com/Default.aspx?tabid=101&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:650fcd70-ab47-4a7c-8ebd-eb2e94a1256a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DC+Top5" rel="tag"&gt;DC Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BlueLock" rel="tag"&gt;BlueLock&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Management+Pack" rel="tag"&gt;Management Pack&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/8021.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=sWpqcNOZi-Q:vWUS9Ld7xrM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=sWpqcNOZi-Q:vWUS9Ld7xrM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=sWpqcNOZi-Q:vWUS9Ld7xrM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=sWpqcNOZi-Q:vWUS9Ld7xrM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/sWpqcNOZi-Q" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/28/devcentral-top5-08282009.aspx</guid>
            <pubDate>Fri, 28 Aug 2009 23:41:13 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/8021.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/28/devcentral-top5-08282009.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/8021.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/28/devcentral-top5-08282009.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #28</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <category>Development / General IT Goodness</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/XGmF2X8sP6w/20-lines-or-less-28.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;  &lt;p&gt;Today I bring you a few more fine examples of iRules kung fooery in a brief fashion.  These tidbits of iRuley goodness could be used by themselves, as the beginning to a bigger project or solution, or just to get the creative coding juices flowing for you to think of what you might need or want to do with iRules in your world.  To me, it’s just a great way to look at what’s being done, how people are using the technology, and what can be achieved in just a few lines of code.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Modifying Secure Access Manager session variables&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/Modifying_Secure_Access_Manager_v8_session_variables_with_a_cookie.html"&gt;http://devcentral.f5.com/wiki/default.aspx/iRules/Modifying_Secure_Access_Manager_v8_session_variables_with_a_cookie.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;From the CodeShare comes a very cool entry, complete with diagrams and pictures (yay pictures!), that shows us how we might use iRules in conjunction with another product. The author gives a full description in the link above, so follow that for all the details, but to quote briefly, &lt;em&gt;“In this example, an external server is used to authenticate users before passing those authentication credentials over to the Secure Access Manager (SAM v8) using a cookie.”&lt;/em&gt; Cool stuff. The iRule is below but there’s more to this one so click on the link to check it out.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {       &lt;br /&gt;  #Check to see if a cookie exists, otherwise no need to do anything.        &lt;br /&gt;  #You should probably also check to see if the session variables are already set before doing anything        &lt;br /&gt;  #as well, but this code is just for demonstration purposes.        &lt;br /&gt;  if { [HTTP::cookie exists MySAMCookie] } {        &lt;br /&gt;    #Log the session state - this is just for demonstration purposes        &lt;br /&gt;    #SAM allows you to gather the values of session variables with the SESSION::data command        &lt;br /&gt;    log local0. "Session ID is $tmm_fp_session_id and the status is [SESSION::data get $tmm_fp_session_id \"session.state\"]" &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;    #Use the SESSION command to set the userID and password       &lt;br /&gt;    #session variables to what was in the cookie.  The userID and password are just cookie values &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;    SESSION::data set $tmm_fp_session_id session.logon.last.username [HTTP::cookie MySAMUser]       &lt;br /&gt;    SESSION::data set $tmm_fp_session_id session.logon.last.password [HTTP::cookie MySAMpw]        &lt;br /&gt;  }        &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Replace absolute URLs in redirects&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This one comes from email so there’s no link, but it’s straight-forward and well commented. The idea is a good one. If a URL is being passed through in the location header of a redirect and it’s an absolute location, change it to be relative.  Very handy.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;# This will rewrite the Location header on a redirect from a absolute URL like        &lt;br /&gt;#        &lt;br /&gt;#         &lt;/font&gt;&lt;a href="http://host/images/"&gt;&lt;font face="courier new"&gt;http://host/images/&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; to /images/       &lt;br /&gt;# or         &lt;br /&gt;#         like &lt;/font&gt;&lt;a href="https://host/images/"&gt;&lt;font face="courier new"&gt;https://host/images/&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; to /images/       &lt;br /&gt;#        &lt;br /&gt;# The only case it will not handle is &lt;/font&gt;&lt;a href="http:///"&gt;&lt;font face="courier new"&gt;http:///&lt;/font&gt;&lt;/a&gt;&lt;font face="courier new"&gt; which will get rewritten to "" which is invalid       &lt;br /&gt;# &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_RESPONSE {       &lt;br /&gt;  if { [HTTP::is_redirect] } {        &lt;br /&gt;    if { [HTTP::header "Location"] starts_with "http" } {        &lt;br /&gt;      HTTP::header replace "Location" [substr [HTTP::header "Location"] [string first "/" [HTTP::header "Location"] 8]]     &lt;br /&gt;    }        &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Persisting on part of a cookie name&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60792&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60792&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This user wanted to use cookie persistence but was looking to setup persistence for cookies that began with a certain string. This means he wanted to loop through all cookies and compare them each against a static search string. They figured out their own solution though, so kudos to them. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;#HTTP responds catches the first responds from the node to back to the client.       &lt;br /&gt;#It checking all cookies in the header and grabs all starting with 1234.        &lt;br /&gt;#After it adds the cookie value to the persistence table and log values to syslog.        &lt;br /&gt;#Else persist the client for 60 minutes based on source IP with /32 mask and log values to syslog. &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_RESPONSE {  &lt;br /&gt;  foreach a_cookie [HTTP::cookie names] {         &lt;br /&gt;    if {$a_cookie starts_with "1234"}{         &lt;br /&gt;      persist add uie [HTTP::cookie "$a_cookie"]        &lt;br /&gt;      log local0.debug "Cookie persist - client IP: [IP::client_addr], Cookie: $a_cookie, Server IP: [IP::server_addr]"        &lt;br /&gt;    } else {  &lt;br /&gt;      persist source_addr 255.255.255.255 3600        &lt;br /&gt;      log local0.debug "Source persist - client IP: [IP::client_addr] , Server IP: [IP::server_addr], lookup [persist lookup uie [IP::client_addr]]"        &lt;br /&gt;    }  &lt;br /&gt;  }  &lt;br /&gt;}         &lt;br /&gt;#HTTP request catches the first responds from the node to back to the client.        &lt;br /&gt;#It checking all cookies in the header and grabs all starting with 1234.        &lt;br /&gt;#After it persist on the cookie value in the persistence table.        &lt;br /&gt;#Also, log values to syslog &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {  &lt;br /&gt;  foreach a_cookie [HTTP::cookie names] {         &lt;br /&gt;    if {$a_cookie starts_with "1234"}{         &lt;br /&gt;      persist uie [HTTP::cookie "a_cookie"]        &lt;br /&gt;      log local0.debug "Client IP: [IP::client_addr], Cookie value: $a_cookie"        &lt;br /&gt;    } else {  &lt;br /&gt;      persist uie [IP::client_addr]        &lt;br /&gt;      log local0.debug "Source IP Persistence used - Client IP: [IP::client_addr], Persistence entries used persist uie [persist lookup uie [IP::client_addr]]"        &lt;br /&gt;    }  &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There you have it, three more awesome iRule examples from three different sources. You’ve got to love that.  Keep those examples coming whether it’s in the forums or the CodeShare, and don’t forget you can always email me to toss out ideas, ask for things you’d like to see, discuss your favorite X-Men character, or whatever suits you.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b51f06dd-531d-4aef-9bac-ec41cfa13d54" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20Lines+or+Less" rel="tag"&gt;20Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Persistence" rel="tag"&gt;Persistence&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cookies" rel="tag"&gt;Cookies&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6038.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=XGmF2X8sP6w:GkIyaz7guyM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=XGmF2X8sP6w:GkIyaz7guyM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=XGmF2X8sP6w:GkIyaz7guyM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=XGmF2X8sP6w:GkIyaz7guyM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/XGmF2X8sP6w" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/11/20-lines-or-less-28.aspx</guid>
            <pubDate>Tue, 11 Aug 2009 17:50:40 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6038.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/11/20-lines-or-less-28.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6038.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/11/20-lines-or-less-28.aspx</feedburner:origLink></item>
        <item>
            <title>DevCentral Top5 08/07/2009</title>
            <category>DC Top5</category>
            <category>DevCentral</category>
            <category>Development / General IT Goodness</category>
            <category>iRules</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/h2kWAKIW3k4/devcentral-top5-08072009.aspx</link>
            <description>&lt;p&gt;As the extended &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; crew continues to crank through the summer months, churning out more and more awesome content, there is lots to see. Whether you're looking for short, easily consumable pieces of media to get you pointed in the right direction or longer posts about the practicality of running your crew or your servers close to the ragged edge, I've got both for you this week. Check out this week's Top5:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;pyControl Apps #2 - Deleting BIG-IP Routes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=2318"&gt;http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=2318&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In Jason's continuation of the pyControl Apps series he continues to walk you through how to get moving with pyControl to perform some useful actions on your BIG-IP. In this installment Jason walks through how to delete the routes that he showed you how to create in the last pyControl Apps article. He continues to expand upon the idea of using python and iControl together, giving you building blocks to a larger application or utility that could eventually do one of many possible things in your deployment. I'm curious to see what comes next in the series and this one is worth a quick read.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Audio White Paper - Load Balancing 101 Nuts and Bolts&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/interviews/archive/2009/08/06/audio-white-paper-load-balancing-101-nuts-and-bolts.aspx"&gt;http://devcentral.f5.com/weblogs/interviews/archive/2009/08/06/audio-white-paper-load-balancing-101-nuts-and-bolts.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you're still not 100% clear on load balancing, Application Delivery Networking, and their role in your application's world, here's a great way to clear all of that up. Pete Silva takes a few minutes to clarify in very simple terms what all of these things are and what they can do. He covers everything from the basic terminology of the devices and configurations to the life cycle of a connection within the Load Balancer's world to in-line manipulation of content at the network level. In this audio version of the load balancing 101 whitepaper Pete gives a solid basis to work with for anyone that is just getting their feet wet in the LB / ADC world(s). If you're (or someone you know is) looking for a place to get started, this wouldn't be a bad place. Make sure you check out the pdf linked to in the post for the diagrams and shiny pictures.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;There's a New iRule Editor in Town&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/Joe/archive/2009/08/05/theres-a-new-irule-editor-in-town.aspx"&gt;http://devcentral.f5.com/weblogs/Joe/archive/2009/08/05/theres-a-new-irule-editor-in-town.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The iRule Editor, for those of you that have been living under a rock or in a particularly out of the way cave for quite some time now, is an amazingly powerful tool for writing, deploying, testing, troubleshooting and archiving iRules. It's my go-to tool every time I even think about looking at or coding an iRule. It was that good before, and it just got better. Joe has implemented some fixes to bugs in the previous versions and some shiny new enhancements such as new GTM only iRules commands. If you've been using this, grab the new version. It's better, faster, stronger…you get the idea. If you haven't been using this and you use, are thinking about using, or come within 4 square miles of contact with an iRule I highly, highly recommend you pick this up and take a look. It's game-changing in the iRules dev experience. It's so good, in fact, that word on the street is that someone who will remain un-named may be looking into a Linux version as well for all of those non-MS types. Check it out, you won't regret it.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Formula for Quantifying Productivity of Web Applications&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/04/a-formula-for-quantifying-productivity-of-web-applications.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/04/a-formula-for-quantifying-productivity-of-web-applications.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;More is not always better. More utilization, even when there is more overhead technically available is not always a good thing. Lori points this out quite well and far better than I could in her recent blog post. Her discussion around the maximum realistic capacity of people/devices and the amount of fallout there is for pushing past that is something that I've understood inherently for some time, but enjoyed seeing put down in black and white. Yes, if your server is at 75% capacity you can &lt;i&gt;technically&lt;/i&gt; squeeze another 24% utilization out of it. Realistically though, bad things will happen. Read more to find out what, why, and what to do about it.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;20 Lines or Less #27&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/06/20-lines-or-less-27.aspx"&gt;http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/06/20-lines-or-less-27.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Yes, another 20LoL in the Top5. Yes, I really think it's that cool. Three more examples of what can be done with the power of iRules in less than 21 lines of code warrants a spot this week. This week we've got an example dealing with switch statements, one dealing with pool information in HTTP headers, and one that has to do with mod_rewrite rewriting. If you're looking for code snippets that you can grab and use or store for later, or if you're just trying to figure out what the possibilities are with this whole iRules thing, this series is a great place to check things out. Take a look at the 27&lt;sup&gt;th&lt;/sup&gt; edition and see what you think. Then, if you like what you read, dig back through the previous 26 for over 70 code samples of nifty iRule-ey goodness.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There's your Top5 for the week. I hope, as always, that you've not only enjoyed it but found it useful. Feel free to drop me a line about what you'd like to see, what you're missing, or general comments and feedback. Otherwise, I'll be back soon with 5 more from &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt;.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8b6c78b4-efd3-42a4-9adf-a41080ee8952" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral+Top5" rel="tag"&gt;DevCentral Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRule+Editor" rel="tag"&gt;iRule Editor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20+Lines+or+Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/pyControl" rel="tag"&gt;pyControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Productivity" rel="tag"&gt;Productivity&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6030.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=h2kWAKIW3k4:XdaglZ6GfU0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=h2kWAKIW3k4:XdaglZ6GfU0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=h2kWAKIW3k4:XdaglZ6GfU0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=h2kWAKIW3k4:XdaglZ6GfU0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/h2kWAKIW3k4" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/07/devcentral-top5-08072009.aspx</guid>
            <pubDate>Fri, 07 Aug 2009 21:48:15 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6030.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/07/devcentral-top5-08072009.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6030.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/07/devcentral-top5-08072009.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #27</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <category>Ramblings</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/pCHIcf3hHWw/20-lines-or-less-27.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;  &lt;p&gt;Here are a few more cool iRules from the forums. This week I’ve included one of the simplest, shortest iRules to ever make the 20LoL. It just struck me as something quite useful that I’m willing to bet several people will look at and say “oh, that’s handy” despite the fact that it’s not complex or long.  Keep the code coming. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Multiple Matches with Switch&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60678&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60678&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Joe answered a plea for help from the forums that showed how to modify an existing iRule that mad use of switch dropping through to multiple match cases.  This is a great way to streamline your rule and I wanted to post this here as it’s a good example of what it looks like.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;   switch -glob [string tolower [HTTP::uri]] {         &lt;br /&gt;     "/xml/order.asp*" -         &lt;br /&gt;     "/xml/status.asp*" -         &lt;br /&gt;     "/vmsxml/order.asp*" -         &lt;br /&gt;     "/vmsxml/status.asp*" -         &lt;br /&gt;     "/_xmlbeta/status_mismo21.asp*" -         &lt;br /&gt;     "/_xmlbeta/status.asp*" -         &lt;br /&gt;     "/_xmlbeta/rels_status_mismo21.asp*" -         &lt;br /&gt;     "/vendor/status.asp*" {         &lt;br /&gt;       pool host.mydomain.com_B2B_HTTPS         &lt;br /&gt;     }         &lt;br /&gt;     "/BatchProcessing*" {         &lt;br /&gt;       pool host.mydomain.com_BatchPro_HTTPS         &lt;br /&gt;     }         &lt;br /&gt;     default {         &lt;br /&gt;       pool host.mydomain.com_GUI_HTTPS         &lt;br /&gt;     }         &lt;br /&gt;   }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mod_Rewrite to iRules conversion&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=62642&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=62642&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hoolio strikes again with this awesome conversion of some mode rewrite rules into an iRule format.  This is extremely handy for centralizing and streamlining these types of rewrites.  He makes it look so easy, doesn’t he?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;        &lt;br /&gt;    log local0. "[IP::client_addr]:[TCP::client_port]: Original URI: [HTTP::uri]"         &lt;br /&gt;        &lt;br /&gt;    # Check if URI matches first format using scan         &lt;br /&gt;    if {[scan [HTTP::uri] {/%[Oo]ffers/%[0-9:].html} a b] == 2}{         &lt;br /&gt;        &lt;br /&gt;       # Scan matched two strings, so rewrite the URI with the second match value         &lt;br /&gt;       HTTP::uri "/pages/ViewOffer.aspx?id=$b"         &lt;br /&gt;        &lt;br /&gt;    } elseif {         &lt;br /&gt;        &lt;br /&gt;       # Continue with next rule         &lt;br /&gt;    }         &lt;br /&gt;}         &lt;br /&gt;when HTTP_REQUEST priority 501 {         &lt;br /&gt;        &lt;br /&gt;    # This event is added for debug only to log the updated HTTP::uri value         &lt;br /&gt;    # Comment it out/remove after testing is complete         &lt;br /&gt;    log local0. "[IP::client_addr]:[TCP::client_port]: Updated URI: [HTTP::uri]"         &lt;br /&gt;        &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Insert Pool Info&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60663&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60663&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In likely the shortest, simplest iRule to date in the 20 Lines or Less, hoolio shows how to insert information about the chosen pool into a header on a server response.  This one struck me as useful enough to post. I usually go for things that are a little more flashy but there’s something to be said for simplicity if it gets the job done.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_RESPONSE {        &lt;br /&gt;        &lt;br /&gt;    # Insert pool name, member IP:port in a header named Pool-Info         &lt;br /&gt;    HTTP::header insert Pool-Info [LB::server]         &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The things that you can do in less than 21 lines of iRules code continue to amaze and interest me, so I’ll be back next week with three more examples of just how much you can accomplish in those scant few lines of code.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bb60eef2-4ce9-4e55-8280-ce4eecf01f7a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/20LoL" rel="tag"&gt;20LoL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20+Lines+or+Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/6026.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=pCHIcf3hHWw:xoFQhLMhfAo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=pCHIcf3hHWw:xoFQhLMhfAo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=pCHIcf3hHWw:xoFQhLMhfAo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=pCHIcf3hHWw:xoFQhLMhfAo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/pCHIcf3hHWw" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/06/20-lines-or-less-27.aspx</guid>
            <pubDate>Thu, 06 Aug 2009 20:17:28 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/6026.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/06/20-lines-or-less-27.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/6026.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/08/06/20-lines-or-less-27.aspx</feedburner:origLink></item>
        <item>
            <title>20 Lines or Less #26</title>
            <category>DevCentral</category>
            <category>iRules</category>
            <link>http://feedproxy.google.com/~r/f5/cwalker/~3/EwJTG3DGUJk/20-lines-or-less-26.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask (almost) every week for the &lt;a target="_blank" href="http://devcentral.f5.com"&gt;devcentral&lt;/a&gt; community, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;
&lt;p&gt;This week we’ve got more cool iRules toys to show off. That’s not the impressive part, the impressive part is that &lt;em&gt;only &lt;/em&gt;two of the three examples are from hoolio.  I know, right?  Joking aside, a huge thank you to hoolio for his astounding contributions to the community, and to everyone else that’s out there posting questions, answers and examples of what iRules, iControl and all the other F5 technologies can do.&lt;/p&gt;
&lt;p&gt;Okay, love-fest out of the way, let’s iRule…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nested URI Rewriting&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60448&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60448&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this example hoolio shows how you can use a switch statement to simplify performing a couple of URI rewrites based on the hostname.  The example is a clean way to achieve something that can quickly get messy and hard to debug when using if/else chains.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt; when HTTP_REQUEST { &lt;br /&gt;    switch [string tolower [HTTP::host]] { &lt;br /&gt; 	 "keyaccount.company.com" { &lt;br /&gt;          # Rewrite / to /path/path/index.html &lt;br /&gt;          if {[HTTP::path] eq "/"}{ &lt;br /&gt;             HTTP::uri "/path/path/index.html" &lt;br /&gt;          } &lt;br /&gt;&lt;br /&gt;          # Rewrite host header to keyaccount.othercompany.com &lt;br /&gt;          HTTP::header replace Host "keyaccount.othercompany.com" &lt;br /&gt;&lt;br /&gt;          # Use pool1 &lt;br /&gt;          pool pool1 &lt;br /&gt;      } &lt;br /&gt; 	 "keyaccount.company.com" { &lt;br /&gt;          # Rewrite / to /path/path/index.html &lt;br /&gt;          if {[HTTP::path] eq "/"}{ &lt;br /&gt;             HTTP::uri "/path/path/index.html" &lt;br /&gt;          } &lt;br /&gt;&lt;br /&gt;          # Rewrite host header to keyaccount.othercompany.com &lt;br /&gt;          HTTP::header replace Host "keyaccount.othercompany.com" &lt;br /&gt;&lt;br /&gt;          # Use pool1 &lt;br /&gt;          pool pool1 &lt;br /&gt;       } &lt;br /&gt;       default { &lt;br /&gt;          # Take some default action for other host header values? &lt;br /&gt;       } &lt;br /&gt;    } &lt;br /&gt; } &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Partial Hostname Rewrite&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60325&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60325&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;User cmbhatt chimed in with a solid response to a request looking for hostname re-writing.  Rather than perform some more complex splitting, lreplacing and joining he makes use of the string map command to reduce the complexity and number of steps. This one’s another good example of making something that’s easy to read, useable and portable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="code"&gt; when HTTP_REQUEST {  &lt;br /&gt;   if { [matchclass [string to lower [HTTP::header "User-Agent"]] contains $::useragent_list ] }  {  &lt;br /&gt;     HTTP::redirect "http://[string map -nocase {"www." "m." } [HTTP::host]][HTTP::uri]" &lt;br /&gt;   } else {  &lt;br /&gt;     HTTP::redirect "http://[string map -nocase {"www." "www2." } [HTTP::host]][HTTP::uri]" &lt;br /&gt;   } &lt;br /&gt; } &lt;/pre&gt;
&lt;p /&gt; &lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IP based login control via iRules&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60333&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=60333&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hoolio’s back (shocking) with another awesome example.  His response to player’s request for some user access control guidance resulted in a good look at how you can use a simple iRule to make quick work of login restrictions.  This is a great way to allow only certain people access to given areas of a site.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;when HTTP_REQUEST {  &lt;/p&gt;
&lt;p&gt;    # Check requested path     &lt;br /&gt;
    if {[string tolower [URI::decode [HTTP::path]]] eq "/web/admin.aspx"}{  &lt;/p&gt;
&lt;p&gt;       # Check login parameter value     &lt;br /&gt;
       if {[URI::query [HTTP::uri] "login"] eq "1"}{  &lt;/p&gt;
&lt;p&gt;          # Request to restricted resource.  Check if client IP is not 1.1.1.1     &lt;br /&gt;
          if {not ([IP::addr [IP::client_addr] equals 1.1.1.1])}{  &lt;/p&gt;
&lt;p&gt;             # Take some action to prevent request?  &lt;/p&gt;
&lt;p&gt;             # Rewrite login=1 to login=2  &lt;br /&gt;
             #HTTP::uri [string map {login=1 login=2} [HTTP::uri]] &lt;/p&gt;
&lt;p&gt;         # Redirect client to rewritten URI?  &lt;br /&gt;
             #HTTP::redirect [string map {login=1 login=2} [HTTP::uri]]      &lt;br /&gt;
          }  &lt;br /&gt;
       }  &lt;br /&gt;
    }       &lt;br /&gt;
} &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There they are for this week, three more examples of iRule foo in less than 21 lines of code. Check out more 20 Lines or Less posts &lt;a target="_blank" href=" http://devcentral.f5.com/weblogs/cwalker/Tags/20%20Lines%20or%20Less/default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4eac24f4-1199-47fd-a33c-4d7b2939d75c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/20LoL"&gt;20LoL&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/iRules"&gt;iRules&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/20+Lines+or+Less"&gt;20 Lines or Less&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colin+Walker"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/4296.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=EwJTG3DGUJk:nQmUQXZK8MQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=EwJTG3DGUJk:nQmUQXZK8MQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?i=EwJTG3DGUJk:nQmUQXZK8MQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/f5/cwalker?a=EwJTG3DGUJk:nQmUQXZK8MQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/f5/cwalker?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/f5/cwalker/~4/EwJTG3DGUJk" height="1" width="1"/&gt;</description>
            <dc:creator>Colin Walker</dc:creator>
            <guid isPermaLink="false">http://devcentral.f5.com/weblogs/cwalker/archive/2009/07/23/20-lines-or-less-26.aspx</guid>
            <pubDate>Thu, 23 Jul 2009 20:45:40 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/4296.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/cwalker/archive/2009/07/23/20-lines-or-less-26.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/4296.aspx</wfw:commentRss>
        <feedburner:origLink>http://devcentral.f5.com/weblogs/cwalker/archive/2009/07/23/20-lines-or-less-26.aspx</feedburner:origLink></item>
    </channel>
</rss>
