diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0b3a5b1e94e0c1cc46ccfccd26a6b6df9ea083f7..d8d2e07ce9a3a1c62f00c4e62e3cab8955029503 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,10 +5,11 @@ </component> <component name="ChangeListManager"> <list default="true" id="8522785e-cde9-49a6-ad14-9d935d110316" name="Changes" comment=""> - <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/Dockerfile" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/com/example/jaxw/HelloServlet.java" beforeDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/java/com/example/jaxw/Main.java" beforeDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/java/com/example/jaxw/TestingService.java" beforeDir="false" /> </list> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> @@ -38,6 +39,7 @@ </component> <component name="PropertiesComponent"><![CDATA[{ "keyToString": { + "ASKED_ADD_EXTERNAL_FILES": "true", "RunOnceActivity.OpenProjectViewOnStart": "true", "RunOnceActivity.ShowReadmeOnStart": "true", "SHARE_PROJECT_CONFIGURATION_FILES": "true", diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 700249060f0b89cd22382f746db9bc6c1360f607..0000000000000000000000000000000000000000 --- a/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM tomcat:jdk11-openjdk - -COPY ./target/jax-w-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ - -EXPOSE 3001 - -# Start Tomcat when the container is run -CMD ["catalina.sh", "run"] diff --git a/src/main/java/com/example/jaxw/HelloServlet.java b/src/main/java/com/example/jaxw/HelloServlet.java deleted file mode 100644 index 8a1b9deda773329c390d6c2b3df439bda7fa76ae..0000000000000000000000000000000000000000 --- a/src/main/java/com/example/jaxw/HelloServlet.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.example.jaxw; - -import java.io.*; -import jakarta.servlet.http.*; -import jakarta.servlet.annotation.*; - -@WebServlet(name = "helloServlet", value = "/hello-servlet") -public class HelloServlet extends HttpServlet { - private String message; - - public void init() { - message = "Hello World!"; - } - - public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { - response.setContentType("text/html"); - - // Hello - PrintWriter out = response.getWriter(); - out.println("<html><body>"); - out.println("<h1>" + message + "</h1>"); - out.println("</body></html>"); - } - - public void destroy() { - } -} \ No newline at end of file diff --git a/src/main/java/com/example/jaxw/Main.java b/src/main/java/com/example/jaxw/Main.java deleted file mode 100644 index deb09d137ec6c7dddc5d8f46711fe1a3f4513d4c..0000000000000000000000000000000000000000 --- a/src/main/java/com/example/jaxw/Main.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.jaxw; - -import javax.xml.ws.Endpoint; - -public class Main { - public static void main(String[] args) { - try { - Endpoint.publish("http://localhost:3001/ws/testing", new com.example.jaxw.TestingService()); - System.out.println("Server started"); - } catch (Exception e) { - System.out.println("Something's wrong"); - } - } -} diff --git a/src/main/java/com/example/jaxw/TestingService.java b/src/main/java/com/example/jaxw/TestingService.java deleted file mode 100644 index 4cf1279ad771624e6334766651109e058683a588..0000000000000000000000000000000000000000 --- a/src/main/java/com/example/jaxw/TestingService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.example.jaxw; - -import javax.jws.WebMethod; -import javax.jws.WebService; - -@WebService -public class TestingService { - @WebMethod - public String HelloWorld(String name) { - return "Hello " + name; - } -} diff --git a/src/main/java/com/gymtracker/Main.java b/src/main/java/com/gymtracker/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6e026629bb51f82c1ccb1835406626aeaeb02f2f --- /dev/null +++ b/src/main/java/com/gymtracker/Main.java @@ -0,0 +1,19 @@ +package src.main.java.com.gymtracker; + +import src.main.java.com.gymtracker.example.TestingService; +import src.main.java.com.gymtracker.controllers.GenerateAPIKeyController; + +import javax.xml.ws.Endpoint; + +public class Main { + public static void main(String[] args) { + try { + Endpoint.publish("http://localhost:3001/ws/testing", new TestingService()); + Endpoint.publish("http://localhost:3001/ws/generate-api-key", new GenerateAPIKeyController()); + System.out.println("Server started"); + } catch (Exception e) { + System.out.println("Something's wrong"); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java b/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java new file mode 100644 index 0000000000000000000000000000000000000000..dac005a67d3277d2c8a131e675eea1ec8f938e5b --- /dev/null +++ b/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java @@ -0,0 +1,20 @@ +package src.main.java.com.gymtracker.controllers; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.security.SecureRandom; +import java.util.Base64; + +@WebService +public class GenerateAPIKeyController { + @WebMethod + public String generateAPIKey() { + SecureRandom randomizer = new SecureRandom(); + byte bytes[] = new byte[32]; + randomizer.nextBytes(bytes); + Base64.Encoder encoder = Base64.getUrlEncoder().withoutPadding(); + String token = encoder.encodeToString(bytes); + + return token; + } +} diff --git a/src/main/java/com/gymtracker/example/TestingService.java b/src/main/java/com/gymtracker/example/TestingService.java new file mode 100644 index 0000000000000000000000000000000000000000..b7f483db714c32156647c4e1e7c738eb0679d001 --- /dev/null +++ b/src/main/java/com/gymtracker/example/TestingService.java @@ -0,0 +1,23 @@ +package src.main.java.com.gymtracker.example; + +import src.main.java.com.gymtracker.middleware.APIKeyValidator; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.xml.ws.WebServiceContext; +import javax.annotation.Resource; + +@WebService +public class TestingService extends APIKeyValidator { + @Resource + WebServiceContext wsContext; + @WebMethod + public String HelloWorld(String name) { + if(verifyAPIKey(wsContext)) { + return "Hello " + name; + } + else { + return "Your key is wrong!"; + } + } +} diff --git a/src/main/java/com/gymtracker/middleware/APIKeyValidator.java b/src/main/java/com/gymtracker/middleware/APIKeyValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..284239c3ee016eb3126be32247948645646ef430 --- /dev/null +++ b/src/main/java/com/gymtracker/middleware/APIKeyValidator.java @@ -0,0 +1,36 @@ +package src.main.java.com.gymtracker.middleware; + +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import com.sun.xml.internal.ws.api.message.HeaderList; + +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; + +public class APIKeyValidator { + private String phpKey = "zc6c6K695UgTdBdCeZFvk4FL6KaQAMlx8MgS_-0BwJs"; + private String restKey = "XGv3FUYsAmNhzwa7sDkOzHsr_cTk7IGtbeMsU3PzhcU"; + + public boolean verifyAPIKey(WebServiceContext wsContext) { + try { + MessageContext msgContext = wsContext.getMessageContext(); + + HttpExchange exchange = (HttpExchange) msgContext.get("com.sun.xml.internal.ws.http.exchange"); + Headers reqHeaders = exchange.getRequestHeaders(); + + String key = reqHeaders.getFirst("Authorization"); + System.out.println("\napi_key: " + key); + + if (key.equals(phpKey) || key.equals(restKey)) { + System.out.println("API key is verified"); + return true; + } else { + System.out.println("API key is not verified."); + } + } catch (Exception e) { + e.printStackTrace(); + System.out.println(e); + } + return false; + } +}