commit fe118a2bee84543d4c7f7b797e8cfcbf3e3c86a0
parent 903efad6408c0fe6fb120b23c4d20de49b76cb05
Author: zerous Naveen Narayanan <zerous@nocebo.space>
Date: Sat, 14 Dec 2019 19:47:41 +0100
Make sure that a user can't login from multiple clients at the same time using the same credentials.
Diffstat:
2 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/acc.java b/acc.java
@@ -11,7 +11,7 @@ public class acc {
uname = n;
pass = p;
score = util.getRandomInt();
- online = true;
+ online = false;
gid = 0;
}
@@ -19,7 +19,7 @@ public class acc {
uname = n;
pass = p;
score = s;
- online = true;
+ online = false;
gid = 0;
}
@@ -43,6 +43,14 @@ public class acc {
return online;
}
+ public void setOnline() {
+ online = true;
+ }
+
+ public void setOffline() {
+ online = false;
+ }
+
public int getGid() {
return gid;
}
diff --git a/servertask.java b/servertask.java
@@ -28,7 +28,10 @@ public class servertask implements Runnable {
for (acc c : server.Accounts)
if (((inp[0].compareTo(c.getUname())) == 0) &&
((inp[1].compareTo(c.getPass())) == 0)) {
+ if (c.getOnline() == true)
+ return -1;
player = c;
+ player.setOnline();
return 1;
}
return 0;
@@ -152,6 +155,7 @@ public class servertask implements Runnable {
String message = inputStr.readUTF();
int val = 0;
+ int lres;
while (message.compareTo("q") != 0) { // use 'q' to quit
if (util.isNumeric(message) && (val = Integer.parseInt(message)) > 0 && val < 3) {
if (val == 1 && loggedin == 0) {
@@ -175,7 +179,8 @@ public class servertask implements Runnable {
outputStr.flush();
message = inputStr.readUTF();
if (util.isValidCred(message)) {
- if (login(message) == 1) {
+ lres = login(message);
+ if (lres == 1) {
loggedin = 1;
notifyClient(outputStr, "Login Successful\n" +
"Please wait.\n" +
@@ -211,13 +216,23 @@ public class servertask implements Runnable {
}
as = pscript.getResult(lock,player);
notifyClient(outputStr,as);
+ player.setOffline();
notifyClient(outputStr,"Game Over.\n" +
"You have been logged out\n" +
"Play again? (Please press 2)");
- } else
+ } else if (lres == 0) {
+ System.out.println("dbg lres == 0");
notifyClient(outputStr, "Login Failed\n" +
"Please try again\n" +
mainMenu);
+ }
+ else if (lres == -1) {
+ System.out.println("dbg lres = -1");
+ notifyClient(outputStr, "Cheating detected.\n" +
+ "This incident will be reported.\n" +
+ "Please try again\n" +
+ mainMenu);
+ }
} else
notifyClient(outputStr, "Invalid format\n" +
"Please try again\n" +