diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c69857b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +name: Auto-update clients + +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +jobs: + build: + if: ${{ github.ref == 'refs/heads/main' }} + concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Build Jar + run: | + gradle wrapper + ./gradlew shadowJar + + - name: Publish Jar + uses: actions/upload-artifact@v4 + with: + name: OriginBlacklist + path: build/libs/OriginBlacklist.jar \ No newline at end of file diff --git a/.gitignore b/.gitignore index aa5793c..0e084a3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ **/.DS_Store .idea .gradle +gradle build run gradlew diff --git a/README.md b/README.md index bcd3151..a22505e 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ basically just a reimplementation of originblacklist but for eaglerxserver
_Bungee and Bukkit are should work, but have bugs._ - [x] Send blacklists to a discord webhook - [ ] Blacklist subscription URLs +- [ ] Simple blacklist command - [ ] Blacklist -> Whitelist - [ ] IP blacklisting @@ -26,5 +27,5 @@ basically just a reimplementation of originblacklist but for eaglerxserver $ git clone https://github.com/colbster937/originblacklist.git $ cd originblacklist $ gradle wrapper -$ ./gradle. shadowJar +$ ./gradlew shadowJar ``` diff --git a/build.gradle b/build.gradle index 8cf2bbb..82a694e 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,9 @@ plugins { group = 'dev.colbster937' -version = '1.0.1' +version = '1.0.2' +description = 'A reimplementation of OriginBlacklist for EaglerXServer' +def targetJavaVersion = 17 repositories { mavenCentral() @@ -47,47 +49,36 @@ dependencies { compileOnly("net.lax1dude.eaglercraft.backend:api-bungee:1.0.0") compileOnly("net.lax1dude.eaglercraft.backend:api-bukkit:1.0.0") implementation("org.yaml:snakeyaml:2.2") - implementation("net.kyori:adventure-api:4.20.0") implementation("net.kyori:adventure-text-serializer-legacy:4.20.0") implementation("net.kyori:adventure-text-minimessage:4.20.0") } tasks { runVelocity { - // Configure the Velocity version for our task. - // This is the only required configuration besides applying the plugin. - // Your plugin's jar (or shadowJar if present) will be used automatically. velocityVersion("3.3.0-SNAPSHOT") } } -def targetJavaVersion = 17 java { toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) } +processResources { + filesMatching(['plugin.yml', 'bungee.yml', 'velocity-plugin.json']) { + expand( + version: project.version, + description: project.description + ) + } +} + shadowJar { relocate 'org.yaml.snakeyaml', 'dev.colbster937.shaded.snakeyaml' - archiveClassifier.set('all') + archiveVersion.set('') + archiveClassifier.set('') } tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' options.release.set(targetJavaVersion) -} - -/*def templateSource = file('src/main/templates') -def templateDest = layout.buildDirectory.dir('generated/sources/templates') -def generateTemplates = tasks.register('generateTemplates', Copy) { task -> - def props = ['version': project.version] - task.inputs.properties props - - task.from templateSource - task.into templateDest - task.expand props -} - -sourceSets.main.java.srcDir(generateTemplates.map { it.outputs }) - -project.idea.project.settings.taskTriggers.afterSync generateTemplates -project.eclipse.synchronizationTasks(generateTemplates)*/ +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e644113..0000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index a441313..0000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/src/main/java/dev/colbster937/originblacklist/base/Base.java b/src/main/java/dev/colbster937/originblacklist/base/Base.java index 07cdcd4..17a4ce7 100644 --- a/src/main/java/dev/colbster937/originblacklist/base/Base.java +++ b/src/main/java/dev/colbster937/originblacklist/base/Base.java @@ -1,11 +1,10 @@ package dev.colbster937.originblacklist.base; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import net.lax1dude.eaglercraft.backend.server.api.IEaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.IEaglerPlayer; -import net.lax1dude.eaglercraft.backend.server.api.EnumWebSocketHeader; -import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftInitializePlayerEvent; +import net.lax1dude.eaglercraft.backend.server.api.*; +import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent; import net.lax1dude.eaglercraft.backend.server.api.query.IMOTDConnection; @@ -46,27 +45,30 @@ public class Base { void error(String msg); } - public static void handleConnection(IEaglercraftInitializePlayerEvent e) { - IEaglerPlayer plr = e.getPlayer(); - String origin = plr.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); - String brand = plr.getEaglerBrandString(); + public static void handleConnection(IEaglercraftLoginEvent e) { + IEaglerLoginConnection conn = e.getLoginConnection(); + String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); + String brand = conn.getEaglerBrandString(); if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) { for (String origin1 : config.blacklist.origins) { if (matches(origin, origin1)) { - plr.disconnect(kick("origin", "website", origin)); - webhook(plr, origin, brand, "origin"); + e.setKickMessage(kick("origin", "website", origin)); + webhook(conn, origin, brand, "origin"); return; } } } else { - plr.disconnect(kick("origin", "website", origin)); - webhook(plr, "null", brand, "origin"); + if (origin != "null" || origin != null) { + e.setKickMessage(kick("origin", "website", origin)); + webhook(conn, "null", brand, "origin"); + return; + } } if (brand != "null" && brand != null) { for (String brand1 : config.blacklist.brands) { if (matches(brand, brand1)) { - plr.disconnect(kick("brand", "client", brand)); - webhook(plr, origin, brand, "brand"); + e.setKickMessage(kick("brand", "client", brand)); + webhook(conn, origin, brand, "brand"); return; } } @@ -82,9 +84,11 @@ public class Base { .replace("%blocktype%", "origin") .replace("%easyblocktype%", "website") .replace("%blocked%", origin)) - .map(line -> LegacyComponentSerializer.legacySection() - .serialize(MiniMessage.miniMessage().deserialize(line))) - .collect(Collectors.toList()); + .map(line -> LegacyComponentSerializer.legacySection().serialize( + MiniMessage.miniMessage().deserialize( + line + ) + )).collect(Collectors.toList()); if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) { for (String origin1 : config.blacklist.origins) { if (matches(origin, origin1)) { @@ -93,7 +97,9 @@ public class Base { } } } else { - setMOTD(conn, m); + if (origin != "null" || origin != null) { + setMOTD(conn, m); + } } } } @@ -131,19 +137,16 @@ public class Base { return text1.toLowerCase().matches(text2.replace(".", "\\.").replaceAll("\\*", ".*").toLowerCase()); } - public static String kick(String type, String easytype, String value) { - return LegacyComponentSerializer.legacySection().serialize( - MiniMessage.miniMessage().deserialize( - config.messages.kick - .replace("%blocktype%", type) - .replace("%easyblocktype%", easytype) - .replace("%blocked%", value) - ) + public static Component kick(String type, String easytype, String value) { + return MiniMessage.miniMessage().deserialize( + config.messages.kick + .replace("%blocktype%", type) + .replace("%easyblocktype%", easytype) + .replace("%blocked%", value) ); } - - public static void webhook(IEaglerPlayer plr, String origin, String brand, String type) { + public static void webhook(IEaglerPendingConnection plr, String origin, String brand, String type) { String webhook = config.discord.webhook; if (webhook == null || webhook.isBlank()) return; @@ -165,7 +168,7 @@ public class Base { } ] } - """, type, plr.getUsername(), addr, protocol, origin, brand, userAgent, rewind); + """, type, plr.getAuthUsername(), addr, protocol, origin, brand, userAgent, rewind); try { HttpURLConnection conn = (HttpURLConnection) new URL(webhook).openConnection(); diff --git a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java index 1306f5f..ec2f94e 100644 --- a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java +++ b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java @@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bukkit; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.bukkit.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftInitializePlayerEvent; +import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftMOTDEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -29,7 +29,7 @@ public class OriginBlacklistBukkit extends JavaPlugin implements Listener { } @EventHandler - public void onLogin(EaglercraftInitializePlayerEvent event) { + public void onLogin(EaglercraftLoginEvent event) { Base.handleConnection(event); } diff --git a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java index 2b74a3e..c7d0fa3 100644 --- a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java +++ b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java @@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bungee; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.bungee.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftInitializePlayerEvent; +import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftMOTDEvent; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.Listener; @@ -29,7 +29,7 @@ public class OriginBlacklistBungee extends Plugin implements Listener { } @EventHandler - public void onLogin(EaglercraftInitializePlayerEvent event) { + public void onLogin(EaglercraftLoginEvent event) { Base.handleConnection(event); } diff --git a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java index c081bc6..c70466d 100644 --- a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java +++ b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java @@ -3,24 +3,13 @@ package dev.colbster937.originblacklist.velocity; import com.google.inject.Inject; import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; import com.velocitypowered.api.event.Subscribe; -import com.velocitypowered.api.plugin.Plugin; -import com.velocitypowered.api.plugin.Dependency; import com.velocitypowered.api.proxy.ProxyServer; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.velocity.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftInitializePlayerEvent; -import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent; +import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftMOTDEvent; import org.slf4j.Logger; -@Plugin( - id = "originblacklist", - name = "OriginBlacklist", - version = "1.0.1", - authors = {"Colbster937"}, - description = "A reimplementation of OriginBlacklist for EaglerXServer", - dependencies = {@Dependency(id = "eaglerxserver")} -) public class OriginBlacklistVelocity { private final ProxyServer proxy; @@ -47,12 +36,12 @@ public class OriginBlacklistVelocity { } @Subscribe - public void onLogin(EaglercraftInitializePlayerEvent event) { + public void onLogin(EaglercraftLoginEvent event) { Base.handleConnection(event); } @Subscribe - public void onMOTD(IEaglercraftMOTDEvent event) { + public void onMOTD(EaglercraftMOTDEvent event) { Base.handleMOTD(event); } } diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml index a343035..7916bf5 100644 --- a/src/main/resources/bungee.yml +++ b/src/main/resources/bungee.yml @@ -1,7 +1,7 @@ name: OriginBlacklist -version: 1.0.1 +version: ${version} main: dev.colbster937.originblacklist.bungee.OriginBlacklistBungee -description: A reimplementation of OriginBlacklist for EaglerXServer +description: ${description} author: Colbster937 depends: - EaglercraftXServer \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c5f722e..e583b2c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: OriginBlacklist -version: 1.0.1 +version: ${version} main: dev.colbster937.originblacklist.bukkit.OriginBlacklistBukkit -description: A reimplementation of OriginBlacklist for EaglerXServer +description: ${description} author: Colbster937 depend: - EaglercraftXServer diff --git a/src/main/resources/velocity-plugin.json b/src/main/resources/velocity-plugin.json new file mode 100644 index 0000000..bf1052d --- /dev/null +++ b/src/main/resources/velocity-plugin.json @@ -0,0 +1,14 @@ +{ + "id": "originblacklist", + "name": "OriginBlacklist", + "version": "${version}", + "description": "${description}", + "main": "dev.colbster937.originblacklist.velocity.OriginBlacklistVelocity", + "authors": ["Colbster937"], + "dependencies": [ + { + "id": "eaglerxserver", + "optional": false + } + ] +}