From 540e518464c362008de6e647e5fd13c256a7e21b Mon Sep 17 00:00:00 2001 From: James Quinley Date: Sat, 19 Nov 2022 11:53:00 -0800 Subject: [PATCH] Adds full telemetry support via 71 and 72. --- .../delegationServices.java | 93 +++++++++++++++++-- 1 file changed, 87 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java index 91b1c18..ab082fa 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java @@ -100,6 +100,7 @@ public class delegationServices { Document Filter; int ClientID = 0; Document Lrequest = dCollection.find(eq("status", false)).first(); + if ((boolean) Lrequest.get("status") == true) { @@ -182,7 +183,7 @@ public class delegationServices { System.out.println("Delegation Has Started"); - if (requesttype == 0 || requesttype == 1 || requesttype == 2 || requesttype == 3 || requesttype == 4 || requesttype == 5 || requesttype == 6 || requesttype == 7 || requesttype == 8 || requesttype == 9 || requesttype == 10 || requesttype == 11 || requesttype == 12 || requesttype == 14 || requesttype == 20 || requesttype == 21 || requesttype == 41 || requesttype == 18 || requesttype == 47 || requesttype == 48 || requesttype == 54 || requesttype == 57 || requesttype == 61 || requesttype == 63 || requesttype == 65 || requesttype == 66 || requesttype == 67 || requesttype == 68) { + if (requesttype == 0 || requesttype == 1 || requesttype == 2 || requesttype == 3 || requesttype == 4 || requesttype == 5 || requesttype == 6 || requesttype == 7 || requesttype == 8 || requesttype == 9 || requesttype == 10 || requesttype == 11 || requesttype == 12 || requesttype == 14 || requesttype == 20 || requesttype == 21 || requesttype == 41 || requesttype == 18 || requesttype == 47 || requesttype == 48 || requesttype == 54 || requesttype == 57 || requesttype == 61 || requesttype == 63 || requesttype == 65 || requesttype == 66 || requesttype == 67 || requesttype == 68 || requesttype == 71 || requesttype == 72) { if (requesttype == 47) { System.out.println("Self Updater download Request"); BasicDBObject searchQuery = new BasicDBObject(); @@ -901,9 +902,9 @@ public class delegationServices { //Deprecated, a killswitch has been added under rgcon in the field "gameActive" //TOKEN LOGIN FOR GAME, DOES NOT SEND EMAIL, LAUNCHER WILL NOT USE THIS. System.out.println("Game Login"); - int CTOKEN = (int) Lrequest.get("Token"); + String CTOKEN = (String) Lrequest.get("Token"); Document accountServer; - int TKN; + String TKN; String Password; String Fname; String Path; @@ -914,12 +915,12 @@ public class delegationServices { try { accountServer = accountS.find(eq("Token", CTOKEN)).first(); System.out.println("PollServer"); - TKN = (int) accountServer.get("Token"); + TKN = (String) accountServer.get("Token"); System.out.println("TokenPulled"); if (accountServer.get("Status").equals(true)) { - if (TKN == CTOKEN) { + if (TKN.equals(CTOKEN)) { System.out.println("TokenGood"); - TKN = (int) accountServer.get("Token"); + TKN = (String) accountServer.get("Token"); Password = (String) accountServer.get("Password"); Fname = (String) accountServer.get("FName"); Path = (String) accountServer.get("Path"); @@ -1514,6 +1515,86 @@ public class delegationServices { dCollection.updateOne(searchQuery, updateQuery); delegationServices.TargetDelete(ClientID); } + if (requesttype == 71) { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + System.out.println("Collecting Telemetry Data"); + File homedir = new File(System.getProperty("user.home")); + String applicationName = Lrequest.get("applicationName").toString(); + String telemetryType = Lrequest.get("TelemetryType").toString(); + String telemetryDetails = Lrequest.get("TelemetryDetails").toString(); + String UUID = Lrequest.get("UUID").toString(); + String timeCurrent = LocalDateTime.now().toString(); //ISO-8601: yyyy-MM-ddTHH:mm:ss.S + try { + File myObj = new File(homedir + "/ocs/telemetry/" + applicationName + UUID + timeCurrent + ".txt"); + if (myObj.createNewFile()) { + System.out.println("Log File created: " + myObj.getName()); + FileWriter writer = new FileWriter(homedir + "/ocs/logs/" + applicationName + UUID + timeCurrent + ".txt", true); + writer.write("This bug report is for: " + applicationName); + writer.write("\r\n"); + writer.write("Type of telemetry: " + telemetryType); + writer.write("\r\n"); + writer.write("More bug details: " + telemetryDetails); + writer.write("\r\n"); + writer.write("This is auto generated by the Obsidian Core backend services"); + writer.write("\r\n"); + writer.write("Submission Time (Local To Server): " + timeCurrent); + writer.close(); + + } else { + System.out.println("Log already exists."); + } + } catch (IOException e) { + System.out.println("An error occurred when attempting to log."); + } + BasicDBObject updateQuery = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + delegationServices.TargetDelete(ClientID); + } + if (requesttype == 72) { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + System.out.println("Collecting Error Data"); + File homedir = new File(System.getProperty("user.home")); + String applicationName = Lrequest.get("applicationName").toString(); + String telemetryType = Lrequest.get("telemetryType").toString(); + String telemetryDetails = Lrequest.get("telemetryDetails").toString(); + String telemetryLog = Lrequest.get("telemetryLog").toString(); + String UUID = Lrequest.get("UUID").toString(); + String timeCurrent = LocalDateTime.now().toString(); //ISO-8601: yyyy-MM-ddTHH:mm:ss.S + try { + File myObj = new File(homedir + "/ocs/logs/" + applicationName + UUID + timeCurrent + ".txt"); + if (myObj.createNewFile()) { + System.out.println("Log File created: " + myObj.getName()); + FileWriter writer = new FileWriter(homedir + "/ocs/telemetry/" + applicationName + UUID + timeCurrent + ".txt", true); + writer.write("This bug report is for: " + applicationName); + writer.write("\r\n"); + writer.write("The telemetry type is: " + telemetryType); + writer.write("\r\n"); + writer.write("More telemetry details: " + telemetryDetails); + writer.write("\r\n"); + writer.write("This is auto generated by the Obsidian Core backend services"); + writer.write("\r\n"); + writer.write("Submission Time (Local To Server): " + timeCurrent); + writer.write("\r\n"); + writer.write("Full log file:"); + writer.write("\r\n"); + writer.write(telemetryLog); + writer.close(); + } else { + System.out.println("Log already exists."); + } + } catch (IOException e) { + System.out.println("An error occurred while attempting to log."); + } + BasicDBObject updateQuery = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + delegationServices.TargetDelete(ClientID); + } if (requesttype == 68) { System.out.println("Verifying OTK"); String userKey = (String) Lrequest.get("otk");