diff --git a/build.gradle.kts b/build.gradle.kts index ebcc1f2..bf8bdf1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,6 +3,7 @@ plugins { java // Tell gradle this is a java project. eclipse // Import eclipse plugin for IDE integration. kotlin("jvm") version "2.0.21" // Import kotlin jvm plugin for kotlin/java integration. + id("io.freefair.lombok") version "8.13.1" // Automatic lombok support. } java { @@ -47,8 +48,6 @@ dependencies { compileOnly("mysql:mysql-connector-java:8.0.32") compileOnly("org.purpurmc.purpur:purpur-api:1.19.4-R0.1-SNAPSHOT") compileOnly("com.github.MilkBowl:VaultAPI:1.7") - compileOnly("org.projectlombok:lombok:1.18.22") - annotationProcessor("org.projectlombok:lombok:1.18.22") // implementations will be shaded. implementation("org.jooq:jooq:3.18.4") implementation("org.reactivestreams:reactive-streams:1.0.4") @@ -65,18 +64,29 @@ fun revertPluginYmlVersion() { yaml.writeText(lines.joinToString("\n")) } -fun getCurrentGitBranch(): String = try { - ProcessBuilder("git", "rev-parse", "--abbrev-ref", "HEAD") +// Add the name of the current git branch to the build. +fun currentGitBranch(): String = try { + val proc = ProcessBuilder( + "git", + "-C", rootProject.projectDir.absolutePath, + "rev-parse", "--abbrev-ref", "HEAD" + ) .redirectErrorStream(true) .start() - .inputStream - .bufferedReader() - .use { it.readText() } + + val out = proc.inputStream.bufferedReader().readText().trim() + proc.waitFor() + + // If Git failed or gave us garbage, fall back. + val branch = if (proc.exitValue() != 0 || out.startsWith("fatal")) "ogsuite" else out + + // Keep the classifier file-system & URI safe + branch .lowercase() - .trim() - .let { if (it == "head") "ogsuite" else it } + .replace(Regex("[^a-z0-9._-]"), "_") + .ifBlank { "ogsuite" } } catch (_: Exception) { - "unknown" + "ogsuite" } // Update plugin.yml before compilation @@ -84,7 +94,7 @@ val updatePluginYmlVersion = tasks.register("updatePluginYmlVersion") { doLast { val yaml = file("src/main/resources/plugin.yml") val lines = yaml.readLines().toMutableList() - lines[2] = "version: $version-${getCurrentGitBranch()}" + lines[2] = "version: $version-${currentGitBranch()}" yaml.writeText(lines.joinToString("\n")) } } @@ -96,7 +106,7 @@ tasks.withType().configureEach { } tasks.shadowJar { - archiveClassifier.set(getCurrentGitBranch()) + archiveClassifier.set(currentGitBranch()) from("LICENSE") { into("/") } dependencies { include(dependency("org.jooq:jooq")) diff --git a/src/main/java/uk/hotten/staffog/security/SecurityEventListener.java b/src/main/java/uk/hotten/staffog/security/SecurityEventListener.java index f322cc6..e73da33 100644 --- a/src/main/java/uk/hotten/staffog/security/SecurityEventListener.java +++ b/src/main/java/uk/hotten/staffog/security/SecurityEventListener.java @@ -45,7 +45,8 @@ public class SecurityEventListener implements Listener { } - if (! ipInfo.isPanelAcknowledged() && !ipInfo.isInitial()) { + // Only challenge a new IP if the users's panel account is already set up. + if (! ipInfo.isPanelAcknowledged() && ! ipInfo.isInitial() && sm.isUserAccountCreated(uuid, ip) == true) { event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER); @@ -55,7 +56,7 @@ public class SecurityEventListener implements Listener { // Create a MiniMessage instance. MiniMessage miniMessage = MiniMessage.miniMessage(); - // Deserialize the string into a TextComponent.å + // Deserialize the string into a TextComponent. Component kickMessage = miniMessage.deserialize(messageString); event.kickMessage(kickMessage); diff --git a/src/main/java/uk/hotten/staffog/security/SecurityManager.java b/src/main/java/uk/hotten/staffog/security/SecurityManager.java index 157914c..e3374a2 100644 --- a/src/main/java/uk/hotten/staffog/security/SecurityManager.java +++ b/src/main/java/uk/hotten/staffog/security/SecurityManager.java @@ -5,6 +5,7 @@ import static uk.hotten.staffog.data.jooq.Tables.STAFFOG_STAFFIP; import static uk.hotten.staffog.data.jooq.Tables.STAFFOG_WEB; import java.sql.Connection; +import java.sql.SQLException; import java.util.HashMap; import java.util.UUID; @@ -64,6 +65,39 @@ public class SecurityManager { } } + public boolean isUserAccountCreated(UUID id, String ip) { + + try (Connection connection = DatabaseManager.getInstance().createConnection()) { + + DSLContext dsl = DSL.using(connection); + StaffogStaffipRecord record = dsl.select(STAFFOG_STAFFIP.asterisk()) + .from(STAFFOG_STAFFIP) + .where(STAFFOG_STAFFIP.UUID.eq(id.toString())) + .and(STAFFOG_STAFFIP.IP.eq(ip)) + .fetchOneInto(STAFFOG_STAFFIP); + + if (record == null) { + + return false; + + } + else { + + return record.getPanelVerified(); + + } + + } + catch (Exception e) { + + e.printStackTrace(); + + return false; + + } + + } + public boolean hasUUIDGotIp(UUID uuid) { try (Connection connection = DatabaseManager.getInstance().createConnection()) { diff --git a/src/main/java/uk/hotten/staffog/utils/Message.java b/src/main/java/uk/hotten/staffog/utils/Message.java index 0b9e29e..7935c63 100644 --- a/src/main/java/uk/hotten/staffog/utils/Message.java +++ b/src/main/java/uk/hotten/staffog/utils/Message.java @@ -2,7 +2,6 @@ package uk.hotten.staffog.utils; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;