From ac08cc0f8af6e4f168c3d092137f02699bc08463 Mon Sep 17 00:00:00 2001 From: alterwain Date: Sun, 16 Mar 2025 19:30:01 +0300 Subject: [PATCH] UUID update and sign up verification --- .../com/alterdekim/xcraft/auth/SaltNic.java | 31 +++++++++++-------- .../com/alterdekim/xcraft/auth/UserId.java | 16 ++++++++-- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/alterdekim/xcraft/auth/SaltNic.java b/src/main/java/com/alterdekim/xcraft/auth/SaltNic.java index 1da6f16..77d808d 100644 --- a/src/main/java/com/alterdekim/xcraft/auth/SaltNic.java +++ b/src/main/java/com/alterdekim/xcraft/auth/SaltNic.java @@ -7,6 +7,7 @@ import org.json.simple.parser.ParseException; import org.mindrot.jbcrypt.BCrypt; import java.io.IOException; +import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; @@ -61,18 +62,22 @@ public class SaltNic extends NanoHTTPD { } private Response handleHasJoinedRequest(IHTTPSession session) { - String uuid = UserId.generateUserId(session.getParameters().get("username").get(0)); - if( this.sessions.containsKey(uuid) && this.sessions.get(uuid) ) { - this.sessions.remove(uuid); - return newFixedLengthResponse(Response.Status.OK, "application/json", "{\n" + - " \"id\" : \""+uuid+"\",\n" + - " \"name\" : \""+session.getParameters().get("username").get(0)+"\",\n" + - " \"properties\" : [ {\n" + - " \"name\" : \"textures\",\n" + - " \"value\" : \"ewogICJ0aW1lc3RhbXAiIDogMTc0MjA1ODQ1MDI1MywKICAicHJvZmlsZUlkIiA6ICJmYzE0MzZmZmQ3MDA0NWFmOWMxODNkZjhjODMwMmU5ZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJEYXJ0SmV2ZGVyIiwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzVlMTM1Y2ZkYTgwM2U3ZDQ4NTNhN2M5YjQ5N2JhZjM3YWNlNmZkZGYyYjYyNDI1MWY3YjkwNmYyOTAwZWRiMyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9LAogICAgIkNBUEUiIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2EyZThkOTdlYzc5MTAwZTkwYTc1ZDM2OWQxYjNiYTgxMjczYzRmODJiYzFiNzM3ZTkzNGVlZDRhODU0YmUxYjYiCiAgICB9CiAgfQp9\"\n" + - " } ],\n" + - " \"profileActions\" : [ ]\n" + - "}"); + try { + String uuid = UserId.generateUserId(session.getParameters().get("username").get(0)); + if (this.sessions.containsKey(uuid) && this.sessions.get(uuid)) { + this.sessions.remove(uuid); + return newFixedLengthResponse(Response.Status.OK, "application/json", "{\n" + + " \"id\" : \"" + uuid + "\",\n" + + " \"name\" : \"" + session.getParameters().get("username").get(0) + "\",\n" + + " \"properties\" : [ {\n" + + " \"name\" : \"textures\",\n" + + " \"value\" : \"ewogICJ0aW1lc3RhbXAiIDogMTc0MjA1ODQ1MDI1MywKICAicHJvZmlsZUlkIiA6ICJmYzE0MzZmZmQ3MDA0NWFmOWMxODNkZjhjODMwMmU5ZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJEYXJ0SmV2ZGVyIiwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzVlMTM1Y2ZkYTgwM2U3ZDQ4NTNhN2M5YjQ5N2JhZjM3YWNlNmZkZGYyYjYyNDI1MWY3YjkwNmYyOTAwZWRiMyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9LAogICAgIkNBUEUiIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2EyZThkOTdlYzc5MTAwZTkwYTc1ZDM2OWQxYjNiYTgxMjczYzRmODJiYzFiNzM3ZTkzNGVlZDRhODU0YmUxYjYiCiAgICB9CiAgfQp9\"\n" + + " } ],\n" + + " \"profileActions\" : [ ]\n" + + "}"); + } + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); } return newFixedLengthResponse(Response.Status.INTERNAL_ERROR, "text/plain", "Server error"); } @@ -90,7 +95,7 @@ public class SaltNic extends NanoHTTPD { String username = (String) json.get("username"); String password = (String) json.get("password"); - if (username == null || password == null) { + if (username == null || password == null || password.length() < 3 || username.length() < 3) { return newFixedLengthResponse(Response.Status.BAD_REQUEST, "text/plain", "Missing username or password"); } diff --git a/src/main/java/com/alterdekim/xcraft/auth/UserId.java b/src/main/java/com/alterdekim/xcraft/auth/UserId.java index 339997b..7858446 100644 --- a/src/main/java/com/alterdekim/xcraft/auth/UserId.java +++ b/src/main/java/com/alterdekim/xcraft/auth/UserId.java @@ -1,9 +1,19 @@ package com.alterdekim.xcraft.auth; -import java.util.UUID; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; public class UserId { - public static String generateUserId(String username) { - return UUID.nameUUIDFromBytes(username.getBytes()).toString().replace("-", ""); + public static String generateUserId(String username) throws NoSuchAlgorithmException { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(username.getBytes()); + byte[] digest = md.digest(); + BigInteger bigInt = new BigInteger(1, digest); + StringBuilder hashtext = new StringBuilder(bigInt.toString(16)); + while(hashtext.length() < 32 ){ + hashtext.insert(0, "0"); + } + return hashtext.toString().toLowerCase(); } }