83 lines
2.7 KiB
Java
83 lines
2.7 KiB
Java
package fr.xephi.authme.datasource.converter;
|
|
|
|
import fr.xephi.authme.ConsoleLogger;
|
|
import fr.xephi.authme.data.auth.PlayerAuth;
|
|
import fr.xephi.authme.datasource.DataSource;
|
|
import fr.xephi.authme.initialization.DataFolder;
|
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
|
import fr.xephi.authme.settings.Settings;
|
|
import fr.xephi.authme.settings.properties.ConverterSettings;
|
|
import org.bukkit.command.CommandSender;
|
|
|
|
import javax.inject.Inject;
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
import java.util.Locale;
|
|
|
|
/**
|
|
* Converter for CrazyLogin to AuthMe.
|
|
*/
|
|
public class CrazyLoginConverter implements Converter {
|
|
|
|
private final ConsoleLogger logger = ConsoleLoggerFactory.get(CrazyLoginConverter.class);
|
|
|
|
private final DataSource database;
|
|
private final Settings settings;
|
|
private final File dataFolder;
|
|
|
|
@Inject
|
|
CrazyLoginConverter(@DataFolder File dataFolder, DataSource dataSource, Settings settings) {
|
|
this.dataFolder = dataFolder;
|
|
this.database = dataSource;
|
|
this.settings = settings;
|
|
}
|
|
|
|
@Override
|
|
public void execute(CommandSender sender) {
|
|
String fileName = settings.getProperty(ConverterSettings.CRAZYLOGIN_FILE_NAME);
|
|
File source = new File(dataFolder, fileName);
|
|
if (!source.exists()) {
|
|
sender.sendMessage("CrazyLogin file not found, please put " + fileName + " in AuthMe folder!");
|
|
return;
|
|
}
|
|
|
|
String line;
|
|
try (BufferedReader users = new BufferedReader(new FileReader(source))) {
|
|
while ((line = users.readLine()) != null) {
|
|
if (line.contains("|")) {
|
|
migrateAccount(line);
|
|
}
|
|
}
|
|
logger.info("CrazyLogin database has been imported correctly");
|
|
} catch (IOException ex) {
|
|
logger.warning("Can't open the crazylogin database file! Does it exist?");
|
|
logger.logException("Encountered", ex);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Moves an account from CrazyLogin to the AuthMe database.
|
|
*
|
|
* @param line line read from the CrazyLogin file (one account)
|
|
*/
|
|
private void migrateAccount(String line) {
|
|
String[] args = line.split("\\|");
|
|
if (args.length < 2 || "name".equalsIgnoreCase(args[0])) {
|
|
return;
|
|
}
|
|
String playerName = args[0];
|
|
String password = args[1];
|
|
if (password != null) {
|
|
PlayerAuth auth = PlayerAuth.builder()
|
|
.name(playerName.toLowerCase(Locale.ROOT))
|
|
.realName(playerName)
|
|
.password(password, null)
|
|
.build();
|
|
database.saveAuth(auth);
|
|
}
|
|
}
|
|
|
|
}
|