Skip to content

Commit fd88206

Browse files
committed
Allowed listing of blacklisted items
1 parent 8b7646f commit fd88206

File tree

4 files changed

+48
-15
lines changed

4 files changed

+48
-15
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package net.lightbody.bmp.proxy;
2+
3+
import java.util.regex.Pattern;
4+
5+
public class BlacklistEntry
6+
{
7+
private Pattern pattern;
8+
private int responseCode;
9+
10+
public BlacklistEntry(String pattern, int responseCode) {
11+
this.pattern = Pattern.compile(pattern);
12+
this.responseCode = responseCode;
13+
}
14+
15+
public Pattern getPattern() {
16+
return this.pattern;
17+
}
18+
19+
public int getResponseCode() {
20+
return this.responseCode;
21+
}
22+
}

src/main/java/net/lightbody/bmp/proxy/ProxyServer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.net.SocketException;
2424
import java.net.UnknownHostException;
2525
import java.util.Date;
26+
import java.util.List;
2627
import java.util.Map;
2728
import java.util.concurrent.TimeUnit;
2829
import java.util.concurrent.atomic.AtomicInteger;
@@ -287,6 +288,10 @@ public void clearRewriteRules() {
287288
public void blacklistRequests(String pattern, int responseCode) {
288289
client.blacklistRequests(pattern, responseCode);
289290
}
291+
292+
public List<BlacklistEntry> getBlacklistedRequests() {
293+
return client.getBlacklistedRequests();
294+
}
290295

291296
public void clearBlacklist() {
292297
client.clearBlacklist();

src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ public Reply<?> setPage(@Named("port") int port, Request request) {
126126
return Reply.saying().ok();
127127
}
128128

129+
@Get
130+
@At("/:port/blacklist")
131+
public Reply<?> getBlacklist(@Named("port") int port, Request request) {
132+
ProxyServer proxy = proxyManager.get(port);
133+
if (proxy == null) {
134+
return Reply.saying().notFound();
135+
}
136+
137+
return Reply.with(proxy.getBlacklistedRequests()).as(Json.class);
138+
}
139+
129140
@Put
130141
@At("/:port/blacklist")
131142
public Reply<?> blacklist(@Named("port") int port, Request request) {

src/main/java/net/lightbody/bmp/proxy/http/BrowserMobHttpClient.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.lightbody.bmp.proxy.http;
22

33
import net.lightbody.bmp.core.har.*;
4+
import net.lightbody.bmp.proxy.BlacklistEntry;
45
import net.lightbody.bmp.proxy.util.*;
56
import net.sf.uadetector.ReadableUserAgent;
67
import net.sf.uadetector.UserAgentStringParser;
@@ -75,7 +76,7 @@ public class BrowserMobHttpClient {
7576
private TrustingSSLSocketFactory sslSocketFactory;
7677
private ThreadSafeClientConnManager httpClientConnMgr;
7778
private DefaultHttpClient httpClient;
78-
private List<BlacklistEntry> blacklistEntries = new CopyOnWriteArrayList<BrowserMobHttpClient.BlacklistEntry>();
79+
private List<BlacklistEntry> blacklistEntries = new CopyOnWriteArrayList<BlacklistEntry>();
7980
private WhitelistEntry whitelistEntry = null;
8081
private List<RewriteRule> rewriteRules = new CopyOnWriteArrayList<RewriteRule>();
8182
private List<RequestInterceptor> requestInterceptors = new CopyOnWriteArrayList<RequestInterceptor>();
@@ -491,8 +492,8 @@ private BrowserMobHttpResponse execute(BrowserMobHttpRequest req, int depth) {
491492

492493
if (blacklistEntries != null) {
493494
for (BlacklistEntry blacklistEntry : blacklistEntries) {
494-
if (blacklistEntry.pattern.matcher(url).matches()) {
495-
mockResponseCode = blacklistEntry.responseCode;
495+
if (blacklistEntry.getPattern().matcher(url).matches()) {
496+
mockResponseCode = blacklistEntry.getResponseCode();
496497
break;
497498
}
498499
}
@@ -964,12 +965,16 @@ public void blacklistRequests(String pattern, int responseCode) {
964965
blacklistEntries.add(new BlacklistEntry(pattern, responseCode));
965966
}
966967

968+
public List<BlacklistEntry> getBlacklistedRequests() {
969+
return blacklistEntries;
970+
}
971+
967972
public void clearBlacklist() {
968-
blacklistEntries.clear();
973+
blacklistEntries.clear();
969974
}
970975

971976
public synchronized void whitelistRequests(String[] patterns, int responseCode) {
972-
// synchronized to guard against concurrent modification
977+
// synchronized to guard against concurrent modification
973978
whitelistEntry = new WhitelistEntry(patterns, responseCode);
974979
}
975980

@@ -1111,16 +1116,6 @@ private WhitelistEntry(String[] patterns, int responseCode) {
11111116
}
11121117
}
11131118

1114-
private class BlacklistEntry {
1115-
private Pattern pattern;
1116-
private int responseCode;
1117-
1118-
private BlacklistEntry(String pattern, int responseCode) {
1119-
this.pattern = Pattern.compile(pattern);
1120-
this.responseCode = responseCode;
1121-
}
1122-
}
1123-
11241119
private class RewriteRule {
11251120
private Pattern match;
11261121
private String replace;

0 commit comments

Comments
 (0)