From 4dc0af59c8945636d4dcbcef262f38c490a14753 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Tue, 30 Jun 2020 03:08:26 -0400 Subject: [PATCH] add AppMatcher.requestCheck --- .../src/main/java/bubble/dao/app/AppMatcherDAO.java | 5 +++-- bubble-server/src/main/java/bubble/model/app/AppMatcher.java | 5 +++++ .../java/bubble/resources/stream/FilterHttpResource.java | 2 +- .../java/bubble/resources/stream/ReverseProxyResource.java | 2 +- bubble-server/src/main/resources/logback.xml | 1 + .../models/apps/passthru/bubbleApp_passthru_matchers.json | 1 + 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/bubble-server/src/main/java/bubble/dao/app/AppMatcherDAO.java b/bubble-server/src/main/java/bubble/dao/app/AppMatcherDAO.java index 0391d823..9508846a 100644 --- a/bubble-server/src/main/java/bubble/dao/app/AppMatcherDAO.java +++ b/bubble-server/src/main/java/bubble/dao/app/AppMatcherDAO.java @@ -34,12 +34,12 @@ public class AppMatcherDAO extends AppTemplateEntityDAO { @Override public Order getDefaultSortOrder() { return PRIORITY_ASC; } - public List findByAccountAndFqdnAndEnabled(String account, String fqdn) { + public List findByAccountAndFqdnAndEnabledAndRequestCheck(String account, String fqdn) { return list(criteria().add( and( eq("account", account), eq("enabled", true), - eq("connCheck", false), + eq("requestCheck", true), or( eq("fqdn", fqdn), eq("fqdn", WILDCARD_FQDN) @@ -57,6 +57,7 @@ public class AppMatcherDAO extends AppTemplateEntityDAO { @Override public Object preCreate(AppMatcher matcher) { if (matcher.getConnCheck() == null) matcher.setConnCheck(false); + if (matcher.getRequestCheck() == null) matcher.setRequestCheck(true); return super.preCreate(matcher); } diff --git a/bubble-server/src/main/java/bubble/model/app/AppMatcher.java b/bubble-server/src/main/java/bubble/model/app/AppMatcher.java index e4e01dcf..c6e6704b 100644 --- a/bubble-server/src/main/java/bubble/model/app/AppMatcher.java +++ b/bubble-server/src/main/java/bubble/model/app/AppMatcher.java @@ -134,6 +134,11 @@ public class AppMatcher extends IdentifiableBase implements AppTemplateEntity, H @Getter @Setter private Boolean connCheck; public boolean connCheck () { return bool(connCheck); } + @ECSearchable @ECField(index=130, required=EntityFieldRequired.optional) + @ECIndex @Column(nullable=false) + @Getter @Setter private Boolean requestCheck; + public boolean requestCheck () { return bool(requestCheck); } + @ECSearchable @ECField(index=130) @Column(nullable=false) @Getter @Setter private Integer priority = 0; diff --git a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java index 9e59dbc7..293238a2 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java +++ b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java @@ -282,7 +282,7 @@ public class FilterHttpResource { private List getEnabledMatchers(String requestId, String accountUuid, String fqdn) { final String prefix = "getEnabledMatchers("+requestId+"): "; - List matchers = matcherDAO.findByAccountAndFqdnAndEnabled(accountUuid, fqdn); + List matchers = matcherDAO.findByAccountAndFqdnAndEnabledAndRequestCheck(accountUuid, fqdn); if (log.isTraceEnabled()) log.trace(prefix+"checking all enabled matchers for fqdn: "+json(matchers, COMPACT_MAPPER)); matchers = matchers.stream() .filter(m -> appDAO.findByAccountAndId(accountUuid, m.getApp()).enabled()).collect(Collectors.toList()); diff --git a/bubble-server/src/main/java/bubble/resources/stream/ReverseProxyResource.java b/bubble-server/src/main/java/bubble/resources/stream/ReverseProxyResource.java index 15f18a66..f1c742e4 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/ReverseProxyResource.java +++ b/bubble-server/src/main/java/bubble/resources/stream/ReverseProxyResource.java @@ -64,7 +64,7 @@ public class ReverseProxyResource { if (device == null) return ruleEngine.passthru(request); final URIBean ub = getUriBean(request); - final List matchers = matcherDAO.findByAccountAndFqdnAndEnabled(account.getUuid(), ub.getHost()); + final List matchers = matcherDAO.findByAccountAndFqdnAndEnabledAndRequestCheck(account.getUuid(), ub.getHost()); if (empty(matchers)) { // no matchers, pass-thru return ruleEngine.passthru(ub, request); diff --git a/bubble-server/src/main/resources/logback.xml b/bubble-server/src/main/resources/logback.xml index 3714e9cb..4ebaeb60 100644 --- a/bubble-server/src/main/resources/logback.xml +++ b/bubble-server/src/main/resources/logback.xml @@ -61,6 +61,7 @@ + diff --git a/bubble-server/src/main/resources/models/apps/passthru/bubbleApp_passthru_matchers.json b/bubble-server/src/main/resources/models/apps/passthru/bubbleApp_passthru_matchers.json index f730e872..a8dd1a72 100644 --- a/bubble-server/src/main/resources/models/apps/passthru/bubbleApp_passthru_matchers.json +++ b/bubble-server/src/main/resources/models/apps/passthru/bubbleApp_passthru_matchers.json @@ -5,6 +5,7 @@ "name": "TlsPassthruMatcher", "template": true, "connCheck": true, + "requestCheck": false, "site": "All_Sites", "fqdn": "*", "urlRegex": ".*",