UUID update and sign up verification

This commit is contained in:
Michael Wain 2025-03-16 19:30:01 +03:00
parent 3c59cf1474
commit ac08cc0f8a
2 changed files with 31 additions and 16 deletions
src/main/java/com/alterdekim/xcraft/auth

@ -7,6 +7,7 @@ import org.json.simple.parser.ParseException;
import org.mindrot.jbcrypt.BCrypt; import org.mindrot.jbcrypt.BCrypt;
import java.io.IOException; import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -61,18 +62,22 @@ public class SaltNic extends NanoHTTPD {
} }
private Response handleHasJoinedRequest(IHTTPSession session) { private Response handleHasJoinedRequest(IHTTPSession session) {
String uuid = UserId.generateUserId(session.getParameters().get("username").get(0)); try {
if( this.sessions.containsKey(uuid) && this.sessions.get(uuid) ) { String uuid = UserId.generateUserId(session.getParameters().get("username").get(0));
this.sessions.remove(uuid); if (this.sessions.containsKey(uuid) && this.sessions.get(uuid)) {
return newFixedLengthResponse(Response.Status.OK, "application/json", "{\n" + this.sessions.remove(uuid);
" \"id\" : \""+uuid+"\",\n" + return newFixedLengthResponse(Response.Status.OK, "application/json", "{\n" +
" \"name\" : \""+session.getParameters().get("username").get(0)+"\",\n" + " \"id\" : \"" + uuid + "\",\n" +
" \"properties\" : [ {\n" + " \"name\" : \"" + session.getParameters().get("username").get(0) + "\",\n" +
" \"name\" : \"textures\",\n" + " \"properties\" : [ {\n" +
" \"value\" : \"ewogICJ0aW1lc3RhbXAiIDogMTc0MjA1ODQ1MDI1MywKICAicHJvZmlsZUlkIiA6ICJmYzE0MzZmZmQ3MDA0NWFmOWMxODNkZjhjODMwMmU5ZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJEYXJ0SmV2ZGVyIiwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzVlMTM1Y2ZkYTgwM2U3ZDQ4NTNhN2M5YjQ5N2JhZjM3YWNlNmZkZGYyYjYyNDI1MWY3YjkwNmYyOTAwZWRiMyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9LAogICAgIkNBUEUiIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2EyZThkOTdlYzc5MTAwZTkwYTc1ZDM2OWQxYjNiYTgxMjczYzRmODJiYzFiNzM3ZTkzNGVlZDRhODU0YmUxYjYiCiAgICB9CiAgfQp9\"\n" + " \"name\" : \"textures\",\n" +
" } ],\n" + " \"value\" : \"ewogICJ0aW1lc3RhbXAiIDogMTc0MjA1ODQ1MDI1MywKICAicHJvZmlsZUlkIiA6ICJmYzE0MzZmZmQ3MDA0NWFmOWMxODNkZjhjODMwMmU5ZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJEYXJ0SmV2ZGVyIiwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzVlMTM1Y2ZkYTgwM2U3ZDQ4NTNhN2M5YjQ5N2JhZjM3YWNlNmZkZGYyYjYyNDI1MWY3YjkwNmYyOTAwZWRiMyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9LAogICAgIkNBUEUiIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2EyZThkOTdlYzc5MTAwZTkwYTc1ZDM2OWQxYjNiYTgxMjczYzRmODJiYzFiNzM3ZTkzNGVlZDRhODU0YmUxYjYiCiAgICB9CiAgfQp9\"\n" +
" \"profileActions\" : [ ]\n" + " } ],\n" +
"}"); " \"profileActions\" : [ ]\n" +
"}");
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} }
return newFixedLengthResponse(Response.Status.INTERNAL_ERROR, "text/plain", "Server error"); 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 username = (String) json.get("username");
String password = (String) json.get("password"); 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"); return newFixedLengthResponse(Response.Status.BAD_REQUEST, "text/plain", "Missing username or password");
} }

@ -1,9 +1,19 @@
package com.alterdekim.xcraft.auth; 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 class UserId {
public static String generateUserId(String username) { public static String generateUserId(String username) throws NoSuchAlgorithmException {
return UUID.nameUUIDFromBytes(username.getBytes()).toString().replace("-", ""); 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();
} }
} }