1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
<Comment>#</Comment><br/>
<Comment># Copyright (c) 2016-2018 Varnish Cache project</Comment><br/>
<Comment># Copyright (c) 2012-2016 Varnish Software AS</Comment><br/>
<Comment>#</Comment><br/>
<Comment># </Comment><SPDX Tag>SPDX-License-Identifier:</SPDX Tag><SPDX Value> </SPDX Value><SPDX License>BSD-2-Clause</SPDX License><br/>
<Comment>#</Comment><br/>
<Comment># Redistribution and use in source and binary forms, with or without</Comment><br/>
<Comment># modification, are permitted provided that the following conditions</Comment><br/>
<Comment># are met:</Comment><br/>
<Comment># 1. Redistributions of source code must retain the above copyright</Comment><br/>
<Comment># notice, this list of conditions and the following disclaimer.</Comment><br/>
<Comment># 2. Redistributions in binary form must reproduce the above copyright</Comment><br/>
<Comment># notice, this list of conditions and the following disclaimer in the</Comment><br/>
<Comment># documentation and/or other materials provided with the distribution.</Comment><br/>
<Comment>#</Comment><br/>
<Comment># THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</Comment><br/>
<Comment># ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</Comment><br/>
<Comment># IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</Comment><br/>
<Comment># ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE</Comment><br/>
<Comment># FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</Comment><br/>
<Comment># DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</Comment><br/>
<Comment># OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</Comment><br/>
<Comment># HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</Comment><br/>
<Comment># LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</Comment><br/>
<Comment># OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</Comment><br/>
<Comment># SUCH DAMAGE.</Comment><br/>
<Comment>#</Comment><br/>
<Comment># detectdevice.vcl - regex based device detection for Varnish</Comment><br/>
<Comment># https://github.com/varnishcache/varnish-devicedetect/</Comment><br/>
<Comment>#</Comment><br/>
<Comment># Original author: Lasse Karstensen <lkarsten@varnish-software.com></Comment><br/>
<Normal Text></Normal Text><br/>
<Keyword>sub</Keyword><Normal Text> devicedetect </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Keyword>unset</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text>;</Normal Text><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"pc"</String><Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text> </Normal Text><Comment># Handle that a cookie may override the detection alltogether.</Comment><br/>
<Normal Text> </Normal Text><Condition Keyword>if</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.Cookie</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)X-UA-Device-force"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Comment>/* ;?? means zero or one ;, non-greedy to match the first. */</Comment><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Standard VCL Function>regsub</Standard VCL Function><Normal Text>(</Normal Text><HTTP Header>req.http.Cookie</HTTP Header><Normal Text>, </Normal Text><String>"(?i).*X-UA-Device-force=([^;]+);??.*"</String><Normal Text>, </Normal Text><String>"\1"</String><Normal Text>);</Normal Text><br/>
<Normal Text> </Normal Text><Comment>/* Clean up our mess in the cookie header */</Comment><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP Header>req.http.Cookie</HTTP Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Standard VCL Function>regsuball</Standard VCL Function><Normal Text>(</Normal Text><HTTP Header>req.http.Cookie</HTTP Header><Normal Text>, </Normal Text><String>"(^|; ) *X-UA-Device-force=[^;]+;? *"</String><Normal Text>, </Normal Text><String>"\1"</String><Normal Text>);</Normal Text><br/>
<Normal Text> </Normal Text><Comment>/* If the cookie header is now empty, or just whitespace, unset it. */</Comment><br/>
<Normal Text> </Normal Text><Condition Keyword>if</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.Cookie</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"^ *$"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>unset</Keyword><Normal Text> </Normal Text><HTTP Header>req.http.Cookie</HTTP Header><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Region Marker>}</Region Marker><Normal Text> </Normal Text><Condition Keyword>else</Condition Keyword><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>if</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"\(compatible; Googlebot-Mobile/2.1; \+http://www.google.com/bot.html\)"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(Android|iPhone)"</String><Normal Text> </Normal Text><Logical Operator>&&</Logical Operator><Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"\(compatible.?; Googlebot/2.1.?; \+http://www.google.com/bot.html"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(iPhone|Windows Phone)"</String><Normal Text> </Normal Text><Logical Operator>&&</Logical Operator><Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"\(compatible; bingbot/2.0; \+http://www.bing.com/bingbot.htm"</String><Region Marker>))</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-bot"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)(ads|google|bing|msn|yandex|baidu|ro|career|seznam|)bot"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)(baidu|jike|symantec)spider"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)pingdom"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)facebookexternalhit"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)scanner"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)slurp"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)(web)crawler"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"bot"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)ipad"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-ipad"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)ip(hone|od)"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-iphone"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Comment>/* how do we differ between an android phone and an android tablet?</Comment><br/>
<Comment> http://stackoverflow.com/questions/5341637/how-do-detect-android-tablets-in-general-useragent */</Comment><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)android.*(mobile|mini)"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-android"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Comment>// android 3/honeycomb was just about tablet-only, and any phones will probably handle a bigger page layout.</Comment><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)android 3"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-android"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Comment>/* Opera Mobile */</Comment><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"Opera Mobi"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-smartphone"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Comment>// May very well give false positives towards android tablets. Suggestions welcome.</Comment><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)android"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-android"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"PlayBook; U; RIM Tablet"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-rim"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"hp-tablet.*TouchPad"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-hp"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"Kindle/3"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-kindle"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"Touch.+Tablet PC"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"Windows NT [0-9.]+; ARM;"</String><Normal Text> </Normal Text><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"tablet-microsoft"</String><Normal Text>;</Normal Text><br/>
<Normal Text> </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"Mobile.+Firefox"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-firefoxos"</String><Normal Text>; </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"^HTC"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"Fennec"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"IEMobile"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"BlackBerry"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"BB10.*Mobile"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"GT-.*Build/GINGERBREAD"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"SymbianOS.*AppleWebKit"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-smartphone"</String><Normal Text>;</Normal Text><br/>
<Normal Text> </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Condition Keyword>elsif</Condition Keyword><Normal Text> </Normal Text><Region Marker>(</Region Marker><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)symbian"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)^sonyericsson"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)^nokia"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)^samsung"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)^lg"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)bada"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)blazer"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)cellphone"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)iemobile"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)midp-2.0"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)u990"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)netfront"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)opera mini"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)palm"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)nintendo wii"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)playstation portable"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)portalmmm"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)proxinet"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)windows\ ?ce"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)winwap"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)eudoraweb"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)htc"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)240x320"</String><Normal Text> </Normal Text><Logical Operator>||</Logical Operator><br/>
<Normal Text> </Normal Text><HTTP Header>req.http.User-Agent</HTTP Header><Normal Text> </Normal Text><Comparison Operator>~</Comparison Operator><Normal Text> </Normal Text><String>"(?i)avantgo"</String><Region Marker>)</Region Marker><Normal Text> </Normal Text><Region Marker>{</Region Marker><br/>
<Normal Text> </Normal Text><Keyword>set</Keyword><Normal Text> </Normal Text><HTTP X- Header>req.http.X-UA-Device</HTTP X- Header><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"mobile-generic"</String><Normal Text>;</Normal Text><br/>
<Normal Text> </Normal Text><Region Marker>}</Region Marker><br/>
<Normal Text> </Normal Text><Region Marker>}</Region Marker><br/>
<Region Marker>}</Region Marker><br/>
|