From 5bbce7a6c486f523869268495aa5d8c85ad6a77e Mon Sep 17 00:00:00 2001 From: Georg Herdt Date: Sun, 6 Dec 2020 20:05:17 +0100 Subject: [PATCH 1/4] fix typo in class name bug5221 --- .../gateway/impl/ExpeditionWindMeasureStatusGetServlet.java | 2 +- ... SailingServerHttpServletWithPostBasedContentReplacing.java} | 2 +- .../com/sap/sailing/server/gateway/impl/WindStatusServlet.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/{SailingServerHttpServletWithPostBasedConrentReplacing.java => SailingServerHttpServletWithPostBasedContentReplacing.java} (97%) diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/ExpeditionWindMeasureStatusGetServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/ExpeditionWindMeasureStatusGetServlet.java index 3d9932e1e35..fe9339679ef 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/ExpeditionWindMeasureStatusGetServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/ExpeditionWindMeasureStatusGetServlet.java @@ -24,7 +24,7 @@ import com.sap.sailing.expeditionconnector.ExpeditionMessage; import com.sap.sailing.expeditionconnector.ExpeditionTrackerFactory; import com.sap.sailing.expeditionconnector.UDPExpeditionReceiver; -public class ExpeditionWindMeasureStatusGetServlet extends SailingServerHttpServletWithPostBasedConrentReplacing implements ExpeditionListener { +public class ExpeditionWindMeasureStatusGetServlet extends SailingServerHttpServletWithPostBasedContentReplacing implements ExpeditionListener { private static final long serialVersionUID = -6791613843435009810L; private Map lastMessageInfosPerBoat; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerHttpServletWithPostBasedConrentReplacing.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerHttpServletWithPostBasedContentReplacing.java similarity index 97% rename from java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerHttpServletWithPostBasedConrentReplacing.java rename to java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerHttpServletWithPostBasedContentReplacing.java index da50396229b..f4c098caeae 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerHttpServletWithPostBasedConrentReplacing.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/SailingServerHttpServletWithPostBasedContentReplacing.java @@ -20,7 +20,7 @@ import com.sap.sse.common.HttpRequestHeaderConstants; * @author Axel Uhl (D043530) * */ -public abstract class SailingServerHttpServletWithPostBasedConrentReplacing extends SailingServerHttpServlet { +public abstract class SailingServerHttpServletWithPostBasedContentReplacing extends SailingServerHttpServlet { private static final long serialVersionUID = -2819428093387051473L; protected void writePostRefreshingHeadAndEmptyBody(HttpServletRequest req, HttpServletResponse resp, String title) throws IOException { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java index d460dc6304b..889fbba5897 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java @@ -39,7 +39,7 @@ import com.sap.sse.common.Util; * @author Simon Marcel Pamies * */ -public abstract class WindStatusServlet extends SailingServerHttpServletWithPostBasedConrentReplacing implements IgtimiWindListener, BulkFixReceiver { +public abstract class WindStatusServlet extends SailingServerHttpServletWithPostBasedContentReplacing implements IgtimiWindListener, BulkFixReceiver { private static final Logger logger = Logger.getLogger(WindStatusServlet.class.getName()); private static final long serialVersionUID = -6791613843435003810L; From 2ec27c0ddb2f55bfc2b352d94e4c60cad7df2084 Mon Sep 17 00:00:00 2001 From: Georg Herdt Date: Sun, 6 Dec 2020 20:06:05 +0100 Subject: [PATCH 2/4] reddirect with post bouncer to enforce call going to master node bug 5221 --- .../redirect.html | 30 +++++++++++++++++++ .../gateway/oauth/AuthorizationCallback.java | 17 +++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html diff --git a/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html b/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html new file mode 100644 index 00000000000..e7d8c55ee32 --- /dev/null +++ b/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html @@ -0,0 +1,30 @@ + + +Igtimi + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.domain.igtimiadapter.gateway/src/com/sap/sailing/domain/igtimiadapter/gateway/oauth/AuthorizationCallback.java b/java/com.sap.sailing.domain.igtimiadapter.gateway/src/com/sap/sailing/domain/igtimiadapter/gateway/oauth/AuthorizationCallback.java index c9ec0b8ad6f..a377ce1d9a2 100644 --- a/java/com.sap.sailing.domain.igtimiadapter.gateway/src/com/sap/sailing/domain/igtimiadapter/gateway/oauth/AuthorizationCallback.java +++ b/java/com.sap.sailing.domain.igtimiadapter.gateway/src/com/sap/sailing/domain/igtimiadapter/gateway/oauth/AuthorizationCallback.java @@ -4,10 +4,12 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URLEncoder; +import java.util.Base64; import java.util.logging.Level; import java.util.logging.Logger; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @@ -55,7 +57,10 @@ public class AuthorizationCallback { Response result; if (state != null) { // redirect to the server whose base URL is contained in the state parameter - result = Response.temporaryRedirect(new URI(state+"/igtimi/oauth/v1"+AUTHORIZATIONCALLBACK+"?code="+URLEncoder.encode(code, "UTF-8"))).build(); + String target = Base64.getEncoder().encodeToString( + (state + "/igtimi/oauth/v1" + AUTHORIZATIONCALLBACK + "?code=" + URLEncoder.encode(code, "UTF-8")) + .getBytes()); + result = Response.temporaryRedirect(new URI(state + "/igtimi/redirect.html?" + target)).build(); } else { if (code != null) { try { @@ -82,7 +87,15 @@ public class AuthorizationCallback { } return result; } - + + @POST + @Produces("text/plain;charset=UTF-8") + @Path(AUTHORIZATIONCALLBACK) + public Response obtainAccessTokenPost(@QueryParam("code") String code, @QueryParam("state") String state) + throws ClientProtocolException, IOException, IllegalStateException, ParseException, URISyntaxException { + return obtainAccessToken(code, state); + } + @GET @Produces("application/json;charset=UTF-8") @Path("uri") From 710bfd1004d32e9855a3aec69c57d2e3d6aa6c50 Mon Sep 17 00:00:00 2001 From: Georg Herdt Date: Mon, 7 Dec 2020 10:59:30 +0100 Subject: [PATCH 3/4] add to build properties bug 5221 --- .../build.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.igtimiadapter.gateway/build.properties b/java/com.sap.sailing.domain.igtimiadapter.gateway/build.properties index a4af5b4a1ef..cab8cf66a3c 100644 --- a/java/com.sap.sailing.domain.igtimiadapter.gateway/build.properties +++ b/java/com.sap.sailing.domain.igtimiadapter.gateway/build.properties @@ -3,4 +3,5 @@ source.. = src/,\ output.. = bin/ bin.includes = META-INF/,\ .,\ - WEB-INF/ + WEB-INF/,\ + redirect.html From 872655183a36467ce4e108c540dfed50826c5246 Mon Sep 17 00:00:00 2001 From: Georg Herdt Date: Mon, 7 Dec 2020 13:22:46 +0100 Subject: [PATCH 4/4] improve logging, remove unneeded repetition of request bug 5221 --- .../com.sap.sailing.domain.igtimiadapter.gateway/redirect.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html b/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html index e7d8c55ee32..2c42adca434 100644 --- a/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html +++ b/java/com.sap.sailing.domain.igtimiadapter.gateway/redirect.html @@ -5,8 +5,8 @@ function loadAndReplace() { var request = new XMLHttpRequest(); var base64 = window.location.href.substring(window.location.href.lastIndexOf("?")+1); - console.log(base64); var target = atob(base64); + console.log("decode post target " + base64 + " -> " + target); request.open("POST", target); request.setRequestHeader("X-SAPSSE-Forward-Request-To","master"); request.addEventListener("load", function(event) { @@ -21,7 +21,6 @@ function refresh() { loadAndReplace(); - window.setInterval(loadAndReplace, 10000); }