home /
connvers /
src /
main /
java /
avividi /
connvers /
server /
ServerSideCommander.java
ServerSideCommander.java
package avividi.connvers.server;
import avividi.connvers.CommandInterpreter;
import java.util.List;
import static avividi.connvers.Connvers.printSystemLine;
public class ServerSideCommander implements CommandInterpreter {
final ConnectionPool connectionPool;
public ServerSideCommander(ConnectionPool connectionPool) {
this.connectionPool = connectionPool;
}
@Override
public void executeCommand(String message) {
String[] split = message.trim().split(" ");
if (split.length == 0) return;
if (!split[0].startsWith("/")) return;
String command = split[0].substring(1);
if (command.equals("names")) {
List<ConnectionPool.UserAndIp> users = connectionPool.listUsers();
printSystemLine(String.format("Total users = %s", users.size()));
users.forEach(u -> printSystemLine(String.format("<%s> (%s)", u.user(), u.ip())));
}
else if (command.equals("banned")) {
List<ConnectionPool.UserAndIp> users = connectionPool.listBanned();
printSystemLine(String.format("Total banned users = %s", users.size()));
users.forEach(u -> printSystemLine(String.format("<%s> (%s)", u.user(), u.ip())));
}
else if (command.equals("kick") && split.length == 2) {
connectionPool.kickUser(split[1].trim());
}
else if (command.equals("ban") && split.length == 2) {
connectionPool.banUser(split[1].trim());
}
else if (command.equals("unban") && split.length == 2) {
connectionPool.unbanUser(split[1].trim());
}
else {
printSystemLine("unrecognized command");
}
}
}