[FEATURE] Загрузка лога на Hastebin (#358)

This commit is contained in:
LoomeL 2020-03-01 18:01:23 +06:00 committed by GitHub
parent 477b0d2fbe
commit c06257dbc6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 88 additions and 13 deletions

View file

@ -1,8 +1,8 @@
var config = { var config = {
//*** Настройки лаунчера ***// //*** Настройки лаунчера ***//
dir: "GravitLauncher", // Название папки лаунчера dir: "GravitLauncher", // Название папки лаунчера
title: "GravitLauncher", // Заголовок окна title: "GravitLauncher", // Заголовок окна
icons: ["favicon.png"], // Путь/Пути до иконки окна icons: ["favicon.png"], // Путь/Пути до иконки окна
links: [ links: [
//*** Ссылки ***// //*** Ссылки ***//
@ -11,7 +11,7 @@ var config = {
text: "GravitLauncher", text: "GravitLauncher",
url: "https://gravit.pro", url: "https://gravit.pro",
}, },
{ {
id: "discord", id: "discord",
text: "", text: "",
@ -19,18 +19,21 @@ var config = {
} }
], ],
//*** Сервер Hastebin для сохранения лога ***//
hasteserver: "https://hasteb.in/",
//*** Стандартные настройки клиента ***// //*** Стандартные настройки клиента ***//
autoEnterDefault: false, // Автоматический вход на выбранный сервер autoEnterDefault: false, // Автоматический вход на выбранный сервер
fullScreenDefault: false, // Клиент в полный экран fullScreenDefault: false, // Клиент в полный экран
featureStoreDefault: true, // Поиск файлов в других клиентах (Используется для экономии трафика и ускорения загрузки) featureStoreDefault: true, // Поиск файлов в других клиентах (Используется для экономии трафика и ускорения загрузки)
ramDefault: 1024, // Количество оперативной памяти выделенной по умолчанию (0 - Автоматически) ramDefault: 1024, // Количество оперативной памяти выделенной по умолчанию (0 - Автоматически)
//*** Настройка загрузки JVM ***// //*** Настройка загрузки JVM ***//
/* LaunchServer: guardtype = java */ /* LaunchServer: guardtype = java */
jvm: { jvm: {
enable: false, // Включение загрузки своей JVM enable: false, // Включение загрузки своей JVM
jvmMustdie32Dir: "jre-8u211-win32", // Название папки JVM для Windows x32 jvmMustdie32Dir: "jre-8u211-win32", // Название папки JVM для Windows x32
jvmMustdie64Dir: "jre-8u211-win64", // Название папки JVM для Windows x64 jvmMustdie64Dir: "jre-8u211-win64", // Название папки JVM для Windows x64
}, },
settingsMagic: 0xC0DE5, // Магия вне хогвартса settingsMagic: 0xC0DE5, // Магия вне хогвартса

View file

@ -22,7 +22,7 @@
</padding> </padding>
</TextArea> </TextArea>
<Pane layoutY="405.0" prefHeight="45.0" prefWidth="693.0" style="-fx-background-color: #ffffff;" /> <Pane layoutY="405.0" prefHeight="45.0" prefWidth="693.0" style="-fx-background-color: #ffffff;" />
<Button fx:id="copy" defaultButton="true" layoutX="373.0" layoutY="415.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" /> <Button fx:id="copy" defaultButton="true" layoutX="373.0" layoutY="415.0" prefHeight="30.0" prefWidth="100.0" text="Загрузить на Hastebin" />
<Button fx:id="action" layoutX="533.0" layoutY="415.0" prefHeight="25.0" prefWidth="150.0" text="Убить" /> <Button fx:id="action" layoutX="533.0" layoutY="415.0" prefHeight="25.0" prefWidth="150.0" text="Убить" />
<Label fx:id="version" layoutX="14.0" layoutY="419.0" text="GravitLauncher" /> <Label fx:id="version" layoutX="14.0" layoutY="419.0" text="GravitLauncher" />
</Pane> </Pane>

View file

@ -21,8 +21,22 @@ var debug = {
debug.copy = debug.overlay.lookup("#copy"); debug.copy = debug.overlay.lookup("#copy");
debug.copy.setOnAction(function(event) { 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(); var content = new javafx.scene.input.ClipboardContent();
content.putString(debug.output.getText()); content.putString(haste);
javafx.scene.input.Clipboard.getSystemClipboard(). javafx.scene.input.Clipboard.getSystemClipboard().
setContent(content); setContent(content);

View file

@ -6,7 +6,20 @@
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference; 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.LauncherAPI;
import pro.gravit.launcher.LauncherNetworkAPI;
import pro.gravit.launcher.api.AuthService; import pro.gravit.launcher.api.AuthService;
import pro.gravit.launcher.events.request.AuthRequestEvent; import pro.gravit.launcher.events.request.AuthRequestEvent;
import pro.gravit.launcher.guard.LauncherGuardManager; import pro.gravit.launcher.guard.LauncherGuardManager;
@ -15,13 +28,19 @@
import pro.gravit.launcher.hwid.HWID; import pro.gravit.launcher.hwid.HWID;
import pro.gravit.launcher.hwid.OshiHWIDProvider; import pro.gravit.launcher.hwid.OshiHWIDProvider;
import pro.gravit.launcher.managers.ConsoleManager; import pro.gravit.launcher.managers.ConsoleManager;
import pro.gravit.launcher.managers.GsonManager;
import pro.gravit.launcher.managers.HasherManager; import pro.gravit.launcher.managers.HasherManager;
import pro.gravit.launcher.managers.HasherStore; import pro.gravit.launcher.managers.HasherStore;
import pro.gravit.launcher.request.Request; import pro.gravit.launcher.request.Request;
import pro.gravit.utils.Version; import pro.gravit.utils.Version;
import pro.gravit.utils.helper.LogHelper; import pro.gravit.utils.helper.LogHelper;
import pro.gravit.utils.HTTPRequest;
public class FunctionalBridge { public class FunctionalBridge {
public class HasteResponse {
@LauncherNetworkAPI
public String key;
}
@LauncherAPI @LauncherAPI
public static ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(0); public static ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(0);
@LauncherAPI @LauncherAPI
@ -133,4 +152,43 @@ public static String getLauncherVersion() {
Version.BUILD 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;
}
}
} }