diff --git a/Launcher/runtime/config.js b/Launcher/runtime/config.js
index 1f1f81b4..a91e447b 100644
--- a/Launcher/runtime/config.js
+++ b/Launcher/runtime/config.js
@@ -1,8 +1,8 @@
var config = {
//*** Настройки лаунчера ***//
- dir: "GravitLauncher", // Название папки лаунчера
- title: "GravitLauncher", // Заголовок окна
- icons: ["favicon.png"], // Путь/Пути до иконки окна
+ dir: "GravitLauncher", // Название папки лаунчера
+ title: "GravitLauncher", // Заголовок окна
+ icons: ["favicon.png"], // Путь/Пути до иконки окна
links: [
//*** Ссылки ***//
@@ -11,7 +11,7 @@ var config = {
text: "GravitLauncher",
url: "https://gravit.pro",
},
-
+
{
id: "discord",
text: "",
@@ -19,18 +19,21 @@ var config = {
}
],
+ //*** Сервер Hastebin для сохранения лога ***//
+ hasteserver: "https://hasteb.in/",
+
//*** Стандартные настройки клиента ***//
- autoEnterDefault: false, // Автоматический вход на выбранный сервер
- fullScreenDefault: false, // Клиент в полный экран
- featureStoreDefault: true, // Поиск файлов в других клиентах (Используется для экономии трафика и ускорения загрузки)
- ramDefault: 1024, // Количество оперативной памяти выделенной по умолчанию (0 - Автоматически)
+ autoEnterDefault: false, // Автоматический вход на выбранный сервер
+ fullScreenDefault: false, // Клиент в полный экран
+ featureStoreDefault: true, // Поиск файлов в других клиентах (Используется для экономии трафика и ускорения загрузки)
+ ramDefault: 1024, // Количество оперативной памяти выделенной по умолчанию (0 - Автоматически)
//*** Настройка загрузки JVM ***//
/* LaunchServer: guardtype = java */
jvm: {
- enable: false, // Включение загрузки своей JVM
- jvmMustdie32Dir: "jre-8u211-win32", // Название папки JVM для Windows x32
- jvmMustdie64Dir: "jre-8u211-win64", // Название папки JVM для Windows x64
+ enable: false, // Включение загрузки своей JVM
+ jvmMustdie32Dir: "jre-8u211-win32", // Название папки JVM для Windows x32
+ jvmMustdie64Dir: "jre-8u211-win64", // Название папки JVM для Windows x64
},
settingsMagic: 0xC0DE5, // Магия вне хогвартса
diff --git a/Launcher/runtime/dialog/overlay/debug/debug.fxml b/Launcher/runtime/dialog/overlay/debug/debug.fxml
index 731fba31..fbc61fc0 100644
--- a/Launcher/runtime/dialog/overlay/debug/debug.fxml
+++ b/Launcher/runtime/dialog/overlay/debug/debug.fxml
@@ -22,7 +22,7 @@
-
+
diff --git a/Launcher/runtime/dialog/overlay/debug/debug.js b/Launcher/runtime/dialog/overlay/debug/debug.js
index 0f67fb54..edaa0716 100644
--- a/Launcher/runtime/dialog/overlay/debug/debug.js
+++ b/Launcher/runtime/dialog/overlay/debug/debug.js
@@ -21,8 +21,22 @@ var debug = {
debug.copy = debug.overlay.lookup("#copy");
debug.copy.setOnAction(function(event) {
+ var haste = FunctionalBridge.hastebin(config.hasteserver, debug.output.getText());
+
+ if (haste == null) {
+ debug.copy.setText("Ошибка!");
+ return;
+ }
+
+ try {
+ openURL(new java.net.URL(haste));
+ } catch (e) {
+ LogHelper.error("Error Open Link");
+ LogHelper.error(e);
+ }
+
var content = new javafx.scene.input.ClipboardContent();
- content.putString(debug.output.getText());
+ content.putString(haste);
javafx.scene.input.Clipboard.getSystemClipboard().
setContent(content);
diff --git a/Launcher/src/main/java/pro/gravit/launcher/client/FunctionalBridge.java b/Launcher/src/main/java/pro/gravit/launcher/client/FunctionalBridge.java
index 560b5abe..d89654f8 100644
--- a/Launcher/src/main/java/pro/gravit/launcher/client/FunctionalBridge.java
+++ b/Launcher/src/main/java/pro/gravit/launcher/client/FunctionalBridge.java
@@ -6,7 +6,20 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import pro.gravit.launcher.Launcher;
import pro.gravit.launcher.LauncherAPI;
+import pro.gravit.launcher.LauncherNetworkAPI;
import pro.gravit.launcher.api.AuthService;
import pro.gravit.launcher.events.request.AuthRequestEvent;
import pro.gravit.launcher.guard.LauncherGuardManager;
@@ -15,13 +28,19 @@
import pro.gravit.launcher.hwid.HWID;
import pro.gravit.launcher.hwid.OshiHWIDProvider;
import pro.gravit.launcher.managers.ConsoleManager;
+import pro.gravit.launcher.managers.GsonManager;
import pro.gravit.launcher.managers.HasherManager;
import pro.gravit.launcher.managers.HasherStore;
import pro.gravit.launcher.request.Request;
import pro.gravit.utils.Version;
import pro.gravit.utils.helper.LogHelper;
+import pro.gravit.utils.HTTPRequest;
public class FunctionalBridge {
+ public class HasteResponse {
+ @LauncherNetworkAPI
+ public String key;
+ }
@LauncherAPI
public static ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(0);
@LauncherAPI
@@ -133,4 +152,43 @@ public static String getLauncherVersion() {
Version.BUILD
);
}
+
+ @LauncherAPI
+ public static String hastebin(String hasteserver, String log) throws IOException {
+ JsonParser parser = new JsonParser();
+ Gson gson = Launcher.gsonManager.gson;
+
+ URL url = new URL(hasteserver + "documents");
+
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+ connection.setRequestMethod("POST");
+ connection.setRequestProperty("Content-Type", "text/plain; charset=UTF-8");
+ connection.setRequestProperty("Accept", "application/json");
+ connection.setConnectTimeout(10000);
+ try (OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8)) {
+ writer.write(log);
+ writer.flush();
+ }
+
+ InputStreamReader reader;
+ int statusCode = connection.getResponseCode();
+
+ if (200 <= statusCode && statusCode < 300)
+ reader = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
+ else
+ reader = new InputStreamReader(connection.getErrorStream(), StandardCharsets.UTF_8);
+ try {
+ JsonElement response = parser.parse(reader);
+ HasteResponse obj = gson.fromJson(response, HasteResponse.class);
+ return hasteserver + obj.key;
+ } catch (Exception e) {
+ if (200 > statusCode || statusCode > 300) {
+ LogHelper.error("JsonRequest failed. Server response code %d", statusCode);
+ throw new IOException(e);
+ }
+ return null;
+ }
+ }
}