From bdffff72bff73b2205a764bdadabf52cfc0c96a2 Mon Sep 17 00:00:00 2001 From: James Quinley Date: Thu, 24 Nov 2022 08:35:57 -0800 Subject: [PATCH] Adds login and token login in web branch. --- .../com/jamesquinley/Asecure/secureCalls.java | 17 +- .../delegationServices.java | 3262 ++++++++++------- .../DelegationServices/delegationTimer.java | 34 +- src/main/java/com/jamesquinley/Main.java | 2 +- 4 files changed, 1869 insertions(+), 1446 deletions(-) diff --git a/src/main/java/com/jamesquinley/Asecure/secureCalls.java b/src/main/java/com/jamesquinley/Asecure/secureCalls.java index 4bc8cac..b6481da 100644 --- a/src/main/java/com/jamesquinley/Asecure/secureCalls.java +++ b/src/main/java/com/jamesquinley/Asecure/secureCalls.java @@ -15,7 +15,13 @@ public class secureCalls { public static void banAction (String UUID) { - delegationServices.banUserID(UUID); + final Runnable runnable = new Runnable() { + public void run() { + delegationServices.banUserID(UUID); + } + }; + runnable.run(); + } public static void oneTimeKeyEmail (String email, String key, String user) { @@ -35,4 +41,13 @@ public class secureCalls { }; runnable.run(); } + public static void accountCreationComplete (String email, String user, String UUID) + { + final Runnable runnable = new Runnable() { + public void run() { + electronicMailHandler.Onboarding(email,user,UUID); + } + }; + runnable.run(); + } } diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java index d51a625..bef6ce1 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java @@ -12,6 +12,7 @@ import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.apache.logging.log4j.core.util.JsonUtils; import org.bson.Document; +import org.bson.types.ObjectId; import java.io.File; import java.io.FileWriter; @@ -34,7 +35,7 @@ public class delegationServices { static MongoCollection dCollection; static MongoDatabase RGFilterDB; static MongoCollection RGFilter; - + static Document Lrequest = null; public static void connectionInit(Boolean beta) { //TODO Send Server Version As Standard. if (beta) { @@ -81,7 +82,6 @@ public class delegationServices { static MongoClient accountGetClient = MongoClients.create(AccountSettings); static MongoDatabase accountDatabase = accountGetClient.getDatabase("account"); static MongoCollection accountS = accountDatabase.getCollection("UserPass"); - static MongoCollection FNETDOC = accountDatabase.getCollection("FNet"); static int RequestR; //still need to config public static String lastNet = null; @@ -97,28 +97,23 @@ public class delegationServices { } public static void delegationProcesser() { + Boolean cid = false; + Boolean mac = false; Document Filter; int ClientID = 0; - Document Lrequest = dCollection.find(eq("status", false)).first(); - - if ((boolean) Lrequest.get("status") == true) { - - - System.out.println("This request was completed, ignoring"); - } else { - + System.out.println(Lrequest); try { try { ClientID = (int) Lrequest.get("clientid"); + cid = true; } catch (Exception exrp) { - delegationTimer.DeleteTargetRequest(ClientID); + System.out.println("This request has opted out of CID."); } try { Macid = (String) Lrequest.get("net"); - + mac = true; } catch (Exception exrp) { - System.out.println("Failed To Get MacAdr"); - delegationTimer.DeleteTargetRequest(ClientID); + System.out.println("This request has opted out of CID."); } String RG = (String) Lrequest.get("rg"); @@ -164,7 +159,7 @@ public class delegationServices { } else { if (blockedRG.contains(RG)) { BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("rid", Lrequest.get("rid")); + searchQuery.append("_id", Lrequest.get("_id")); BasicDBObject updateQuery = new BasicDBObject(); BasicDBObject updateQuery1 = new BasicDBObject(); @@ -183,355 +178,106 @@ 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 || requesttype == 71 || requesttype == 72) { - if (requesttype == 47) { - System.out.println("Self Updater download Request"); - BasicDBObject searchQuery = new BasicDBObject(); - BasicDBObject SqS = new BasicDBObject(); - SqS.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - try { - - Document LCP = RGFilter.find(eq("rgkey", "UAROCKS")).first(); - String UPDT = (String) LCP.get("UURI"); - String config = (String) LCP.get("config"); - System.out.println("ThisIsConfig " + config); - updateQuery.append("$set", - new BasicDBObject().append("type", 42)); - updateQuery2.append("$set", - new BasicDBObject().append("uri", UPDT)); - updateQuery3.append("$set", - new BasicDBObject().append("winconfig", config)); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - } catch (Exception ex) { - updateQuery.append("$set", - new BasicDBObject().append("type", 43)); - updateQuery2.append("$set", - new BasicDBObject().append("uri", "F")); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - } - dCollection.updateOne(SqS, updateQuery); - dCollection.updateOne(SqS, updateQuery2); - dCollection.updateOne(SqS, updateQuery3); - dCollection.updateOne(SqS, updateQuery6); - System.out.println("Finished Updater Request"); - delegationTimer.DeleteTargetRequest(ClientID); - - } - - if (requesttype == 41) { - System.out.println("Internal Launcher Download Request"); - BasicDBObject searchQuery = new BasicDBObject(); - BasicDBObject SqS = new BasicDBObject(); - SqS.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - try { - Document LCP = RGFilter.find(eq("rgkey", "UAROCKS")).first(); - String UPDT = (String) LCP.get("URI"); - updateQuery.append("$set", - new BasicDBObject().append("type", 42)); - updateQuery2.append("$set", - new BasicDBObject().append("uri", UPDT)); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - } catch (Exception ex) { - updateQuery.append("$set", - new BasicDBObject().append("type", 43)); - updateQuery2.append("$set", - new BasicDBObject().append("uri", "F")); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - } - dCollection.updateOne(SqS, updateQuery); - dCollection.updateOne(SqS, updateQuery2); - dCollection.updateOne(SqS, updateQuery6); - System.out.println("Finished Updater Request"); - delegationTimer.DeleteTargetRequest(ClientID); - - } - if (requesttype == 0) { - String CTOKEN = (String) Lrequest.get("Token"); - System.out.println("Sync Request (Read)"); - Document accountServer; - String Token; - String Fname; - String Path; - String UserName; - String Email; - try { - accountServer = accountS.find(eq("Token", CTOKEN)).first(); - Token = (String) accountServer.get("Token"); - if (accountServer.get("Status").equals(true)) { - if (Token.equals(CTOKEN)) { - - Token = (String) accountServer.get("Token"); - Fname = (String) accountServer.get("FName"); - Path = (String) accountServer.get("Path"); - Email = (String) accountServer.get("Email"); - UserName = (String) accountServer.get("User"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - BasicDBObject updateQuery7 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 12)); - updateQuery1.append("$set", - new BasicDBObject().append("Token", Token)); - updateQuery2.append("$set", - new BasicDBObject().append("Fname", Fname)); - updateQuery3.append("$set", - new BasicDBObject().append("Path", Path)); - updateQuery4.append("$set", - new BasicDBObject().append("User", UserName)); - updateQuery7.append("$set", - new BasicDBObject().append("Email", Email)); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - dCollection.updateOne(searchQuery, updateQuery2); - dCollection.updateOne(searchQuery, updateQuery3); - dCollection.updateOne(searchQuery, updateQuery4); - dCollection.updateOne(searchQuery, updateQuery6); - dCollection.updateOne(searchQuery, updateQuery7); - delegationTimer.DeleteTargetRequest(ClientID); - System.out.println("Finished Sync Read Op"); - } else { - System.out.println("Sync Failure"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("rid", Lrequest.get("rid")); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 9)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - //delegationTimer.trigger(); - } - } else { - System.out.println("Banned Account"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 11)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - } - } catch (MongoCommandException ERC) { - System.out.println("Malformed Request"); + if (cid == true && mac == true) + { + 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(); - searchQuery.append("clientid", ClientID); + BasicDBObject SqS = new BasicDBObject(); + SqS.append("clientid", ClientID); BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } - } - //sync write request - if (requesttype == 1) { - System.out.println("Sync Request (Write)"); - String CTOKEN = (String) Lrequest.get("Token"); - Document accountServer; - String Token; - String Fname; - String Path; - String UserName; - try { - accountServer = accountS.find(eq("Token", CTOKEN)).first(); - Token = (String) accountServer.get("Token"); - if (accountServer.get("Status").equals(true)) { - if (Token.equals(CTOKEN)) { - Token = (String) Lrequest.get("Token"); - Path = (String) Lrequest.get("Path"); - System.out.println("Got info."); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("Token", Token); - BasicDBObject SqS = new BasicDBObject(); - SqS.append("clientid", ClientID); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + try { - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 12)); - updateQuery3.append("$set", - new BasicDBObject().append("Path", Path)); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(SqS, updateQuery); - dCollection.updateOne(SqS, updateQuery6); - accountS.updateOne(searchQuery, updateQuery3); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } else { - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("rid", (int) Lrequest.get("rid")); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 9)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } - } else { - System.out.println("Banned Account"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); + Document LCP = RGFilter.find(eq("rgkey", "UAROCKS")).first(); + String UPDT = (String) LCP.get("UURI"); + String config = (String) LCP.get("config"); + System.out.println("ThisIsConfig " + config); updateQuery.append("$set", - new BasicDBObject().append("type", 11)); - updateQuery1.append("$set", + new BasicDBObject().append("type", 42)); + updateQuery2.append("$set", + new BasicDBObject().append("uri", UPDT)); + updateQuery3.append("$set", + new BasicDBObject().append("winconfig", config)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + } catch (Exception ex) { + updateQuery.append("$set", + new BasicDBObject().append("type", 43)); + updateQuery2.append("$set", + new BasicDBObject().append("uri", "F")); + updateQuery6.append("$set", new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); } - } catch (MongoCommandException ERC) { - System.out.println("Malformed Request"); + dCollection.updateOne(SqS, updateQuery); + dCollection.updateOne(SqS, updateQuery2); + dCollection.updateOne(SqS, updateQuery3); + dCollection.updateOne(SqS, updateQuery6); + System.out.println("Finished Updater Request"); + delegationTimer.DeleteTargetRequest(ClientID); + + } + + if (requesttype == 41) { + System.out.println("Internal Launcher Download Request"); BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); + BasicDBObject SqS = new BasicDBObject(); + SqS.append("clientid", ClientID); BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + try { + Document LCP = RGFilter.find(eq("rgkey", "UAROCKS")).first(); + String UPDT = (String) LCP.get("URI"); + updateQuery.append("$set", + new BasicDBObject().append("type", 42)); + updateQuery2.append("$set", + new BasicDBObject().append("uri", UPDT)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + } catch (Exception ex) { + updateQuery.append("$set", + new BasicDBObject().append("type", 43)); + updateQuery2.append("$set", + new BasicDBObject().append("uri", "F")); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + } + dCollection.updateOne(SqS, updateQuery); + dCollection.updateOne(SqS, updateQuery2); + dCollection.updateOne(SqS, updateQuery6); + System.out.println("Finished Updater Request"); delegationTimer.DeleteTargetRequest(ClientID); + } - } - if (requesttype == 2) { - System.out.println("Login Request (USR&PASS)"); - String username = (String) Lrequest.get("User"); - String password = (String) Lrequest.get("Password"); - Document accountServer; - String Password; - String Token; - String Fname; - String Path; - String UserName; - String Email; - String keychainUUID; + if (requesttype == 0) { + String CTOKEN = (String) Lrequest.get("Token"); + System.out.println("Sync Request (Read)"); + Document accountServer; + String Token; + String Fname; + String Path; + String UserName; + String Email; + try { + accountServer = accountS.find(eq("Token", CTOKEN)).first(); + Token = (String) accountServer.get("Token"); + if (accountServer.get("Status").equals(true)) { + if (Token.equals(CTOKEN)) { - Boolean accountKeyStatus = false; - try { - accountServer = accountS.find(eq("User", username)).first(); - Password = (String) accountServer.get("Password"); - Email = (String) accountServer.get("Email"); - if (accountServer.get("Status").equals(true)) { - if (accountServer.get("Version").equals("1")) { - try { - accountKeyStatus = accountServer.getBoolean("keyStatus"); - } catch (Exception NPE) { - System.out.println("Assuming False Due To Variable Not Existing For User."); - accountKeyStatus = false; - } - if (accountKeyStatus == false) { - System.out.println(accountKeyStatus); - String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; - StringBuilder sb = new StringBuilder(); - Random random = new Random(); - int length = 15; - for (int i = 0; i < length; i++) { - int index = random.nextInt(alphabet.length()); - char randomChar = alphabet.charAt(index); - sb.append(randomChar); - } - String OTK = sb.toString(); - BasicDBObject searchQuery = new BasicDBObject(); - BasicDBObject keyApplicationIndex = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - keyApplicationIndex.append("User", username); - secureCalls.oneTimeKeyEmail(((String) accountServer.get("Email")), OTK, username); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - BasicDBObject keyApply = new BasicDBObject(); - BasicDBObject keyAccountState = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 53)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - keyAccountState.append("$set", - new BasicDBObject().append("keyStatus", true)); - keyApply.append("$set", - new BasicDBObject().append("tempKey", OTK)); - accountS.updateOne(keyApplicationIndex, keyApply); - accountS.updateOne(keyApplicationIndex, keyAccountState); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - accountKeyStatus = true; - } else { - System.out.println("RS1"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 53)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } - - } else { - System.out.println("RSC"); - if (Password.equals(password)) { - System.out.println("R3c"); Token = (String) accountServer.get("Token"); Fname = (String) accountServer.get("FName"); Path = (String) accountServer.get("Path"); Email = (String) accountServer.get("Email"); UserName = (String) accountServer.get("User"); - lastNet = (String) accountServer.get("lastNet"); - keychainUUID = (String) accountServer.get("UUID"); - localNet.macRead(Macid, lastNet, Email, UserName, Token); BasicDBObject searchQuery = new BasicDBObject(); searchQuery.append("clientid", ClientID); BasicDBObject updateQuery = new BasicDBObject(); @@ -539,12 +285,10 @@ public class delegationServices { BasicDBObject updateQuery2 = new BasicDBObject(); BasicDBObject updateQuery3 = new BasicDBObject(); BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery5 = new BasicDBObject(); BasicDBObject updateQuery6 = new BasicDBObject(); BasicDBObject updateQuery7 = new BasicDBObject(); - BasicDBObject updateQuery8 = new BasicDBObject(); updateQuery.append("$set", - new BasicDBObject().append("type", 8)); + new BasicDBObject().append("type", 12)); updateQuery1.append("$set", new BasicDBObject().append("Token", Token)); updateQuery2.append("$set", @@ -553,28 +297,23 @@ public class delegationServices { new BasicDBObject().append("Path", Path)); updateQuery4.append("$set", new BasicDBObject().append("User", UserName)); - updateQuery5.append("$set", - new BasicDBObject().append("Password", Password)); updateQuery7.append("$set", new BasicDBObject().append("Email", Email)); updateQuery6.append("$set", new BasicDBObject().append("status", true)); - updateQuery8.append("$set", - new BasicDBObject().append("keychainUUID", keychainUUID)); dCollection.updateOne(searchQuery, updateQuery); dCollection.updateOne(searchQuery, updateQuery1); dCollection.updateOne(searchQuery, updateQuery2); dCollection.updateOne(searchQuery, updateQuery3); dCollection.updateOne(searchQuery, updateQuery4); - dCollection.updateOne(searchQuery, updateQuery5); dCollection.updateOne(searchQuery, updateQuery6); dCollection.updateOne(searchQuery, updateQuery7); - dCollection.updateOne(searchQuery, updateQuery8); - //delegationTimer.trigger(); delegationTimer.DeleteTargetRequest(ClientID); + System.out.println("Finished Sync Read Op"); } else { + System.out.println("Sync Failure"); BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); + searchQuery.append("rid", Lrequest.get("rid")); BasicDBObject updateQuery = new BasicDBObject(); BasicDBObject updateQuery1 = new BasicDBObject(); @@ -584,414 +323,8 @@ public class delegationServices { new BasicDBObject().append("status", true)); dCollection.updateOne(searchQuery, updateQuery); dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); delegationTimer.DeleteTargetRequest(ClientID); - } - } - } else { - System.out.println("Banned Account"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 11)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - } - } catch (Exception ERC) { - System.out.println("Something Went Wrong: " + ERC.getLocalizedMessage()); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } - - } - if (requesttype == 54) { - System.out.println("Verifying OTK"); - String userKey = (String) Lrequest.get("otk"); - String userName = (String) Lrequest.get("recoverUser"); - String serverUserName; - userKey = userKey.toUpperCase(); - System.out.println(userKey); - Document accountServer; - try { - accountServer = accountS.find(eq("tempKey", userKey)).first(); - serverUserName = (String) accountServer.get("User"); - if (accountServer.get("Status").equals(true)) { - if (userName.equalsIgnoreCase(serverUserName)) { - System.out.println("This key is correct."); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 55)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - - } else { - System.out.println("This key is incorrect"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 56)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } - } - } catch (Exception ERC) { - System.out.println("This key is incorrect." + ERC); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 56)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - } - - } - if (requesttype == 57) { - System.out.println("Verifying email with account tied to OTK"); - try { - String userKey = (String) Lrequest.get("otk"); - String requestedPassword = (String) Lrequest.get("paw"); - String email = (String) Lrequest.get("email"); - String serverEmail; - userKey = userKey.toUpperCase(); - Document accountServer; - accountServer = accountS.find(eq("tempKey", userKey)).first(); - serverEmail = (String) accountServer.get("Email"); - String userName = (String) accountServer.get("User"); - String serverKey = (String) accountServer.get("tempKey"); - System.out.println("Requested Password Hash: " + requestedPassword); - System.out.println("Email Stored On Server: " + serverEmail); - System.out.println("Email from client: " + email); - System.out.println("otk stored on server: " + serverKey); - System.out.println("otk from client: " + userKey); - if (email.equalsIgnoreCase(serverEmail) && userKey.equals(serverKey)) { - System.out.println("All Matching, lets go!"); - BasicDBObject searchQuery = new BasicDBObject(); - BasicDBObject searchQuery1 = new BasicDBObject(); - searchQuery.append("Email", serverEmail); - searchQuery1.append("clientid", ClientID); - System.out.println("Send indexes are ready."); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - System.out.println("Objects are ready."); - updateQuery.append("$set", - new BasicDBObject().append("Password", requestedPassword)); - updateQuery1.append("$unset", - new BasicDBObject().append("tempKey", "")); - updateQuery2.append("$set", - new BasicDBObject().append("Version", "2")); - updateQuery3.append("$set", - new BasicDBObject().append("keyStatus", false)); - System.out.println("Objects set"); - accountS.updateOne(searchQuery, updateQuery); - accountS.updateOne(searchQuery, updateQuery1); - accountS.updateOne(searchQuery, updateQuery2); - accountS.updateOne(searchQuery, updateQuery3); - System.out.println("Objects send"); - BasicDBObject closeRequestType = new BasicDBObject(); - BasicDBObject finalizeRequest = new BasicDBObject(); - System.out.println("Objects close init"); - closeRequestType.append("$set", - new BasicDBObject().append("type", 58)); - finalizeRequest.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery1, closeRequestType); - dCollection.updateOne(searchQuery1, finalizeRequest); - System.out.println("Objects close send"); - delegationTimer.DeleteTargetRequest(ClientID); - System.out.println("request finished correctly"); - accountMigrationComplete(serverEmail, userName); - } else { - System.out.println("request denied"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 59)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - } - } catch (Exception ex) { - System.out.println("Unable to reset password, making that known." + ex); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 59)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - } - } - if (requesttype == 3) { - System.out.println("Login Request (TKN)"); - String CTOKEN = (String) Lrequest.get("Token"); - // Document TResolve = dCollection.find(eq("type", 3)).first(); - Document accountServer; - String TKN; - String Password; - String Fname; - String Path; - String UserName; - String Email; - String keychainUUID; - try { - accountServer = accountS.find(eq("Token", CTOKEN)).first(); - TKN = (String) accountServer.get("Token"); - if (accountServer.get("Status").equals(true)) { - if (TKN.equals(CTOKEN)) { - TKN = (String) accountServer.get("Token"); - Password = (String) accountServer.get("Password"); - Fname = (String) accountServer.get("FName"); - Path = (String) accountServer.get("Path"); - Email = (String) accountServer.get("Email"); - UserName = (String) accountServer.get("User"); - lastNet = (String) accountServer.get("lastNet"); - keychainUUID = (String) accountServer.get("UUID"); - localNet.macRead(Macid, lastNet, Email, UserName, TKN); - // com.jamesquinley.Asecure.emailVerify.SendEmailThroughGmail(Email, UserName); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery5 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - BasicDBObject updateQuery7 = new BasicDBObject(); - BasicDBObject updateQuery8 = new BasicDBObject(); - BasicDBObject updateQuery9 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 8)); - updateQuery2.append("$set", - new BasicDBObject().append("Fname", Fname)); - updateQuery3.append("$set", - new BasicDBObject().append("Path", Path)); - updateQuery4.append("$set", - new BasicDBObject().append("User", UserName)); - updateQuery5.append("$set", - new BasicDBObject().append("Password", Password)); - updateQuery7.append("$set", - new BasicDBObject().append("Email", Email)); - updateQuery8.append("$set", - new BasicDBObject().append("Token", TKN)); - updateQuery9.append("$set", - new BasicDBObject().append("keychainUUID", keychainUUID)); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - System.out.println("Sending Info To Forwarding Server"); - dCollection.updateOne(searchQuery, updateQuery8); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery2); - dCollection.updateOne(searchQuery, updateQuery3); - dCollection.updateOne(searchQuery, updateQuery4); - dCollection.updateOne(searchQuery, updateQuery5); - dCollection.updateOne(searchQuery, updateQuery8); - dCollection.updateOne(searchQuery, updateQuery7); - dCollection.updateOne(searchQuery, updateQuery9); - dCollection.updateOne(searchQuery, updateQuery6); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } else { - System.out.println("Login Failure"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 9)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - - } - } else { - System.out.println("Banned Account"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 11)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - - } - } catch (MongoCommandException ERC) { - System.out.println("Malformed Request"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - //delegationTimer.trigger(); - } - } - if (requesttype == 18) { - if ((Boolean) Filter.get("gameActive") == true) { - //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"); - String CTOKEN = (String) Lrequest.get("Token"); - Document accountServer; - String TKN; - String Password; - String Fname; - String Path; - String UserName; - String Email; - String Uid; - System.out.println("VarInit"); - try { - accountServer = accountS.find(eq("Token", CTOKEN)).first(); - System.out.println("PollServer"); - TKN = (String) accountServer.get("Token"); - System.out.println("TokenPulled"); - if (accountServer.get("Status").equals(true)) { - if (TKN.equals(CTOKEN)) { - System.out.println("TokenGood"); - TKN = (String) accountServer.get("Token"); - Password = (String) accountServer.get("Password"); - Fname = (String) accountServer.get("FName"); - Path = (String) accountServer.get("Path"); - Email = (String) accountServer.get("Email"); - // Uid = (String) accountServer.get("Uid"); - UserName = (String) accountServer.get("User"); - System.out.println("GotAccount"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - Filter = RGFilter.find(eq("rgkey", "UAROCKS")).first(); - String apiV = (String) Filter.get("gameAPI"); - String MOTD = (String) Filter.get("motd"); - System.out.println("ApiGrabbed"); - - - System.out.println("initBasicDBObject"); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery5 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - BasicDBObject updateQuery7 = new BasicDBObject(); - BasicDBObject updateQuery8 = new BasicDBObject(); - BasicDBObject updateQuery9 = new BasicDBObject(); - BasicDBObject updateQuery10 = new BasicDBObject(); - // BasicDBObject updateQuery11 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 8)); - updateQuery2.append("$set", - new BasicDBObject().append("Fname", Fname)); - updateQuery3.append("$set", - new BasicDBObject().append("Path", Path)); - updateQuery4.append("$set", - new BasicDBObject().append("User", UserName)); - updateQuery5.append("$set", - new BasicDBObject().append("Password", Password)); - updateQuery7.append("$set", - new BasicDBObject().append("Email", Email)); - updateQuery6.append("$set", - new BasicDBObject().append("status", true)); - updateQuery8.append("$set", - new BasicDBObject().append("Token", TKN)); - updateQuery9.append("$set", - new BasicDBObject().append("api", apiV)); - updateQuery10.append("$set", - new BasicDBObject().append("motd", MOTD)); - System.out.println("Sending Info To Forwarding Server"); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery10); - dCollection.updateOne(searchQuery, updateQuery2); - dCollection.updateOne(searchQuery, updateQuery3); - dCollection.updateOne(searchQuery, updateQuery4); - dCollection.updateOne(searchQuery, updateQuery5); - dCollection.updateOne(searchQuery, updateQuery8); - dCollection.updateOne(searchQuery, updateQuery7); - dCollection.updateOne(searchQuery, updateQuery9); - dCollection.updateOne(searchQuery, updateQuery6); //delegationTimer.trigger(); - System.out.println("Pushed"); - delegationTimer.DeleteTargetRequest(ClientID); - } else { - System.out.println("Login Failure"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 9)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } } else { System.out.println("Banned Account"); @@ -1008,6 +341,1055 @@ public class delegationServices { dCollection.updateOne(searchQuery, updateQuery1); delegationTimer.DeleteTargetRequest(ClientID); } + } catch (MongoCommandException ERC) { + System.out.println("Malformed Request"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } + //sync write request + if (requesttype == 1) { + System.out.println("Sync Request (Write)"); + String CTOKEN = (String) Lrequest.get("Token"); + Document accountServer; + String Token; + String Fname; + String Path; + String UserName; + try { + accountServer = accountS.find(eq("Token", CTOKEN)).first(); + if (!(accountServer == null)) { + Token = (String) accountServer.get("Token"); + if (accountServer.get("Status").equals(true)) { + if (Token.equals(CTOKEN)) { + Token = (String) Lrequest.get("Token"); + Path = (String) Lrequest.get("Path"); + System.out.println("Got info."); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("Token", Token); + BasicDBObject SqS = new BasicDBObject(); + SqS.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 12)); + updateQuery3.append("$set", + new BasicDBObject().append("Path", Path)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(SqS, updateQuery); + dCollection.updateOne(SqS, updateQuery6); + accountS.updateOne(searchQuery, updateQuery3); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } else { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("rid", (int) Lrequest.get("rid")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } else { + System.out.println("Banned Account"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 11)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + } else { + System.out.println("Malformed Request"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } catch (MongoCommandException ERC) { + System.out.println("Malformed Request"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } + if (requesttype == 2) { + System.out.println("Login Request (USR&PASS)"); + String username = (String) Lrequest.get("User"); + String password = (String) Lrequest.get("Password"); + Document accountServer; + String Password; + String Token; + String Fname; + String Path; + String UserName; + String Email; + String keychainUUID; + + Boolean accountKeyStatus = false; + try { + accountServer = accountS.find(eq("User", username)).first(); + Password = (String) accountServer.get("Password"); + Email = (String) accountServer.get("Email"); + if (accountServer.get("Status").equals(true)) { + if (accountServer.get("Version").equals("1")) { + try { + accountKeyStatus = accountServer.getBoolean("keyStatus"); + } catch (Exception NPE) { + System.out.println("Assuming False Due To Variable Not Existing For User."); + accountKeyStatus = false; + } + if (accountKeyStatus == false) { + System.out.println(accountKeyStatus); + String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; + StringBuilder sb = new StringBuilder(); + Random random = new Random(); + int length = 15; + for (int i = 0; i < length; i++) { + int index = random.nextInt(alphabet.length()); + char randomChar = alphabet.charAt(index); + sb.append(randomChar); + } + String OTK = sb.toString(); + BasicDBObject searchQuery = new BasicDBObject(); + BasicDBObject keyApplicationIndex = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + keyApplicationIndex.append("User", username); + secureCalls.oneTimeKeyEmail(((String) accountServer.get("Email")), OTK, username); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + BasicDBObject keyApply = new BasicDBObject(); + BasicDBObject keyAccountState = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 53)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + keyAccountState.append("$set", + new BasicDBObject().append("keyStatus", true)); + keyApply.append("$set", + new BasicDBObject().append("tempKey", OTK)); + accountS.updateOne(keyApplicationIndex, keyApply); + accountS.updateOne(keyApplicationIndex, keyAccountState); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + accountKeyStatus = true; + } else { + System.out.println("RS1"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 53)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } else { + System.out.println("RSC"); + if (Password.equals(password)) { + System.out.println("R3c"); + Token = (String) accountServer.get("Token"); + Fname = (String) accountServer.get("FName"); + Path = (String) accountServer.get("Path"); + Email = (String) accountServer.get("Email"); + UserName = (String) accountServer.get("User"); + lastNet = (String) accountServer.get("lastNet"); + keychainUUID = (String) accountServer.get("UUID"); + localNet.macRead(Macid, lastNet, Email, UserName, Token); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery5 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = new BasicDBObject(); + BasicDBObject updateQuery8 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 8)); + updateQuery1.append("$set", + new BasicDBObject().append("Token", Token)); + updateQuery2.append("$set", + new BasicDBObject().append("Fname", Fname)); + updateQuery3.append("$set", + new BasicDBObject().append("Path", Path)); + updateQuery4.append("$set", + new BasicDBObject().append("User", UserName)); + updateQuery5.append("$set", + new BasicDBObject().append("Password", Password)); + updateQuery7.append("$set", + new BasicDBObject().append("Email", Email)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + updateQuery8.append("$set", + new BasicDBObject().append("keychainUUID", keychainUUID)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); + dCollection.updateOne(searchQuery, updateQuery4); + dCollection.updateOne(searchQuery, updateQuery5); + dCollection.updateOne(searchQuery, updateQuery6); + dCollection.updateOne(searchQuery, updateQuery7); + dCollection.updateOne(searchQuery, updateQuery8); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } else { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } + } else { + System.out.println("Banned Account"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 11)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + } catch (Exception ERC) { + System.out.println("Something Went Wrong: " + ERC.getLocalizedMessage()); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } + if (requesttype == 54) { + System.out.println("Verifying OTK"); + String userKey = (String) Lrequest.get("otk"); + String userName = (String) Lrequest.get("recoverUser"); + String serverUserName; + userKey = userKey.toUpperCase(); + System.out.println(userKey); + Document accountServer; + try { + accountServer = accountS.find(eq("tempKey", userKey)).first(); + serverUserName = (String) accountServer.get("User"); + if (accountServer.get("Status").equals(true)) { + if (userName.equalsIgnoreCase(serverUserName)) { + System.out.println("This key is correct."); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 55)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + + } else { + System.out.println("This key is incorrect"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 56)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } + } catch (Exception ERC) { + System.out.println("This key is incorrect." + ERC); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 56)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } + if (requesttype == 57) { + System.out.println("Verifying email with account tied to OTK"); + try { + String userKey = (String) Lrequest.get("otk"); + String requestedPassword = (String) Lrequest.get("paw"); + String email = (String) Lrequest.get("email"); + String serverEmail; + userKey = userKey.toUpperCase(); + Document accountServer; + accountServer = accountS.find(eq("tempKey", userKey)).first(); + serverEmail = (String) accountServer.get("Email"); + String userName = (String) accountServer.get("User"); + String serverKey = (String) accountServer.get("tempKey"); + System.out.println("Requested Password Hash: " + requestedPassword); + System.out.println("Email Stored On Server: " + serverEmail); + System.out.println("Email from client: " + email); + System.out.println("otk stored on server: " + serverKey); + System.out.println("otk from client: " + userKey); + if (email.equalsIgnoreCase(serverEmail) && userKey.equals(serverKey)) { + System.out.println("All Matching, lets go!"); + BasicDBObject searchQuery = new BasicDBObject(); + BasicDBObject searchQuery1 = new BasicDBObject(); + searchQuery.append("Email", serverEmail); + searchQuery1.append("clientid", ClientID); + System.out.println("Send indexes are ready."); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + System.out.println("Objects are ready."); + updateQuery.append("$set", + new BasicDBObject().append("Password", requestedPassword)); + updateQuery1.append("$unset", + new BasicDBObject().append("tempKey", "")); + updateQuery2.append("$set", + new BasicDBObject().append("Version", "2")); + updateQuery3.append("$set", + new BasicDBObject().append("keyStatus", false)); + System.out.println("Objects set"); + accountS.updateOne(searchQuery, updateQuery); + accountS.updateOne(searchQuery, updateQuery1); + accountS.updateOne(searchQuery, updateQuery2); + accountS.updateOne(searchQuery, updateQuery3); + System.out.println("Objects send"); + BasicDBObject closeRequestType = new BasicDBObject(); + BasicDBObject finalizeRequest = new BasicDBObject(); + System.out.println("Objects close init"); + closeRequestType.append("$set", + new BasicDBObject().append("type", 58)); + finalizeRequest.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery1, closeRequestType); + dCollection.updateOne(searchQuery1, finalizeRequest); + System.out.println("Objects close send"); + delegationTimer.DeleteTargetRequest(ClientID); + System.out.println("request finished correctly"); + accountMigrationComplete(serverEmail, userName); + } else { + System.out.println("request denied"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 59)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + } catch (Exception ex) { + System.out.println("Unable to reset password, making that known." + ex); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 59)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + } + if (requesttype == 3) { + System.out.println("Login Request (TKN)"); + String CTOKEN = (String) Lrequest.get("Token"); + // Document TResolve = dCollection.find(eq("type", 3)).first(); + Document accountServer; + String TKN; + String Password; + String Fname; + String Path; + String UserName; + String Email; + String keychainUUID; + try { + accountServer = accountS.find(eq("Token", CTOKEN)).first(); + if (!(accountServer == null)) { + TKN = (String) accountServer.get("Token"); + if (accountServer.get("Status").equals(true)) { + if (TKN.equals(CTOKEN)) { + TKN = (String) accountServer.get("Token"); + Password = (String) accountServer.get("Password"); + Fname = (String) accountServer.get("FName"); + Path = (String) accountServer.get("Path"); + Email = (String) accountServer.get("Email"); + UserName = (String) accountServer.get("User"); + lastNet = (String) accountServer.get("lastNet"); + keychainUUID = (String) accountServer.get("UUID"); + localNet.macRead(Macid, lastNet, Email, UserName, TKN); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery5 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = new BasicDBObject(); + BasicDBObject updateQuery8 = new BasicDBObject(); + BasicDBObject updateQuery9 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 8)); + updateQuery2.append("$set", + new BasicDBObject().append("Fname", Fname)); + updateQuery3.append("$set", + new BasicDBObject().append("Path", Path)); + updateQuery4.append("$set", + new BasicDBObject().append("User", UserName)); + updateQuery5.append("$set", + new BasicDBObject().append("Password", Password)); + updateQuery7.append("$set", + new BasicDBObject().append("Email", Email)); + updateQuery8.append("$set", + new BasicDBObject().append("Token", TKN)); + updateQuery9.append("$set", + new BasicDBObject().append("keychainUUID", keychainUUID)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + System.out.println("Sending Info To Forwarding Server"); + dCollection.updateOne(searchQuery, updateQuery8); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); + dCollection.updateOne(searchQuery, updateQuery4); + dCollection.updateOne(searchQuery, updateQuery5); + dCollection.updateOne(searchQuery, updateQuery8); + dCollection.updateOne(searchQuery, updateQuery7); + dCollection.updateOne(searchQuery, updateQuery9); + dCollection.updateOne(searchQuery, updateQuery6); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } else { + System.out.println("Login Failure"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + + } + } else { + System.out.println("Banned Account"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 11)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + + } + } else { + System.out.println("Login Failure"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } catch (MongoCommandException ERC) { + System.out.println("Malformed Request"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + //delegationTimer.trigger(); + } + } + if (requesttype == 18) { + if ((Boolean) Filter.get("gameActive") == true) { + //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"); + String CTOKEN = (String) Lrequest.get("Token"); + Document accountServer; + String TKN; + String Password; + String Fname; + String Path; + String UserName; + String Email; + String Uid; + System.out.println("VarInit"); + try { + accountServer = accountS.find(eq("Token", CTOKEN)).first(); + System.out.println("PollServer"); + TKN = (String) accountServer.get("Token"); + System.out.println("TokenPulled"); + if (accountServer.get("Status").equals(true)) { + if (TKN.equals(CTOKEN)) { + System.out.println("TokenGood"); + TKN = (String) accountServer.get("Token"); + Password = (String) accountServer.get("Password"); + Fname = (String) accountServer.get("FName"); + Path = (String) accountServer.get("Path"); + Email = (String) accountServer.get("Email"); + // Uid = (String) accountServer.get("Uid"); + UserName = (String) accountServer.get("User"); + System.out.println("GotAccount"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + Filter = RGFilter.find(eq("rgkey", "UAROCKS")).first(); + String apiV = (String) Filter.get("gameAPI"); + String MOTD = (String) Filter.get("motd"); + System.out.println("ApiGrabbed"); + + + System.out.println("initBasicDBObject"); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery5 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = new BasicDBObject(); + BasicDBObject updateQuery8 = new BasicDBObject(); + BasicDBObject updateQuery9 = new BasicDBObject(); + BasicDBObject updateQuery10 = new BasicDBObject(); + // BasicDBObject updateQuery11 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 8)); + updateQuery2.append("$set", + new BasicDBObject().append("Fname", Fname)); + updateQuery3.append("$set", + new BasicDBObject().append("Path", Path)); + updateQuery4.append("$set", + new BasicDBObject().append("User", UserName)); + updateQuery5.append("$set", + new BasicDBObject().append("Password", Password)); + updateQuery7.append("$set", + new BasicDBObject().append("Email", Email)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + updateQuery8.append("$set", + new BasicDBObject().append("Token", TKN)); + updateQuery9.append("$set", + new BasicDBObject().append("api", apiV)); + updateQuery10.append("$set", + new BasicDBObject().append("motd", MOTD)); + System.out.println("Sending Info To Forwarding Server"); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery10); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); + dCollection.updateOne(searchQuery, updateQuery4); + dCollection.updateOne(searchQuery, updateQuery5); + dCollection.updateOne(searchQuery, updateQuery8); + dCollection.updateOne(searchQuery, updateQuery7); + dCollection.updateOne(searchQuery, updateQuery9); + dCollection.updateOne(searchQuery, updateQuery6); + //delegationTimer.trigger(); + System.out.println("Pushed"); + delegationTimer.DeleteTargetRequest(ClientID); + } else { + System.out.println("Login Failure"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + + } + } else { + System.out.println("Banned Account"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 11)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + } catch (MongoCommandException ERC) { + System.out.println("Mongodb Error " + ERC); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + //delegationTimer.trigger(); + } + } else { + System.out.println("Login rejected, game client EOS has been reached."); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } + if (requesttype == 10) { + System.out.println("Account Creation Request"); + Document DServer = dCollection.find(eq("clientid", ClientID)).first(); + String User = (String) DServer.get("User"); + String Password = (String) DServer.get("Password"); + String Email = (String) DServer.get("Email"); + String FName = (String) DServer.get("FName"); + String sourcet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; + StringBuilder sbt = new StringBuilder(); + Random random = new Random(); + int tokenlength = 60; + for (int i = 0; i < tokenlength; i++) { + int index = random.nextInt(sourcet.length()); + char randomChar = sourcet.charAt(index); + sbt.append(randomChar); + } + String Token = "OCST" + sbt.toString(); + //Above makes token, it will be remade if it already exists + String source = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; + StringBuilder sb = new StringBuilder(); + int length = 40; + for (int i = 0; i < length; i++) { + int index = random.nextInt(source.length()); + char randomChar = source.charAt(index); + sb.append(randomChar); + } + String UUID = sb.toString(); + //Above makes UUID, will be remade if it already exists. + + try { + Document DupeUser = accountS.find(eq("User", User)).first(); + String DUPE = (String) DupeUser.get("User"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 6)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } catch (Exception exr) { + System.out.println("Username Is Open"); + try { + Document DupeToken = accountS.find(eq("Token", Token)).first(); + String DupeToke1n = (String) DupeToken.get("Token"); + System.out.println("Got Token from request"); + Boolean TokenOpen = false; + while (TokenOpen == false) { + for (int i = 0; i < tokenlength; i++) { + int index = random.nextInt(sourcet.length()); + char randomChar = sourcet.charAt(index); + sbt.append(randomChar); + } + Token = sbt.toString(); + try { + DupeToken = accountS.find(eq("Token", Token)).first(); + DupeToke1n = (String) DupeToken.get("Token"); + System.out.println("Token Is Reserved, Try Again."); + for (int i = 0; i < tokenlength; i++) { + int index = random.nextInt(sourcet.length()); + char randomChar = sourcet.charAt(index); + sbt.append(randomChar); + } + } catch (Exception exDr) { + TokenOpen = true; + System.out.println("Token Free (While EXP)"); + } + } + } catch (Exception token) { + System.out.println("Working on UUID"); + try { + Document DupeUUID = accountS.find(eq("UUID", UUID)).first(); + String DupeUUIDS = (String) DupeUUID.get("UUID"); + System.out.println("Got Gen UUID"); + Boolean UUIDOPEN = false; + while (UUIDOPEN == false) { + length = 40; + sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + int index = random.nextInt(source.length()); + char randomChar = source.charAt(index); + sb.append(randomChar); + } + String UUIDGEN = sb.toString(); + try { + System.out.println("Retry UUID"); + DupeUUID = accountS.find(eq("UUID", UUID)).first(); + DupeUUIDS = (String) DupeUUID.get("UUID"); + System.out.println("UUID Is Reserved, Try Again."); + length = 40; + sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + int index = random.nextInt(source.length()); + char randomChar = source.charAt(index); + sb.append(randomChar); + } + UUIDGEN = sb.toString(); + UUID = UUIDGEN; + } catch (Exception exDr) { + UUIDOPEN = true; + System.out.println("UUID Free (While EXP)" + exDr); + } + } + } catch (NullPointerException uuid) { + System.out.println("UUID Free"); + } + System.out.println("Token Free"); + System.out.println("Token & UUID Free (Main)"); + System.out.println("Creating."); + Document createForm = new Document(); + createForm.append("User", User); + createForm.append("Password", Password); + createForm.append("Status", true); + createForm.append("Flagged", false); + createForm.append("Email", Email); + createForm.append("FName", FName); + createForm.append("Entitlements", "NA"); + createForm.append("Path", "C:\\ObsidianCoreStudios\\Application\\"); + createForm.append("Freinds", " "); + createForm.append("Token", Token); + createForm.append("UUID", UUID); + createForm.append("Control", 1); + createForm.append("Upgrade", 0); + createForm.append("Version", "2"); + createForm.append("keyStatus", false); + //createForm.append("Uid",uid); + createForm.append("lastNet", Macid); + accountS.insertOne(createForm); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + secureCalls.accountCreationComplete(Email, User, UUID); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 4)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + System.out.println("Update Request With Finished Status"); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } + } + if (requesttype == 20) + //TODO rewrite to just need username, password will be set by system later + { + delegationTimer.DeleteTargetRequest(ClientID); + System.out.println("Shadow Account Creation Request"); + Document DServer = dCollection.find(eq("clientid", ClientID)).first(); + String User = (String) DServer.get("User"); + String Password = (String) DServer.get("Password"); + // String Email = (String) DServer.get("Email"); + String FName = User; + String sourcet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; + StringBuilder sbt = new StringBuilder(); + Random random = new Random(); + int tokenlength = 60; + for (int i = 0; i < tokenlength; i++) { + int index = random.nextInt(sourcet.length()); + char randomChar = sourcet.charAt(index); + sbt.append(randomChar); + } + String Token = "OCST" + sbt.toString(); + try { + Document DupeUser = accountS.find(eq("User", User)).first(); + String DUPE = (String) DupeUser.get("User"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 6)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + System.out.println("User Exists"); + delegationTimer.DeleteTargetRequest(ClientID); + } catch (Exception exr) { + System.out.println("Username Is Open"); + try { + Document DupeToken = accountS.find(eq("Token", Token)).first(); + String DupeToke1n = (String) DupeToken.get("Token"); + System.out.println("Got Token from request"); + Boolean TokenOpen = false; + while (TokenOpen == false) { + for (int i = 0; i < tokenlength; i++) { + int index = random.nextInt(sourcet.length()); + char randomChar = sourcet.charAt(index); + sbt.append(randomChar); + } + Token = sbt.toString(); + try { + DupeToken = accountS.find(eq("Token", Token)).first(); + DupeToke1n = (String) DupeToken.get("Token"); + System.out.println("Token Is Reserved, Try Again."); + for (int i = 0; i < tokenlength; i++) { + int index = random.nextInt(sourcet.length()); + char randomChar = sourcet.charAt(index); + sbt.append(randomChar); + } + } catch (Exception exDr) { + TokenOpen = true; + System.out.println("Token Free (While EXP)"); + } + } + } catch (Exception exrs) { + System.out.println("Token Free (Main)"); + System.out.println("Creating."); + Document createForm = new Document(); + createForm.append("User", User); + createForm.append("Status", true); + createForm.append("limited", true); + createForm.append("Flagged", false); + createForm.append("Password", Password); + createForm.append("FName", FName); + createForm.append("Entitlements", "NA"); + createForm.append("Path", "C:\\ObsidianCoreStudios\\Launcher\\AOTSK\\"); + createForm.append("Token", Token); + createForm.append("Control", 1); + accountS.insertOne(createForm); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 4)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + System.out.println("Update Request With Finished Status"); + delegationTimer.DeleteTargetRequest(ClientID); + + } + + } + } + if (requesttype == 21) { + //Friends Network Login Goes Here, Fun. + } + if (requesttype == 48) { + + System.out.println("Launcher Startup Request"); + String lV = (String) Lrequest.get("version"); + String platKey = (String) Lrequest.get("key"); + System.out.println("GrabbedInfo"); + try { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + Filter = RGFilter.find(eq("rgkey", "UAROCKS")).first(); + String pKey = (String) Filter.get("platformKey"); + String version = (String) Filter.get("platformVersion"); + String platformUpdateNotes = (String) Filter.get("platformUpdateNotes"); + String dr = (String) Filter.get("deniedmsg"); + String nw = (String) Filter.get("lnews"); + System.out.println("ApiGrabbed"); + + + System.out.println("initBasicDBObject"); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = new BasicDBObject(); + BasicDBObject updateQuery8 = new BasicDBObject(); + // BasicDBObject updateQuery11 = new BasicDBObject(); + if (pKey.equals(platKey)) { + if (lV.equals(version)) { + System.out.println("Approved"); + updateQuery.append("$set", + new BasicDBObject().append("type", 49)); + } else { + System.out.println("UpdateRequred"); + updateQuery.append("$set", + new BasicDBObject().append("type", 51)); + } + } else { + updateQuery.append("$set", + new BasicDBObject().append("type", 50)); + updateQuery7.append("$set", + new BasicDBObject().append("dn", dr)); + System.out.println("Denied"); + } + + updateQuery2.append("$set", + new BasicDBObject().append("uNotes", platformUpdateNotes)); + updateQuery3.append("$set", + new BasicDBObject().append("pushV", version)); + updateQuery4.append("$set", + new BasicDBObject().append("keyReq", pKey)); + updateQuery8.append("$set", + new BasicDBObject().append("news", nw)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + updateQuery7.append("$set", + new BasicDBObject().append("dn", dr)); + System.out.println("Sending Info To Forwarding Server"); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); + dCollection.updateOne(searchQuery, updateQuery4); + dCollection.updateOne(searchQuery, updateQuery7); + dCollection.updateOne(searchQuery, updateQuery8); + dCollection.updateOne(searchQuery, updateQuery6); + + //delegationTimer.trigger(); + System.out.println("Pushed"); + delegationTimer.DeleteTargetRequest(ClientID); + } catch (MongoCommandException ERC) { System.out.println("Mongodb Error " + ERC); BasicDBObject searchQuery = new BasicDBObject(); @@ -1024,605 +1406,281 @@ public class delegationServices { delegationTimer.DeleteTargetRequest(ClientID); //delegationTimer.trigger(); } - } else { - System.out.println("Login rejected, game client EOS has been reached."); + } + if (requesttype == 14) { + //TODO Finish making a secure deletion process. + String requestClientUUID = (String) Lrequest.get("UUID"); + String requestClientToken = (String) Lrequest.get("token"); + String requestClientMAC = (String) Lrequest.get("mac"); + } + if (requesttype == 61) { BasicDBObject searchQuery = new BasicDBObject(); searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - delegationTimer.DeleteTargetRequest(ClientID); - } - - } - if (requesttype == 10) { - System.out.println("Account Creation Request"); - Document DServer = dCollection.find(eq("clientid", ClientID)).first(); - String User = (String) DServer.get("User"); - String Password = (String) DServer.get("Password"); - String Email = (String) DServer.get("Email"); - String FName = (String) DServer.get("FName"); - String sourcet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; - StringBuilder sbt = new StringBuilder(); - Random random = new Random(); - int tokenlength = 60; - for (int i = 0; i < tokenlength; i++) { - int index = random.nextInt(sourcet.length()); - char randomChar = sourcet.charAt(index); - sbt.append(randomChar); - } - String Token = "OCST" + sbt.toString(); - //Above makes token, it will be remade if it already exists - String source = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; - StringBuilder sb = new StringBuilder(); - int length = 40; - for (int i = 0; i < length; i++) { - int index = random.nextInt(source.length()); - char randomChar = source.charAt(index); - sb.append(randomChar); - } - String UUID = sb.toString(); - //Above makes UUID, will be remade if it already exists. - - try { - Document DupeUser = accountS.find(eq("User", User)).first(); - String DUPE = (String) DupeUser.get("User"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 6)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); - } catch (Exception exr) { - System.out.println("Username Is Open"); + System.out.println("Init ClientTraceback"); + String policyDocument; try { - Document DupeToken = accountS.find(eq("Token", Token)).first(); - String DupeToke1n = (String) DupeToken.get("Token"); - System.out.println("Got Token from request"); - Boolean TokenOpen = false; - while (TokenOpen == false) { - for (int i = 0; i < tokenlength; i++) { - int index = random.nextInt(sourcet.length()); - char randomChar = sourcet.charAt(index); - sbt.append(randomChar); - } - Token = sbt.toString(); - try { - DupeToken = accountS.find(eq("Token", Token)).first(); - DupeToke1n = (String) DupeToken.get("Token"); - System.out.println("Token Is Reserved, Try Again."); - for (int i = 0; i < tokenlength; i++) { - int index = random.nextInt(sourcet.length()); - char randomChar = sourcet.charAt(index); - sbt.append(randomChar); - } - } catch (Exception exDr) { - TokenOpen = true; - System.out.println("Token Free (While EXP)"); - } - } - } catch (Exception token) { - System.out.println("Working on UUID"); - try { - Document DupeUUID = accountS.find(eq("UUID", UUID)).first(); - String DupeUUIDS = (String) DupeUUID.get("UUID"); - System.out.println("Got Gen UUID"); - Boolean UUIDOPEN = false; - while (UUIDOPEN == false) { - length = 40; - sb = new StringBuilder(); - for (int i = 0; i < length; i++) { - int index = random.nextInt(source.length()); - char randomChar = source.charAt(index); - sb.append(randomChar); - } - String UUIDGEN = sb.toString(); - try { - System.out.println("Retry UUID"); - DupeUUID = accountS.find(eq("UUID", UUID)).first(); - DupeUUIDS = (String) DupeUUID.get("UUID"); - System.out.println("UUID Is Reserved, Try Again."); - length = 40; - sb = new StringBuilder(); - for (int i = 0; i < length; i++) { - int index = random.nextInt(source.length()); - char randomChar = source.charAt(index); - sb.append(randomChar); - } - UUIDGEN = sb.toString(); - UUID = UUIDGEN; - } catch (Exception exDr) { - UUIDOPEN = true; - System.out.println("UUID Free (While EXP)" + exDr); - } - } - } catch (NullPointerException uuid) { - System.out.println("UUID Free"); - } - System.out.println("Token Free"); - System.out.println("Token & UUID Free (Main)"); - System.out.println("Creating."); - Document createForm = new Document(); - createForm.append("User", User); - createForm.append("Password", Password); - createForm.append("Status", true); - createForm.append("Flagged", false); - createForm.append("Email", Email); - createForm.append("FName", FName); - createForm.append("Entitlements", "NA"); - createForm.append("Path", "C:\\ObsidianCoreStudios\\Application\\"); - createForm.append("Freinds", " "); - createForm.append("Token", Token); - createForm.append("UUID", UUID); - createForm.append("Control", 1); - createForm.append("Upgrade", 0); - createForm.append("Version", "2"); - createForm.append("keyStatus", false); - //createForm.append("Uid",uid); - createForm.append("lastNet", Macid); - accountS.insertOne(createForm); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - electronicMailHandler.Onboarding(Email, User, UUID); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 4)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - System.out.println("Update Request With Finished Status"); - delegationTimer.DeleteTargetRequest(ClientID); + policyDocument = Files.readString(Path.of(System.getProperty("user.home") + "/ocs/policy/launcher/legal/eula.txt")); + } catch (Exception EXR) { + System.out.println("Unable to pull file, fallback."); + policyDocument = "Policy file does not exist on server. This is an issue on our end. Error ID: " + EXR; } - } - } - if (requesttype == 20) - //TODO rewrite to just need username, password will be set by system later - { - delegationTimer.DeleteTargetRequest(ClientID); - System.out.println("Shadow Account Creation Request"); - Document DServer = dCollection.find(eq("clientid", ClientID)).first(); - String User = (String) DServer.get("User"); - String Password = (String) DServer.get("Password"); - // String Email = (String) DServer.get("Email"); - String FName = User; - int min = 100000000; - int max = 999999999; - double tokenGEN = Math.random() * (max - min + 1) + min; - int tokenSTGEN = (int) tokenGEN; - -//verify open cert - try { - Document DupeUser = accountS.find(eq("User", User)).first(); - String DUPE = (String) DupeUser.get("User"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 6)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - System.out.println("User Exists"); - delegationTimer.DeleteTargetRequest(ClientID); - } catch (Exception exr) { - System.out.println("Username Is Open"); - try { - Document DupeToken = accountS.find(eq("Token", tokenSTGEN)).first(); - int DupeToke1n = (int) DupeToken.get("Token"); - - Boolean TokenOpen = false; - while (TokenOpen == false) { - tokenGEN = Math.random() * (max - min + 1) + min; - tokenSTGEN = (int) tokenGEN; - try { - DupeToken = accountS.find(eq("Token", tokenSTGEN)).first(); - DupeToke1n = (int) DupeToken.get("Token"); - System.out.println("Token Is Reserved, Try Again."); - tokenGEN = Math.random() * (max - min + 1) + min; - tokenSTGEN = (int) tokenGEN; - } catch (Exception exDr) { - TokenOpen = true; - System.out.println("Token Free (While EXP)"); - } - } - } catch (Exception exrs) { - System.out.println("Token Free (Main)"); - System.out.println("Creating."); - Document createForm = new Document(); - createForm.append("User", User); - createForm.append("Status", true); - createForm.append("limited", true); - createForm.append("Flagged", false); - createForm.append("Password", Password); - createForm.append("FName", FName); - createForm.append("Entitlements", "NA"); - createForm.append("Path", "C:\\ObsidianCoreStudios\\Launcher\\AOTSK\\"); - createForm.append("Token", tokenSTGEN); - createForm.append("Control", 1); - accountS.insertOne(createForm); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 4)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - System.out.println("Update Request With Finished Status"); - delegationTimer.DeleteTargetRequest(ClientID); - - } - - } - } - if (requesttype == 21) { - //Friends Network Login Goes Here, Fun. - } - if (requesttype == 48) { - - System.out.println("Launcher Startup Request"); - String lV = (String) Lrequest.get("version"); - String platKey = (String) Lrequest.get("key"); - System.out.println("GrabbedInfo"); - try { - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - Filter = RGFilter.find(eq("rgkey", "UAROCKS")).first(); - String pKey = (String) Filter.get("platformKey"); - String version = (String) Filter.get("platformVersion"); - String platformUpdateNotes = (String) Filter.get("platformUpdateNotes"); - String dr = (String) Filter.get("deniedmsg"); - String nw = (String) Filter.get("lnews"); - System.out.println("ApiGrabbed"); - - - System.out.println("initBasicDBObject"); BasicDBObject updateQuery = new BasicDBObject(); BasicDBObject updateQuery2 = new BasicDBObject(); BasicDBObject updateQuery3 = new BasicDBObject(); - BasicDBObject updateQuery4 = new BasicDBObject(); - BasicDBObject updateQuery6 = new BasicDBObject(); - BasicDBObject updateQuery7 = new BasicDBObject(); - BasicDBObject updateQuery8 = new BasicDBObject(); - // BasicDBObject updateQuery11 = new BasicDBObject(); - if (pKey.equals(platKey)) { - if (lV.equals(version)) { - System.out.println("Approved"); - updateQuery.append("$set", - new BasicDBObject().append("type", 49)); - } else { - System.out.println("UpdateRequred"); - updateQuery.append("$set", - new BasicDBObject().append("type", 51)); - } - } else { - updateQuery.append("$set", - new BasicDBObject().append("type", 50)); - updateQuery7.append("$set", - new BasicDBObject().append("dn", dr)); - System.out.println("Denied"); - } - + updateQuery.append("$set", + new BasicDBObject().append("type", 62)); updateQuery2.append("$set", - new BasicDBObject().append("uNotes", platformUpdateNotes)); + new BasicDBObject().append("policyDocument", policyDocument)); updateQuery3.append("$set", - new BasicDBObject().append("pushV", version)); - updateQuery4.append("$set", - new BasicDBObject().append("keyReq", pKey)); - updateQuery8.append("$set", - new BasicDBObject().append("news", nw)); - updateQuery6.append("$set", new BasicDBObject().append("status", true)); - updateQuery7.append("$set", - new BasicDBObject().append("dn", dr)); - System.out.println("Sending Info To Forwarding Server"); dCollection.updateOne(searchQuery, updateQuery); dCollection.updateOne(searchQuery, updateQuery2); dCollection.updateOne(searchQuery, updateQuery3); - dCollection.updateOne(searchQuery, updateQuery4); - dCollection.updateOne(searchQuery, updateQuery7); - dCollection.updateOne(searchQuery, updateQuery8); - dCollection.updateOne(searchQuery, updateQuery6); - - //delegationTimer.trigger(); - System.out.println("Pushed"); delegationTimer.DeleteTargetRequest(ClientID); - - } catch (MongoCommandException ERC) { - System.out.println("Mongodb Error " + ERC); + } + if (requesttype == 63) { BasicDBObject searchQuery = new BasicDBObject(); searchQuery.append("clientid", ClientID); + System.out.println("Init ClientTraceback"); + String policyDocument; + try { + // File homedir = new File(System.getProperty("user.home")); + policyDocument = Files.readString(Path.of(System.getProperty("user.home") + "/ocs/policy/launcher/legal/eula.txt")); + } catch (Exception EXR) { + System.out.println("Unable to pull file, fallback."); + policyDocument = "Policy file does not exist on server. This is an issue on our end. Error ID: " + EXR; + } BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", + new BasicDBObject().append("type", 64)); + updateQuery2.append("$set", + new BasicDBObject().append("policyDocument", policyDocument)); + updateQuery3.append("$set", new BasicDBObject().append("status", true)); dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); delegationTimer.DeleteTargetRequest(ClientID); - //delegationTimer.trigger(); - } - } - if (requesttype == 14) { - //TODO Finish making a secure deletion process. - String requestClientUUID = (String) Lrequest.get("UUID"); - String requestClientToken = (String) Lrequest.get("token"); - String requestClientMAC = (String) Lrequest.get("mac"); - } - if (requesttype == 61) { - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - System.out.println("Init ClientTraceback"); - String policyDocument; - try { - policyDocument = Files.readString(Path.of(System.getProperty("user.home") + "/ocs/policy/launcher/legal/eula.txt")); - } catch (Exception EXR) { - System.out.println("Unable to pull file, fallback."); - policyDocument = "Policy file does not exist on server. This is an issue on our end. Error ID: " + EXR; } + if (requesttype == 65) { + 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 bugType = Lrequest.get("bugType").toString(); + String bugDetails = Lrequest.get("bugDetails").toString(); + String bugSeverity = Lrequest.get("bugSeverity").toString(); + String timeCurrent = LocalDateTime.now().toString(); //ISO-8601: yyyy-MM-ddTHH:mm:ss.S + try { + File myObj = new File(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt"); + if (myObj.createNewFile()) { + System.out.println("Log File created: " + myObj.getName()); + FileWriter writer = new FileWriter(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt", true); + writer.write("This bug report is for: " + applicationName); + writer.write("\r\n"); + writer.write("The bug severity is level: " + bugSeverity); + writer.write("\r\n"); + writer.write("The bug type is: " + bugType); + writer.write("\r\n"); + writer.write("More bug details: " + bugDetails); + 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(); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 62)); - updateQuery2.append("$set", - new BasicDBObject().append("policyDocument", policyDocument)); - updateQuery3.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery2); - dCollection.updateOne(searchQuery, updateQuery3); - delegationTimer.DeleteTargetRequest(ClientID); - } - if (requesttype == 63) { - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - System.out.println("Init ClientTraceback"); - String policyDocument; - try { - // File homedir = new File(System.getProperty("user.home")); - policyDocument = Files.readString(Path.of(System.getProperty("user.home") + "/ocs/policy/launcher/legal/eula.txt")); - } catch (Exception EXR) { - System.out.println("Unable to pull file, fallback."); - policyDocument = "Policy file does not exist on server. This is an issue on our end. Error ID: " + EXR; - } - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery2 = new BasicDBObject(); - BasicDBObject updateQuery3 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 64)); - updateQuery2.append("$set", - new BasicDBObject().append("policyDocument", policyDocument)); - updateQuery3.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery2); - dCollection.updateOne(searchQuery, updateQuery3); - delegationTimer.DeleteTargetRequest(ClientID); - } - if (requesttype == 65) { - 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 bugType = Lrequest.get("bugType").toString(); - String bugDetails = Lrequest.get("bugDetails").toString(); - String bugSeverity = Lrequest.get("bugSeverity").toString(); - String timeCurrent = LocalDateTime.now().toString(); //ISO-8601: yyyy-MM-ddTHH:mm:ss.S - try { - File myObj = new File(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt"); - if (myObj.createNewFile()) { - System.out.println("Log File created: " + myObj.getName()); - FileWriter writer = new FileWriter(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt", true); - writer.write("This bug report is for: " + applicationName); - writer.write("\r\n"); - writer.write("The bug severity is level: " + bugSeverity); - writer.write("\r\n"); - writer.write("The bug type is: " + bugType); - writer.write("\r\n"); - writer.write("More bug details: " + bugDetails); - 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 == 66) { - 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 bugType = Lrequest.get("bugType").toString(); - String bugDetails = Lrequest.get("bugDetails").toString(); - String bugSeverity = Lrequest.get("bugSeverity").toString(); - String bugLog = Lrequest.get("bugLog").toString(); - String timeCurrent = LocalDateTime.now().toString(); //ISO-8601: yyyy-MM-ddTHH:mm:ss.S - try { - File myObj = new File(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt"); - if (myObj.createNewFile()) { - System.out.println("Log File created: " + myObj.getName()); - FileWriter writer = new FileWriter(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt", true); - writer.write("This bug report is for: " + applicationName); - writer.write("\r\n"); - writer.write("The bug severity is level: " + bugSeverity); - writer.write("\r\n"); - writer.write("The bug type is: " + bugType); - writer.write("\r\n"); - writer.write("More bug details: " + bugDetails); - 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(bugLog); - 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 == 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/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt"); - File myFold = new File(homedir + "/ocs/telemetry/" + UUID); - myFold.mkdir(); - if (myObj.createNewFile()) { - System.out.println("Log File created: " + myObj.getName()); - FileWriter writer = new FileWriter(homedir + "/ocs/telemetry/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt", true); - writer.write("This Telemetry report is for: " + applicationName); - writer.write("\r\n"); - writer.write("Type of telemetry: " + telemetryType); - writer.write("\r\n"); - writer.write("Telemetry: " + 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/telemetry/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt"); - File myFold = new File(homedir + "/ocs/telemetry/" + UUID); - myFold.mkdir(); - if (myObj.createNewFile()) { - System.out.println("Log File created: " + myObj.getName()); - FileWriter writer = new FileWriter(homedir + "/ocs/telemetry/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt", true); - writer.write("This telemetry 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("telemetry already exists. (wow that's rare)"); - } - } catch (IOException e) { - System.out.println("An error occurred while attempting to save telemetry."); - } - 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"); - String clientUUID = (String) Lrequest.get("uuid"); - String serverUUID; - userKey = userKey.toUpperCase(); - Document accountServer; - try { - accountServer = accountS.find(eq("delOTK", userKey)).first(); - serverUUID = (String) accountServer.get("UUID"); - if (accountServer.get("Status").equals(true)) { - if (clientUUID.equalsIgnoreCase(serverUUID)) { - System.out.println("This key is correct."); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); - - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 69)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); - offBoarding((String) accountServer.get("Email"), (String) accountServer.get("User"), (String) accountServer.get("FName")); - delegationTimer.DeleteTargetRequest(ClientID); - accountS.deleteOne(accountServer); } else { - System.out.println("This key is incorrect"); + 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 == 66) { + 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 bugType = Lrequest.get("bugType").toString(); + String bugDetails = Lrequest.get("bugDetails").toString(); + String bugSeverity = Lrequest.get("bugSeverity").toString(); + String bugLog = Lrequest.get("bugLog").toString(); + String timeCurrent = LocalDateTime.now().toString(); //ISO-8601: yyyy-MM-ddTHH:mm:ss.S + try { + File myObj = new File(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt"); + if (myObj.createNewFile()) { + System.out.println("Log File created: " + myObj.getName()); + FileWriter writer = new FileWriter(homedir + "/ocs/logs/" + applicationName + bugDetails + timeCurrent + ".txt", true); + writer.write("This bug report is for: " + applicationName); + writer.write("\r\n"); + writer.write("The bug severity is level: " + bugSeverity); + writer.write("\r\n"); + writer.write("The bug type is: " + bugType); + writer.write("\r\n"); + writer.write("More bug details: " + bugDetails); + 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(bugLog); + 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 == 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/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt"); + File myFold = new File(homedir + "/ocs/telemetry/" + UUID); + myFold.mkdir(); + if (myObj.createNewFile()) { + System.out.println("Log File created: " + myObj.getName()); + FileWriter writer = new FileWriter(homedir + "/ocs/telemetry/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt", true); + writer.write("This Telemetry report is for: " + applicationName); + writer.write("\r\n"); + writer.write("Type of telemetry: " + telemetryType); + writer.write("\r\n"); + writer.write("Telemetry: " + 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/telemetry/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt"); + File myFold = new File(homedir + "/ocs/telemetry/" + UUID); + myFold.mkdir(); + if (myObj.createNewFile()) { + System.out.println("Log File created: " + myObj.getName()); + FileWriter writer = new FileWriter(homedir + "/ocs/telemetry/" + UUID + "/" + applicationName + telemetryDetails + timeCurrent + ".txt", true); + writer.write("This telemetry 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("telemetry already exists. (wow that's rare)"); + } + } catch (IOException e) { + System.out.println("An error occurred while attempting to save telemetry."); + } + 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"); + String clientUUID = (String) Lrequest.get("uuid"); + String serverUUID; + userKey = userKey.toUpperCase(); + Document accountServer; + try { + accountServer = accountS.find(eq("delOTK", userKey)).first(); + serverUUID = (String) accountServer.get("UUID"); + if (accountServer.get("Status").equals(true)) { + if (clientUUID.equalsIgnoreCase(serverUUID)) { + System.out.println("This key is correct."); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 69)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + offBoarding((String) accountServer.get("Email"), (String) accountServer.get("User"), (String) accountServer.get("FName")); + delegationTimer.DeleteTargetRequest(ClientID); + accountS.deleteOne(accountServer); + } else { + System.out.println("This key is incorrect"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 70)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + } else + { + System.out.println("This key is incorrect, account is banned."); BasicDBObject searchQuery = new BasicDBObject(); searchQuery.append("clientid", ClientID); @@ -1634,92 +1692,437 @@ public class delegationServices { new BasicDBObject().append("status", true)); dCollection.updateOne(searchQuery, updateQuery); dCollection.updateOne(searchQuery, updateQuery1); - //delegationTimer.trigger(); delegationTimer.DeleteTargetRequest(ClientID); } - } - } catch (Exception ERC) { - System.out.println("This key is incorrect." + ERC); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); + } catch (Exception ERC) { + System.out.println("This key is incorrect." + ERC); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 56)); - updateQuery1.append("$set", + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 70)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } + if (requesttype == 67) { + String OTK = "keyNotSetDueToError(ERR24)"; + Boolean keyStatus = false; + //default false, since will be set to true if the mesurement exists on linked account + String accountUUID = (String) Lrequest.get("uuid"); + Document linkedAccount = accountS.find(eq("UUID", accountUUID)).first(); + try { + keyStatus = (boolean) linkedAccount.get("delStatus"); + } catch (Exception NPE) { + keyStatus = false; + } + if (keyStatus == false) { + String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; + StringBuilder sb = new StringBuilder(); + Random random = new Random(); + int length = 15; + for (int i = 0; i < length; i++) { + int index = random.nextInt(alphabet.length()); + char randomChar = alphabet.charAt(index); + sb.append(randomChar); + } + OTK = sb.toString(); + BasicDBObject deleteKey = new BasicDBObject(); + BasicDBObject deleteKeyStatus = new BasicDBObject(); + BasicDBObject deleteTie = new BasicDBObject(); + deleteTie.append("UUID", accountUUID); + deleteKey.append("$set", + new BasicDBObject().append("delOTK", OTK)); + deleteKeyStatus.append("$set", + new BasicDBObject().append("delStatus", true)); + accountS.updateOne(deleteTie, deleteKey); + accountS.updateOne(deleteTie, deleteKeyStatus); + otkDeletionEmail((String) linkedAccount.get("Email"), OTK, (String) linkedAccount.get("User")); + } else { + otkDeletionEmailResend((String) linkedAccount.get("Email"), (String) linkedAccount.get("delOTK"), (String) linkedAccount.get("User")); + } + BasicDBObject clearCL = new BasicDBObject(); + clearCL.append("clientid", ClientID); + BasicDBObject clearUO = new BasicDBObject(); + clearUO.append("$set", new BasicDBObject().append("status", true)); - dCollection.updateOne(searchQuery, updateQuery); - dCollection.updateOne(searchQuery, updateQuery1); - delegationTimer.DeleteTargetRequest(ClientID); + dCollection.updateOne(clearCL, clearUO); + com.jamesquinley.DelegationServices.delegationTimer.DeleteTargetRequestQuick(ClientID); } + } else { + System.out.println("Malformed Request, Non Recoverable (Request Type Not Found)"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("clientid", ClientID); - } - if (requesttype == 67) { - String OTK = "keyNotSetDueToError(ERR24)"; - Boolean keyStatus = false; - //default false, since will be set to true if the mesurement exists on linked account - String accountUUID = (String) Lrequest.get("uuid"); - Document linkedAccount = accountS.find(eq("UUID", accountUUID)).first(); - try { - keyStatus = (boolean) linkedAccount.get("delStatus"); - } catch (Exception NPE) { - keyStatus = false; - } - if (keyStatus == false) { - String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; - StringBuilder sb = new StringBuilder(); - Random random = new Random(); - int length = 15; - for (int i = 0; i < length; i++) { - int index = random.nextInt(alphabet.length()); - char randomChar = alphabet.charAt(index); - sb.append(randomChar); - } - OTK = sb.toString(); - BasicDBObject deleteKey = new BasicDBObject(); - BasicDBObject deleteKeyStatus = new BasicDBObject(); - BasicDBObject deleteTie = new BasicDBObject(); - deleteTie.append("UUID", accountUUID); - deleteKey.append("$set", - new BasicDBObject().append("delOTK", OTK)); - deleteKeyStatus.append("$set", - new BasicDBObject().append("delStatus", true)); - accountS.updateOne(deleteTie, deleteKey); - accountS.updateOne(deleteTie, deleteKeyStatus); - otkDeletionEmail((String) linkedAccount.get("Email"), OTK, (String) linkedAccount.get("User")); - } else { - otkDeletionEmailResend((String) linkedAccount.get("Email"), (String) linkedAccount.get("delOTK"), (String) linkedAccount.get("User")); - } + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + Lrequest.append("status", true); + dCollection.updateOne(searchQuery, updateQuery1); + dCollection.updateOne(searchQuery, updateQuery); BasicDBObject clearCL = new BasicDBObject(); clearCL.append("clientid", ClientID); BasicDBObject clearUO = new BasicDBObject(); clearUO.append("$set", new BasicDBObject().append("status", true)); - dCollection.updateOne(clearCL, clearUO); - com.jamesquinley.DelegationServices.delegationTimer.DeleteTargetRequestQuick(ClientID); - } - } else { - System.out.println("Malformed Request, Non Recoverable (Request Type Not Found)"); - BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); + dCollection.updateOne(clearUO, clearUO); + delegationTimer.DeleteTargetRequest(ClientID); - BasicDBObject updateQuery = new BasicDBObject(); - BasicDBObject updateQuery1 = new BasicDBObject(); - updateQuery.append("$set", - new BasicDBObject().append("type", 7)); - updateQuery1.append("$set", - new BasicDBObject().append("status", true)); - Lrequest.append("status", true); - dCollection.updateOne(searchQuery, updateQuery1); - dCollection.updateOne(searchQuery, updateQuery); - BasicDBObject clearCL = new BasicDBObject(); - clearCL.append("clientid", ClientID); - BasicDBObject clearUO = new BasicDBObject(); - clearUO.append("$set", - new BasicDBObject().append("status", true)); - dCollection.updateOne(clearUO, clearUO); - delegationTimer.DeleteTargetRequest(ClientID); + } + } else + { + System.out.println("Running in limited mode (Web Request)"); + if (requesttype == 73 || requesttype == 74) { + if (requesttype == 73) { + System.out.println("Login Request (USR&PASS)"); + String username = (String) Lrequest.get("user"); + String password = (String) Lrequest.get("password"); + String session = (String) Lrequest.get("sessionID"); + Object objid = Lrequest.get("_id"); + System.out.println(objid); + Document accountServer; + String Password; String Token;String Fname; String Path; String UserName; String Email; String keychainUUID; Boolean accountKeyStatus = false; + try { + accountServer = accountS.find(eq("User", username)).first(); + Password = (String) accountServer.get("Password"); + Email = (String) accountServer.get("Email"); + if (accountServer.get("Status").equals(true)) { + if (accountServer.get("Version").equals("1")) { + try { + accountKeyStatus = accountServer.getBoolean("keyStatus"); + } catch (Exception NPE) { + System.out.println("Assuming False Due To Variable Not Existing For User."); + accountKeyStatus = false; + } + if (accountKeyStatus == false) { + System.out.println(accountKeyStatus); + String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; + StringBuilder sb = new StringBuilder(); + Random random = new Random(); + int length = 15; + for (int i = 0; i < length; i++) { + int index = random.nextInt(alphabet.length()); + char randomChar = alphabet.charAt(index); + sb.append(randomChar); + } + String OTK = sb.toString(); + BasicDBObject searchQuery = new BasicDBObject(); + BasicDBObject keyApplicationIndex = new BasicDBObject(); + searchQuery.append("_id", objid); + keyApplicationIndex.append("User", username); + secureCalls.oneTimeKeyEmail(((String) accountServer.get("Email")), OTK, username); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + BasicDBObject keyApply = new BasicDBObject(); + BasicDBObject keyAccountState = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 53)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + keyAccountState.append("$set", + new BasicDBObject().append("keyStatus", true)); + keyApply.append("$set", + new BasicDBObject().append("tempKey", OTK)); + accountS.updateOne(keyApplicationIndex, keyApply); + accountS.updateOne(keyApplicationIndex, keyAccountState); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + accountKeyStatus = true; + } else { + System.out.println("RS1"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", objid); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 53)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequest(ClientID); + } + + } else { + System.out.println("RSC"); + if (Password.equals(password)) { + System.out.println("R3c"); + Token = (String) accountServer.get("Token"); + Fname = (String) accountServer.get("FName"); + Path = (String) accountServer.get("Path"); + Email = (String) accountServer.get("Email"); + UserName = (String) accountServer.get("User"); + lastNet = (String) accountServer.get("lastNet"); + keychainUUID = (String) accountServer.get("UUID"); + System.out.println("4"); + BasicDBObject searchQuery = new BasicDBObject(); + BasicDBObject searchQueryAD = new BasicDBObject(); + searchQuery.append("_id", objid); + searchQueryAD.append("UUID", keychainUUID); + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery5 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = new BasicDBObject(); + BasicDBObject updateQuery8 = new BasicDBObject(); + BasicDBObject updateQueryAD = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 8)); + updateQuery1.append("$set", + new BasicDBObject().append("Token", Token)); + updateQuery2.append("$set", + new BasicDBObject().append("Fname", Fname)); + updateQuery3.append("$set", + new BasicDBObject().append("Path", Path)); + updateQuery4.append("$set", + new BasicDBObject().append("User", UserName)); + updateQuery5.append("$set", + new BasicDBObject().append("Password", Password)); + updateQuery7.append("$set", + new BasicDBObject().append("Email", Email)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + updateQuery8.append("$set", + new BasicDBObject().append("keychainUUID", keychainUUID)); + updateQueryAD.append("$set", + new BasicDBObject().append("websession", session)); + System.out.println("3"); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); + dCollection.updateOne(searchQuery, updateQuery4); + dCollection.updateOne(searchQuery, updateQuery5); + dCollection.updateOne(searchQuery, updateQuery6); + dCollection.updateOne(searchQuery, updateQuery7); + dCollection.updateOne(searchQuery, updateQuery8); + accountS.updateOne(searchQueryAD,updateQueryAD); + /*The last update allows the server to add the current authed web session, home page + will verify session staus, if it is invalid the user will be pushed to create a new session. + */ + System.out.println("2"); + //delegationTimer.trigger(); + System.out.println("1"); + delegationTimer.DeleteTargetRequestByID(objid); + System.out.println("clear"); + } else { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", objid); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + } + } + } else { + System.out.println("Banned Account"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id",Lrequest.get("_id").toString()); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 11)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id").toString()); + } + } catch (Exception ERC) { + System.out.println("Something Went Wrong: " + ERC.getLocalizedMessage()); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id",Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + } + + } + if (requesttype == 74) { + System.out.println("Login Request (TKN)"); + String CTOKEN = (String) Lrequest.get("token"); + // Document TResolve = dCollection.find(eq("type", 3)).first(); + Document accountServer; + String TKN; + String Password; + String Fname; + String Path; + String UserName; + String Email; + String keychainUUID; + String validSession; + try { + accountServer = accountS.find(eq("Token", CTOKEN)).first(); + if (!(accountServer == null)) { + TKN = (String) accountServer.get("Token"); + validSession = (String) accountServer.get("websession"); + if (accountServer.get("Status").equals(true)) { + if (TKN.equals(CTOKEN) && Lrequest.get("sessionID").equals(validSession)) { + TKN = (String) accountServer.get("Token"); + Password = (String) accountServer.get("Password"); + Fname = (String) accountServer.get("FName"); + Path = (String) accountServer.get("Path"); + Email = (String) accountServer.get("Email"); + UserName = (String) accountServer.get("User"); + validSession = (String) accountServer.get("session"); + keychainUUID = (String) accountServer.get("UUID"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery2 = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQuery5 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = new BasicDBObject(); + BasicDBObject updateQuery8 = new BasicDBObject(); + BasicDBObject updateQuery9 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 8)); + updateQuery2.append("$set", + new BasicDBObject().append("Fname", Fname)); + updateQuery3.append("$set", + new BasicDBObject().append("Path", Path)); + updateQuery4.append("$set", + new BasicDBObject().append("User", UserName)); + updateQuery5.append("$set", + new BasicDBObject().append("Password", Password)); + updateQuery7.append("$set", + new BasicDBObject().append("Email", Email)); + updateQuery8.append("$set", + new BasicDBObject().append("Token", TKN)); + updateQuery9.append("$set", + new BasicDBObject().append("keychainUUID", keychainUUID)); + updateQuery6.append("$set", + new BasicDBObject().append("status", true)); + System.out.println("Sending Info To Forwarding Server"); + dCollection.updateOne(searchQuery, updateQuery8); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery2); + dCollection.updateOne(searchQuery, updateQuery3); + dCollection.updateOne(searchQuery, updateQuery4); + dCollection.updateOne(searchQuery, updateQuery5); + dCollection.updateOne(searchQuery, updateQuery8); + dCollection.updateOne(searchQuery, updateQuery7); + dCollection.updateOne(searchQuery, updateQuery9); + dCollection.updateOne(searchQuery, updateQuery6); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + } else { + System.out.println("Login Failure"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + + } + } else { + System.out.println("Banned Account"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 11)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + + } + } else { + System.out.println("Login Failure"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 9)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + //delegationTimer.trigger(); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + } + } catch (MongoCommandException ERC) { + System.out.println("Malformed Request"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery1); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + //delegationTimer.trigger(); + } + } + } else { + System.out.println("Malformed Request, Non Recoverable ErrorInfo: "); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id",Lrequest.get("_id")); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery1 = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 7)); + updateQuery1.append("$set", + new BasicDBObject().append("status", true)); + updateQuery1.append("$set", + new BasicDBObject().append("pos", "uk")); + Lrequest.append("status", true); + dCollection.updateOne(searchQuery, updateQuery1); + dCollection.updateOne(searchQuery, updateQuery); + dCollection.updateOne(searchQuery, updateQuery); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + } } } @@ -1727,7 +2130,7 @@ public class delegationServices { } catch (Exception Erp) { System.out.println("Malformed Request, Non Recoverable ErrorInfo: " + Erp); BasicDBObject searchQuery = new BasicDBObject(); - searchQuery.append("clientid", ClientID); + searchQuery.append("_id",Lrequest.get("_id")); BasicDBObject updateQuery = new BasicDBObject(); BasicDBObject updateQuery1 = new BasicDBObject(); @@ -1736,16 +2139,14 @@ public class delegationServices { updateQuery1.append("$set", new BasicDBObject().append("status", true)); updateQuery1.append("$set", - new BasicDBObject().append("pos", "934")); + new BasicDBObject().append("pos", "uk")); Lrequest.append("status", true); dCollection.updateOne(searchQuery, updateQuery1); dCollection.updateOne(searchQuery, updateQuery); dCollection.updateOne(searchQuery, updateQuery); - delegationTimer.DeleteTargetRequest(ClientID); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); } } - delegate(); - } public static void Purge() { BasicDBObject searchQueryT = new BasicDBObject(); @@ -1764,6 +2165,14 @@ public class delegationServices { System.out.println("Flushed a targeted request (CID) from the server"); + } + public static void TargetDeleteByID(Object ID) { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", ID); + dCollection.deleteMany(searchQuery); + System.out.println("Flushed a targeted request (CID) from the server"); + + } public static void TargetDeleteRID(int CID) { @@ -1774,18 +2183,19 @@ public class delegationServices { } - - public static void delegate() { - userAuthetication(); - } - public static void userAuthetication() { - try { - delegationProcesser(); - } catch (Exception exr) { - delegationTimer.trigger(); - //Shit is so janky, I tell it not to crash when it wants to crash - } + while (true) { + final Runnable runnable = new Runnable() { + public void run() { + Lrequest = dCollection.find(eq("status", false)).first(); + if (!(Lrequest == null)) { + delegationProcesser(); + } + } + }; + runnable.run(); + } + } } diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java b/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java index 8a7fcc8..672b13f 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java @@ -1,28 +1,10 @@ package com.jamesquinley.DelegationServices; -import org.bson.Document; - import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class delegationTimer { - public static void trigger () - { - final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - final Runnable runnable = new Runnable() { - int countdownStarter = 2; - public void run() { - countdownStarter--; - if (countdownStarter <= 0) { - countdownStarter = 2; - delegationServices.delegate(); - scheduler.shutdown(); - } - } - }; - scheduler.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS); - } public static void DeleteTargetRequest (int CID) { final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); @@ -39,6 +21,22 @@ public class delegationTimer { }; scheduler.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS); } + public static void DeleteTargetRequestByID (Object ID) + { + final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + final Runnable runnable = new Runnable() { + int countdownStarter = 5; + public void run() { + countdownStarter--; + if (countdownStarter <= 0) { + countdownStarter = 5; + delegationServices.TargetDeleteByID(ID); + scheduler.shutdown(); + } + } + }; + scheduler.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS); + } public static void DeleteTargetRequestQuick (int CID) { final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); diff --git a/src/main/java/com/jamesquinley/Main.java b/src/main/java/com/jamesquinley/Main.java index 705cf45..a97baf6 100644 --- a/src/main/java/com/jamesquinley/Main.java +++ b/src/main/java/com/jamesquinley/Main.java @@ -13,7 +13,7 @@ public class Main com.jamesquinley.DelegationServices.delegationServices.connectionInit(status.betaServer); com.jamesquinley.DelegationServices.delegationServices.Purge(); System.out.println( "We're starting the login delegation server, please wait one moment while we check a few things."); - com.jamesquinley.DelegationServices.delegationTimer.trigger(); + com.jamesquinley.DelegationServices.delegationServices.userAuthetication(); System.out.println("We've started everything, requests are now being served"); } }