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

View File

@ -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");
}

View File

@ -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();
}
}