Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 89df4e451c | |||
| fe39310eca | |||
| b9790d458e | |||
| dc8d5f741a | |||
| b3288e9c72 | |||
| c88aa79377 | |||
| 2327c07f9a | |||
| 8e93d4cd19 | |||
| a963bde749 | |||
| 10b6997c32 | |||
| 970c77678b | |||
| 07c479746b | |||
| d90a8a36cf | |||
| c1eee8e139 | |||
| dd831a65a5 | |||
| 51783604c6 | |||
| 9f8471d4e9 | |||
| c4ac2601ad | |||
| b4a0994871 | |||
| b619e1dac5 | |||
| ba1703c684 | |||
| 131b5b7805 | |||
| 099415e823 | |||
| 91261f4315 | |||
| 548be5042d | |||
| e9fd7fd80f | |||
| e44cd3edc6 | |||
| 219a7a3493 | |||
| 6876a6dd9f | |||
| d04a69f481 | |||
| dfa8317706 | |||
| 555514f7dd | |||
| 74633937bc | |||
| 948736b5ea | |||
| 5e54b8b105 | |||
| 0d818dd00f | |||
| 22586e601f | |||
| 9938df3c28 | |||
| ec2e8d3654 | |||
| 71a9c0c98f | |||
| 54cef57ea5 | |||
| 73c1116047 | |||
| abb85f005d |
@@ -47,8 +47,10 @@ body:
|
|||||||
description: Which server implementation are you using?
|
description: Which server implementation are you using?
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
- Standalone server (no proxy)
|
- Standalone(Spigot)
|
||||||
|
- Standalone(Folia)
|
||||||
- BungeeCord
|
- BungeeCord
|
||||||
|
- Velocity
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
@@ -60,6 +62,9 @@ body:
|
|||||||
options:
|
options:
|
||||||
- SQLite
|
- SQLite
|
||||||
- MySQL
|
- MySQL
|
||||||
|
- H2
|
||||||
|
- MariaDB
|
||||||
|
- PostgreSQL
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: Feature request
|
name: Feature request
|
||||||
description: Suggest an idea for AuthMe
|
description: Suggest an idea for AuthMe
|
||||||
labels: 'Type: enhancement'
|
labels: 'enhancement'
|
||||||
|
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ jobs:
|
|||||||
Build:
|
Build:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
jdkversion: [ 17 ]
|
jdkversion: [ 21 ]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-java@v3
|
- uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: ${{ matrix.jdkversion }}
|
java-version: ${{ matrix.jdkversion }}
|
||||||
@@ -22,10 +22,10 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: mvn -V -B clean package --file pom.xml
|
run: mvn -V -B clean package --file pom.xml
|
||||||
- name: Upload Artifacts
|
- name: Upload Artifacts
|
||||||
uses: actions/upload-artifact@v3.1.2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Download
|
name: Download
|
||||||
path: ./target/AuthMe-5.6.0-FORK-Spigot-Universal.jar
|
path: ./target/AuthMe-5.6.0-FORK-Universal.jar
|
||||||
runtime-test:
|
runtime-test:
|
||||||
name: Plugin Runtime Test
|
name: Plugin Runtime Test
|
||||||
needs: [Build]
|
needs: [Build]
|
||||||
@@ -37,8 +37,10 @@ jobs:
|
|||||||
javaVersion: '8'
|
javaVersion: '8'
|
||||||
- mcVersion: '1.12.2'
|
- mcVersion: '1.12.2'
|
||||||
javaVersion: '8'
|
javaVersion: '8'
|
||||||
- mcVersion: '1.20.2'
|
- mcVersion: '1.18.2'
|
||||||
javaVersion: '20'
|
javaVersion: '17'
|
||||||
|
- mcVersion: '1.20.4'
|
||||||
|
javaVersion: '21'
|
||||||
steps:
|
steps:
|
||||||
- uses: HaHaWTH/minecraft-plugin-runtime-test@paper
|
- uses: HaHaWTH/minecraft-plugin-runtime-test@paper
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -8,7 +8,10 @@
|
|||||||
<img src="https://img.shields.io/github/languages/code-size/HaHaWTH/AuthMeReReloaded.svg" alt="Code size"/>
|
<img src="https://img.shields.io/github/languages/code-size/HaHaWTH/AuthMeReReloaded.svg" alt="Code size"/>
|
||||||
<img src="https://img.shields.io/github/repo-size/HaHaWTH/AuthMeReReloaded.svg" alt="GitHub repo size"/>
|
<img src="https://img.shields.io/github/repo-size/HaHaWTH/AuthMeReReloaded.svg" alt="GitHub repo size"/>
|
||||||
<img src="https://www.codefactor.io/repository/github/hahawth/authmerereloaded/badge" alt="CodeFactor" />
|
<img src="https://www.codefactor.io/repository/github/hahawth/authmerereloaded/badge" alt="CodeFactor" />
|
||||||
<img src="https://img.shields.io/github/downloads/HaHaWTH/AuthMeReReloaded/total" alt="Downloads" />
|
<img alt="GitHub Downloads (all assets, all releases)" src="https://img.shields.io/github/downloads/HaHaWTH/AuthMeReReloaded/total?logo=github&label=GitHub%20Downloads&color=black">
|
||||||
|
<img alt="Spiget Downloads" src="https://img.shields.io/spiget/downloads/114010?logo=spigotmc&label=SpigotMC%20Downloads&color=orange">
|
||||||
|
<img alt="Modrinth Downloads" src="https://img.shields.io/modrinth/dt/3IEZ9vol?logo=modrinth&label=Modrinth%20Downloads&color=light-green">
|
||||||
|
<img alt="Hangar Downloads" src="https://img.shields.io/hangar/dt/AuthMeReReloaded?logo=hangar&label=Hangar%20Downloads&color=white">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
**Detailed Changes:**
|
**Detailed Changes:**
|
||||||
@@ -42,6 +45,10 @@ If you are using FRP(内网穿透) for your server, this plugin may help [HAProx
|
|||||||
|
|
||||||
**Pull Requests and suggestions are welcome!**
|
**Pull Requests and suggestions are welcome!**
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Only additions to AuthMeReloaded is under AGPL-3.0 license, AuthMeReloaded is licensed under GPL-3.0.
|
||||||
|
|
||||||
<picture>
|
<picture>
|
||||||
<source
|
<source
|
||||||
media="(prefers-color-scheme: dark)"
|
media="(prefers-color-scheme: dark)"
|
||||||
|
|||||||
@@ -82,54 +82,11 @@
|
|||||||
<pluginDescription.authors>sgdc3, games647, Hex3l, krusic22</pluginDescription.authors>
|
<pluginDescription.authors>sgdc3, games647, Hex3l, krusic22</pluginDescription.authors>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<!-- Jenkins profile -->
|
|
||||||
<profiles>
|
|
||||||
<!-- Set the buildNumber using the jenkins env. variable -->
|
|
||||||
<profile>
|
|
||||||
<id>jenkins</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>env.BUILD_NUMBER</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<project.buildNumber>${env.BUILD_NUMBER}</project.buildNumber>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
<!-- Skip long hash tests, reduce the test time of 20-30 seconds -->
|
|
||||||
<profile>
|
|
||||||
<id>skipLongHashTests</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>skipLongHashTests</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<project.skipExtendedHashTests>true</project.skipExtendedHashTests>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
<!-- Skip javadoc generation for faster local build -->
|
|
||||||
<profile>
|
|
||||||
<id>skipJavadocGeneration</id>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<defaultGoal>clean package</defaultGoal>
|
<defaultGoal>clean package</defaultGoal>
|
||||||
<!-- Little hack to make the shade plugin output a file with the right name -->
|
<!-- Little hack to make the shade plugin output a file with the right name -->
|
||||||
<finalName>${project.finalNameBase}-noshade</finalName>
|
<finalName>${project.finalNameBase}-noshade</finalName>
|
||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>.</directory>
|
<directory>.</directory>
|
||||||
@@ -222,7 +179,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.jacoco</groupId>
|
<groupId>org.jacoco</groupId>
|
||||||
<artifactId>jacoco-maven-plugin</artifactId>
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
<version>0.8.11</version>
|
<version>0.8.12</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>pre-unit-test</id>
|
<id>pre-unit-test</id>
|
||||||
@@ -258,7 +215,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
<version>3.3.0</version>
|
<version>3.4.1</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<!-- Generate a jar containing the source javadoc -->
|
<!-- Generate a jar containing the source javadoc -->
|
||||||
<plugin>
|
<plugin>
|
||||||
@@ -282,7 +239,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-source-plugin</artifactId>
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
<version>3.3.0</version>
|
<version>3.3.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<finalName>${project.finalNameBase}</finalName>
|
<finalName>${project.finalNameBase}</finalName>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -299,7 +256,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-shade-plugin</artifactId>
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
<version>3.5.2</version>
|
<version>3.5.3</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>shaded-jar</id>
|
<id>shaded-jar</id>
|
||||||
@@ -308,6 +265,7 @@
|
|||||||
<goal>shade</goal>
|
<goal>shade</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
<finalName>${project.finalNameBase}-Lite</finalName>
|
||||||
<artifactSet>
|
<artifactSet>
|
||||||
<excludes>
|
<excludes>
|
||||||
<!-- Guava -->
|
<!-- Guava -->
|
||||||
@@ -349,23 +307,21 @@
|
|||||||
<pattern>waffle</pattern>
|
<pattern>waffle</pattern>
|
||||||
<shadedPattern>fr.xephi.authme.libs.waffle</shadedPattern>
|
<shadedPattern>fr.xephi.authme.libs.waffle</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
<relocation>
|
|
||||||
<pattern>com.sun.mail</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.sun.mail</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>com.sun.jna</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.sun.jna</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>com.sun.activation</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.sun.activation</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>com.github.benmanes.caffeine</pattern>
|
<pattern>com.github.benmanes.caffeine</pattern>
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.github.benmanes.caffeine</shadedPattern>
|
<shadedPattern>fr.xephi.authme.libs.com.github.benmanes.caffeine</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
</relocations>
|
</relocations>
|
||||||
|
<filters>
|
||||||
|
<filter>
|
||||||
|
<artifact>*:*</artifact>
|
||||||
|
<excludes>
|
||||||
|
<exclude>META-INF/*.SF</exclude>
|
||||||
|
<exclude>META-INF/*.DSA</exclude>
|
||||||
|
<exclude>META-INF/*.RSA</exclude>
|
||||||
|
</excludes>
|
||||||
|
</filter>
|
||||||
|
</filters>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
<execution>
|
<execution>
|
||||||
@@ -375,7 +331,7 @@
|
|||||||
<goal>shade</goal>
|
<goal>shade</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<finalName>${project.finalNameBase}-Spigot-Universal</finalName>
|
<finalName>${project.finalNameBase}-Universal</finalName>
|
||||||
<relocations>
|
<relocations>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>com.google.common</pattern>
|
<pattern>com.google.common</pattern>
|
||||||
@@ -425,18 +381,6 @@
|
|||||||
<pattern>waffle</pattern>
|
<pattern>waffle</pattern>
|
||||||
<shadedPattern>fr.xephi.authme.libs.waffle</shadedPattern>
|
<shadedPattern>fr.xephi.authme.libs.waffle</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
<relocation>
|
|
||||||
<pattern>com.sun.mail</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.sun.mail</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>com.sun.jna</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.sun.jna</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>com.sun.activation</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.sun.activation</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>com.github.benmanes.caffeine</pattern>
|
<pattern>com.github.benmanes.caffeine</pattern>
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.github.benmanes.caffeine</shadedPattern>
|
<shadedPattern>fr.xephi.authme.libs.com.github.benmanes.caffeine</shadedPattern>
|
||||||
@@ -795,7 +739,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-email</artifactId>
|
<artifactId>commons-email</artifactId>
|
||||||
<version>1.6.0</version>
|
<version>1.6-SNAPSHOT</version>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@@ -1222,7 +1166,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xerial</groupId>
|
<groupId>org.xerial</groupId>
|
||||||
<artifactId>sqlite-jdbc</artifactId>
|
<artifactId>sqlite-jdbc</artifactId>
|
||||||
<version>3.45.2.0</version>
|
<version>3.45.3.0</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
// Version and build number values
|
// Version and build number values
|
||||||
private static String pluginVersion = "5.6.0-Fork";
|
private static String pluginVersion = "5.6.0-Fork";
|
||||||
private static final String pluginBuild = "b";
|
private static final String pluginBuild = "b";
|
||||||
private static String pluginBuildNumber = "46";
|
private static String pluginBuildNumber = "48";
|
||||||
// Private instances
|
// Private instances
|
||||||
private EmailService emailService;
|
private EmailService emailService;
|
||||||
private CommandHandler commandHandler;
|
private CommandHandler commandHandler;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import fr.xephi.authme.process.register.executors.PasswordRegisterParams;
|
|||||||
import fr.xephi.authme.process.register.executors.RegistrationMethod;
|
import fr.xephi.authme.process.register.executors.RegistrationMethod;
|
||||||
import fr.xephi.authme.process.register.executors.TwoFactorRegisterParams;
|
import fr.xephi.authme.process.register.executors.TwoFactorRegisterParams;
|
||||||
import fr.xephi.authme.security.HashAlgorithm;
|
import fr.xephi.authme.security.HashAlgorithm;
|
||||||
|
import fr.xephi.authme.service.BukkitService;
|
||||||
import fr.xephi.authme.service.CommonService;
|
import fr.xephi.authme.service.CommonService;
|
||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
import fr.xephi.authme.settings.properties.EmailSettings;
|
import fr.xephi.authme.settings.properties.EmailSettings;
|
||||||
@@ -24,8 +25,6 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Timer;
|
|
||||||
import java.util.TimerTask;
|
|
||||||
|
|
||||||
import static fr.xephi.authme.process.register.RegisterSecondaryArgument.CONFIRMATION;
|
import static fr.xephi.authme.process.register.RegisterSecondaryArgument.CONFIRMATION;
|
||||||
import static fr.xephi.authme.process.register.RegisterSecondaryArgument.EMAIL_MANDATORY;
|
import static fr.xephi.authme.process.register.RegisterSecondaryArgument.EMAIL_MANDATORY;
|
||||||
@@ -46,6 +45,9 @@ public class RegisterCommand extends PlayerCommand {
|
|||||||
@Inject
|
@Inject
|
||||||
private CommonService commonService;
|
private CommonService commonService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BukkitService bukkitService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private DataSource dataSource;
|
private DataSource dataSource;
|
||||||
|
|
||||||
@@ -175,20 +177,15 @@ public class RegisterCommand extends PlayerCommand {
|
|||||||
} else if (isSecondArgValidForEmailRegistration(player, arguments)) {
|
} else if (isSecondArgValidForEmailRegistration(player, arguments)) {
|
||||||
management.performRegister(RegistrationMethod.EMAIL_REGISTRATION,
|
management.performRegister(RegistrationMethod.EMAIL_REGISTRATION,
|
||||||
EmailRegisterParams.of(player, email));
|
EmailRegisterParams.of(player, email));
|
||||||
Timer timer = new Timer();
|
if (commonService.getProperty(RegistrationSettings.UNREGISTER_ON_EMAIL_VERIFICATION_FAILURE) && commonService.getProperty(RegistrationSettings.UNREGISTER_AFTER_MINUTES) > 0) {
|
||||||
timer.schedule(new TimerTask() {
|
bukkitService.runTaskLater(player, () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (dataSource.getAuth(player.getName()) != null) {
|
if (dataSource.getAuth(player.getName()) != null) {
|
||||||
if (dataSource.getAuth(player.getName()).getLastLogin() == null) {
|
if (dataSource.getAuth(player.getName()).getLastLogin() == null) {
|
||||||
management.performUnregisterByAdmin(null, player.getName(), player);
|
management.performUnregisterByAdmin(null, player.getName(), player);
|
||||||
timer.cancel();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
timer.cancel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 600000);
|
}, 60 * 20 * commonService.getProperty(RegistrationSettings.UNREGISTER_AFTER_MINUTES));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ public class MySQL extends AbstractSqlDataSource {
|
|||||||
private boolean useSsl;
|
private boolean useSsl;
|
||||||
private boolean serverCertificateVerification;
|
private boolean serverCertificateVerification;
|
||||||
private boolean allowPublicKeyRetrieval;
|
private boolean allowPublicKeyRetrieval;
|
||||||
|
private String mariaDbSslMode;
|
||||||
private String host;
|
private String host;
|
||||||
private String port;
|
private String port;
|
||||||
private String username;
|
private String username;
|
||||||
@@ -121,6 +122,7 @@ public class MySQL extends AbstractSqlDataSource {
|
|||||||
this.useSsl = settings.getProperty(DatabaseSettings.MYSQL_USE_SSL);
|
this.useSsl = settings.getProperty(DatabaseSettings.MYSQL_USE_SSL);
|
||||||
this.serverCertificateVerification = settings.getProperty(DatabaseSettings.MYSQL_CHECK_SERVER_CERTIFICATE);
|
this.serverCertificateVerification = settings.getProperty(DatabaseSettings.MYSQL_CHECK_SERVER_CERTIFICATE);
|
||||||
this.allowPublicKeyRetrieval = settings.getProperty(DatabaseSettings.MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL);
|
this.allowPublicKeyRetrieval = settings.getProperty(DatabaseSettings.MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL);
|
||||||
|
this.mariaDbSslMode = settings.getProperty(DatabaseSettings.MARIADB_SSL_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -145,12 +147,19 @@ public class MySQL extends AbstractSqlDataSource {
|
|||||||
ds.setDriverClassName(this.getDriverClassName());
|
ds.setDriverClassName(this.getDriverClassName());
|
||||||
|
|
||||||
// Request mysql over SSL
|
// Request mysql over SSL
|
||||||
|
if (this instanceof MariaDB) {
|
||||||
|
ds.addDataSourceProperty("sslMode", mariaDbSslMode);
|
||||||
|
} else {
|
||||||
ds.addDataSourceProperty("useSSL", String.valueOf(useSsl));
|
ds.addDataSourceProperty("useSSL", String.valueOf(useSsl));
|
||||||
|
|
||||||
// Disabling server certificate verification on need
|
// Disabling server certificate verification on need
|
||||||
if (!serverCertificateVerification) {
|
if (!serverCertificateVerification) {
|
||||||
ds.addDataSourceProperty("verifyServerCertificate", String.valueOf(false));
|
ds.addDataSourceProperty("verifyServerCertificate", String.valueOf(false));
|
||||||
} // Disabling server certificate verification on need
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Disabling server certificate verification on need
|
||||||
if (allowPublicKeyRetrieval) {
|
if (allowPublicKeyRetrieval) {
|
||||||
ds.addDataSourceProperty("allowPublicKeyRetrieval", String.valueOf(true));
|
ds.addDataSourceProperty("allowPublicKeyRetrieval", String.valueOf(true));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ public class DataSourceProvider implements Provider<DataSource> {
|
|||||||
break;
|
break;
|
||||||
case H2:
|
case H2:
|
||||||
dataSource = new H2(settings, dataFolder);
|
dataSource = new H2(settings, dataFolder);
|
||||||
|
logger.warning("You are using H2 database, which is still in development!\nMake sure to backup and report any issues you encounter on GitHub!");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new UnsupportedOperationException("Unknown data source type '" + dataSourceType + "'");
|
throw new UnsupportedOperationException("Unknown data source type '" + dataSourceType + "'");
|
||||||
|
|||||||
@@ -39,14 +39,16 @@ public class BedrockAutoLoginListener implements Listener {
|
|||||||
return settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && org.geysermc.floodgate.api.FloodgateApi.getInstance().isFloodgateId(uuid) && getServer().getPluginManager().getPlugin("floodgate") != null;
|
return settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && org.geysermc.floodgate.api.FloodgateApi.getInstance().isFloodgateId(uuid) && getServer().getPluginManager().getPlugin("floodgate") != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
String name = event.getPlayer().getName();
|
String name = event.getPlayer().getName();
|
||||||
UUID uuid = event.getPlayer().getUniqueId();
|
UUID uuid = event.getPlayer().getUniqueId();
|
||||||
|
bukkitService.runTaskLater(player, () -> {
|
||||||
if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) {
|
if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) {
|
||||||
authmeApi.forceLogin(player);
|
authmeApi.forceLogin(player);
|
||||||
messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN);
|
messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN);
|
||||||
}
|
}
|
||||||
|
},20L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ public class EmailService {
|
|||||||
try {
|
try {
|
||||||
htmlEmail = sendMailSsl.initializeMail(email);
|
htmlEmail = sendMailSsl.initializeMail(email);
|
||||||
} catch (EmailException e) {
|
} catch (EmailException e) {
|
||||||
logger.logException("Failed to create email for recovery code:", e);
|
logger.logException("Failed to create email for shutdown:", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import fr.xephi.authme.service.bungeecord.BungeeSender;
|
|||||||
import fr.xephi.authme.service.bungeecord.MessageType;
|
import fr.xephi.authme.service.bungeecord.MessageType;
|
||||||
import fr.xephi.authme.service.velocity.VMessageType;
|
import fr.xephi.authme.service.velocity.VMessageType;
|
||||||
import fr.xephi.authme.service.velocity.VelocitySender;
|
import fr.xephi.authme.service.velocity.VelocitySender;
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.commandconfig.CommandManager;
|
import fr.xephi.authme.settings.commandconfig.CommandManager;
|
||||||
import fr.xephi.authme.settings.properties.HooksSettings;
|
import fr.xephi.authme.settings.properties.HooksSettings;
|
||||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||||
@@ -47,6 +48,9 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
|||||||
@Inject
|
@Inject
|
||||||
private Server server;
|
private Server server;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Settings settings;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private DataSource database;
|
private DataSource database;
|
||||||
|
|
||||||
@@ -157,11 +161,11 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
|||||||
// As described at https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
|
// As described at https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
|
||||||
// "Keep in mind that you can't send plugin messages directly after a player joins."
|
// "Keep in mind that you can't send plugin messages directly after a player joins."
|
||||||
bukkitService.scheduleSyncDelayedTask(() ->
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), 5L);
|
bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
}
|
}
|
||||||
if (velocitySender.isEnabled()) {
|
if (velocitySender.isEnabled()) {
|
||||||
bukkitService.scheduleSyncDelayedTask(() ->
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 5L);
|
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import fr.xephi.authme.service.bungeecord.BungeeSender;
|
|||||||
import fr.xephi.authme.service.bungeecord.MessageType;
|
import fr.xephi.authme.service.bungeecord.MessageType;
|
||||||
import fr.xephi.authme.service.velocity.VMessageType;
|
import fr.xephi.authme.service.velocity.VMessageType;
|
||||||
import fr.xephi.authme.service.velocity.VelocitySender;
|
import fr.xephi.authme.service.velocity.VelocitySender;
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.properties.DatabaseSettings;
|
import fr.xephi.authme.settings.properties.DatabaseSettings;
|
||||||
import fr.xephi.authme.settings.properties.EmailSettings;
|
import fr.xephi.authme.settings.properties.EmailSettings;
|
||||||
import fr.xephi.authme.settings.properties.HooksSettings;
|
import fr.xephi.authme.settings.properties.HooksSettings;
|
||||||
@@ -83,7 +84,8 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SessionService sessionService;
|
private SessionService sessionService;
|
||||||
|
@Inject
|
||||||
|
private Settings settings;
|
||||||
@Inject
|
@Inject
|
||||||
private BungeeSender bungeeSender;
|
private BungeeSender bungeeSender;
|
||||||
@Inject
|
@Inject
|
||||||
@@ -310,11 +312,11 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
// As described at https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
|
// As described at https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
|
||||||
// "Keep in mind that you can't send plugin messages directly after a player joins."
|
// "Keep in mind that you can't send plugin messages directly after a player joins."
|
||||||
bukkitService.scheduleSyncDelayedTask(() ->
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), 5L);
|
bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
}
|
}
|
||||||
if (velocitySender.isEnabled()) {
|
if (velocitySender.isEnabled()) {
|
||||||
bukkitService.scheduleSyncDelayedTask(() ->
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), 5L);
|
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
}
|
}
|
||||||
|
|
||||||
// As the scheduling executes the Task most likely after the current
|
// As the scheduling executes the Task most likely after the current
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import fr.xephi.authme.service.bungeecord.BungeeSender;
|
|||||||
import fr.xephi.authme.service.bungeecord.MessageType;
|
import fr.xephi.authme.service.bungeecord.MessageType;
|
||||||
import fr.xephi.authme.service.velocity.VMessageType;
|
import fr.xephi.authme.service.velocity.VMessageType;
|
||||||
import fr.xephi.authme.service.velocity.VelocitySender;
|
import fr.xephi.authme.service.velocity.VelocitySender;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -65,11 +64,11 @@ public class AsynchronousLogout implements AsynchronousProcess {
|
|||||||
PlayerAuth auth = playerCache.getAuth(name);
|
PlayerAuth auth = playerCache.getAuth(name);
|
||||||
database.updateSession(auth);
|
database.updateSession(auth);
|
||||||
// TODO: send an update when a messaging service will be implemented (SESSION)
|
// TODO: send an update when a messaging service will be implemented (SESSION)
|
||||||
if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
//if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
||||||
auth.setQuitLocation(player.getLocation());
|
auth.setQuitLocation(player.getLocation());
|
||||||
database.updateQuitLoc(auth);
|
database.updateQuitLoc(auth);
|
||||||
// TODO: send an update when a messaging service will be implemented (QUITLOC)
|
// TODO: send an update when a messaging service will be implemented (QUITLOC)
|
||||||
}
|
//} AuthMeReReloaded - Always save quit location
|
||||||
|
|
||||||
playerCache.removePlayer(name);
|
playerCache.removePlayer(name);
|
||||||
codeManager.unverify(name);
|
codeManager.unverify(name);
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import fr.xephi.authme.service.SessionService;
|
|||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
import fr.xephi.authme.settings.SpawnLoader;
|
import fr.xephi.authme.settings.SpawnLoader;
|
||||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
|
||||||
import fr.xephi.authme.util.PlayerUtils;
|
import fr.xephi.authme.util.PlayerUtils;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -68,13 +67,16 @@ public class AsynchronousQuit implements AsynchronousProcess {
|
|||||||
boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
||||||
|
|
||||||
if (wasLoggedIn) {
|
if (wasLoggedIn) {
|
||||||
if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
//if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
||||||
|
// AuthMeReReloaded - Always save quit location on quit
|
||||||
Location loc = spawnLoader.getPlayerLocationOrSpawn(player);
|
Location loc = spawnLoader.getPlayerLocationOrSpawn(player);
|
||||||
PlayerAuth auth = PlayerAuth.builder()
|
PlayerAuth authLoc = PlayerAuth.builder()
|
||||||
.name(name).location(loc)
|
.name(name).location(loc)
|
||||||
.realName(player.getName()).build();
|
.realName(player.getName()).build();
|
||||||
database.updateQuitLoc(auth);
|
database.updateQuitLoc(authLoc);
|
||||||
}
|
// AuthMeReReloaded - Fix AuthMe#2769 -1
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
String ip = PlayerUtils.getPlayerIp(player);
|
String ip = PlayerUtils.getPlayerIp(player);
|
||||||
PlayerAuth auth = PlayerAuth.builder()
|
PlayerAuth auth = PlayerAuth.builder()
|
||||||
|
|||||||
@@ -167,6 +167,10 @@ public class BukkitService implements SettingsDependent {
|
|||||||
return getScheduler().runTaskLater(task, delay);
|
return getScheduler().runTaskLater(task, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MyScheduledTask runTaskLater(Entity entity, Runnable task, long delay) {
|
||||||
|
return getScheduler().runTaskLater(entity, task, delay);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Schedules this task to run asynchronously or immediately executes it based on
|
* Schedules this task to run asynchronously or immediately executes it based on
|
||||||
* AuthMe's configuration.
|
* AuthMe's configuration.
|
||||||
|
|||||||
@@ -31,7 +31,17 @@ public final class DatabaseSettings implements SettingsHolder {
|
|||||||
public static final Property<String> MYSQL_PORT =
|
public static final Property<String> MYSQL_PORT =
|
||||||
newProperty("DataSource.mySQLPort", "3306");
|
newProperty("DataSource.mySQLPort", "3306");
|
||||||
|
|
||||||
@Comment("Connect to MySQL database over SSL")
|
@Comment({"Replacement of Mysql's useSsl (for MariaDB only).",
|
||||||
|
"- disable: No SSL",
|
||||||
|
"- trust: Trust blindly (no validation)",
|
||||||
|
"- verify_ca: Encryption, certificates validation, BUT no hostname verification",
|
||||||
|
"- verify_full: Encryption, certificate validation and hostname validation",
|
||||||
|
"Read more: https://bit.ly/mariadb-sslmode"})
|
||||||
|
public static final Property<String> MARIADB_SSL_MODE =
|
||||||
|
newProperty("DataSource.MariaDbSslMode", "disabled");
|
||||||
|
|
||||||
|
@Comment({"Connect to MySQL database over SSL",
|
||||||
|
"If you're using MariaDB, use sslMode instead"})
|
||||||
public static final Property<Boolean> MYSQL_USE_SSL =
|
public static final Property<Boolean> MYSQL_USE_SSL =
|
||||||
newProperty("DataSource.mySQLUseSSL", true);
|
newProperty("DataSource.mySQLUseSSL", true);
|
||||||
|
|
||||||
@@ -39,12 +49,13 @@ public final class DatabaseSettings implements SettingsHolder {
|
|||||||
"We would not recommend to set this option to false.",
|
"We would not recommend to set this option to false.",
|
||||||
"Set this option to false at your own risk if and only if you know what you're doing"})
|
"Set this option to false at your own risk if and only if you know what you're doing"})
|
||||||
public static final Property<Boolean> MYSQL_CHECK_SERVER_CERTIFICATE =
|
public static final Property<Boolean> MYSQL_CHECK_SERVER_CERTIFICATE =
|
||||||
newProperty( "DataSource.mySQLCheckServerCertificate", true );
|
newProperty( "DataSource.mySQLCheckServerCertificate", true);
|
||||||
|
|
||||||
@Comment({"Authorize client to retrieve RSA server public key.",
|
@Comment({"Authorize client to retrieve RSA server public key.",
|
||||||
"Advanced option, ignore if you don't know what it means."})
|
"Advanced option, ignore if you don't know what it means.",
|
||||||
|
"If you are using MariaDB, use MariaDbSslMode instead."})
|
||||||
public static final Property<Boolean> MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL =
|
public static final Property<Boolean> MYSQL_ALLOW_PUBLIC_KEY_RETRIEVAL =
|
||||||
newProperty( "DataSource.mySQLAllowPublicKeyRetrieval", true );
|
newProperty( "DataSource.mySQLAllowPublicKeyRetrieval", true);
|
||||||
|
|
||||||
@Comment("Username to connect to the MySQL database")
|
@Comment("Username to connect to the MySQL database")
|
||||||
public static final Property<String> MYSQL_USERNAME =
|
public static final Property<String> MYSQL_USERNAME =
|
||||||
|
|||||||
@@ -22,6 +22,12 @@ public final class HooksSettings implements SettingsHolder {
|
|||||||
public static final Property<Boolean> VELOCITY =
|
public static final Property<Boolean> VELOCITY =
|
||||||
newProperty("Hooks.velocity", false);
|
newProperty("Hooks.velocity", false);
|
||||||
|
|
||||||
|
@Comment({"How many ticks should we wait before sending login info to proxy?",
|
||||||
|
"Change this to higher if your player has high ping.",
|
||||||
|
"See: https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/"})
|
||||||
|
public static final Property<Long> PROXY_SEND_DELAY =
|
||||||
|
newProperty("Hooks.proxySendDelay", 10L);
|
||||||
|
|
||||||
@Comment({"Hook into floodgate.",
|
@Comment({"Hook into floodgate.",
|
||||||
"This must be true if you want to use other bedrock features."
|
"This must be true if you want to use other bedrock features."
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ public final class PluginSettings implements SettingsHolder {
|
|||||||
|
|
||||||
@Comment({
|
@Comment({
|
||||||
"Message language, available languages:",
|
"Message language, available languages:",
|
||||||
"https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md"
|
"https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md",
|
||||||
|
"Example: zhcn, en"
|
||||||
})
|
})
|
||||||
public static final Property<String> MESSAGES_LANGUAGE =
|
public static final Property<String> MESSAGES_LANGUAGE =
|
||||||
newProperty("settings.messagesLanguage", "en");
|
newProperty("settings.messagesLanguage", "en");
|
||||||
|
|||||||
@@ -46,6 +46,16 @@ public final class RegistrationSettings implements SettingsHolder {
|
|||||||
newProperty(RegisterSecondaryArgument.class, "settings.registration.secondArg",
|
newProperty(RegisterSecondaryArgument.class, "settings.registration.secondArg",
|
||||||
RegisterSecondaryArgument.CONFIRMATION);
|
RegisterSecondaryArgument.CONFIRMATION);
|
||||||
|
|
||||||
|
@Comment({
|
||||||
|
"Should we unregister the player when he didn't verify the email?",
|
||||||
|
"This only works if you enabled email registration."})
|
||||||
|
public static final Property<Boolean> UNREGISTER_ON_EMAIL_VERIFICATION_FAILURE =
|
||||||
|
newProperty("settings.registration.email.unregisterOnEmailVerificationFailure", false);
|
||||||
|
|
||||||
|
@Comment({"How many minutes should we wait before unregister the player",
|
||||||
|
"when he didn't verify the email?"})
|
||||||
|
public static final Property<Long> UNREGISTER_AFTER_MINUTES =
|
||||||
|
newProperty("settings.registration.email.unregisterAfterMinutes", 10L);
|
||||||
@Comment({
|
@Comment({
|
||||||
"Do we force kick a player after a successful registration?",
|
"Do we force kick a player after a successful registration?",
|
||||||
"Do not use with login feature below"})
|
"Do not use with login feature below"})
|
||||||
|
|||||||
Binary file not shown.
@@ -4,7 +4,7 @@ website: http://github.com/HaHaWTH/AuthMeReReloaded/
|
|||||||
description: A fork of AuthMeReloaded that contains bug fixes
|
description: A fork of AuthMeReloaded that contains bug fixes
|
||||||
main: ${pluginDescription.main}
|
main: ${pluginDescription.main}
|
||||||
folia-supported: true
|
folia-supported: true
|
||||||
version: 5.6.0-FORK-b46
|
version: 5.6.0-FORK-b48
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
softdepend:
|
softdepend:
|
||||||
- Vault
|
- Vault
|
||||||
|
|||||||
Reference in New Issue
Block a user