File: devicedetect.vcl.ref

package info (click to toggle)
kf6-syntax-highlighting 6.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 47,568 kB
  • sloc: xml: 197,750; cpp: 12,850; python: 3,023; sh: 955; perl: 546; ruby: 488; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; erlang: 54; sql: 51; java: 47; objc: 37; awk: 31; asm: 30; tcl: 29; fortran: 18; cs: 10
file content (113 lines) | stat: -rw-r--r-- 28,956 bytes parent folder | download | duplicates (4)
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/>