geforkt von SteamWar/BungeeCore
Merge branch 'master' into ListCommand
# Conflicts: # src/de/steamwar/bungeecore/BungeeCore.java
Dieser Commit ist enthalten in:
Commit
e07000ed62
@ -108,6 +108,7 @@ public class BungeeCore extends Plugin {
|
|||||||
new DenyCommand("watchcat", "wc");
|
new DenyCommand("watchcat", "wc");
|
||||||
new TeamCommand();
|
new TeamCommand();
|
||||||
new ServerTeamchatCommand();
|
new ServerTeamchatCommand();
|
||||||
|
new DevCommand();
|
||||||
new EventCommand();
|
new EventCommand();
|
||||||
new EventreloadCommand();
|
new EventreloadCommand();
|
||||||
new EventRescheduleCommand();
|
new EventRescheduleCommand();
|
||||||
@ -122,6 +123,7 @@ public class BungeeCore extends Plugin {
|
|||||||
new PollresultCommand();
|
new PollresultCommand();
|
||||||
new ResourcereloadCommand();
|
new ResourcereloadCommand();
|
||||||
new ListCommand();
|
new ListCommand();
|
||||||
|
new StatCommand();
|
||||||
|
|
||||||
if(!EVENT_MODE){
|
if(!EVENT_MODE){
|
||||||
new WebregisterCommand();
|
new WebregisterCommand();
|
||||||
|
97
src/de/steamwar/bungeecore/commands/DevCommand.java
Normale Datei
97
src/de/steamwar/bungeecore/commands/DevCommand.java
Normale Datei
@ -0,0 +1,97 @@
|
|||||||
|
/*
|
||||||
|
* 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.bungeecore.commands;
|
||||||
|
|
||||||
|
import de.steamwar.bungeecore.Message;
|
||||||
|
import net.md_5.bungee.api.CommandSender;
|
||||||
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class DevCommand extends BasicCommand {
|
||||||
|
|
||||||
|
private final File DevServerDir = new File("/configs/DevServer");
|
||||||
|
|
||||||
|
public DevCommand() {
|
||||||
|
super("dev", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (!(sender instanceof ProxiedPlayer)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String[] devServer = DevServerDir.list();
|
||||||
|
if (devServer == null || devServer.length == 0) {
|
||||||
|
Message.send("DEV_NO_SERVER", sender);
|
||||||
|
} else if (devServer.length == 1) {
|
||||||
|
String[] server = devServer[0].split("\\.");
|
||||||
|
sendToServer((ProxiedPlayer) sender, server[0], Integer.parseInt(server[1]));
|
||||||
|
} else {
|
||||||
|
if (args.length == 0) {
|
||||||
|
send(devServer, (ProxiedPlayer) sender, s -> s.equalsIgnoreCase(((ProxiedPlayer) sender).getDisplayName()), () -> Message.send("DEV_UNKNOWN_SERVER", sender));
|
||||||
|
} else {
|
||||||
|
send(devServer, (ProxiedPlayer) sender, args[0]::equalsIgnoreCase, () -> Message.send("DEV_NO_SERVER", sender));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void send(String[] devServer, ProxiedPlayer sender, Predicate<String> test, Runnable error) {
|
||||||
|
for (String s : devServer) {
|
||||||
|
String[] server = s.split("\\.");
|
||||||
|
if (test.test(server[0])) {
|
||||||
|
sendToServer(sender, server[0], Integer.parseInt(server[1]));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
error.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendToServer(ProxiedPlayer proxiedPlayer, String name, int port) {
|
||||||
|
InetSocketAddress address = new InetSocketAddress("127.0.0.1", port);
|
||||||
|
ServerInfo serverInfo = ProxyServer.getInstance().constructServerInfo("Dev-" + name, address, "SteamWar.de - Subserver", false);
|
||||||
|
proxiedPlayer.connect(serverInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
|
||||||
|
if (!(sender instanceof ProxiedPlayer)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
String[] devSever = DevServerDir.list();
|
||||||
|
if (devSever == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
if (args.length > 1) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return Arrays.stream(devSever).map(s -> s.split("\\.")).map(s -> s[0]).filter(s -> {
|
||||||
|
if (args.length == 0) return true;
|
||||||
|
return s.startsWith(args[0]);
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
}
|
66
src/de/steamwar/bungeecore/commands/StatCommand.java
Normale Datei
66
src/de/steamwar/bungeecore/commands/StatCommand.java
Normale Datei
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
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.bungeecore.commands;
|
||||||
|
|
||||||
|
import de.steamwar.bungeecore.LoadEvaluation;
|
||||||
|
import de.steamwar.bungeecore.Message;
|
||||||
|
import net.md_5.bungee.api.CommandSender;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class StatCommand extends BasicCommand {
|
||||||
|
|
||||||
|
public StatCommand() {
|
||||||
|
super("stat", "bungeecore.softreload", "stats");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
try {
|
||||||
|
Process process = new ProcessBuilder("ps", "x").start();
|
||||||
|
process.waitFor();
|
||||||
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
||||||
|
Map<String, Integer> serverCounts = new HashMap<>();
|
||||||
|
bufferedReader.lines().forEach(s -> {
|
||||||
|
if (!s.contains("--port")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String server = "SW";
|
||||||
|
if (s.contains("ssh -L")) {
|
||||||
|
server = s.substring(s.indexOf("ssh -L") + 6).split(" ")[2];
|
||||||
|
}
|
||||||
|
serverCounts.put(server, serverCounts.computeIfAbsent(server, s1 -> 0) + 1);
|
||||||
|
});
|
||||||
|
serverCounts.forEach((s, integer) -> {
|
||||||
|
if (s.equals("SW")) {
|
||||||
|
Message.send("STAT_SERVER", sender, s, LoadEvaluation.getRamPercentage(), LoadEvaluation.getCPULoad(), integer);
|
||||||
|
} else {
|
||||||
|
Message.send("STAT_SERVER", sender, s.toUpperCase(), LoadEvaluation.getRemoteRamPercentage(s), LoadEvaluation.getRemoteCPULoad(s), integer);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new SecurityException(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -19,10 +19,7 @@
|
|||||||
|
|
||||||
package de.steamwar.bungeecore.listeners;
|
package de.steamwar.bungeecore.listeners;
|
||||||
|
|
||||||
import de.steamwar.bungeecore.BungeeCore;
|
import de.steamwar.bungeecore.*;
|
||||||
import de.steamwar.bungeecore.Message;
|
|
||||||
import de.steamwar.bungeecore.Servertype;
|
|
||||||
import de.steamwar.bungeecore.Subserver;
|
|
||||||
import de.steamwar.bungeecore.commands.BauCommand;
|
import de.steamwar.bungeecore.commands.BauCommand;
|
||||||
import de.steamwar.bungeecore.commands.TpCommand;
|
import de.steamwar.bungeecore.commands.TpCommand;
|
||||||
import de.steamwar.bungeecore.comms.packets.PingPacket;
|
import de.steamwar.bungeecore.comms.packets.PingPacket;
|
||||||
@ -51,6 +48,8 @@ public class ChatListener extends BasicListener {
|
|||||||
sanitize7(e);
|
sanitize7(e);
|
||||||
if(e.getMessage().startsWith("/"))
|
if(e.getMessage().startsWith("/"))
|
||||||
onCommand(e);
|
onCommand(e);
|
||||||
|
else if(e.getMessage().startsWith("+"))
|
||||||
|
onPlusMessage(e);
|
||||||
else
|
else
|
||||||
onChat(e);
|
onChat(e);
|
||||||
}
|
}
|
||||||
@ -64,6 +63,10 @@ public class ChatListener extends BasicListener {
|
|||||||
e.setMessage("/" + e.getMessage().substring(1));
|
e.setMessage("/" + e.getMessage().substring(1));
|
||||||
}else if(begin.startsWith("77") && begin.substring(2).matches("[A-Za-z]+")){
|
}else if(begin.startsWith("77") && begin.substring(2).matches("[A-Za-z]+")){
|
||||||
e.setMessage("//" + e.getMessage().substring(2));
|
e.setMessage("//" + e.getMessage().substring(2));
|
||||||
|
}else if(begin.startsWith("7/") && begin.substring(2).matches("[A-Za-z]+")){
|
||||||
|
e.setMessage("//" + e.getMessage().substring(2));
|
||||||
|
}else if(begin.startsWith("/7") && begin.substring(2).matches("[A-Za-z]+")){
|
||||||
|
e.setMessage("//" + e.getMessage().substring(2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,6 +119,20 @@ public class ChatListener extends BasicListener {
|
|||||||
scheduler.schedule(BungeeCore.get(), () -> Message.sendPrefixless("MSG_FORMAT", sender, "YoyoNow", sender.getDisplayName(), Message.parse("CHAT_YOYONOW_4", sender)), 12, TimeUnit.SECONDS);
|
scheduler.schedule(BungeeCore.get(), () -> Message.sendPrefixless("MSG_FORMAT", sender, "YoyoNow", sender.getDisplayName(), Message.parse("CHAT_YOYONOW_4", sender)), 12, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onPlusMessage(ChatEvent e) {
|
||||||
|
ProxiedPlayer p = (ProxiedPlayer) e.getSender();
|
||||||
|
Subserver subserver = Subserver.getSubserver(p);
|
||||||
|
if(subserver instanceof Bauserver) {
|
||||||
|
String[] smolArgs = e.getMessage().substring(1).split(" ");
|
||||||
|
String[] args = new String[smolArgs.length + 1];
|
||||||
|
args[0] = "";
|
||||||
|
System.arraycopy(smolArgs, 0, args, 1, smolArgs.length);
|
||||||
|
localChat(e, args);
|
||||||
|
} else {
|
||||||
|
onChat(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void onChat(ChatEvent e){
|
private void onChat(ChatEvent e){
|
||||||
if(e.getSender() instanceof ProxiedPlayer){
|
if(e.getSender() instanceof ProxiedPlayer){
|
||||||
ProxiedPlayer sender = (ProxiedPlayer) e.getSender();
|
ProxiedPlayer sender = (ProxiedPlayer) e.getSender();
|
||||||
|
@ -9,6 +9,9 @@ INVALID_TIME=§cUngültige Zeitangabe.
|
|||||||
|
|
||||||
STEAMWAR_BRAND=§eSteam§8War.de §7({0}) §r<- §e{1} §7({2})§r
|
STEAMWAR_BRAND=§eSteam§8War.de §7({0}) §r<- §e{1} §7({2})§r
|
||||||
|
|
||||||
|
DEV_NO_SERVER=§cDer Server ist derzeit nicht erreichbar.
|
||||||
|
DEV_UNKNOWN_SERVER=§cBitte gib einen DevServer an.
|
||||||
|
|
||||||
#ModLoader blocker
|
#ModLoader blocker
|
||||||
MODLOADER_INSTALLED=§7Du hast §e{0} §7installiert. Daher kannst du keinen Arenen beitreten.
|
MODLOADER_INSTALLED=§7Du hast §e{0} §7installiert. Daher kannst du keinen Arenen beitreten.
|
||||||
MODLOADER_DENIED=§cMit Fabric, Forge und LiteLoader kannst du keinen Arenen beitreten.
|
MODLOADER_DENIED=§cMit Fabric, Forge und LiteLoader kannst du keinen Arenen beitreten.
|
||||||
@ -104,6 +107,7 @@ MOD_YELLOW_PLUR=§7Deaktiviere die Mods\n§e{0}\n§7um weiter auf §eSteam§8War
|
|||||||
|
|
||||||
#Various commands
|
#Various commands
|
||||||
ALERT=§f{0}
|
ALERT=§f{0}
|
||||||
|
STAT_SERVER=§7Server §f{0} - §7Ram §f{1} §7CPU §f{2} §7Server Count §f{3}
|
||||||
|
|
||||||
#Ban&Mute-Command
|
#Ban&Mute-Command
|
||||||
BAN_TEAM_BANNED={0} §c{1} wurde von {2} {3} gebannt. §f§lGrund: §f{4}
|
BAN_TEAM_BANNED={0} §c{1} wurde von {2} {3} gebannt. §f§lGrund: §f{4}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren