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:
@@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.sql;
|
||||||
|
|
||||||
|
import de.steamwar.sql.internal.Field;
|
||||||
|
import de.steamwar.sql.internal.SqlTypeMapper;
|
||||||
|
import de.steamwar.sql.internal.Statement;
|
||||||
|
import de.steamwar.sql.internal.Table;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AuditLog {
|
||||||
|
|
||||||
|
static {
|
||||||
|
SqlTypeMapper.nameEnumMapper(AuditLog.Type.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final String SERVER_NAME_VELOCITY = "Velocity";
|
||||||
|
|
||||||
|
private static final Table<AuditLog> table = new Table<>(AuditLog.class);
|
||||||
|
|
||||||
|
private static final Statement create = table.insertFields(true, "time", "serverName", "serverOwner", "actor", "actionType", "actionText");
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Field
|
||||||
|
private final Timestamp time;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Field
|
||||||
|
private final String serverName;
|
||||||
|
|
||||||
|
@Field(nullable = true)
|
||||||
|
private final int serverOwner;
|
||||||
|
|
||||||
|
@Field
|
||||||
|
private final int actor;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Field
|
||||||
|
private final Type actionType;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Field
|
||||||
|
private final String actionText;
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
JOIN,
|
||||||
|
LEAVE,
|
||||||
|
COMMAND,
|
||||||
|
SENSITIVE_COMMAND,
|
||||||
|
|
||||||
|
CHAT,
|
||||||
|
GUI_OPEN,
|
||||||
|
GUI_CLOSE,
|
||||||
|
GUI_CLICK,
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void create(String serverName, SteamwarUser serverOwner, SteamwarUser actor, Type actionType, String text) {
|
||||||
|
create.insertGetKey(Timestamp.from(Instant.now()), serverName, serverOwner, actor, actionType, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createJoin(@NonNull String jointServerName, SteamwarUser serverOwner, @NonNull SteamwarUser joinedPlayer) {
|
||||||
|
create(jointServerName, serverOwner, joinedPlayer, Type.JOIN, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createLeave(@NonNull String leftServerName, SteamwarUser serverOwner, @NonNull SteamwarUser joinedPlayer) {
|
||||||
|
create(leftServerName, serverOwner, joinedPlayer, Type.LEAVE, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createCommand(@NonNull String serverName, SteamwarUser serverOwner, SteamwarUser player, @NonNull String command) {
|
||||||
|
if (player == null) return;
|
||||||
|
create(serverName, serverOwner, player, Type.COMMAND, command);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createSensitiveCommand(@NonNull String serverName, SteamwarUser serverOwner, SteamwarUser player, @NonNull String command) {
|
||||||
|
if (player == null) return;
|
||||||
|
create(serverName, serverOwner, player, Type.SENSITIVE_COMMAND, command);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createChat(@NonNull String serverName, SteamwarUser serverOwner, @NonNull SteamwarUser chatter, @NonNull String chat) {
|
||||||
|
create(serverName, serverOwner, chatter, Type.CHAT, chat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createGuiOpen(@NonNull String serverName, SteamwarUser serverOwner, @NonNull SteamwarUser player, @NonNull String guiName) {
|
||||||
|
create(serverName, serverOwner, player, Type.GUI_OPEN, guiName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createGuiClick(@NonNull String serverName, SteamwarUser serverOwner, @NonNull SteamwarUser player, @NonNull String guiName, @NonNull String clickType, int slot, @NonNull String itemName) {
|
||||||
|
create(serverName, serverOwner, player, Type.GUI_CLICK, "Gui: " + guiName + "\nSlot: " + slot + "\nClickType: " + clickType + "\nItemName: " + itemName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createGuiClose(@NonNull String serverName, SteamwarUser serverOwner, @NonNull SteamwarUser player, @NonNull String guiName) {
|
||||||
|
create(serverName, serverOwner, player, Type.GUI_CLOSE, guiName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SteamwarUser getServerOwner() {
|
||||||
|
return SteamwarUser.get(serverOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SteamwarUser getActor() {
|
||||||
|
return SteamwarUser.get(actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -68,6 +68,11 @@ public class FightSystem extends JavaPlugin {
|
|||||||
Core.setInstance(this);
|
Core.setInstance(this);
|
||||||
TinyProtocol.init();
|
TinyProtocol.init();
|
||||||
}
|
}
|
||||||
|
if (Config.SpectatePort != 0) {
|
||||||
|
Core.setServerName("Spectate");
|
||||||
|
} else if (Config.ReplayID != 0) {
|
||||||
|
Core.setServerName("Replay");
|
||||||
|
}
|
||||||
|
|
||||||
message = new Message("de.steamwar.fightsystem.FightSystem", FightSystem.class.getClassLoader());
|
message = new Message("de.steamwar.fightsystem.FightSystem", FightSystem.class.getClassLoader());
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public class BauSystem extends JavaPlugin implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
Core.setServerName("Dev");
|
||||||
plugin = this;
|
plugin = this;
|
||||||
|
|
||||||
Mapper.init();
|
Mapper.init();
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package de.steamwar.lobby;
|
package de.steamwar.lobby;
|
||||||
|
|
||||||
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.entity.REntityServer;
|
import de.steamwar.entity.REntityServer;
|
||||||
import de.steamwar.lobby.command.FlyCommand;
|
import de.steamwar.lobby.command.FlyCommand;
|
||||||
import de.steamwar.lobby.command.HologramCommand;
|
import de.steamwar.lobby.command.HologramCommand;
|
||||||
@@ -52,6 +53,7 @@ public class LobbySystem extends JavaPlugin {
|
|||||||
message = new Message("de.steamwar.lobby.LobbySystem", getClassLoader());
|
message = new Message("de.steamwar.lobby.LobbySystem", getClassLoader());
|
||||||
entityServer = new REntityServer();
|
entityServer = new REntityServer();
|
||||||
debugEntityServer = new REntityServer();
|
debugEntityServer = new REntityServer();
|
||||||
|
Core.setServerName("Lobby");
|
||||||
|
|
||||||
CustomMap.init();
|
CustomMap.init();
|
||||||
|
|
||||||
|
|||||||
+5
@@ -19,6 +19,10 @@
|
|||||||
|
|
||||||
package de.steamwar.command;
|
package de.steamwar.command;
|
||||||
|
|
||||||
|
import de.steamwar.core.Core;
|
||||||
|
import de.steamwar.providers.BauServerInfo;
|
||||||
|
import de.steamwar.sql.AuditLog;
|
||||||
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -31,5 +35,6 @@ public class CaseInsensitiveCommandsListener implements Listener {
|
|||||||
String[] strings = event.getMessage().split(" ");
|
String[] strings = event.getMessage().split(" ");
|
||||||
strings[0] = strings[0].toLowerCase();
|
strings[0] = strings[0].toLowerCase();
|
||||||
event.setMessage(String.join(" ", strings));
|
event.setMessage(String.join(" ", strings));
|
||||||
|
AuditLog.createCommand(Core.getServerName(), BauServerInfo.getOwnerUser(), SteamwarUser.get(event.getPlayer().getUniqueId()), event.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ import de.steamwar.network.handlers.ServerDataHandler;
|
|||||||
import de.steamwar.sql.SchematicNode;
|
import de.steamwar.sql.SchematicNode;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.sql.internal.Statement;
|
import de.steamwar.sql.internal.Statement;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -52,12 +54,17 @@ public class Core extends JavaPlugin {
|
|||||||
return Reflection.MAJOR_VERSION;
|
return Reflection.MAJOR_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
private static JavaPlugin instance;
|
private static JavaPlugin instance;
|
||||||
public static JavaPlugin getInstance() {
|
|
||||||
return instance;
|
@Getter
|
||||||
}
|
private static String serverName = "";
|
||||||
public static void setInstance(JavaPlugin instance) {
|
|
||||||
Core.instance = instance;
|
public static void setServerName(String serverName) {
|
||||||
|
if (serverName.isEmpty()) {
|
||||||
|
Core.serverName = serverName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ErrorHandler errorHandler;
|
private ErrorHandler errorHandler;
|
||||||
@@ -66,6 +73,7 @@ public class Core extends JavaPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
setInstance(this);
|
setInstance(this);
|
||||||
|
serverName = System.getProperty("serverName", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,6 +19,9 @@
|
|||||||
|
|
||||||
package de.steamwar.core.events;
|
package de.steamwar.core.events;
|
||||||
|
|
||||||
|
import de.steamwar.core.Core;
|
||||||
|
import de.steamwar.providers.BauServerInfo;
|
||||||
|
import de.steamwar.sql.AuditLog;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.sql.UserPerm;
|
import de.steamwar.sql.UserPerm;
|
||||||
import de.steamwar.sql.internal.Statement;
|
import de.steamwar.sql.internal.Statement;
|
||||||
@@ -44,12 +47,14 @@ public class PlayerJoinedEvent implements Listener{
|
|||||||
player.setDisplayName(prefix.getColorCode() + player.getName() + "§r");
|
player.setDisplayName(prefix.getColorCode() + player.getName() + "§r");
|
||||||
|
|
||||||
event.setJoinMessage("§a§l» §r" + player.getDisplayName());
|
event.setJoinMessage("§a§l» §r" + player.getDisplayName());
|
||||||
|
AuditLog.createJoin(Core.getServerName(), BauServerInfo.getOwnerUser(), user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
private void onQuit(PlayerQuitEvent event) {
|
private void onQuit(PlayerQuitEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
event.setQuitMessage("§c§l« §r" + player.getDisplayName());
|
event.setQuitMessage("§c§l« §r" + player.getDisplayName());
|
||||||
|
AuditLog.createLeave(Core.getServerName(), BauServerInfo.getOwnerUser(), SteamwarUser.get(player.getUniqueId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,9 @@
|
|||||||
package de.steamwar.inventory;
|
package de.steamwar.inventory;
|
||||||
|
|
||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.core.TrickyTrialsWrapper;
|
import de.steamwar.providers.BauServerInfo;
|
||||||
|
import de.steamwar.sql.AuditLog;
|
||||||
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -145,6 +147,7 @@ public class SWInventory implements Listener {
|
|||||||
Bukkit.getPluginManager().registerEvents(this, Core.getInstance());
|
Bukkit.getPluginManager().registerEvents(this, Core.getInstance());
|
||||||
open = true;
|
open = true;
|
||||||
}
|
}
|
||||||
|
AuditLog.createGuiOpen(Core.getServerName(), BauServerInfo.getOwnerUser(), SteamwarUser.get(player.getUniqueId()), title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@@ -156,6 +159,7 @@ public class SWInventory implements Listener {
|
|||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
Core.getInstance().getLogger().info("[SWINV] " + e.getWhoClicked().getName() + " " + e.getClick().name() + " clicked " + e.getRawSlot() + " on " + (e.getCurrentItem() != null ? e.getCurrentItem().getItemMeta().getDisplayName() : "[EMPTY]") + " in " + e.getView().getTitle());
|
Core.getInstance().getLogger().info("[SWINV] " + e.getWhoClicked().getName() + " " + e.getClick().name() + " clicked " + e.getRawSlot() + " on " + (e.getCurrentItem() != null ? e.getCurrentItem().getItemMeta().getDisplayName() : "[EMPTY]") + " in " + e.getView().getTitle());
|
||||||
callbacks.get(e.getRawSlot()).accept(e);
|
callbacks.get(e.getRawSlot()).accept(e);
|
||||||
|
AuditLog.createGuiClick(Core.getServerName(), BauServerInfo.getOwnerUser(), SteamwarUser.get(player.getUniqueId()), e.getView().getTitle(), e.getClick().name(), e.getRawSlot(), (e.getCurrentItem() != null ? e.getCurrentItem().getItemMeta().getDisplayName() : "[EMPTY]"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,8 +171,10 @@ public class SWInventory implements Listener {
|
|||||||
InventoryClickEvent.getHandlerList().unregister(this);
|
InventoryClickEvent.getHandlerList().unregister(this);
|
||||||
InventoryCloseEvent.getHandlerList().unregister(this);
|
InventoryCloseEvent.getHandlerList().unregister(this);
|
||||||
Core.getInstance().getLogger().info("[SWINV] " + player.getName() + " closed " + title);
|
Core.getInstance().getLogger().info("[SWINV] " + player.getName() + " closed " + title);
|
||||||
if(callbacks.containsKey(-1))
|
if(callbacks.containsKey(-1)) {
|
||||||
callbacks.get(-1).accept(null);
|
callbacks.get(-1).accept(null);
|
||||||
|
}
|
||||||
open = false;
|
open = false;
|
||||||
|
AuditLog.createGuiClose(Core.getServerName(), BauServerInfo.getOwnerUser(), SteamwarUser.get(player.getUniqueId()), title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package de.steamwar.providers;
|
package de.steamwar.providers;
|
||||||
|
|
||||||
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
public class BauServerInfo {
|
public class BauServerInfo {
|
||||||
@@ -37,4 +38,9 @@ public class BauServerInfo {
|
|||||||
public static boolean isBauServer() {
|
public static boolean isBauServer() {
|
||||||
return bauOwner != null;
|
return bauOwner != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SteamwarUser getOwnerUser() {
|
||||||
|
if (bauOwner == null) return null;
|
||||||
|
return SteamwarUser.get(bauOwner);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,6 +276,7 @@ public class ServerStarter {
|
|||||||
|
|
||||||
int port = portrange.freePort();
|
int port = portrange.freePort();
|
||||||
String serverName = serverNameProvider.apply(port);
|
String serverName = serverNameProvider.apply(port);
|
||||||
|
arguments.put("serverName", serverName);
|
||||||
|
|
||||||
if(node == null) {
|
if(node == null) {
|
||||||
node = Node.getNode();
|
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.event.player.TabCompleteEvent;
|
||||||
import com.velocitypowered.api.proxy.ConsoleCommandSource;
|
import com.velocitypowered.api.proxy.ConsoleCommandSource;
|
||||||
import com.velocitypowered.api.proxy.Player;
|
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.Chatter;
|
||||||
import de.steamwar.messages.ChatterGroup;
|
import de.steamwar.messages.ChatterGroup;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
@@ -80,17 +82,32 @@ public class ChatListener extends BasicListener {
|
|||||||
if(VelocityCore.getProxy().getCommandManager().hasCommand(cmd)) {
|
if(VelocityCore.getProxy().getCommandManager().hasCommand(cmd)) {
|
||||||
CommandSource source = e.getCommandSource();
|
CommandSource source = e.getCommandSource();
|
||||||
String name;
|
String name;
|
||||||
if(source instanceof Player player)
|
SteamwarUser user = null;
|
||||||
|
if (source instanceof Player player) {
|
||||||
|
user = SteamwarUser.get(player.getUniqueId());
|
||||||
name = player.getUsername();
|
name = player.getUsername();
|
||||||
else if(source instanceof ConsoleCommandSource)
|
} else if (source instanceof ConsoleCommandSource) {
|
||||||
|
user = SteamwarUser.get(-1);
|
||||||
name = "«CONSOLE»";
|
name = "«CONSOLE»";
|
||||||
else
|
} else {
|
||||||
name = source.toString();
|
name = source.toString();
|
||||||
|
}
|
||||||
|
|
||||||
if (noLogCommands.contains(cmd)) {
|
if (noLogCommands.contains(cmd)) {
|
||||||
return;
|
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));
|
cmdLogger.log(Level.INFO, "%s -> executed command /%s".formatted(name, command));
|
||||||
} else if (e.getCommandSource() instanceof Player player) {
|
} else if (e.getCommandSource() instanceof Player player) {
|
||||||
// System.out.println("spoofChatInput " + e);
|
// System.out.println("spoofChatInput " + e);
|
||||||
@@ -106,8 +123,8 @@ public class ChatListener extends BasicListener {
|
|||||||
|
|
||||||
e.setResult(PlayerChatEvent.ChatResult.denied());
|
e.setResult(PlayerChatEvent.ChatResult.denied());
|
||||||
|
|
||||||
|
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
||||||
if (message.contains("jndi:ldap")) {
|
if (message.contains("jndi:ldap")) {
|
||||||
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
|
||||||
PunishmentCommand.ban(user, Punishment.PERMA_TIME, "Versuchte Exploit-Ausnutzung", SteamwarUser.get(-1), true);
|
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()));
|
VelocityCore.getLogger().log(Level.SEVERE, "%s %s wurde automatisch wegen jndi:ldap gebannt.".formatted(user.getUserName(), user.getId()));
|
||||||
return;
|
return;
|
||||||
@@ -117,13 +134,20 @@ public class ChatListener extends BasicListener {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Subserver subserver = Subserver.getSubserver(player);
|
Subserver subserver = Subserver.getSubserver(player);
|
||||||
|
String serverName = AuditLog.SERVER_NAME_VELOCITY;
|
||||||
if(Subserver.isArena(subserver) && subserver.getServer() == player.getCurrentServer().orElseThrow().getServerInfo()) {
|
if(Subserver.isArena(subserver) && subserver.getServer() == player.getCurrentServer().orElseThrow().getServerInfo()) {
|
||||||
|
serverName = subserver.getServer().getName();
|
||||||
localChat(Chatter.of(player), message);
|
localChat(Chatter.of(player), message);
|
||||||
} else if (message.startsWith("+")) {
|
} else if (message.startsWith("+")) {
|
||||||
|
serverName = player.getCurrentServer()
|
||||||
|
.map(ServerConnection::getServerInfo)
|
||||||
|
.map(ServerInfo::getName)
|
||||||
|
.orElse(serverName);
|
||||||
localChat(Chatter.of(player), message.substring(1));
|
localChat(Chatter.of(player), message.substring(1));
|
||||||
} else {
|
} else {
|
||||||
sendChat(Chatter.of(player), Chatter.globalChat(), "CHAT_GLOBAL", null, message);
|
sendChat(Chatter.of(player), Chatter.globalChat(), "CHAT_GLOBAL", null, message);
|
||||||
}
|
}
|
||||||
|
AuditLog.createChat(serverName, null, user, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isMistypedCommand(Player player, String 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.Subscribe;
|
||||||
import com.velocitypowered.api.event.connection.DisconnectEvent;
|
import com.velocitypowered.api.event.connection.DisconnectEvent;
|
||||||
import com.velocitypowered.api.event.connection.PostLoginEvent;
|
import com.velocitypowered.api.event.connection.PostLoginEvent;
|
||||||
|
import de.steamwar.sql.AuditLog;
|
||||||
import de.steamwar.velocitycore.VelocityCore;
|
import de.steamwar.velocitycore.VelocityCore;
|
||||||
import de.steamwar.sql.Session;
|
import de.steamwar.sql.Session;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
@@ -36,10 +37,12 @@ public class SessionManager extends BasicListener {
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onPostLogin(PostLoginEvent event){
|
public void onPostLogin(PostLoginEvent event){
|
||||||
sessions.put(event.getPlayer(), Timestamp.from(Instant.now()));
|
sessions.put(event.getPlayer(), Timestamp.from(Instant.now()));
|
||||||
|
AuditLog.createJoin(AuditLog.SERVER_NAME_VELOCITY, null, SteamwarUser.get(event.getPlayer().getUniqueId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onDisconnect(DisconnectEvent e){
|
public void onDisconnect(DisconnectEvent e){
|
||||||
|
AuditLog.createLeave(AuditLog.SERVER_NAME_VELOCITY, null, SteamwarUser.get(e.getPlayer().getUniqueId()));
|
||||||
Timestamp timestamp = sessions.remove(e.getPlayer());
|
Timestamp timestamp = sessions.remove(e.getPlayer());
|
||||||
if(timestamp != null) {
|
if(timestamp != null) {
|
||||||
VelocityCore.schedule(() -> Session.insertSession(SteamwarUser.get(e.getPlayer().getUniqueId()).getId(), timestamp)).schedule();
|
VelocityCore.schedule(() -> Session.insertSession(SteamwarUser.get(e.getPlayer().getUniqueId()).getId(), timestamp)).schedule();
|
||||||
|
|||||||
Reference in New Issue
Block a user