diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..50f4ceb --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.iml +**/.idea/ +**/target/ +**/config.properties +*.env diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..ff21b5a --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +java temurin-17.0.9+9 diff --git a/README.md b/README.md index 66103d2..ed9b959 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,16 @@ The `Ride` object is then sent back to `reverse`. Upon recieving a reply with data from `app`, `reverse` will forward this data to `forward`, which in turn will finally forward it to the `user`. +#### Control +##### Routing / Access Control +* currently, there is a 1:1 mapping between `forward` and `reverse`. + * thus any `Ride` "submitted" to `forward` will + naturally be selected, and circle back to `reverse`. +* thus `forward` and `Ride` can both be stateless. +* if any access control, name resolution, port forwarding were to happen, + it would be done in `reverse`. + +
### Overview @@ -41,3 +51,19 @@ which in turn will finally forward it to the `user`. * Build (e.g. with `build-install-all.sh`) * Put the generated `forward-0.1.war` in a servlet container (e.g. Jetty). * Launch the `reverse-0.1.jar` on your host. + + +### Migration (WIP) + +#### How would we even test this? +* one instance of `foward` +* one instance of `reverse` +* one instance of `mirror` +* `reverse` uses `mirror` as app +* we call `forward` and see `mirror` + +#### Steps TODO +* migrate `forward` to Spring ✅ +* parametrize URLs +* check if `mirror` works +* diff --git a/build-all.sh b/build-all.sh new file mode 100644 index 0000000..05bbc75 --- /dev/null +++ b/build-all.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +cd ./helper && +mvn clean install && + +cd ../mirror && +./build.sh && + +cd ../reverse && +./build.sh && + +cd ../forward && +./build.sh & + + + + + + diff --git a/build-install-all.sh b/build-install-all.sh deleted file mode 100755 index dfaebf8..0000000 --- a/build-install-all.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -cd ./forward -./install-locally.sh -cd .. -cd ./helper -./install-locally.sh -cd .. -cd ./mirror -./install-locally.sh -cd .. -cd ./reverse -./install-locally.sh -cd .. \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..1bda3b4 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,30 @@ +version: '3' +services: + + + forward: + container_name: forward + image: io42630/forward:0.1 + ports: + - "42001:8080" + - "42002:5005" + + + # See .env for vars. + reverse: + container_name: reverse + image: io42630/reverse:0.1 + ports: + - "42005:8090" + - "42006:5005" + environment: + - forward.url=${FORWARD_URL} + - app.url=${APP_URL} + + + mirror: + container_name: mirror + image: io42630/mirror:0.1 + ports: + - "42003:8080" + - "42004:5005" diff --git a/down.sh b/down.sh new file mode 100644 index 0000000..2c7f2aa --- /dev/null +++ b/down.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker compose down & \ No newline at end of file diff --git a/dup.sh b/dup.sh new file mode 100644 index 0000000..31a3530 --- /dev/null +++ b/dup.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker compose up --force-recreate & \ No newline at end of file diff --git a/embedded/README.md b/embedded/README.md deleted file mode 100644 index c53cf7a..0000000 --- a/embedded/README.md +++ /dev/null @@ -1,5 +0,0 @@ -#### About -* Uses `com.olexyn.min.http.server.MinJettyServer` to host the servlets. -* Where to adjust the parameters: - * for `forward` -> `EmbeddedR` - * for `reverse` -> `RunAll` \ No newline at end of file diff --git a/embedded/pom.xml b/embedded/pom.xml deleted file mode 100644 index 187fddf..0000000 --- a/embedded/pom.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - 4.0.0 - - com.olexyn.misp.embedded - embedded - 0.1 - - embedded - - http://www.example.com - - - UTF-8 - 1.11 - 1.11 - - - - - - junit - junit - 4.11 - test - - - com.olexyn.min.http.server - min-http-server - 0.1 - compile - - - javax.servlet - javax.servlet-api - 4.0.1 - compile - - - com.olexyn.misp.helper - misp-helper - 0.1 - compile - - - commons-io - commons-io - 2.6 - compile - - - org.eclipse.jetty - jetty-server - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-webapp - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-servlets - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-servlet - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-util - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-http - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-io - 9.4.28.v20200408 - - - org.eclipse.jetty - jetty-client - 9.4.28.v20200408 - - - org.eclipse.jetty.websocket - websocket-server - 9.4.28.v20200408 - - - org.eclipse.jetty.websocket - websocket-client - 9.4.28.v20200408 - - - org.eclipse.jetty.websocket - websocket-servlet - 9.4.28.v20200408 - - - org.eclipse.jetty.websocket - websocket-api - 9.4.28.v20200408 - - - org.eclipse.jetty.aggregate - jetty-all - 9.4.28.v20200408 - pom - test - - - com.olexyn.misp.mirror - misp-mirror - 0.1 - compile - - - com.olexyn.misp.rev - misp-rev - 0.1 - compile - - - com.olexyn.misp.reverse - reverse - 0.1 - compile - - - com.olexyn.misp.fwd - misp-fwd - 0.1 - compile - - - com.olexyn.misp.forward - forward - 0.1 - compile - - - com.olexyn.misp.mirror - mirror - 0.1 - compile - - - org.json - json - 20190722 - - - - - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - - - diff --git a/embedded/src/main/java/com/olexyn/misp/embedded/EmbeddedR.java b/embedded/src/main/java/com/olexyn/misp/embedded/EmbeddedR.java deleted file mode 100644 index f09eef8..0000000 --- a/embedded/src/main/java/com/olexyn/misp/embedded/EmbeddedR.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.olexyn.misp.embedded; - -import com.olexyn.min.http.server.MinJettyServer; -import com.olexyn.misp.forward.Forward; -import com.olexyn.misp.mirror.Mirror; - - -public class EmbeddedR implements Runnable { - - - @Override - public void run() { - MinJettyServer server = new MinJettyServer(); - - server.PORT = 8090; - server.MAX_THREADS = 100; - server.MIN_THREADS = 10; - server.IDLE_TIMEOUT = 120; - - - server.addServletWithMapping("/mirror", Mirror.class); - server.addServletWithMapping("/app", Mirror.class); - server.addServletWithMapping("/forward", Forward.class); - - - server.start(); - } -} diff --git a/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java b/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java deleted file mode 100644 index 6571286..0000000 --- a/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.olexyn.misp.embedded; - -import com.olexyn.misp.reverse.Reverse; - -public class RunAll { - - public static void main(String... args) throws InterruptedException { - - Thread embeddedT = new Thread(new EmbeddedR()); - embeddedT.start(); - - Thread.sleep(2000); - - Reverse reverse = new Reverse(); - reverse.FORWARD_URL = "http://localhost:8090/forward"; - reverse.APP_URL = "http://localhost:8090/app"; - //reverse.APP_URL = "https://olexyn.com/wp/"; - - - Thread reverseT = new Thread(reverse); - reverseT.start(); - } -} diff --git a/forward/Dockerfile b/forward/Dockerfile index 5e77c5d..9fdef20 100644 --- a/forward/Dockerfile +++ b/forward/Dockerfile @@ -1,4 +1,4 @@ FROM eclipse-temurin:17-alpine COPY /target/forward-0.1.jar /usr/local/lib/forward.jar -EXPOSE 8080 -ENTRYPOINT ["java","-jar","/usr/local/lib/forward.jar"] +EXPOSE 8080 5005 +ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-jar","/usr/local/lib/forward.jar"] diff --git a/forward/README.md b/forward/README.md deleted file mode 100644 index 1f3348e..0000000 --- a/forward/README.md +++ /dev/null @@ -1,9 +0,0 @@ -#### About -The `forward` servlet. - -#### Deploy (TODO) -* Run `install-locally.sh` -* Find the `forward-0.1.war` in `./target` -* Copy it to `tomcat/webapps`. -* Assuming tomcat runs at `http://localhost:9090` - * Then the servlet will be at `http://localhost:9090/forward-0.1/mirror` \ No newline at end of file diff --git a/forward/src/main/java/com/olexyn/misp/forward/web/Forward.java b/forward/src/main/java/com/olexyn/misp/forward/web/Forward.java index 610e1f8..e88558c 100644 --- a/forward/src/main/java/com/olexyn/misp/forward/web/Forward.java +++ b/forward/src/main/java/com/olexyn/misp/forward/web/Forward.java @@ -26,7 +26,7 @@ public class Forward { private final Map loaded = new HashMap<>(); - @GetMapping + @GetMapping("/") public void doGet(HttpServletRequest request, HttpServletResponse response) { Thread handleGetRequestThread = new Thread(() -> handleGetRequest(request, response)); @@ -102,7 +102,7 @@ public class Forward { } - @PostMapping + @PostMapping("/") public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String payload = IOUtils.toString(request.getReader()); diff --git a/forward/src/test/resources/get-smoke.http b/forward/src/test/resources/get-smoke.http new file mode 100644 index 0000000..6530c90 --- /dev/null +++ b/forward/src/test/resources/get-smoke.http @@ -0,0 +1,6 @@ +POST http://localhost:42001 +Content-Type: application/json + +{ + "hello": "world" +} diff --git a/legacy/copy-restart.sh b/legacy/copy-restart.sh deleted file mode 100755 index 618fa08..0000000 --- a/legacy/copy-restart.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -tomcat_webapps="${HOME}/app/tomcat/webapps" -jetty_webapps="${HOME}/app/jetty9.4/webapps" -webapps=$jetty_webapps -cwd=$(pwd) - -/home/user/app/tomcat/bin/shutdown.sh - -echo "================" -echo "END TOMCAT STOP " -echo "================" - -cp -v "${cwd}/misp-mirror/target/misp-mirror-0.1.war" "${webapps}" -cp -v "${cwd}/misp-rev/target/misp-rev-0.1.war" "${webapps}" -cp -v "${cwd}/test-proxy/target/test-proxy-0.1.war" "${webapps}" - -echo "================" -echo "END COPY" -echo "================" - -# /home/user/app/tomcat/bin/startup.sh - -echo "================" -echo "END TOMCAT START " -echo "================" \ No newline at end of file diff --git a/legacy/threads-in-mock.png b/legacy/threads-in-mock.png deleted file mode 100644 index af9ac6e..0000000 Binary files a/legacy/threads-in-mock.png and /dev/null differ diff --git a/legacy/threads-in-mock.uxf b/legacy/threads-in-mock.uxf deleted file mode 100644 index f7e52d5..0000000 --- a/legacy/threads-in-mock.uxf +++ /dev/null @@ -1,340 +0,0 @@ - - - 10 - - UMLClass - - 910 - 50 - 90 - 30 - - inet -lt=- - - - - UMLClass - - 680 - 50 - 100 - 30 - - webhost -lt=- -layer=-1 - - - - UMLClass - - 910 - 90 - 90 - 30 - - user -bg=#90CAF9 - - - - UMLClass - - 680 - 90 - 100 - 30 - - mispbridge -bg=#B39DDB -layer=-1 - - - - Relation - - 410 - 140 - 300 - 50 - - lt=<<<- -POST (Ride) -Generated by Loop - 280.0;20.0;10.0;20.0 - - - Relation - - 760 - 180 - 200 - 40 - - lt=<<<- -GET (Request) -fg=#1E88E5 - 10.0;20.0;180.0;20.0 - - - UMLClass - - 350 - 90 - 100 - 30 - - mispclient -bg=#B39DDB -layer=-1 - - - - Relation - - 410 - 290 - 300 - 50 - - lt=<<<- -GET (Ride)(Request) -(Data) - 280.0;20.0;10.0;20.0 - - - Relation - - 760 - 310 - 190 - 40 - - lt=<<<. -OK (Data) -fg=#1E88E5 - 170.0;20.0;10.0;20.0 - - - Relation - - 410 - 350 - 300 - 40 - - lt=<<<. -OK (Ride) - 10.0;20.0;280.0;20.0 - - - UMLClass - - 150 - 90 - 80 - 30 - - app -bg=#90CAF9 - - - - Relation - - 200 - 220 - 200 - 40 - - lt=<<<- -GET (Request) -fg=#1E88E5 - 10.0;20.0;180.0;20.0 - - - Relation - - 200 - 270 - 200 - 40 - - lt=<<<. -OK (Data) -fg=#1E88E5 - 180.0;20.0;10.0;20.0 - - - Relation - - 410 - 200 - 300 - 40 - - lt=<<<. -OK (Ride)(Request) - 10.0;20.0;280.0;20.0 - - - UMLClass - - 150 - 50 - 300 - 30 - - localhost -lt=- - - - - UMLClass - - 120 - 20 - 910 - 400 - - -lt=.. -layer=-10 - - - - Relation - - 940 - 110 - 30 - 310 - - lt=- -fg=#1E88E5 - 10.0;10.0;10.0;290.0 - - - Relation - - 180 - 110 - 30 - 310 - - lt=- -fg=#1E88E5 - 10.0;10.0;10.0;290.0 - - - UMLClass - - 930 - 200 - 40 - 130 - - -bg=#F6F6F6 -transparency=0 -layer=4 - - - - UMLClass - - 170 - 240 - 40 - 50 - - -bg=#F6F6F6 -transparency=0 -layer=4 - - - - Relation - - 720 - 110 - 30 - 310 - - lt=- -fg=#5E35B1 -layer=-4 - 10.0;10.0;10.0;290.0 - - - Relation - - 390 - 110 - 30 - 310 - - lt=- -fg=#5E35B1 -layer=-4 - 10.0;10.0;10.0;290.0 - - - UMLClass - - 380 - 160 - 40 - 210 - - -bg=#F6F6F6 -transparency=0 -layer=4 - - - - UMLClass - - 690 - 160 - 40 - 60 - - -bg=#F6F6F6 -transparency=0 -layer=4 - - - - UMLClass - - 690 - 310 - 40 - 60 - - -bg=#F6F6F6 -transparency=0 -layer=4 - - - - UMLClass - - 730 - 200 - 40 - 130 - - -bg=#F6F6F6 -transparency=0 -layer=4 - - - diff --git a/mirror/Dockerfile b/mirror/Dockerfile index d56189a..fe77416 100644 --- a/mirror/Dockerfile +++ b/mirror/Dockerfile @@ -1,4 +1,4 @@ FROM eclipse-temurin:17-alpine COPY /target/mirror-0.1.jar /usr/local/lib/mirror-0.1.jar -EXPOSE 8080 -ENTRYPOINT ["java","-jar","/usr/local/lib/mirror-0.1.jar"] +EXPOSE 8080 5005 +ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-jar","/usr/local/lib/mirror-0.1.jar"] diff --git a/reverse/Dockerfile b/reverse/Dockerfile index 5fa23f4..6c33e7e 100755 --- a/reverse/Dockerfile +++ b/reverse/Dockerfile @@ -1,4 +1,4 @@ FROM eclipse-temurin:17-alpine COPY /target/reverse-0.1-jar-with-dependencies.jar /usr/local/lib/reverse-0.1-jar-with-dependencies.jar -EXPOSE 8090 -ENTRYPOINT ["java","-jar","/usr/local/lib/reverse-0.1-jar-with-dependencies.jar"] +EXPOSE 8090 5005 +ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-jar","/usr/local/lib/reverse-0.1-jar-with-dependencies.jar"] diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java b/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java index 11d19b6..2c1f9b5 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java @@ -6,8 +6,8 @@ import com.olexyn.misp.reverse.runnable.JourneyGeneratorR; public class Reverse implements Runnable { - public String FORWARD_URL = "http://localhost:8090/forward"; - public String APP_URL = "http://localhost:8090/app"; + public static final String FORWARD_URL = System.getenv("forward.url"); + public static final String APP_URL = System.getenv("app.url"); public void start() { diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java b/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java index 62faa08..5042f78 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java @@ -5,6 +5,7 @@ import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; +import java.net.URI; import java.net.URL; @@ -13,7 +14,7 @@ public class Tools { public static String send(String method, String urlString, String body) throws IOException { - URL url = new URL(urlString); + URL url = URI.create(urlString).toURL(); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(method); diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/runnable/CheckSuppyR.java b/reverse/src/main/java/com/olexyn/misp/reverse/runnable/CheckSuppyR.java index 3451feb..d9658b4 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/runnable/CheckSuppyR.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/runnable/CheckSuppyR.java @@ -5,6 +5,8 @@ import com.olexyn.misp.reverse.Tools; import lombok.Getter; import org.json.JSONObject; +import static com.olexyn.misp.reverse.Reverse.FORWARD_URL; + public class CheckSuppyR implements Runnable { @Getter @@ -25,7 +27,7 @@ public class CheckSuppyR implements Runnable { JSONObject obj = new JSONObject().put("available", 0); try { - String result = Tools.send("POST", reverse.FORWARD_URL, obj.toString()); + String result = Tools.send("POST", FORWARD_URL, obj.toString()); JSONObject resultObj = new JSONObject(result);