diff --git a/.idea/runConfigurations/Build__w_o_Tests_.xml b/.idea/runConfigurations/Build__w_o_Tests_.xml new file mode 100644 index 0000000..5913813 --- /dev/null +++ b/.idea/runConfigurations/Build__w_o_Tests_.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2dcb451..90bb7ed 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,22 @@ commons-io 2.11.0 + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.mariadb.jdbc + mariadb-java-client + runtime + + + + org.springframework.boot + spring-boot-starter-security + diff --git a/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java b/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java index 2003d19..beb051a 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java @@ -18,6 +18,9 @@ public class ArkOneController implements TcpHandler { String xmlData = new String(data); System.out.println("[ArkOne] New Request: " + xmlData); + //TODO: USE THAT FOR PASSWORD ENCRYPTION FOR STORING IN THE DB + //TODO: SEE THIS ARTICLE FOR ENCODING: https://www.baeldung.com/spring-security-registration-password-encoding-bcrypt + try { connection.send(xmlData.toUpperCase().getBytes()); } catch (IOException e) { diff --git a/src/main/java/com/icedberries/UBFunkeysServer/Galaxy/GalaxyServer.java b/src/main/java/com/icedberries/UBFunkeysServer/Galaxy/GalaxyServer.java index 9ad55ab..a6de42e 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/Galaxy/GalaxyServer.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/Galaxy/GalaxyServer.java @@ -77,6 +77,7 @@ public class GalaxyServer { } catch (Exception e) { // File doesn't exist error caught here System.out.println(e.getMessage()); + e.printStackTrace(); // Set the error code errorCode = HttpServletResponse.SC_NOT_FOUND; @@ -161,7 +162,7 @@ public class GalaxyServer { // Send successful response = ""; } else { - response = ""; + response = ""; } return new ResponseEntity<>(response, HttpStatus.OK); } diff --git a/src/main/java/com/icedberries/UBFunkeysServer/UBFunkeysServerApplication.java b/src/main/java/com/icedberries/UBFunkeysServer/UBFunkeysServerApplication.java index bffbcea..7eca9fa 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/UBFunkeysServerApplication.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/UBFunkeysServerApplication.java @@ -2,7 +2,6 @@ package com.icedberries.UBFunkeysServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; @SpringBootApplication(scanBasePackages = {"com.icedberries", "javagrinko.spring"}) public class UBFunkeysServerApplication { diff --git a/src/main/java/com/icedberries/UBFunkeysServer/config/Password.java b/src/main/java/com/icedberries/UBFunkeysServer/config/Password.java new file mode 100644 index 0000000..ed6f8cf --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/config/Password.java @@ -0,0 +1,19 @@ +package com.icedberries.UBFunkeysServer.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +import java.security.SecureRandom; + +@Configuration +public class Password { + + private static final Integer STRENGTH = 15; + + @Bean + public PasswordEncoder encoder() { + return new BCryptPasswordEncoder(STRENGTH, new SecureRandom()); + } +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/domain/Crib.java b/src/main/java/com/icedberries/UBFunkeysServer/domain/Crib.java new file mode 100644 index 0000000..43323f8 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/domain/Crib.java @@ -0,0 +1,33 @@ +package com.icedberries.UBFunkeysServer.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "Cribs") +public class Crib { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Integer id; + + private String cribName; + + private String username; + + private String profileData; +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/domain/User.java b/src/main/java/com/icedberries/UBFunkeysServer/domain/User.java new file mode 100644 index 0000000..041efd3 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/domain/User.java @@ -0,0 +1,35 @@ +package com.icedberries.UBFunkeysServer.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "Users") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Integer UUID; + + private String username; + + private String password; + + private String securityQuestion; + + private String securityAnswer; +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/repository/CribRepository.java b/src/main/java/com/icedberries/UBFunkeysServer/repository/CribRepository.java new file mode 100644 index 0000000..5301352 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/repository/CribRepository.java @@ -0,0 +1,10 @@ +package com.icedberries.UBFunkeysServer.repository; + +import com.icedberries.UBFunkeysServer.domain.Crib; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CribRepository extends CrudRepository { + +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/repository/UserRepository.java b/src/main/java/com/icedberries/UBFunkeysServer/repository/UserRepository.java new file mode 100644 index 0000000..8bb8655 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/repository/UserRepository.java @@ -0,0 +1,18 @@ +package com.icedberries.UBFunkeysServer.repository; + +import com.icedberries.UBFunkeysServer.domain.User; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface UserRepository extends CrudRepository { + + Boolean existsByUUID(Integer uuid); + + @Query("select user from User user where user.UUID = :uuid") + Optional findByUUID(@Param("uuid") Integer uuid); +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/service/CribService.java b/src/main/java/com/icedberries/UBFunkeysServer/service/CribService.java new file mode 100644 index 0000000..ad0688b --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/service/CribService.java @@ -0,0 +1,10 @@ +package com.icedberries.UBFunkeysServer.service; + +import com.icedberries.UBFunkeysServer.domain.Crib; + +public interface CribService { + + Integer count(); + + void save(Crib crib); +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/service/UserService.java b/src/main/java/com/icedberries/UBFunkeysServer/service/UserService.java new file mode 100644 index 0000000..10902c1 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/service/UserService.java @@ -0,0 +1,14 @@ +package com.icedberries.UBFunkeysServer.service; + +import com.icedberries.UBFunkeysServer.domain.User; + +import java.util.Optional; + +public interface UserService { + + Optional findByUUID(Integer uuid); + + Boolean existsByUUID(Integer uuid); + + void save(User user); +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/service/impl/CribServiceImpl.java b/src/main/java/com/icedberries/UBFunkeysServer/service/impl/CribServiceImpl.java new file mode 100644 index 0000000..dc7dd20 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/service/impl/CribServiceImpl.java @@ -0,0 +1,24 @@ +package com.icedberries.UBFunkeysServer.service.impl; + +import com.icedberries.UBFunkeysServer.domain.Crib; +import com.icedberries.UBFunkeysServer.repository.CribRepository; +import com.icedberries.UBFunkeysServer.service.CribService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CribServiceImpl implements CribService { + + public final CribRepository cribRepository; + + @Override + public Integer count() { + return Math.toIntExact(cribRepository.count()); + } + + @Override + public void save(Crib crib) { + cribRepository.save(crib); + } +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/service/impl/UserServiceImpl.java b/src/main/java/com/icedberries/UBFunkeysServer/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..941524d --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/service/impl/UserServiceImpl.java @@ -0,0 +1,32 @@ +package com.icedberries.UBFunkeysServer.service.impl; + +import com.icedberries.UBFunkeysServer.domain.User; +import com.icedberries.UBFunkeysServer.repository.UserRepository; +import com.icedberries.UBFunkeysServer.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class UserServiceImpl implements UserService { + + public final UserRepository userRepository; + + + @Override + public Optional findByUUID(Integer uuid) { + return userRepository.findByUUID(uuid); + } + + @Override + public Boolean existsByUUID(Integer uuid) { + return userRepository.existsByUUID(uuid); + } + + @Override + public void save(User user) { + userRepository.save(user); + } +}