SteamWar/BungeeCore
Archiviert
13
2

Fabric Mod Sender Integration. Mod itself is not final #307

Zusammengeführt
Lixfel hat 12 Commits von fabric_mod_sender nach master 2022-03-26 10:01:51 +01:00 zusammengeführt
Mitglied

Mod has to get a tiny bit of updating. But this part works non the less.

Mod has to get a tiny bit of updating. But this part works non the less.
zOnlyKroks hat 1 Commit 2022-03-11 19:22:05 +01:00 hinzugefügt
Fabric Mod Sender Integration. Mod itself is not final
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
24075306fd
Lixfel hat 2022-03-11 23:44:51 +01:00 Änderungen angefragt
Lixfel hat einen Kommentar hinterlassen
Besitzer

Ich würde mir wünschen, dass noch überprüft wird, dass das Packet genau so formatiert ist/aussieht, als würde es von einem unmodifizierten FabricModChecker geschickt werden. Sollten dabei Abweichungen auffallen, sollte es sofort zu einem automatisierten Permabann + WARNING-Lognachricht kommen (da dann jemand versucht, den FabricModChecker zu umgehen).

Folgende Dinge sollten dabei auf Abweichungen geprüft werden:

  • Formatierung des Strings (Leerzeilen, Tabs, Newlines...)
  • Reihenfolge der Mods (falls es da eine vorhersagbare Reihenfolge gibt)
  • Vorhandensein von allen permanent vorhandenen Mods (wie (falls es die gibt) z.B. "minecraft", "fabric:loader", "fabricmodchecker")
Ich würde mir wünschen, dass noch überprüft wird, dass das Packet genau so formatiert ist/aussieht, als würde es von einem unmodifizierten FabricModChecker geschickt werden. Sollten dabei Abweichungen auffallen, sollte es sofort zu einem automatisierten Permabann + WARNING-Lognachricht kommen (da dann jemand versucht, den FabricModChecker zu umgehen). Folgende Dinge sollten dabei auf Abweichungen geprüft werden: - Formatierung des Strings (Leerzeilen, Tabs, Newlines...) - Reihenfolge der Mods (falls es da eine vorhersagbare Reihenfolge gibt) - Vorhandensein von allen permanent vorhandenen Mods (wie (falls es die gibt) z.B. "minecraft", "fabric:loader", "fabricmodchecker")
@ -0,0 +1,45 @@
package de.steamwar.bungeecore.listeners.mods;
Besitzer

License-Header.

License-Header.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +26,4 @@
dataString = dataString.replace(x, ' ');
dataString = dataString.replaceAll("\\s+","");
String[] parts = dataString.split(",");
Besitzer

Das Stringhandling schaut mir ziemlich Spanisch aus, ist das hier ein sehr primitiver JSON-Parser?

Das Stringhandling schaut mir ziemlich Spanisch aus, ist das hier ein sehr primitiver JSON-Parser?
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +34,4 @@
mods.add(Mod.get(mod, Mod.Platform.FABRIC));
}
if (e.getSender() instanceof ProxiedPlayer) {
Besitzer

Das bitte zu Anfang prüfen (und ggf. verwerfen), wenn das Packet vom Subserver kommt, ist das ja uninteressant für uns.

Das bitte zu Anfang prüfen (und ggf. verwerfen), wenn das Packet vom Subserver kommt, ist das ja uninteressant für uns.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +38,4 @@
ProxiedPlayer player = (ProxiedPlayer) e.getSender();
if(!Utils.handleMods(player, mods))
player.disconnect("");
Besitzer

Ich glaube, das disconnecten musst du nicht mehr von Hand machen (kannst ja mal im LabymodHandler oder Forge1.12Handler nachschauen (Forge 1.13+ ist da etwas spezieller weil in LOGIN)

Ich glaube, das disconnecten musst du nicht mehr von Hand machen (kannst ja mal im LabymodHandler oder Forge1.12Handler nachschauen (Forge 1.13+ ist da etwas spezieller weil in LOGIN)
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +39,4 @@
if(!Utils.handleMods(player, mods))
player.disconnect("");
}
Besitzer

Sollten die Mods einwandfrei sein, sollte der Spieler auf eine Whitelist kommen, dass er auch Arenenserver betreten kann (siehe ModLoaderBlocker). Dazu am Besten den Spieler eine Message senden á'la "Deine Mods wurden überprüft, du darfst Arenen betreten".

Sollten die Mods einwandfrei sein, sollte der Spieler auf eine Whitelist kommen, dass er auch Arenenserver betreten kann (siehe ModLoaderBlocker). Dazu am Besten den Spieler eine Message senden á'la "Deine Mods wurden überprüft, du darfst Arenen betreten".
zOnlyKroks markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-03-12 11:57:00 +01:00 hinzugefügt
Parsing ist kaputt.
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
3ecd31c41e
zOnlyKroks hat 1 Commit 2022-03-12 12:26:39 +01:00 hinzugefügt
Parsing ist kaputt.
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
515c6f86f9
zOnlyKroks hat 1 Commit 2022-03-12 13:10:58 +01:00 hinzugefügt
Parsing ist kaputt.
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
3a6f3fb4c0
zOnlyKroks hat 1 Commit 2022-03-12 13:36:04 +01:00 hinzugefügt
Parsing funktioniert + notwendige mods check
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
657c03dff1
zOnlyKroks hat 1 Commit 2022-03-12 13:54:27 +01:00 hinzugefügt
Allow Fabric on Fight Servers
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
c239dc7809
zOnlyKroks hat ein Review von Lixfel 2022-03-13 12:56:51 +01:00 angefragt
Lixfel hat 2022-03-14 09:42:20 +01:00 Änderungen angefragt
@ -0,0 +41,4 @@
public class Fabric extends BasicListener {
private final List<String> neededMods = new LinkedList<>();
Besitzer

Warum ist das eine LinkedList? Wäre der korrekte Datentyp hier nicht ein Set?

Warum ist das eine LinkedList? Wäre der korrekte Datentyp hier nicht ein Set?
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +67,4 @@
byte[] data = e.getData();
Utils.VarInt varInt = Utils.readVarInt(data,0);
data = Arrays.copyOfRange(data,varInt.length, data.length);
Besitzer

Du könntest das Packet prinzipiell vereinfachen, indem du den String ohne Länge vorher schickst. Der String wäre dann das gesamte Packet. Ansonsten würde ich mir wünschen, dass du überprüfst, dass der VarInt tatsächlich die Länge des restlichen Packets enthält (und falls Fehler Bann), derzeit nutzt du ja den VarInt gar nicht.

Du könntest das Packet prinzipiell vereinfachen, indem du den String ohne Länge vorher schickst. Der String wäre dann das gesamte Packet. Ansonsten würde ich mir wünschen, dass du überprüfst, dass der VarInt tatsächlich die Länge des restlichen Packets enthält (und falls Fehler Bann), derzeit nutzt du ja den VarInt gar nicht.
Autor
Mitglied

1 teres kann ich nicht tun, da dieser varint von minecraft direkt angepappt wird. zweites kann ich machen.

1 teres kann ich nicht tun, da dieser varint von minecraft direkt angepappt wird. zweites kann ich machen.
Lixfel markierte diese Unterhaltung als gelöst
@ -0,0 +69,4 @@
data = Arrays.copyOfRange(data,varInt.length, data.length);
String dataString = new String(data, StandardCharsets.UTF_8);
Besitzer

Hier kann eine CharsetException oder ähnliches auftreten, in dem Fall wurde (offensichtlich) auch am fabricmodsender herumgepfuscht.

Hier kann eine CharsetException oder ähnliches auftreten, in dem Fall wurde (offensichtlich) auch am fabricmodsender herumgepfuscht.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +75,4 @@
JsonArray array = new JsonParser().parse(dataString).getAsJsonArray();
for(int i = 0; i < array.size(); i++) {
mods.add(Mod.get(array.get(i).getAsString(), Mod.Platform.FABRIC));
Besitzer

Kannst du hier nicht for(X modIdentifier : array) machen?

Kannst du hier nicht for(X modIdentifier : array) machen?
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +82,4 @@
if(!isSorted) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
user.punish(Punishment.PunishmentType.Ban, Timestamp.from(Instant.now()), "§7Du hast probiert den FabricModSender zu umgehen!", 0, true);
Besitzer

Das würde ich mir einmal Multilingual mit Message.parse(Prefixless?)() wünschen.

Das würde ich mir einmal Multilingual mit Message.parse(Prefixless?)() wünschen.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +90,4 @@
if(!modsAreAbsent(mods)) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
user.punish(Punishment.PunishmentType.Ban, Timestamp.from(Instant.now()), "§7Du hast probiert den FabricModSender zu umgehen!", 0, true);
BungeeCore.log(Level.SEVERE, user.getUserName() + " " + user.getId() + " wurde automatisch gebannt, da er den FabricModSender editiert hatte.");
Besitzer

Diese drei Codezeilen hast du doppelt drin, daher würde ich mir wünschen, dass du die in eine Funktion auslagerst.

Diese drei Codezeilen hast du doppelt drin, daher würde ich mir wünschen, dass du die in eine Funktion auslagerst.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +94,4 @@
return;
}
if(Utils.handleMods(player,mods)) checkedPlayers.add(player);
Besitzer

Du solltest lieber den Spieler aus den Storage.fabricPlayers entfernen (und den Spieler darüber informieren, dass die Mods geprüft wurden und er deshalb auf Arenen darf). Das derzeitige System hat das Problem, sobald ein softreload gemacht wird, können geprüfte Spieler eben nicht mehr auf Arenen.

Du solltest lieber den Spieler aus den Storage.fabricPlayers entfernen (und den Spieler darüber informieren, dass die Mods geprüft wurden und er deshalb auf Arenen darf). Das derzeitige System hat das Problem, sobald ein softreload gemacht wird, können geprüfte Spieler eben nicht mehr auf Arenen.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +95,4 @@
}
if(Utils.handleMods(player,mods)) checkedPlayers.add(player);
}catch (Exception ex) {
Besitzer

Das Try-Catch gefällt mir gar nicht. Mir ist bewusst, dass beim JsonParser Fehler fliegen können, in dem Fall solltest du aber nur den JsonParser try-catchen und falls das auftritt auch wieder bannen.

Das Try-Catch gefällt mir gar nicht. Mir ist bewusst, dass beim JsonParser Fehler fliegen können, in dem Fall solltest du aber nur den JsonParser try-catchen und falls das auftritt auch wieder bannen.
zOnlyKroks markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-03-23 16:50:55 +01:00 hinzugefügt
Merge branch 'master' into fabric_mod_sender
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
626a876f0f
zOnlyKroks hat 1 Commit 2022-03-23 17:02:48 +01:00 hinzugefügt
Messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
d500c376fa
zOnlyKroks hat 1 Commit 2022-03-23 17:03:34 +01:00 hinzugefügt
Fix Error
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
1675b1dc9c
zOnlyKroks hat 1 Commit 2022-03-23 17:04:41 +01:00 hinzugefügt
Fix Error
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
a7525dd8a1
zOnlyKroks hat ein Review von Lixfel 2022-03-23 19:00:25 +01:00 angefragt
Lixfel hat 2022-03-23 19:14:49 +01:00 Änderungen angefragt
@ -0,0 +124,4 @@
return isSorted;
}
private boolean modsAreAbsent(List<Mod> mods) {
Besitzer

Der Methodenname ist irreführend, denn der zurückgegebene Boolean ist ja, dass kein Mod fehlt.

Der Methodenname ist irreführend, denn der zurückgegebene Boolean ist ja, dass kein Mod fehlt.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +128,4 @@
return mods.stream()
.map(Mod::getModName)
.filter(neededMods::contains)
.distinct()
Besitzer

Distinct darf hier nicht nötig sein!

Distinct darf hier nicht nötig sein!
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +138,4 @@
Message.parse("MODIFICATION_BAN_MESSAGE", player),
0,
true);
BungeeCore.log(Level.SEVERE, user.getUserName() + " " + user.getId() + Message.parse("MODIFICATION_BAN_LOG", player));
Besitzer

Änderung siehe BungeeCore.properties, Message.parse(..., player, user.getUserName(), user.getId())

Änderung siehe BungeeCore.properties, Message.parse(..., player, user.getUserName(), user.getId())
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -586,0 +586,4 @@
#Fabric Mod Sender
MODIFICATION_BAN_MESSAGE = "Du hast probiert den FabricModSender zu umgehen / zu modifizieren!"
MODIFICATION_BAN_LOG = " hat probiert den Fabric Mod Sender zu editieren / umzugehen!"
Besitzer

Keine Leerzeichen um das =. Keine " um den String herum. Statt dem " hat" solltest du "{0} {1} hat" verwenden (dann übergibst du das noch als Parameter und überlässt die Formatierung dem MessageSystem.

Keine Leerzeichen um das =. Keine " um den String herum. Statt dem " hat" solltest du "{0} {1} hat" verwenden (dann übergibst du das noch als Parameter und überlässt die Formatierung dem MessageSystem.
zOnlyKroks markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-03-23 19:24:49 +01:00 hinzugefügt
Fix Errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
98326fcaa0
zOnlyKroks hat ein Review von Lixfel 2022-03-23 19:55:02 +01:00 angefragt
Lixfel hat 2022-03-23 20:05:15 +01:00 Änderungen angefragt
@ -0,0 +137,4 @@
Message.parse("MODIFICATION_BAN_MESSAGE", player, user.getUserName(), user.getId()),
0,
true);
BungeeCore.log(Level.SEVERE, user.getUserName() + " " + user.getId() + Message.parse("MODIFICATION_BAN_LOG", player, user.getUserName()));
Besitzer

Hier den String nicht mehr zusammenaddieren (Message.parse-Ergebnis enthält ja schon alles)

Hier den String nicht mehr zusammenaddieren (Message.parse-Ergebnis enthält ja schon alles)
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -585,1 +585,4 @@
RANK_NEEDED_FIGHTS_LEFT={0} §8(§7noch §e{1}§7 Kämpfe nötig§8)
#Fabric Mod Sender
MODIFICATION_BAN_MESSAGE="Du hast probiert den FabricModSender zu umgehen / zu modifizieren!"
Besitzer

Immer noch: "" entfernen! Und in der Zeile drunter das leerzeichen

Immer noch: "" entfernen! Und in der Zeile drunter das leerzeichen
zOnlyKroks markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-03-24 13:59:18 +01:00 hinzugefügt
Fix Errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
756b4da84e
zOnlyKroks hat ein Review von Lixfel 2022-03-24 13:59:44 +01:00 angefragt
Lixfel hat die Änderungen 2022-03-24 14:23:29 +01:00 genehmigt
Lixfel hat Commit 7934c37526 in master 2022-03-26 10:01:51 +01:00 gemerged
Lixfel löschte die Branch fabric_mod_sender 2022-03-26 10:01:52 +01:00
Dieses Repo ist archiviert. Du kannst Pull-Requests nicht kommentieren.
Keine Beschreibung angegeben.