diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e6549f8ec0910d70176eaf41aa4713ea1065de48 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM maven:3.8.6-amazoncorretto-8 AS build +WORKDIR /app + +COPY pom.xml . +RUN mvn dependency:go-offline + +COPY src ./src + +RUN mvn clean package + +FROM openjdk:8-jre-slim +WORKDIR /app + +COPY --from=build /app/target/gymtracker-1.0-SNAPSHOT-jar-with-dependencies.jar ./app.jar + +EXPOSE 3001 + +CMD ["java", "-jar", "app.jar", "--server.port=3001"] \ No newline at end of file diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3d8cb5d5d09f1a4b88627b1d97bc83b69b21a53 --- /dev/null +++ b/dependency-reduced-pom.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>com.gymtracker</groupId> + <artifactId>gymtracker</artifactId> + <version>1.0-SNAPSHOT</version> + <build> + <plugins> + <plugin> + <artifactId>maven-shade-plugin</artifactId> + <version>3.2.4</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <transformers> + <transformer> + <mainClass>com.gymtracker.Main</mainClass> + </transformer> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>8</maven.compiler.source> + <maven.compiler.target>8</maven.compiler.target> + </properties> +</project> diff --git a/docker-compose.yml b/docker-compose.yml index cbdfd74d77e69fdb42e30c7d150425239b06d6f9..38cc65c9bd7017c93e93b1e9107674e618594fd2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,11 +17,11 @@ services: environment: - PMA_HOST=db-java - PMA_PORT=3307 - servlet-java: + java-app: build: context: . dockerfile: Dockerfile ports: - - "3001:8080" + - "3001:3001" depends_on: - - db-java + - db-java \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4099076d15b2671b215223508ac41579d0c0eae4..4355c4ca761d81aca27d885fc271887b091415c1 100644 --- a/pom.xml +++ b/pom.xml @@ -1,62 +1,72 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion><java.version>1.8</java.version> - <groupId>com.example</groupId> - <artifactId>jax-w</artifactId> - <version>1.0-SNAPSHOT</version> - <name>jax-w</name> - <packaging>war</packaging> - - <java.version>1.8</java.version> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.target>11</maven.compiler.target> - <maven.compiler.source>11</maven.compiler.source> - <junit.version>5.9.2</junit.version> - </properties> - - <dependencies> -<dependency> - <groupId>jakarta.platform</groupId> - <artifactId>jakarta.jakartaee-api</artifactId> - <version>9.1.0</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.hibernate.orm</groupId> - <artifactId>hibernate-core</artifactId> - <version>6.0.2.Final</version> - </dependency> - <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-runtime</artifactId> - <version>3.0.2</version> - </dependency> -<dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-api</artifactId> - <version>${junit.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-engine</artifactId> - <version>${junit.version}</version> - <scope>test</scope> - </dependency> </dependencies> - - <build> - <sourceDirectory>src/main/java/com/example/jaxw</sourceDirectory> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-war-plugin</artifactId> - <version>3.3.2</version> - </plugin> - </plugins> - </build> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>com.gymtracker</groupId> + <artifactId>gymtracker</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>8</maven.compiler.source> + <maven.compiler.target>8</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <dependencies> + + <dependency> + <groupId>org.json</groupId> + <artifactId>json</artifactId> + <version>20220320</version> + </dependency> + + + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.5.0-b01</version> + </dependency> + + + <dependency> + <groupId>com.mysql</groupId> + <artifactId>mysql-connector-j</artifactId> + <version>8.0.31</version> + </dependency> + + <dependency> + <groupId>io.github.cdimascio</groupId> + <artifactId>dotenv-java</artifactId> + <version>2.2.0</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + <configuration> + <archive> + <manifest> + <mainClass>com.gymtracker.Main</mainClass> + </manifest> + </archive> + <descriptorRefs> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> \ No newline at end of file diff --git a/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java b/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java deleted file mode 100644 index dac005a67d3277d2c8a131e675eea1ec8f938e5b..0000000000000000000000000000000000000000 --- a/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java +++ /dev/null @@ -1,20 +0,0 @@ -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/middleware/APIKeyValidator.java b/src/main/java/com/gymtracker/middleware/APIKeyValidator.java deleted file mode 100644 index 284239c3ee016eb3126be32247948645646ef430..0000000000000000000000000000000000000000 --- a/src/main/java/com/gymtracker/middleware/APIKeyValidator.java +++ /dev/null @@ -1,36 +0,0 @@ -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; - } -} diff --git a/src/main/resources/META-INF/beans.xml b/src/main/resources/META-INF/beans.xml deleted file mode 100644 index 401135820009a94d35623614a4b27821e0feab70..0000000000000000000000000000000000000000 --- a/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<beans xmlns="https://jakarta.ee/xml/ns/jakartaee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd" - bean-discovery-mode="annotated"> - -</beans> \ No newline at end of file diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml deleted file mode 100644 index a97e61552b7fb2aec8bc40a50e03cb1e0b5a617c..0000000000000000000000000000000000000000 --- a/src/main/resources/META-INF/persistence.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<persistence xmlns="https://jakarta.ee/xml/ns/persistence" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd" - version="3.0"> - <persistence-unit name="default"> - - </persistence-unit> -</persistence> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 2491795383b0bea934d46ea75e922da190b9d0ee..0000000000000000000000000000000000000000 --- a/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" - version="5.0"> -</web-app> \ No newline at end of file diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp deleted file mode 100644 index 3d6d7b9f79955a155b515a63fdd8c3963212682b..0000000000000000000000000000000000000000 --- a/src/main/webapp/index.jsp +++ /dev/null @@ -1,12 +0,0 @@ -<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> -<!DOCTYPE html> -<html> -<head> - <title>JSP - Hello World</title> -</head> -<body> -<h1><%= "Hello World!" %></h1> -<br/> -<a href="hello-servlet">Hello Servlet</a> -</body> -</html> \ No newline at end of file