1
22
23 package com.liferay.portal.kernel.servlet;
24
25 import javax.servlet.http.HttpServletRequest;
26
27
35 public class BrowserSniffer {
36
37 public static boolean acceptsGzip(HttpServletRequest req) {
38 String acceptEncoding = req.getHeader(HttpHeaders.ACCEPT_ENCODING);
39
40 if ((acceptEncoding != null) &&
41 (acceptEncoding.indexOf(_GZIP) != -1)) {
42
43 return true;
44 }
45 else {
46 return false;
47 }
48 }
49
50 public static boolean is_ie(HttpServletRequest req) {
51 if (req == null) {
52 return false;
53 }
54
55 String agent = req.getHeader(HttpHeaders.USER_AGENT);
56
57 if (agent == null) {
58 return false;
59 }
60
61 agent = agent.toLowerCase();
62
63 if (agent.indexOf("msie") != -1) {
64 return true;
65 }
66 else {
67 return false;
68 }
69 }
70
71 public static boolean is_ie_4(HttpServletRequest req) {
72 if (req == null) {
73 return false;
74 }
75
76 String agent = req.getHeader(HttpHeaders.USER_AGENT);
77
78 if (agent == null) {
79 return false;
80 }
81
82 agent = agent.toLowerCase();
83
84 if (is_ie(req) && (agent.indexOf("msie 4") != -1)) {
85 return true;
86 }
87 else {
88 return false;
89 }
90 }
91
92 public static boolean is_ie_5(HttpServletRequest req) {
93 if (req == null) {
94 return false;
95 }
96
97 String agent = req.getHeader(HttpHeaders.USER_AGENT);
98
99 if (agent == null) {
100 return false;
101 }
102
103 agent = agent.toLowerCase();
104
105 if (is_ie(req) && (agent.indexOf("msie 5.0") != -1)) {
106 return true;
107 }
108 else {
109 return false;
110 }
111 }
112
113 public static boolean is_ie_5_5(HttpServletRequest req) {
114 if (req == null) {
115 return false;
116 }
117
118 String agent = req.getHeader(HttpHeaders.USER_AGENT);
119
120 if (agent == null) {
121 return false;
122 }
123
124 agent = agent.toLowerCase();
125
126 if (is_ie(req) && (agent.indexOf("msie 5.5") != -1)) {
127 return true;
128 }
129 else {
130 return false;
131 }
132 }
133
134 public static boolean is_ie_5_5_up(HttpServletRequest req) {
135 if (is_ie(req) && !is_ie_4(req) && !is_ie_5(req)) {
136 return true;
137 }
138 else {
139 return false;
140 }
141 }
142
143 public static boolean is_ie_6(HttpServletRequest req) {
144 if (req == null) {
145 return false;
146 }
147
148 String agent = req.getHeader(HttpHeaders.USER_AGENT);
149
150 if (agent == null) {
151 return false;
152 }
153
154 agent = agent.toLowerCase();
155
156 if (is_ie(req) && (agent.indexOf("msie 6.0") != -1)) {
157 return true;
158 }
159 else {
160 return false;
161 }
162 }
163
164 public static boolean is_ie_7(HttpServletRequest req) {
165 if (req == null) {
166 return false;
167 }
168
169 String agent = req.getHeader(HttpHeaders.USER_AGENT);
170
171 if (agent == null) {
172 return false;
173 }
174
175 agent = agent.toLowerCase();
176
177 if (is_ie(req) && (agent.indexOf("msie 7.0") != -1)) {
178 return true;
179 }
180 else {
181 return false;
182 }
183 }
184
185 public static boolean is_linux(HttpServletRequest req) {
186 String agent = req.getHeader(HttpHeaders.USER_AGENT);
187
188 if (agent == null) {
189 return false;
190 }
191
192 agent = agent.toLowerCase();
193
194 if (agent.matches(".*linux.*")) {
195 return true;
196 }
197 else {
198 return false;
199 }
200 }
201
202 public static boolean is_mozilla(HttpServletRequest req) {
203 if (req == null) {
204 return false;
205 }
206
207 String agent = req.getHeader(HttpHeaders.USER_AGENT);
208
209 if (agent == null) {
210 return false;
211 }
212
213 agent = agent.toLowerCase();
214
215 if ((agent.indexOf("mozilla") != -1) &&
216 (agent.indexOf("spoofer") == -1) &&
217 (agent.indexOf("compatible") == -1) &&
218 (agent.indexOf("opera") == -1) &&
219 (agent.indexOf("webtv") == -1) &&
220 (agent.indexOf("hotjava") == -1)) {
221
222 return true;
223 }
224 else {
225 return false;
226 }
227 }
228
229 public static boolean is_mozilla_1_3_up(HttpServletRequest req) {
230 if (req == null) {
231 return false;
232 }
233
234 String agent = req.getHeader(HttpHeaders.USER_AGENT);
235
236 if (agent == null) {
237 return false;
238 }
239
240 agent = agent.toLowerCase();
241
242 if (is_mozilla(req)) {
243 int pos = agent.indexOf("gecko/");
244
245 if (pos == -1) {
246 return false;
247 }
248 else {
249 String releaseDate = agent.substring(pos + 6, agent.length());
250
251 if (releaseDate.compareTo("20030210") > 0) {
252 return true;
253 }
254 }
255 }
256
257 return false;
258 }
259
260 public static boolean is_ns_4(HttpServletRequest req) {
261 if (req == null) {
262 return false;
263 }
264
265 String agent = req.getHeader(HttpHeaders.USER_AGENT);
266
267 if (agent == null) {
268 return false;
269 }
270
271 agent = agent.toLowerCase();
272
273 if (!is_ie(req) && (agent.indexOf("mozilla/4.") != -1)) {
274 return true;
275 }
276 else {
277 return false;
278 }
279 }
280
281 public static boolean is_rtf(HttpServletRequest req) {
282 if (is_ie_5_5_up(req) || is_mozilla_1_3_up(req)) {
283 return true;
284 }
285 else {
286 return false;
287 }
288 }
289
290 public static boolean is_safari(HttpServletRequest req) {
291 if (req == null) {
292 return false;
293 }
294
295 String agent = req.getHeader(HttpHeaders.USER_AGENT);
296
297 if (agent == null) {
298 return false;
299 }
300
301 agent = agent.toLowerCase();
302
303 if (agent.indexOf("safari") != -1) {
304 return true;
305 }
306 else {
307 return false;
308 }
309 }
310
311 public static boolean is_wap_xhtml(HttpServletRequest req) {
312 if (req == null) {
313 return false;
314 }
315
316 String accept = req.getHeader(HttpHeaders.ACCEPT);
317
318 if (accept == null) {
319 return false;
320 }
321
322 accept = accept.toLowerCase();
323
324 if (accept.indexOf("wap.xhtml") != -1) {
325 return true;
326 }
327 else {
328 return false;
329 }
330 }
331
332 public static boolean is_wml(HttpServletRequest req) {
333 if (req == null) {
334 return false;
335 }
336
337 String accept = req.getHeader(HttpHeaders.ACCEPT);
338
339 if (accept == null) {
340 return false;
341 }
342
343 accept = accept.toLowerCase();
344
345 if (accept.indexOf("wap.wml") != -1) {
346 return true;
347 }
348 else {
349 return false;
350 }
351 }
352
353 private static final String _GZIP = "gzip";
354
355 }