114 lines
3.6 KiB
Java
114 lines
3.6 KiB
Java
package fr.xephi.authme.settings;
|
|
|
|
import ch.jalu.configme.SettingsManagerImpl;
|
|
import ch.jalu.configme.configurationdata.ConfigurationData;
|
|
import ch.jalu.configme.migration.MigrationService;
|
|
import ch.jalu.configme.resource.PropertyResource;
|
|
import com.google.common.io.Files;
|
|
import fr.xephi.authme.ConsoleLogger;
|
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
import static fr.xephi.authme.util.FileUtils.copyFileFromResource;
|
|
|
|
/**
|
|
* The AuthMe settings manager.
|
|
*/
|
|
public class Settings extends SettingsManagerImpl {
|
|
|
|
private final ConsoleLogger logger = ConsoleLoggerFactory.get(Settings.class);
|
|
private final File pluginFolder;
|
|
private String passwordEmailMessage;
|
|
private String verificationEmailMessage;
|
|
private String recoveryCodeEmailMessage;
|
|
private String shutdownEmailMessage;
|
|
private String newPasswordEmailMessage;
|
|
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param pluginFolder the AuthMe plugin folder
|
|
* @param resource the property resource to read and write properties to
|
|
* @param migrationService migration service to check the settings file with
|
|
* @param configurationData configuration data (properties and comments)
|
|
*/
|
|
public Settings(File pluginFolder, PropertyResource resource, MigrationService migrationService,
|
|
ConfigurationData configurationData) {
|
|
super(resource, configurationData, migrationService);
|
|
this.pluginFolder = pluginFolder;
|
|
loadSettingsFromFiles();
|
|
}
|
|
|
|
/**
|
|
* Return the text to use in email registrations.
|
|
*
|
|
* @return The email message
|
|
*/
|
|
public String getPasswordEmailMessage() {
|
|
return passwordEmailMessage;
|
|
}
|
|
|
|
/**
|
|
* Return the text for verification emails (before sensitive commands can be used).
|
|
*
|
|
* @return The email message
|
|
*/
|
|
public String getVerificationEmailMessage() {
|
|
return verificationEmailMessage;
|
|
}
|
|
|
|
/**
|
|
* Return the text to use when someone requests to receive a recovery code.
|
|
*
|
|
* @return The email message
|
|
*/
|
|
public String getRecoveryCodeEmailMessage() {
|
|
return recoveryCodeEmailMessage;
|
|
}
|
|
|
|
public String getShutdownEmailMessage() {return shutdownEmailMessage;}
|
|
|
|
public String getNewPasswordEmailMessage() {
|
|
return newPasswordEmailMessage;
|
|
}
|
|
|
|
private void loadSettingsFromFiles() {
|
|
newPasswordEmailMessage = readFile("new_email.html");
|
|
passwordEmailMessage = readFile("email.html");
|
|
verificationEmailMessage = readFile("verification_code_email.html");
|
|
recoveryCodeEmailMessage = readFile("recovery_code_email.html");
|
|
shutdownEmailMessage = readFile("shutdown.html");
|
|
String country = readFile("GeoLite2-Country.mmdb");
|
|
}
|
|
|
|
@Override
|
|
public void reload() {
|
|
super.reload();
|
|
loadSettingsFromFiles();
|
|
}
|
|
|
|
/**
|
|
* Reads a file from the plugin folder or copies it from the JAR to the plugin folder.
|
|
*
|
|
* @param filename the file to read
|
|
* @return the file's contents
|
|
*/
|
|
private String readFile(String filename) {
|
|
final File file = new File(pluginFolder, filename);
|
|
if (copyFileFromResource(file, filename)) {
|
|
try {
|
|
return Files.asCharSource(file, StandardCharsets.UTF_8).read();
|
|
} catch (IOException e) {
|
|
logger.logException("Failed to read file '" + filename + "':", e);
|
|
}
|
|
} else {
|
|
logger.warning("Failed to copy file '" + filename + "' from JAR");
|
|
}
|
|
return "";
|
|
}
|
|
}
|