From c4aeaf864a06293462642ce1b0ea31147ec1a120 Mon Sep 17 00:00:00 2001 From: Ricardo Leone Date: Fri, 30 Dec 2022 08:36:24 +0200 Subject: [PATCH 1/3] add config --- pom.xml | 9 +++++++-- .../com/github/greengerong/PrerenderSeoService.java | 11 +++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 01017d3..e90d7d8 100644 --- a/pom.xml +++ b/pom.xml @@ -1,9 +1,9 @@ 4.0.0 - com.github.greengerong + com.github.greengerong.wesbank prerender-java - 1.6.5-SNAPSHOT + 1.6.5 jar prerender-java @@ -75,6 +75,11 @@ ${servlet-api.version} provided + + za.wesbank + wol-properties + 1.0.9 + org.apache.httpcomponents httpclient diff --git a/src/main/java/com/github/greengerong/PrerenderSeoService.java b/src/main/java/com/github/greengerong/PrerenderSeoService.java index 043a4a9..a98c52d 100644 --- a/src/main/java/com/github/greengerong/PrerenderSeoService.java +++ b/src/main/java/com/github/greengerong/PrerenderSeoService.java @@ -28,9 +28,11 @@ import java.util.regex.Pattern; import static com.google.common.collect.FluentIterable.from; +import java.util.concurrent.ExecutionException; import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.apache.http.HttpHeaders.CONTENT_LENGTH; import static org.apache.http.HttpHeaders.HOST; +import za.wesbank.wbo.service.properties.PropertiesLoader; public class PrerenderSeoService { private final static Logger log = LoggerFactory.getLogger(PrerenderSeoService.class); @@ -80,7 +82,7 @@ public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServle } private boolean handlePrerender(HttpServletRequest servletRequest, HttpServletResponse servletResponse) - throws URISyntaxException, IOException { + throws URISyntaxException, IOException, ExecutionException { if (shouldShowPrerenderedPage(servletRequest)) { this.preRenderEventHandler = prerenderConfig.getEventHandler(); if (beforeRender(servletRequest, servletResponse) || proxyPrerenderedPageResponse(servletRequest, servletResponse)) { @@ -197,8 +199,9 @@ private String getRequestURL(HttpServletRequest request) { return request.getRequestURL().toString(); } - private String getApiUrl(String url) { - String prerenderServiceUrl = prerenderConfig.getPrerenderServiceUrl(); + private String getApiUrl(String url) throws ExecutionException { + //String prerenderServiceUrl = prerenderConfig.getPrerenderServiceUrl(); + String prerenderServiceUrl = PropertiesLoader.CONFIG_PARAMS_MAP.get("PRERENDERURL"); if (!prerenderServiceUrl.endsWith("/")) { prerenderServiceUrl += "/"; } @@ -334,7 +337,7 @@ private boolean beforeRender(HttpServletRequest request, HttpServletResponse res } private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpServletResponse response) - throws IOException, URISyntaxException { + throws IOException, URISyntaxException, ExecutionException { final String apiUrl = getApiUrl(getFullUrl(request)); log.trace(String.format("Prerender proxy will send request to:%s", apiUrl)); final HttpGet getMethod = getHttpGet(apiUrl); From c4119c2aeff603748420818756a973d28e50d948 Mon Sep 17 00:00:00 2001 From: Ricardo Leone Date: Mon, 9 Jan 2023 07:51:16 +0200 Subject: [PATCH 2/3] changed to https --- nbactions.xml | 14 +++++++ .../greengerong/PrerenderSeoService.java | 39 ++++++++++++------- 2 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 nbactions.xml diff --git a/nbactions.xml b/nbactions.xml new file mode 100644 index 0000000..8190b10 --- /dev/null +++ b/nbactions.xml @@ -0,0 +1,14 @@ + + + + CUSTOM-install skip tests + install skip tests + + clean + install + + + true + + + diff --git a/src/main/java/com/github/greengerong/PrerenderSeoService.java b/src/main/java/com/github/greengerong/PrerenderSeoService.java index a98c52d..d9a8f20 100644 --- a/src/main/java/com/github/greengerong/PrerenderSeoService.java +++ b/src/main/java/com/github/greengerong/PrerenderSeoService.java @@ -71,6 +71,7 @@ public void destroy() { } public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServletResponse servletResponse) { + log.debug("PrerendderSEO: In prerender if eligible"); try { if (handlePrerender(servletRequest, servletResponse)) { return true; @@ -82,13 +83,15 @@ public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServle } private boolean handlePrerender(HttpServletRequest servletRequest, HttpServletResponse servletResponse) - throws URISyntaxException, IOException, ExecutionException { + throws URISyntaxException, IOException, ExecutionException, Exception { if (shouldShowPrerenderedPage(servletRequest)) { + log.debug("PrerendderSEO: In should show prerendered page = true"); this.preRenderEventHandler = prerenderConfig.getEventHandler(); if (beforeRender(servletRequest, servletResponse) || proxyPrerenderedPageResponse(servletRequest, servletResponse)) { return true; } } + log.debug("PrerendderSEO: In prerender if eligible = false"); return false; } @@ -97,15 +100,15 @@ private boolean shouldShowPrerenderedPage(HttpServletRequest request) throws URI final String url = getRequestURL(request); final String referer = request.getHeader("Referer"); - log.trace(String.format("checking request for %s from User-Agent %s and referer %s", url, userAgent, referer)); + log.debug(String.format("checking request for %s from User-Agent %s and referer %s", url, userAgent, referer)); if (!HttpGet.METHOD_NAME.equals(request.getMethod())) { - log.trace("Request is not HTTP GET; intercept: no"); + log.debug("Request is not HTTP GET; intercept: no"); return false; } if (isInResources(url)) { - log.trace("request is for a (static) resource; intercept: no"); + log.debug("request is for a (static) resource; intercept: no"); return false; } @@ -116,32 +119,33 @@ private boolean shouldShowPrerenderedPage(HttpServletRequest request) throws URI final List whiteList = prerenderConfig.getWhitelist(); if (whiteList != null && !isInWhiteList(url, whiteList)) { - log.trace("Whitelist is enabled, but this request is not listed; intercept: no"); + log.debug("Whitelist is enabled, but this request is not listed; intercept: no"); return false; } final List blacklist = prerenderConfig.getBlacklist(); if (blacklist != null && isInBlackList(url, referer, blacklist)) { - log.trace("Blacklist is enabled, and this request is listed; intercept: no"); + log.debug("Blacklist is enabled, and this request is listed; intercept: no"); return false; } if (hasEscapedFragment(request)) { - log.trace("Request Has _escaped_fragment_; intercept: yes"); + log.debug("Request Has _escaped_fragment_; intercept: yes"); return true; } if (StringUtils.isBlank(userAgent)) { - log.trace("Request has blank userAgent; intercept: no"); + log.debug("Request has blank userAgent; intercept: no"); return false; } if (!isInSearchUserAgent(userAgent)) { - log.trace("Request User-Agent is not a search bot; intercept: no"); + log.debug("Request User-Agent is not a search bot; intercept: no"); return false; } - log.trace(String.format("Defaulting to request intercept(user-agent=%s): yes", userAgent)); + log.debug(String.format("Defaulting to request intercept(user-agent=%s): yes", userAgent)); + log.debug("returning true for prerender for request: " + url); return true; } @@ -205,7 +209,7 @@ private String getApiUrl(String url) throws ExecutionException { if (!prerenderServiceUrl.endsWith("/")) { prerenderServiceUrl += "/"; } - return prerenderServiceUrl + url; + return prerenderServiceUrl + url.replaceFirst("http", "https"); } /** @@ -323,7 +327,9 @@ public boolean apply(String regex) { } private boolean beforeRender(HttpServletRequest request, HttpServletResponse response) throws IOException { + log.debug("PrerendderSEO: In before render"); if (preRenderEventHandler != null) { + log.debug("PrerendderSEO: In before render prerendereventhandler is not null"); final String html = preRenderEventHandler.beforeRender(request); if (isNotBlank(html)) { final PrintWriter writer = response.getWriter(); @@ -333,12 +339,14 @@ private boolean beforeRender(HttpServletRequest request, HttpServletResponse res return true; } } + log.debug("PrerendderSEO: In before render prerendereventhandler is null"); return false; } private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpServletResponse response) - throws IOException, URISyntaxException, ExecutionException { + throws IOException, URISyntaxException, ExecutionException, Exception { final String apiUrl = getApiUrl(getFullUrl(request)); + log.debug("Full API URL : " + apiUrl); log.trace(String.format("Prerender proxy will send request to:%s", apiUrl)); final HttpGet getMethod = getHttpGet(apiUrl); copyRequestHeaders(request, getMethod); @@ -353,7 +361,12 @@ private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpSer html = afterRender(request, response, prerenderServerResponse, html); responseEntity(html, response); return true; - } finally { + } + catch(Exception e) { + log.debug("Prerender : Error occured during prefetch " ,e); + throw e; + } + finally { closeQuietly(prerenderServerResponse); } } From 807f30d1252fa492b3dc604975b4d2e522f20730 Mon Sep 17 00:00:00 2001 From: Ricardo Leone Date: Tue, 10 Jan 2023 07:17:22 +0200 Subject: [PATCH 3/3] removed port --- src/main/java/com/github/greengerong/PrerenderSeoService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/greengerong/PrerenderSeoService.java b/src/main/java/com/github/greengerong/PrerenderSeoService.java index d9a8f20..3cdeea7 100644 --- a/src/main/java/com/github/greengerong/PrerenderSeoService.java +++ b/src/main/java/com/github/greengerong/PrerenderSeoService.java @@ -209,8 +209,10 @@ private String getApiUrl(String url) throws ExecutionException { if (!prerenderServiceUrl.endsWith("/")) { prerenderServiceUrl += "/"; } - return prerenderServiceUrl + url.replaceFirst("http", "https"); + return prerenderServiceUrl + url.replaceFirst("http", "https").replaceFirst(":80", ""); } + + /** * Copy proxied response headers back to the servlet client.