Fix something
This commit is contained in:
parent
dc08714a0b
commit
4c80eb6c4c
@ -1,5 +1,6 @@
|
||||
[versions]
|
||||
guava = "33.2.1-jre"
|
||||
apache-commons-email = "1.6.0"
|
||||
configme = "1.3.1"
|
||||
jalu-injector = "1.0"
|
||||
adventure-api = "4.17.0"
|
||||
@ -7,6 +8,7 @@ adventure-platform = "4.3.2"
|
||||
|
||||
[libraries]
|
||||
guava = { module = "com.google.guava:guava", version.ref = "guava" }
|
||||
apache-commons-email = { module = "org.apache.commons:commons-email", version.ref = "apache-commons-email" }
|
||||
configme = { module = "ch.jalu:configme", version.ref = "configme" }
|
||||
jalu-injector = { module = "ch.jalu:injector", version.ref = "jalu-injector" }
|
||||
adventure-text-minimessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure-api" }
|
||||
|
||||
@ -16,6 +16,9 @@ dependencies {
|
||||
compileOnly("ru.tehkode:PermissionsEx:1.23.5-SNAPSHOT")
|
||||
// Hooks - End
|
||||
|
||||
// TODO It's necessary?
|
||||
compileOnly(libs.apache.commons.email)
|
||||
|
||||
}
|
||||
|
||||
tasks.shadowJar {
|
||||
|
||||
@ -122,4 +122,5 @@ class TestEmailSender implements DebugSection {
|
||||
+ server.getName() + ") via /authme debug mail. If you're seeing this, sending emails should be fine.";
|
||||
return sendMailSsl.sendEmail(message, htmlEmail);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -49,9 +49,8 @@ public class PasswordSecurity implements Reloadable {
|
||||
/**
|
||||
* Compute the hash of the configured algorithm for the given password and username.
|
||||
*
|
||||
* @param password The password to hash
|
||||
* @param password The password to hash
|
||||
* @param playerName The player's name
|
||||
*
|
||||
* @return The password hash
|
||||
*/
|
||||
public HashedPassword computeHash(String password, String playerName) {
|
||||
@ -62,9 +61,8 @@ public class PasswordSecurity implements Reloadable {
|
||||
/**
|
||||
* Check if the given password matches the player's stored password.
|
||||
*
|
||||
* @param password The password to check
|
||||
* @param password The password to check
|
||||
* @param playerName The player to check for
|
||||
*
|
||||
* @return True if the password is correct, false otherwise
|
||||
*/
|
||||
public boolean comparePassword(String password, String playerName) {
|
||||
@ -75,16 +73,15 @@ public class PasswordSecurity implements Reloadable {
|
||||
/**
|
||||
* Check if the given password matches the given hashed password.
|
||||
*
|
||||
* @param password The password to check
|
||||
* @param password The password to check
|
||||
* @param hashedPassword The hashed password to check against
|
||||
* @param playerName The player to check for
|
||||
*
|
||||
* @param playerName The player to check for
|
||||
* @return True if the password matches, false otherwise
|
||||
*/
|
||||
public boolean comparePassword(String password, HashedPassword hashedPassword, String playerName) {
|
||||
String playerLowerCase = playerName.toLowerCase(Locale.ROOT);
|
||||
return methodMatches(encryptionMethod, password, hashedPassword, playerLowerCase)
|
||||
|| compareWithLegacyHashes(password, hashedPassword, playerLowerCase);
|
||||
|| compareWithLegacyHashes(password, hashedPassword, playerLowerCase);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -95,7 +92,6 @@ public class PasswordSecurity implements Reloadable {
|
||||
* @param password The clear-text password to check
|
||||
* @param hashedPassword The encrypted password to test the clear-text password against
|
||||
* @param playerName The name of the player
|
||||
*
|
||||
* @return True if there was a password match with a configured legacy encryption method, false otherwise
|
||||
*/
|
||||
private boolean compareWithLegacyHashes(String password, HashedPassword hashedPassword, String playerName) {
|
||||
@ -113,17 +109,16 @@ public class PasswordSecurity implements Reloadable {
|
||||
* Verify with the given encryption method whether the password matches the hash after checking that
|
||||
* the method can be called safely with the given data.
|
||||
*
|
||||
* @param method The encryption method to use
|
||||
* @param password The password to check
|
||||
* @param method The encryption method to use
|
||||
* @param password The password to check
|
||||
* @param hashedPassword The hash to check against
|
||||
* @param playerName The name of the player
|
||||
*
|
||||
* @param playerName The name of the player
|
||||
* @return True if the password matched, false otherwise
|
||||
*/
|
||||
private static boolean methodMatches(EncryptionMethod method, String password,
|
||||
HashedPassword hashedPassword, String playerName) {
|
||||
return method != null && (!method.hasSeparateSalt() || hashedPassword.getSalt() != null)
|
||||
&& method.comparePassword(password, hashedPassword, playerName);
|
||||
&& method.comparePassword(password, hashedPassword, playerName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -131,8 +126,7 @@ public class PasswordSecurity implements Reloadable {
|
||||
* {@link PasswordEncryptionEvent}. The encryption method from the event is then returned,
|
||||
* which may have been changed by an external listener.
|
||||
*
|
||||
* @param algorithm The algorithm to retrieve the encryption method for
|
||||
*
|
||||
* @param algorithm The algorithm to retrieve the encryption method for
|
||||
* @return The encryption method
|
||||
*/
|
||||
private EncryptionMethod initializeEncryptionMethodWithEvent(HashAlgorithm algorithm) {
|
||||
@ -146,7 +140,6 @@ public class PasswordSecurity implements Reloadable {
|
||||
* Initialize the encryption method associated with the given hash algorithm.
|
||||
*
|
||||
* @param algorithm The algorithm to retrieve the encryption method for
|
||||
*
|
||||
* @return The associated encryption method, or null if CUSTOM / deprecated
|
||||
*/
|
||||
private EncryptionMethod initializeEncryptionMethod(HashAlgorithm algorithm) {
|
||||
@ -7,7 +7,7 @@ dependencies {
|
||||
compileOnly(libs.configme)
|
||||
compileOnly(libs.jalu.injector)
|
||||
// Java Email Library
|
||||
implementation("org.apache.commons:commons-email:1.6.0")
|
||||
implementation(libs.apache.commons.email)
|
||||
}
|
||||
|
||||
tasks.shadowJar {
|
||||
|
||||
@ -38,8 +38,8 @@ public class OAuth2SaslClientFactory implements SaslClientFactory {
|
||||
String authorizationId, String protocol, String serverName,
|
||||
Map<String, ?> props, CallbackHandler callbackHandler) {
|
||||
boolean matchedMechanism = false;
|
||||
for (int i = 0; i < mechanisms.length; ++i) {
|
||||
if ("XOAUTH2".equalsIgnoreCase(mechanisms[i])) {
|
||||
for (String mechanism : mechanisms) {
|
||||
if ("XOAUTH2".equalsIgnoreCase(mechanism)) {
|
||||
matchedMechanism = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -10,65 +10,65 @@ public final class EmailSettings implements SettingsHolder {
|
||||
|
||||
@Comment("Email SMTP server host")
|
||||
public static final Property<String> SMTP_HOST =
|
||||
PropertyInitializer.newProperty("Email.mailSMTP", "smtp.163.com");
|
||||
newProperty("Email.mailSMTP", "smtp.163.com");
|
||||
|
||||
@Comment("Email SMTP server port")
|
||||
public static final Property<Integer> SMTP_PORT =
|
||||
PropertyInitializer.newProperty("Email.mailPort", 465);
|
||||
newProperty("Email.mailPort", 465);
|
||||
|
||||
@Comment("Only affects port 25: enable TLS/STARTTLS?")
|
||||
public static final Property<Boolean> PORT25_USE_TLS =
|
||||
PropertyInitializer.newProperty("Email.useTls", true);
|
||||
newProperty("Email.useTls", true);
|
||||
|
||||
@Comment("Email account which sends the mails")
|
||||
public static final Property<String> MAIL_ACCOUNT =
|
||||
PropertyInitializer.newProperty("Email.mailAccount", "");
|
||||
newProperty("Email.mailAccount", "");
|
||||
|
||||
@Comment("Email account password")
|
||||
public static final Property<String> MAIL_PASSWORD =
|
||||
PropertyInitializer.newProperty("Email.mailPassword", "");
|
||||
newProperty("Email.mailPassword", "");
|
||||
|
||||
@Comment("Email address, fill when mailAccount is not the email address of the account")
|
||||
public static final Property<String> MAIL_ADDRESS =
|
||||
PropertyInitializer.newProperty("Email.mailAddress", "");
|
||||
newProperty("Email.mailAddress", "");
|
||||
|
||||
@Comment("Custom sender name, replacing the mailAccount name in the email")
|
||||
public static final Property<String> MAIL_SENDER_NAME =
|
||||
PropertyInitializer.newProperty("Email.mailSenderName", "");
|
||||
newProperty("Email.mailSenderName", "");
|
||||
|
||||
@Comment("Recovery password length")
|
||||
public static final Property<Integer> RECOVERY_PASSWORD_LENGTH =
|
||||
PropertyInitializer.newProperty("Email.RecoveryPasswordLength", 12);
|
||||
newProperty("Email.RecoveryPasswordLength", 12);
|
||||
|
||||
@Comment("Mail Subject")
|
||||
public static final Property<String> RECOVERY_MAIL_SUBJECT =
|
||||
PropertyInitializer.newProperty("Email.mailSubject", "Your new AuthMe password");
|
||||
newProperty("Email.mailSubject", "Your new AuthMe password");
|
||||
|
||||
@Comment("Like maxRegPerIP but with email")
|
||||
public static final Property<Integer> MAX_REG_PER_EMAIL =
|
||||
PropertyInitializer.newProperty("Email.maxRegPerEmail", 1);
|
||||
newProperty("Email.maxRegPerEmail", 1);
|
||||
|
||||
@Comment("Recall players to add an email?")
|
||||
public static final Property<Boolean> RECALL_PLAYERS =
|
||||
PropertyInitializer.newProperty("Email.recallPlayers", false);
|
||||
newProperty("Email.recallPlayers", false);
|
||||
|
||||
@Comment("Delay in minute for the recall scheduler")
|
||||
public static final Property<Integer> DELAY_RECALL =
|
||||
PropertyInitializer.newProperty("Email.delayRecall", 5);
|
||||
newProperty("Email.delayRecall", 5);
|
||||
|
||||
@Comment("Send the new password drawn in an image?")
|
||||
public static final Property<Boolean> PASSWORD_AS_IMAGE =
|
||||
PropertyInitializer.newProperty("Email.generateImage", false);
|
||||
newProperty("Email.generateImage", false);
|
||||
|
||||
@Comment("The OAuth2 token")
|
||||
public static final Property<String> OAUTH2_TOKEN =
|
||||
PropertyInitializer.newProperty("Email.emailOauth2Token", "");
|
||||
newProperty("Email.emailOauth2Token", "");
|
||||
@Comment("Email notifications when the server shuts down")
|
||||
public static final Property<Boolean> SHUTDOWN_MAIL =
|
||||
PropertyInitializer.newProperty("Email.shutDownEmail", false);
|
||||
newProperty("Email.shutDownEmail", false);
|
||||
@Comment("Email notification address when the server is shut down")
|
||||
public static final Property<String> SHUTDOWN_MAIL_ADDRESS =
|
||||
PropertyInitializer.newProperty("Email.shutDownEmailAddress", "your@mail.com");
|
||||
newProperty("Email.shutDownEmailAddress", "your@mail.com");
|
||||
|
||||
private EmailSettings() {
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package fr.xephi.authme.util;
|
||||
|
||||
import com.google.common.io.Files;
|
||||
import fr.xephi.authme.ConsoleLogger;
|
||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||
import fr.xephi.authme.logger.ConsoleLogger;
|
||||
import fr.xephi.authme.logger.ConsoleLoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user