Implementing ban.
This commit is contained in:
parent
376a626506
commit
b6b6c07841
@ -146,6 +146,14 @@ public class Server implements Runnable {
|
|||||||
} else {
|
} else {
|
||||||
clients.get(findClient(id)).send("You are not admin.");
|
clients.get(findClient(id)).send("You are not admin.");
|
||||||
}
|
}
|
||||||
|
} else if(input.length() > 11 && input.substring(0, 4).equals("/ban")) {
|
||||||
|
if(clients.get(findClient(id)).isAdmin()) {
|
||||||
|
int bID = Integer.parseInt(input.substring(5, 10));
|
||||||
|
String reason = input.substring(12);
|
||||||
|
ban(bID, reason);
|
||||||
|
} else {
|
||||||
|
clients.get(findClient(id)).send("You are not admin.");
|
||||||
|
}
|
||||||
} else if(input.length() > 10 && input.substring(0, 10).equals("/giveadmin")) {
|
} else if(input.length() > 10 && input.substring(0, 10).equals("/giveadmin")) {
|
||||||
if(clients.get(findClient(id)).isAdmin()) {
|
if(clients.get(findClient(id)).isAdmin()) {
|
||||||
int aID = Integer.parseInt(input.substring(11));
|
int aID = Integer.parseInt(input.substring(11));
|
||||||
@ -166,26 +174,39 @@ public class Server implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ban a client
|
||||||
|
public void ban(int id, String reason) {
|
||||||
|
int pos = findClient(id);
|
||||||
|
if(pos < 0) return;
|
||||||
|
String clientIP = clients.get(pos).getSocket().getRemoteSocketAddress().toString();
|
||||||
|
try {
|
||||||
|
PrintWriter banwriter = new PrintWriter(new BufferedWriter(new FileWriter("banned.txt", true)));
|
||||||
|
banwriter.println(clientIP);
|
||||||
|
banwriter.close();
|
||||||
|
} catch(IOException ioe) { System.out.println("Error printing client IP '" + clientIP + "' to banned.txt ."); }
|
||||||
|
clients.get(pos).send("You have been banned from this server.\nReason: " + reason);
|
||||||
|
remove(id);
|
||||||
|
}
|
||||||
|
|
||||||
// Remove a client
|
// Remove a client
|
||||||
public synchronized void remove(int id) {
|
public synchronized void remove(int id) {
|
||||||
int pos = findClient(id);
|
int pos = findClient(id);
|
||||||
if(pos >= 0) {
|
if(pos < 0) return;
|
||||||
ServerThread toTerminate = clients.get(pos);
|
ServerThread toTerminate = clients.get(pos);
|
||||||
System.out.println("Remove client thread: " + id + " at " + pos);
|
System.out.println("Remove client thread: " + id + " at " + pos);
|
||||||
try {
|
try {
|
||||||
clients.get(pos).close();
|
clients.get(pos).close();
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
System.out.println("Error closing thread: " + e);
|
System.out.println("Error closing thread: " + e);
|
||||||
}
|
|
||||||
clients.remove(pos);
|
|
||||||
clientCount--;
|
|
||||||
try {
|
|
||||||
toTerminate.close();
|
|
||||||
} catch(IOException e) {
|
|
||||||
System.out.println("Error closing thread: " + e);
|
|
||||||
}
|
|
||||||
toTerminate.interrupt();
|
|
||||||
}
|
}
|
||||||
|
clients.remove(pos);
|
||||||
|
clientCount--;
|
||||||
|
try {
|
||||||
|
toTerminate.close();
|
||||||
|
} catch(IOException e) {
|
||||||
|
System.out.println("Error closing thread: " + e);
|
||||||
|
}
|
||||||
|
toTerminate.interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a new client
|
// Add a new client
|
||||||
|
@ -123,6 +123,7 @@ public class ServerThread extends Thread {
|
|||||||
|
|
||||||
// Getter methods
|
// Getter methods
|
||||||
public int getID() { return id; }
|
public int getID() { return id; }
|
||||||
|
public Socket getSocket() { return socket; }
|
||||||
public String getUsername() { return username; }
|
public String getUsername() { return username; }
|
||||||
public boolean isAdmin() { return admin; }
|
public boolean isAdmin() { return admin; }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user