| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 import java.io.FilterOutputStream; | 22 import java.io.FilterOutputStream; |
| 23 import java.io.IOException; | 23 import java.io.IOException; |
| 24 import java.io.InterruptedIOException; | 24 import java.io.InterruptedIOException; |
| 25 import java.io.OutputStream; | 25 import java.io.OutputStream; |
| 26 import java.net.ConnectException; | 26 import java.net.ConnectException; |
| 27 import java.net.MalformedURLException; | 27 import java.net.MalformedURLException; |
| 28 import java.net.URL; | 28 import java.net.URL; |
| 29 import java.net.UnknownHostException; | 29 import java.net.UnknownHostException; |
| 30 import java.nio.charset.Charset; | 30 import java.nio.charset.Charset; |
| 31 import java.util.List; | 31 import java.util.List; |
| 32 import java.util.concurrent.atomic.AtomicLong; |
| 32 import java.util.regex.Matcher; | 33 import java.util.regex.Matcher; |
| 33 import java.util.regex.Pattern; | 34 import java.util.regex.Pattern; |
| 34 import java.util.zip.GZIPInputStream; | 35 import java.util.zip.GZIPInputStream; |
| 35 import java.util.zip.InflaterInputStream; | 36 import java.util.zip.InflaterInputStream; |
| 36 | 37 |
| 37 import org.adblockplus.ChunkedOutputStream; | 38 import org.adblockplus.ChunkedOutputStream; |
| 38 import org.adblockplus.android.AdblockPlus; | 39 import org.adblockplus.android.AdblockPlus; |
| 39 import org.apache.commons.lang.StringUtils; | 40 import org.apache.commons.lang.StringUtils; |
| 40 import org.literateprograms.BoyerMoore; | 41 import org.literateprograms.BoyerMoore; |
| 41 | 42 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 * See the description under {@link sunlabs.brazil.server.Handler#respond | 80 * See the description under {@link sunlabs.brazil.server.Handler#respond |
| 80 * respond} for a more detailed explanation. | 81 * respond} for a more detailed explanation. |
| 81 */ | 82 */ |
| 82 | 83 |
| 83 public class RequestHandler extends BaseRequestHandler | 84 public class RequestHandler extends BaseRequestHandler |
| 84 { | 85 { |
| 85 private AdblockPlus application; | 86 private AdblockPlus application; |
| 86 private String via; | 87 private String via; |
| 87 private static final Pattern RE_HTTP = Pattern.compile("^https?:"); | 88 private static final Pattern RE_HTTP = Pattern.compile("^https?:"); |
| 88 | 89 |
| 90 private static final AtomicLong BLOCKED_REQUESTS = new AtomicLong(); |
| 91 private static final AtomicLong UNBLOCKED_REQUESTS = new AtomicLong(); |
| 92 |
| 93 public static long getBlockedRequestCount() |
| 94 { |
| 95 return BLOCKED_REQUESTS.get(); |
| 96 } |
| 97 |
| 98 public static long getUnblockedRequestCount() |
| 99 { |
| 100 return UNBLOCKED_REQUESTS.get(); |
| 101 } |
| 102 |
| 89 @Override | 103 @Override |
| 90 public boolean init(final Server server, final String prefix) | 104 public boolean init(final Server server, final String prefix) |
| 91 { | 105 { |
| 92 super.init(server, prefix); | 106 super.init(server, prefix); |
| 93 | 107 |
| 94 application = AdblockPlus.getApplication(); | 108 application = AdblockPlus.getApplication(); |
| 95 via = " " + server.hostName + ":" + server.listen.getLocalPort() + " (" + se
rver.name + ")"; | 109 via = " " + server.hostName + ":" + server.listen.getLocalPort() + " (" + se
rver.name + ")"; |
| 96 | 110 |
| 97 return true; | 111 return true; |
| 98 } | 112 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 109 catch (final Exception e) | 123 catch (final Exception e) |
| 110 { | 124 { |
| 111 Log.e(prefix, "Filter error", e); | 125 Log.e(prefix, "Filter error", e); |
| 112 } | 126 } |
| 113 | 127 |
| 114 request.log(Server.LOG_LOG, prefix, block + ": " + request.url); | 128 request.log(Server.LOG_LOG, prefix, block + ": " + request.url); |
| 115 | 129 |
| 116 int count = request.server.requestCount; | 130 int count = request.server.requestCount; |
| 117 if (shouldLogHeaders) | 131 if (shouldLogHeaders) |
| 118 { | 132 { |
| 133 // FIXME Don't log to "err" |
| 119 System.err.println(dumpHeaders(count, request, request.headers, true)); | 134 System.err.println(dumpHeaders(count, request, request.headers, true)); |
| 120 } | 135 } |
| 121 | 136 |
| 122 if (block) | 137 if (block) |
| 123 { | 138 { |
| 124 request.sendHeaders(204, null, 0); | 139 request.sendHeaders(204, null, 0); |
| 140 BLOCKED_REQUESTS.incrementAndGet(); |
| 125 return true; | 141 return true; |
| 126 } | 142 } |
| 127 | 143 |
| 144 UNBLOCKED_REQUESTS.incrementAndGet(); |
| 145 |
| 128 // Do not further process non-http requests | 146 // Do not further process non-http requests |
| 129 if (!RE_HTTP.matcher(request.url).find()) | 147 if (!RE_HTTP.matcher(request.url).find()) |
| 130 { | 148 { |
| 131 return false; | 149 return false; |
| 132 } | 150 } |
| 133 | 151 |
| 134 String url = request.url; | 152 String url = request.url; |
| 135 | 153 |
| 136 if ((request.query != null) && (request.query.length() > 0)) | 154 if ((request.query != null) && (request.query.length() > 0)) |
| 137 { | 155 { |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 request.sendError(500, msg); | 402 request.sendError(500, msg); |
| 385 Log.e(prefix, msg, e); | 403 Log.e(prefix, msg, e); |
| 386 } | 404 } |
| 387 finally | 405 finally |
| 388 { | 406 { |
| 389 target.close(); | 407 target.close(); |
| 390 } | 408 } |
| 391 return true; | 409 return true; |
| 392 } | 410 } |
| 393 } | 411 } |
| OLD | NEW |