mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-10-07 02:47:29 +02:00
Remove generated code / allow import of new languages
- Exporting back messages to the remote server is now handled by IP whitelisting, not with temporary codes
This commit is contained in:
parent
354581160a
commit
92c476785b
@ -29,8 +29,7 @@ public class ExportMessagesTask implements ToolTask {
|
|||||||
/** The folder containing the messages files. */
|
/** The folder containing the messages files. */
|
||||||
protected static final String MESSAGES_FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/";
|
protected static final String MESSAGES_FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/";
|
||||||
/** The remote URL to send an updated file to. */
|
/** The remote URL to send an updated file to. */
|
||||||
//private static final String UPDATE_URL = "http://jalu.ch/ext/authme/update.php";
|
private static final String UPDATE_URL = "http://jalu.ch/ext/authme/update.php";
|
||||||
private static final String UPDATE_URL = "http://localhost/AuthMe-translate/update.php";
|
|
||||||
private final Gson gson = new Gson();
|
private final Gson gson = new Gson();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -51,9 +50,7 @@ public class ExportMessagesTask implements ToolTask {
|
|||||||
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
|
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
|
||||||
String json = convertToJson(languageCode, loadDefaultMessages(), configuration);
|
String json = convertToJson(languageCode, loadDefaultMessages(), configuration);
|
||||||
|
|
||||||
System.out.println("Enter update code (generated on remote side)");
|
String result = sendJsonToRemote(languageCode, json);
|
||||||
String updateCode = scanner.nextLine().trim();
|
|
||||||
String result = sendJsonToRemote(json, updateCode, languageCode);
|
|
||||||
System.out.println("Answer: " + result);
|
System.out.println("Answer: " + result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,10 +72,9 @@ public class ExportMessagesTask implements ToolTask {
|
|||||||
return configuration.getString(key.getKey(), "");
|
return configuration.getString(key.getKey(), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String sendJsonToRemote(String file, String code, String language) {
|
private static String sendJsonToRemote(String language, String json) {
|
||||||
try {
|
try {
|
||||||
String encodedData = "file=" + URLEncoder.encode(file, "UTF-8")
|
String encodedData = "file=" + URLEncoder.encode(json, "UTF-8")
|
||||||
+ "&code=" + URLEncoder.encode(code, "UTF-8")
|
|
||||||
+ "&language=" + URLEncoder.encode(language, "UTF-8");
|
+ "&language=" + URLEncoder.encode(language, "UTF-8");
|
||||||
|
|
||||||
URL url = new URL(UPDATE_URL);
|
URL url = new URL(UPDATE_URL);
|
||||||
|
@ -2,6 +2,7 @@ package messages.translation;
|
|||||||
|
|
||||||
import com.google.common.io.Resources;
|
import com.google.common.io.Resources;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import fr.xephi.authme.output.MessageKey;
|
||||||
import messages.MessageFileVerifier;
|
import messages.MessageFileVerifier;
|
||||||
import messages.VerifyMessagesTask;
|
import messages.VerifyMessagesTask;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
@ -14,7 +15,9 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,6 +31,7 @@ public class ImportMessagesTask implements ToolTask {
|
|||||||
|
|
||||||
private static final String MESSAGES_FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/";
|
private static final String MESSAGES_FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/";
|
||||||
private Gson gson = new Gson();
|
private Gson gson = new Gson();
|
||||||
|
private Set<String> messageCodes;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTaskName() {
|
public String getTaskName() {
|
||||||
@ -37,7 +41,8 @@ public class ImportMessagesTask implements ToolTask {
|
|||||||
@Override
|
@Override
|
||||||
public void execute(Scanner scanner) {
|
public void execute(Scanner scanner) {
|
||||||
System.out.println("Enter URL to import from");
|
System.out.println("Enter URL to import from");
|
||||||
String url = scanner.nextLine();
|
// Dirty trick: replace https:// with http:// so we don't have to worry about installing certificates...
|
||||||
|
String url = scanner.nextLine().replace("https://", "http://");
|
||||||
|
|
||||||
LanguageExport languageExport = getLanguageExportFromUrl(url);
|
LanguageExport languageExport = getLanguageExportFromUrl(url);
|
||||||
if (languageExport == null) {
|
if (languageExport == null) {
|
||||||
@ -62,14 +67,19 @@ public class ImportMessagesTask implements ToolTask {
|
|||||||
String languageCode = export.code;
|
String languageCode = export.code;
|
||||||
String fileName = MESSAGES_FOLDER + "messages_" + languageCode + ".yml";
|
String fileName = MESSAGES_FOLDER + "messages_" + languageCode + ".yml";
|
||||||
File file = new File(fileName);
|
File file = new File(fileName);
|
||||||
if (!file.exists()) {
|
FileConfiguration fileConfiguration;
|
||||||
throw new IllegalStateException("Messages file for language code " + languageCode + " does not exist");
|
if (file.exists()) {
|
||||||
|
removeAllTodoComments(fileName);
|
||||||
|
fileConfiguration = AuthMeYamlConfiguration.loadConfiguration(file);
|
||||||
|
} else {
|
||||||
|
fileConfiguration = new AuthMeYamlConfiguration();
|
||||||
}
|
}
|
||||||
removeAllTodoComments(fileName);
|
|
||||||
|
|
||||||
FileConfiguration fileConfiguration = AuthMeYamlConfiguration.loadConfiguration(file);
|
buildMessageCodeList();
|
||||||
for (MessageExport messageExport : export.messages) {
|
for (MessageExport messageExport : export.messages) {
|
||||||
if (!messageExport.translatedMessage.isEmpty()) {
|
if (!messageCodes.contains(messageExport.key)) {
|
||||||
|
throw new IllegalStateException("Message key '" + messageExport.key + "' does not exist");
|
||||||
|
} else if (!messageExport.translatedMessage.isEmpty()) {
|
||||||
fileConfiguration.set(messageExport.key, messageExport.translatedMessage);
|
fileConfiguration.set(messageExport.key, messageExport.translatedMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,6 +94,13 @@ public class ImportMessagesTask implements ToolTask {
|
|||||||
new File(MESSAGES_FOLDER + "messages_en.yml")));
|
new File(MESSAGES_FOLDER + "messages_en.yml")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buildMessageCodeList() {
|
||||||
|
messageCodes = new HashSet<>(MessageKey.values().length);
|
||||||
|
for (MessageKey messageKey : MessageKey.values()) {
|
||||||
|
messageCodes.add(messageKey.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes all to-do comments written by {@link VerifyMessagesTask}. This is helpful as the YamlConfiguration
|
* Removes all to-do comments written by {@link VerifyMessagesTask}. This is helpful as the YamlConfiguration
|
||||||
* moves those comments otherwise upon saving.
|
* moves those comments otherwise upon saving.
|
||||||
|
Loading…
Reference in New Issue
Block a user