From 290589cfc63619fe80da8b2f2e675ca7dca1bf83 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Fri, 14 Aug 2020 16:35:43 -0400 Subject: [PATCH] do not show block icon for non-browsers. move isHtml into FilterHttpRequest --- .../bubble/resources/stream/FilterHttpRequest.java | 10 ++++++++++ .../java/bubble/rule/bblock/BubbleBlockRuleDriver.java | 8 ++++---- .../rule/social/block/JsUserBlockerRuleDriver.java | 3 +-- .../rule/social/block/UserBlockerRuleDriver.java | 3 +-- utils/cobbzilla-utils | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpRequest.java b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpRequest.java index 1f8476de..13aee225 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpRequest.java +++ b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpRequest.java @@ -14,6 +14,8 @@ import lombok.Setter; import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import org.cobbzilla.util.http.HttpContentEncodingType; +import org.cobbzilla.util.http.HttpContentTypes; +import org.cobbzilla.util.http.HttpUtil; import java.util.List; import java.util.regex.Matcher; @@ -33,6 +35,8 @@ public class FilterHttpRequest { @Getter @Setter private Account account; @Getter @Setter private String contentType; + @JsonIgnore public boolean isHtml () { return HttpContentTypes.isHtml(getContentType()); } + @Getter @Setter private Long contentLength; public boolean hasContentLength () { return contentLength != null; } @@ -70,6 +74,12 @@ public class FilterHttpRequest { return !hasMatchers() || !matchersResponse.hasRequest() ? null : matchersResponse.getRequest().getUrl(); } + @JsonIgnore public String getUserAgent() { + return !hasMatchers() || !matchersResponse.hasRequest() ? null : matchersResponse.getRequest().getUserAgent(); + } + + @JsonIgnore public boolean isBrowser () { return HttpUtil.isBrowser(getUserAgent()); } + public boolean hasApp(String appId) { if (!hasMatchers()) return false; for (AppMatcher m : getMatchers()) if (m.getApp().equals(appId)) return true; diff --git a/bubble-server/src/main/java/bubble/rule/bblock/BubbleBlockRuleDriver.java b/bubble-server/src/main/java/bubble/rule/bblock/BubbleBlockRuleDriver.java index 1ef61909..5f5a590a 100644 --- a/bubble-server/src/main/java/bubble/rule/bblock/BubbleBlockRuleDriver.java +++ b/bubble-server/src/main/java/bubble/rule/bblock/BubbleBlockRuleDriver.java @@ -35,8 +35,8 @@ import java.util.concurrent.atomic.AtomicReference; import static bubble.service.stream.HttpStreamDebug.getLogFqdn; import static java.util.concurrent.TimeUnit.DAYS; -import static org.cobbzilla.util.daemon.ZillaRuntime.*; -import static org.cobbzilla.util.http.HttpContentTypes.isHtml; +import static org.cobbzilla.util.daemon.ZillaRuntime.empty; +import static org.cobbzilla.util.daemon.ZillaRuntime.shortError; import static org.cobbzilla.util.io.StreamUtil.stream2string; import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER; import static org.cobbzilla.util.json.JsonUtil.json; @@ -65,7 +65,7 @@ public class BubbleBlockRuleDriver extends TrafficAnalyticsRuleDriver implements @Override public boolean couldModify(FilterHttpRequest request) { final BubbleBlockConfig config = getRuleConfig(); - return (config.inPageBlocks() || showStats()) && isHtml(request.getContentType()); + return request.isHtml() && request.isBrowser() && (config.inPageBlocks() || showStats()); } @Override public void init(JsonNode config, @@ -332,7 +332,7 @@ public class BubbleBlockRuleDriver extends TrafficAnalyticsRuleDriver implements return EMPTY_STREAM; } - if (!isHtml(contentType)) { + if (!filterRequest.isHtml()) { log.warn(prefix+"cannot request non-html response ("+request.getUrl()+"), returning as-is: "+contentType); if (log.isInfoEnabled()) log.info(prefix+"SEND: unfiltered response (non-html content-type) for "+request.getUrl()); return in; diff --git a/bubble-server/src/main/java/bubble/rule/social/block/JsUserBlockerRuleDriver.java b/bubble-server/src/main/java/bubble/rule/social/block/JsUserBlockerRuleDriver.java index 387c8897..78167247 100644 --- a/bubble-server/src/main/java/bubble/rule/social/block/JsUserBlockerRuleDriver.java +++ b/bubble-server/src/main/java/bubble/rule/social/block/JsUserBlockerRuleDriver.java @@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j; import java.io.InputStream; -import static org.cobbzilla.util.http.HttpContentTypes.isHtml; import static org.cobbzilla.util.io.StreamUtil.stream2string; import static org.cobbzilla.util.string.StringUtil.getPackagePath; @@ -34,7 +33,7 @@ public class JsUserBlockerRuleDriver extends AbstractAppRuleDriver implements Re @Getter(lazy=true) private final String defaultSiteJsTemplate = stream2string(getRequestModifierConfig().getSiteJsTemplate()); @Override public InputStream doFilterResponse(FilterHttpRequest filterRequest, InputStream in) { - if (!isHtml(filterRequest.getContentType())) return in; + if (!filterRequest.isHtml()) return in; log.warn("doFilterResponse("+filterRequest.getId()+"): inserting JS"); return filterInsertJs(in, filterRequest, null, BUBBLE_JS_TEMPLATE, getDefaultSiteJsTemplate(), CTX_APPLY_BLOCKS_JS, true); } diff --git a/bubble-server/src/main/java/bubble/rule/social/block/UserBlockerRuleDriver.java b/bubble-server/src/main/java/bubble/rule/social/block/UserBlockerRuleDriver.java index 9ab2fec4..dcf3890c 100644 --- a/bubble-server/src/main/java/bubble/rule/social/block/UserBlockerRuleDriver.java +++ b/bubble-server/src/main/java/bubble/rule/social/block/UserBlockerRuleDriver.java @@ -23,7 +23,6 @@ import java.util.Map; import java.util.Set; import static org.cobbzilla.util.daemon.ZillaRuntime.die; -import static org.cobbzilla.util.http.HttpContentTypes.isHtml; import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.string.StringUtil.UTF8cs; @@ -62,7 +61,7 @@ public class UserBlockerRuleDriver extends AbstractAppRuleDriver { protected UserBlockerConfig configObject() { return json(getFullConfig(), UserBlockerConfig.class); } @Override public InputStream doFilterResponse(FilterHttpRequest filterRequest, InputStream in) { - if (!isHtml(filterRequest.getContentType())) return in; + if (!filterRequest.isHtml()) return in; final String requestId = filterRequest.getId(); final UserBlockerStreamFilter filter = new UserBlockerStreamFilter(requestId, matcher, rule, configuration.getHttp().getBaseUri()); diff --git a/utils/cobbzilla-utils b/utils/cobbzilla-utils index f04e3f5f..d2360429 160000 --- a/utils/cobbzilla-utils +++ b/utils/cobbzilla-utils @@ -1 +1 @@ -Subproject commit f04e3f5f86e1706d4bb899b4c8cdd6cdc4ac92c4 +Subproject commit d2360429c18bc9744ee3881182ae859fbcdc4c46