mirror of
https://github.com/jonesdevelopment/sonar.git
synced 2026-11-06 01:32:33 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df049a7042 | ||
|
|
8df7874cab | ||
|
|
b132fe839e | ||
|
|
f0bdfa8ef1 | ||
|
|
7899569970 | ||
|
|
16d72fc682 | ||
|
|
425a902ec8 |
No files matched your search
@@ -30,6 +30,7 @@ import xyz.jonesdev.sonar.api.command.SonarCommand;
|
||||
import xyz.jonesdev.sonar.api.database.ormlite.H2DatabaseTypeAdapter;
|
||||
import xyz.jonesdev.sonar.api.database.ormlite.MariaDbDatabaseTypeAdapter;
|
||||
import xyz.jonesdev.sonar.api.database.ormlite.MysqlDatabaseTypeAdapter;
|
||||
import xyz.jonesdev.sonar.api.database.ormlite.PostgresDatabaseTypeAdapter;
|
||||
import xyz.jonesdev.sonar.api.webhook.DiscordWebhook;
|
||||
|
||||
import java.io.File;
|
||||
@@ -139,7 +140,7 @@ public final class SonarConfiguration {
|
||||
|
||||
// General settings
|
||||
logPlayerAddresses = generalConfig.getBoolean("general.log-player-addresses");
|
||||
maxOnlinePerIp = clamp(generalConfig.getInt("general.max-online-per-ip"), 0, 99);
|
||||
maxOnlinePerIp = clamp(generalConfig.getInt("general.max-online-per-ip"), -1, 99);
|
||||
|
||||
// Attack tracker
|
||||
minPlayersForAttack = clamp(generalConfig.getInt("attack-tracker.min-players-for-attack"), 2, 1024);
|
||||
@@ -468,6 +469,13 @@ public final class SonarConfiguration {
|
||||
.version("2.2.220")
|
||||
.relocate("org{}h2", "xyz{}jonesdev{}sonar{}libs{}h2")
|
||||
.build()),
|
||||
POSTGRESQL("PostgreSQL", "jdbc:postgresql://%s:%d/%s%s", new PostgresDatabaseTypeAdapter(),
|
||||
Library.builder()
|
||||
.groupId("org{}postgresql")
|
||||
.artifactId("postgresql")
|
||||
.version("42.7.8")
|
||||
.relocate("org{}postgresql", "xyz{}jonesdev{}sonar{}libs{}postgresql")
|
||||
.build()),
|
||||
NONE("None", null, null, null);
|
||||
|
||||
private final String displayName;
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package xyz.jonesdev.sonar.api.database.ormlite;
|
||||
|
||||
import com.j256.ormlite.jdbc.db.PostgresDatabaseType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public final class PostgresDatabaseTypeAdapter extends PostgresDatabaseType {
|
||||
|
||||
// We need to override the default driver class name
|
||||
// to use the custom relocated Postgres driver
|
||||
@Override
|
||||
protected String @NotNull [] getDriverClassNames() {
|
||||
return new String[]{"xyz.jonesdev.sonar.libs.postgresql.Driver"};
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,7 @@ allprojects {
|
||||
relocate("org.mariadb", "xyz.jonesdev.sonar.libs.mariadb")
|
||||
relocate("org.h2", "xyz.jonesdev.sonar.libs.h2")
|
||||
relocate("com.jhlabs", "xyz.jonesdev.sonar.libs.jhlabs")
|
||||
relocate("org.postgresql", "xyz.jonesdev.sonar.libs.postgresql")
|
||||
|
||||
// Exclude unnecessary metadata information
|
||||
exclude("META-INF/*/**")
|
||||
|
||||
+7
-5
@@ -169,11 +169,13 @@ public abstract class FallbackInboundHandlerAdapter extends ChannelInboundHandle
|
||||
final @NotNull InetAddress inetAddress,
|
||||
final @NotNull Runnable loginPacket) throws Exception {
|
||||
final int maxOnlinePerIp = Sonar.get0().getConfig().getMaxOnlinePerIp();
|
||||
final int newCount = Sonar.get0().getFallback().getOnline().compute(inetAddress,
|
||||
(__, count) -> count == null ? 1 : count + 1);
|
||||
if (newCount > maxOnlinePerIp) {
|
||||
customDisconnect(channel, tooManyOnlinePerIP, protocolVersion);
|
||||
return;
|
||||
if (maxOnlinePerIp > 0) {
|
||||
final int newCount = Sonar.get0().getFallback().getOnline().compute(inetAddress,
|
||||
(__, count) -> count == null ? 1 : count + 1);
|
||||
if (newCount > maxOnlinePerIp) {
|
||||
customDisconnect(channel, tooManyOnlinePerIP, protocolVersion);
|
||||
return;
|
||||
}
|
||||
}
|
||||
loginPacket.run();
|
||||
}
|
||||
|
||||
+4
@@ -53,6 +53,10 @@ public final class FallbackInjectedChannelInitializer extends ChannelInitializer
|
||||
|
||||
@Override
|
||||
protected void initChannel(final Channel channel) throws Exception {
|
||||
if (!channel.isActive()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Invoke the original method
|
||||
try {
|
||||
INIT_CHANNEL_METHOD.invokeExact(originalChannelInitializer, channel);
|
||||
|
||||
@@ -79,7 +79,10 @@ public enum ItemType {
|
||||
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_5)) {
|
||||
return 1042;
|
||||
}
|
||||
return 1059;
|
||||
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
|
||||
return 1059;
|
||||
}
|
||||
return 1104;
|
||||
}, protocolVersion -> {
|
||||
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21)) {
|
||||
return 26;
|
||||
|
||||
@@ -44,7 +44,7 @@ attack-tracker:
|
||||
# Nicméně, IP adresy nemůžou být vystopovány zpátky k hráči, protože Sonar používá UUID na ukládní místo jmeno hráčů
|
||||
database:
|
||||
# Typy datábázi se kterýma Sonar bude pracovat
|
||||
# Typy: NONE, MYSQL, MARIADB, H2
|
||||
# Typy: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Soubor v adresáři zásuvných modulů Sonaru použitý pro databázi H2
|
||||
filename: verified_players
|
||||
|
||||
@@ -41,7 +41,7 @@ attack-tracker:
|
||||
# Beachte: IP adressen werden im Klartext gespeichert. Du bist für die Sicherheit der Datenbank verantwortlich
|
||||
database:
|
||||
# Typ von Datenbank die Sonar verwenden soll, um verifizierte Spielerdaten zu speichern
|
||||
# Mögliche Typen: NONE, MYSQL, MARIADB, H2
|
||||
# Mögliche Typen: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Datei im Plugin-Verzeichnis von Sonar, die für die H2-Datenbank verwendet wird
|
||||
filename: verified_players
|
||||
|
||||
@@ -43,7 +43,7 @@ attack-tracker:
|
||||
# Note: IP addresses are saved in plain text. You are responsible for keeping your database safe!
|
||||
database:
|
||||
# Type of database Sonar uses to store verified players
|
||||
# Possible types: NONE, MYSQL, MARIADB, H2
|
||||
# Possible types: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# File in Sonar's plugin directory used for the H2 database
|
||||
filename: verified_players
|
||||
|
||||
@@ -43,7 +43,7 @@ attack-tracker:
|
||||
# Remarque : Les adresses IP sont enregistrées en texte brut. Vous êtes responsable de la sécurité de votre base de données !
|
||||
database:
|
||||
# Type de base de données utilisé par Sonar pour stocker les joueurs vérifiés
|
||||
# Types possibles : NONE, MYSQL, MARIADB, H2
|
||||
# Types possibles : NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Fichier dans le répertoire des plugins de Sonar utilisé pour la base de données H2
|
||||
filename: verified_players
|
||||
|
||||
@@ -43,7 +43,7 @@ attack-tracker:
|
||||
# შენიშვნა: IP მისამართები ინახება უბრალო ტექსტში. თქვენ ხართ პასუხისმგებელი თქვენი მონაცემთა ბაზის უსაფრთხოებაზე!
|
||||
database:
|
||||
# მონაცემთა ბაზის ტიპები, რომლებიც Sonar-ს შეუძლია გამოიყენოს უკვე შემოწმებული მოთამაშეების შესანახად
|
||||
# შესაძლო ტიპები: NONE, MYSQL, MARIADB, H2
|
||||
# შესაძლო ტიპები: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# ფაილი სონარ_ის ფოლდერში რომელიც ინახავს H2 database_ს
|
||||
filename: verified_players
|
||||
|
||||
@@ -43,7 +43,7 @@ attack-tracker:
|
||||
# Let op: IP-adressen worden opgeslagen in platte tekst. U bent verantwoordelijk voor het veilig houden van uw database!
|
||||
database:
|
||||
# Type database dat Sonar gebruikt om geverifieerde spelers op te slaan
|
||||
# Mogelijke typen: NONE, MYSQL, MARIADB, H2
|
||||
# Mogelijke typen: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Bestand in de plugin-directory van Sonar dat wordt gebruikt voor de H2-database
|
||||
filename: verified_players
|
||||
|
||||
@@ -43,7 +43,7 @@ attack-tracker:
|
||||
# Uwaga: Adresy IP są zapisywane w postaci zwykłego tekstu. Jesteś odpowiedzialny za bezpieczeństwo swojej bazy danych!
|
||||
database:
|
||||
# Typ bazy danych używanej przez Sonar.
|
||||
# Dostępne rodzaje: NONE, MYSQL, MARIADB, H2
|
||||
# Dostępne rodzaje: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Plik w folderze pluginu używany dla bazy danych H2
|
||||
filename: verified_players
|
||||
|
||||
@@ -42,7 +42,7 @@ attack-tracker:
|
||||
# Nota: Endereços IP são salvos em texto simples. Você é responsável por manter seu banco de dados seguro!
|
||||
database:
|
||||
# Tipo de banco de dados que o Sonar usa para armazenar jogadores verificados
|
||||
# Tipos possíveis: NONE, MYSQL, MARIADB, H2
|
||||
# Tipos possíveis: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Arquivo no diretório de plugins do Sonar usado para o banco de dados H2
|
||||
filename: verified_players
|
||||
|
||||
@@ -43,7 +43,7 @@ attack-tracker:
|
||||
# Примечание: IP-адреса сохраняются в виде обычного текста. Вы сами отвечаете за сохранность своей базы данных!
|
||||
database:
|
||||
# Тип базы данных, которую Sonar использует для хранения проверенных игроков.
|
||||
# Возможные типы: NONE, MYSQL, MARIADB, H2
|
||||
# Возможные типы: NONE, MYSQL, MARIADB, POSTGRESQL, H2
|
||||
type: NONE
|
||||
# Файл в каталоге плагинов Sonar, используемый для базы данных H2
|
||||
filename: verified_players
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
group=xyz.jonesdev
|
||||
version=2.1.39
|
||||
version=2.1.41
|
||||
description=A lightweight, effective, and easy-to-use anti-bot plugin for Velocity, BungeeCord, and Bukkit.
|
||||
@@ -1,5 +1,5 @@
|
||||
[versions]
|
||||
netty = "4.2.6.Final"
|
||||
netty = "4.2.7.Final"
|
||||
adventure = "4.24.0"
|
||||
adventure-platform = "4.4.1"
|
||||
bstats = "3.1.0"
|
||||
|
||||
Reference in new issue
Block a user