forked from SteamWar/SteamWar
Merge pull request 'Add AuditLog' (#89) from AuditLog into main
Reviewed-on: SteamWar/SteamWar#89 Reviewed-by: Chaoscaot <max@chaoscaot.de>
This commit is contained in:
@@ -276,6 +276,7 @@ public class ServerStarter {
|
||||
|
||||
int port = portrange.freePort();
|
||||
String serverName = serverNameProvider.apply(port);
|
||||
arguments.put("serverName", serverName);
|
||||
|
||||
if(node == null) {
|
||||
node = Node.getNode();
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.velocitypowered.api.event.player.PlayerChatEvent;
|
||||
import com.velocitypowered.api.event.player.TabCompleteEvent;
|
||||
import com.velocitypowered.api.proxy.ConsoleCommandSource;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ServerConnection;
|
||||
import com.velocitypowered.api.proxy.server.ServerInfo;
|
||||
import de.steamwar.messages.Chatter;
|
||||
import de.steamwar.messages.ChatterGroup;
|
||||
import de.steamwar.messages.Message;
|
||||
@@ -80,17 +82,32 @@ public class ChatListener extends BasicListener {
|
||||
if(VelocityCore.getProxy().getCommandManager().hasCommand(cmd)) {
|
||||
CommandSource source = e.getCommandSource();
|
||||
String name;
|
||||
if(source instanceof Player player)
|
||||
SteamwarUser user = null;
|
||||
if (source instanceof Player player) {
|
||||
user = SteamwarUser.get(player.getUniqueId());
|
||||
name = player.getUsername();
|
||||
else if(source instanceof ConsoleCommandSource)
|
||||
} else if (source instanceof ConsoleCommandSource) {
|
||||
user = SteamwarUser.get(-1);
|
||||
name = "«CONSOLE»";
|
||||
else
|
||||
} else {
|
||||
name = source.toString();
|
||||
}
|
||||
|
||||
if (noLogCommands.contains(cmd)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (cmd) {
|
||||
case "msg":
|
||||
case "r":
|
||||
case "tc":
|
||||
AuditLog.createSensitiveCommand(AuditLog.SERVER_NAME_VELOCITY, null, user, "/" + command);
|
||||
break;
|
||||
default:
|
||||
AuditLog.createCommand(AuditLog.SERVER_NAME_VELOCITY, null, user, "/" + command);
|
||||
break;
|
||||
}
|
||||
|
||||
cmdLogger.log(Level.INFO, "%s -> executed command /%s".formatted(name, command));
|
||||
} else if (e.getCommandSource() instanceof Player player) {
|
||||
// System.out.println("spoofChatInput " + e);
|
||||
@@ -106,8 +123,8 @@ public class ChatListener extends BasicListener {
|
||||
|
||||
e.setResult(PlayerChatEvent.ChatResult.denied());
|
||||
|
||||
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
||||
if (message.contains("jndi:ldap")) {
|
||||
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
||||
PunishmentCommand.ban(user, Punishment.PERMA_TIME, "Versuchte Exploit-Ausnutzung", SteamwarUser.get(-1), true);
|
||||
VelocityCore.getLogger().log(Level.SEVERE, "%s %s wurde automatisch wegen jndi:ldap gebannt.".formatted(user.getUserName(), user.getId()));
|
||||
return;
|
||||
@@ -117,13 +134,20 @@ public class ChatListener extends BasicListener {
|
||||
return;
|
||||
|
||||
Subserver subserver = Subserver.getSubserver(player);
|
||||
String serverName = AuditLog.SERVER_NAME_VELOCITY;
|
||||
if(Subserver.isArena(subserver) && subserver.getServer() == player.getCurrentServer().orElseThrow().getServerInfo()) {
|
||||
serverName = subserver.getServer().getName();
|
||||
localChat(Chatter.of(player), message);
|
||||
} else if (message.startsWith("+")) {
|
||||
serverName = player.getCurrentServer()
|
||||
.map(ServerConnection::getServerInfo)
|
||||
.map(ServerInfo::getName)
|
||||
.orElse(serverName);
|
||||
localChat(Chatter.of(player), message.substring(1));
|
||||
} else {
|
||||
sendChat(Chatter.of(player), Chatter.globalChat(), "CHAT_GLOBAL", null, message);
|
||||
}
|
||||
AuditLog.createChat(serverName, null, user, message);
|
||||
}
|
||||
|
||||
private static boolean isMistypedCommand(Player player, String message) {
|
||||
|
||||
@@ -22,6 +22,7 @@ package de.steamwar.velocitycore.listeners;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
import com.velocitypowered.api.event.connection.DisconnectEvent;
|
||||
import com.velocitypowered.api.event.connection.PostLoginEvent;
|
||||
import de.steamwar.sql.AuditLog;
|
||||
import de.steamwar.velocitycore.VelocityCore;
|
||||
import de.steamwar.sql.Session;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
@@ -36,10 +37,12 @@ public class SessionManager extends BasicListener {
|
||||
@Subscribe
|
||||
public void onPostLogin(PostLoginEvent event){
|
||||
sessions.put(event.getPlayer(), Timestamp.from(Instant.now()));
|
||||
AuditLog.createJoin(AuditLog.SERVER_NAME_VELOCITY, null, SteamwarUser.get(event.getPlayer().getUniqueId()));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDisconnect(DisconnectEvent e){
|
||||
AuditLog.createLeave(AuditLog.SERVER_NAME_VELOCITY, null, SteamwarUser.get(e.getPlayer().getUniqueId()));
|
||||
Timestamp timestamp = sessions.remove(e.getPlayer());
|
||||
if(timestamp != null) {
|
||||
VelocityCore.schedule(() -> Session.insertSession(SteamwarUser.get(e.getPlayer().getUniqueId()).getId(), timestamp)).schedule();
|
||||
|
||||
Reference in New Issue
Block a user