Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit d0c97d2

Browse files
author
USE-TO
committed
added direct user-addressing
1 parent da07cb2 commit d0c97d2

7 files changed

Lines changed: 69 additions & 38 deletions

File tree

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ ADD . /app/
1212

1313
RUN mvn clean install
1414

15-
CMD java -jar target/server-0.0.3-SNAPSHOT-jar-with-dependencies.jar
15+
CMD java -jar target/server-0.0.4-SNAPSHOT-jar-with-dependencies.jar

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Build the game-server by using `mvn clean install` .
1111

1212
### Execute
1313

14-
Run it with `java -jar target/server-0.0.3-SNAPSHOT.jar` .
14+
Run it with `java -jar target/server-0.0.4-SNAPSHOT.jar` .
1515

1616
### Environment variables
1717

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>net.cryptic-game</groupId>
77
<artifactId>server</artifactId>
8-
<version>0.0.3-SNAPSHOT</version>
8+
<version>0.0.4-SNAPSHOT</version>
99
<packaging>jar</packaging>
1010

1111
<name>cryptic-game-server</name>

src/main/java/net/cryptic_game/server/client/Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static Client getClient(Channel channel) {
6868

6969
public static Client getClient(User user) {
7070
for (Client client : clients) {
71-
if (client.getUser().equals(user)) {
71+
if (client.getUser().getUUID().equals(user.getUUID())) {
7272
return client;
7373
}
7474
}

src/main/java/net/cryptic_game/server/http/HTTPServerHandler.java

Lines changed: 41 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -50,55 +50,64 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
5050
return;
5151
}
5252

53-
String auth = request.headers().get("Authorization");
53+
boolean authSuccess = false;
5454

55-
if (auth == null) {
56-
error(channel, "permissions denied");
57-
return;
58-
} else if (auth.split(" ").length != 2 || !auth.split(" ")[0].equals("Basic")) {
59-
error(channel, "invalid authorization");
60-
}
55+
if (!Config.getBoolean(DefaultConfig.AUTH_ENABLED)) {
56+
String auth = request.headers().get("Authorization");
6157

62-
String tuple = Base64.decode(Unpooled.copiedBuffer(auth.split(" ")[1].getBytes(Charset.forName("utf-8")))).toString(Charset.forName("utf-8"));
58+
if (auth == null) {
59+
error(channel, "permissions denied");
60+
return;
61+
} else if (auth.split(" ").length != 2 || !auth.split(" ")[0].equals("Basic")) {
62+
error(channel, "invalid authorization");
63+
}
6364

64-
if (tuple.contains(":")) {
65-
String name = tuple.split(":")[0];
66-
String password = tuple.substring(name.length() + 1, tuple.length());
65+
String tuple = Base64
66+
.decode(Unpooled.copiedBuffer(auth.split(" ")[1].getBytes(Charset.forName("utf-8"))))
67+
.toString(Charset.forName("utf-8"));
6768

68-
User user = User.get(name);
69+
if (tuple.contains(":")) {
70+
String name = tuple.split(":")[0];
71+
String password = tuple.substring(name.length() + 1, tuple.length());
6972

70-
if (user != null && user.checkPassword(password) || !Config.getBoolean(DefaultConfig.AUTH_ENABLED)) {
71-
client.setUser(user);
73+
User user = User.get(name);
7274

73-
String payload = request.content().toString(Charset.forName("utf-8"));
75+
if (user.checkPassword(password)) {
76+
authSuccess = true;
77+
client.setUser(user);
78+
}
79+
}
80+
}
7481

75-
try {
76-
JSONObject input = (JSONObject) new JSONParser().parse(payload);
82+
if (authSuccess || !Config.getBoolean(DefaultConfig.AUTH_ENABLED)) {
83+
String payload = request.content().toString(Charset.forName("utf-8"));
7784

78-
if (request.uri().length() > 1) {
79-
String[] args = request.uri().substring(1).split("/");
85+
try {
86+
JSONObject input = (JSONObject) new JSONParser().parse(payload);
8087

81-
if (args.length > 0) {
82-
MicroService ms = MicroService.get(args[0]);
88+
if (request.uri().length() > 1) {
89+
String[] args = request.uri().substring(1).split("/");
8390

84-
if (ms != null) {
85-
JSONArray endpoint = new JSONArray();
91+
if (args.length > 0) {
92+
MicroService ms = MicroService.get(args[0]);
8693

87-
for (int i = 1; i < args.length; i++) {
88-
endpoint.add(args[i]);
89-
}
94+
if (ms != null) {
95+
JSONArray endpoint = new JSONArray();
9096

91-
ms.receive(client, endpoint, input);
92-
return;
97+
for (int i = 1; i < args.length; i++) {
98+
endpoint.add(args[i]);
9399
}
100+
101+
ms.receive(client, endpoint, input);
102+
return;
94103
}
95104
}
96-
} catch (ParseException e) {
97105
}
98-
} else {
99-
error(channel, "permissions denied");
100-
return;
106+
} catch (ParseException e) {
101107
}
108+
} else {
109+
error(channel, "permissions denied");
110+
return;
102111
}
103112

104113
error(channel, "unsupportet format");

src/main/java/net/cryptic_game/server/microservice/MicroService.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.cryptic_game.server.config.Config;
1515
import net.cryptic_game.server.config.DefaultConfig;
1616
import net.cryptic_game.server.socket.SocketServerUtils;
17+
import net.cryptic_game.server.user.User;
1718

1819
/**
1920
* microservice wrapper
@@ -68,7 +69,7 @@ public void receive(Client client, JSONArray endpoint, JSONObject input) {
6869
jsonMap.put("user", client.getUser().getUUID().toString());
6970
}
7071
} else {
71-
jsonMap.put("user", "");
72+
jsonMap.put("user", UUID.fromString("00000000-0000-0000-0000-000000000000").toString());
7273
}
7374

7475
SocketServerUtils.sendJson(this.getChannel(), new JSONObject(jsonMap));
@@ -175,4 +176,16 @@ public static MicroService get(Channel channel) {
175176
return null;
176177
}
177178

179+
public static void sendToUser(UUID user, JSONObject data) {
180+
User userAccount = User.get(user);
181+
182+
if (userAccount != null) {
183+
Client clientOfUser = Client.getClient(userAccount);
184+
185+
if (clientOfUser != null) {
186+
clientOfUser.send(data);
187+
}
188+
}
189+
}
190+
178191
}

src/main/java/net/cryptic_game/server/microservice/MicroServiceHandler.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.HashMap;
44
import java.util.Map;
5+
import java.util.UUID;
56

67
import org.json.simple.JSONObject;
78
import org.json.simple.parser.JSONParser;
@@ -26,11 +27,19 @@ protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Except
2627
String action = (String) obj.get("action");
2728

2829
if (action.equals("register")) {
29-
if (obj.containsKey("name") && obj.get("name") instanceof String) {
30+
if (obj.containsKey("name") && obj.get("name") instanceof String) {
3031
MicroService.register((String) obj.get("name"), ctx.channel());
3132
} else {
3233
this.error(ctx.channel(), "name not found");
3334
}
35+
} else if (action.equals("address")) {
36+
if (obj.containsKey("user") && obj.get("user") instanceof String && obj.containsKey("data")
37+
&& obj.get("data") instanceof JSONObject) {
38+
MicroService.sendToUser(UUID.fromString((String) obj.get("user")),
39+
(JSONObject) obj.get("data"));
40+
} else {
41+
this.error(ctx.channel(), "name not found");
42+
}
3443
} else {
3544
this.error(ctx.channel(), "unknown action");
3645
}

0 commit comments

Comments
 (0)