From 730728260ba4a0d980130d0d1039cf3cbf66bff3 Mon Sep 17 00:00:00 2001 From: James Quinley Date: Sat, 12 Mar 2022 13:31:41 -0800 Subject: [PATCH] Allows For Creation Of Limited Accounts (via DBS) --- .../delegationServices.java | 153 +++++++++++++++--- src/main/java/com/jamesquinley/init.java | 4 + 2 files changed, 132 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java index 2c911d6..7b6cbbb 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java @@ -14,31 +14,51 @@ import static com.mongodb.client.model.Filters.eq; import static java.util.concurrent.TimeUnit.SECONDS; public class delegationServices { - static ConnectionString BetascReadconnectionString = new ConnectionString("mongodb+srv://serverClientBeta:Unz6c3I0wjrUVBIf@delegationrequest.qnvfa.mongodb.net/mDelegationRequest?retryWrites=true&w=majority"); - static MongoClientSettings BetascReadsettings = MongoClientSettings.builder() - .applyConnectionString(BetascReadconnectionString) - .applyToSocketSettings(builder -> - builder.connectTimeout(5, SECONDS) - .readTimeout(6, SECONDS)) - .build(); - static MongoClient BetadClient = MongoClients.create(BetascReadsettings); - static MongoDatabase BetadClientDatabase = BetadClient.getDatabase("DelegationRequest"); - static MongoCollection BetadCollection = BetadClientDatabase.getCollection("accountRequest"); - - static ConnectionString scReadconnectionString = new ConnectionString("mongodb+srv://serverClient:x2sJ8Qu0VVMifNLX@accountdelegation.n06hb.mongodb.net/DelegationRequest?retryWrites=true&w=majority"); - static MongoClientSettings scReadsettings = MongoClientSettings.builder() - .applyConnectionString(scReadconnectionString) - .applyToSocketSettings(builder -> - builder.connectTimeout(5, SECONDS) - .readTimeout(6, SECONDS)) - .build(); - static MongoClient dClient = MongoClients.create(scReadsettings); - static MongoDatabase dClientDatabase = dClient.getDatabase("DelegationRequest"); - static MongoCollection dCollection = dClientDatabase.getCollection("accountRequest"); - - static MongoDatabase RGFilterDB = dClient.getDatabase("rgcon"); - static MongoCollection RGFilter = RGFilterDB.getCollection("blocked"); + static ConnectionString scReadconnectionString; + static MongoClientSettings scReadsettings; + static MongoClient dClient; + static MongoDatabase dClientDatabase; + static MongoCollection dCollection; + static MongoDatabase RGFilterDB; + static MongoCollection RGFilter; + public static void connectionInit (Boolean beta) + { + if (beta == true) + { + scReadconnectionString = new ConnectionString("mongodb+srv://serverClientBeta:Unz6c3I0wjrUVBIf@delegationrequest.qnvfa.mongodb.net/mDelegationRequest?retryWrites=true&w=majority"); + //connects to database that beta clients can use. + System.out.println("This is a beta server build (and will only work on that type)"); + scReadsettings = MongoClientSettings.builder() + .applyConnectionString(scReadconnectionString) + .applyToSocketSettings(builder -> + builder.connectTimeout(5, SECONDS) + .readTimeout(6, SECONDS)) + .build(); + dClient = MongoClients.create(scReadsettings); + dClientDatabase = dClient.getDatabase("DelegationRequest"); + dCollection = dClientDatabase.getCollection("accountRequest"); + RGFilterDB = dClient.getDatabase("rgcon"); + RGFilter = RGFilterDB.getCollection("blocked"); + } else + { + scReadconnectionString = new ConnectionString("mongodb+srv://serverClient:x2sJ8Qu0VVMifNLX@accountdelegation.n06hb.mongodb.net/DelegationRequest?retryWrites=true&w=majority"); + //connects to database that production clients can use + System.out.println("This is a production server build (and will only work on that type)"); + scReadsettings = MongoClientSettings.builder() + .applyConnectionString(scReadconnectionString) + .applyToSocketSettings(builder -> + builder.connectTimeout(5, SECONDS) + .readTimeout(6, SECONDS)) + .build(); + dClient = MongoClients.create(scReadsettings); + dClientDatabase = dClient.getDatabase("DelegationRequest"); + dCollection = dClientDatabase.getCollection("accountRequest"); + RGFilterDB = dClient.getDatabase("rgcon"); + RGFilter = RGFilterDB.getCollection("blocked"); + } + } +//TODO get switcher working, NPE currently triggers on post init, move below code block into if statement, or outside of it so it will do the same thing regardless of t/f switch output static ConnectionString AccountCon = new ConnectionString("mongodb+srv://DelegationServerClient:UNxldb8abSJkWscG@account.ufgrh.mongodb.net/account?retryWrites=true&w=majority"); static MongoClientSettings AccountSettings = MongoClientSettings.builder() .applyConnectionString(AccountCon) @@ -96,7 +116,7 @@ public class delegationServices { System.out.println("Delegation Has Started"); if(requesttype == 0 || requesttype == 1 || requesttype == 2 || requesttype == 3 || requesttype == 4 || requesttype == 5 || requesttype == 6 || requesttype ==7 || requesttype == 8 || requesttype ==9 || requesttype ==10 || requesttype ==11 || requesttype ==12) { - if (requesttype == 7 || requesttype == 12 || requesttype == 4 || requesttype == 5 || requesttype == 6 || requesttype == 19) { + if (requesttype == 7 || requesttype == 12 || requesttype == 4 || requesttype == 5 || requesttype == 6 || requesttype == 19 || requesttype == 20) { System.out.println("An Excluded Request (7MAL, 12S, 4C, 5C, 6C) Has Been Detected, Ignoring"); //Thinking of moving all purge timer call to here to centralize deletion decision. } @@ -738,7 +758,90 @@ public class delegationServices { } } + if (requesttype == 20) + //TODO rewrite to just need username, password will be set by system later + { + delegationTimer.DeleteTargetRequest(ClientID); + 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 = 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); + 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("FName", FName); + createForm.append("Entitlements", "NA"); + createForm.append("Path", "C:\\ObsidianCoreStudios\\Launcher\\AOTSK\\"); + createForm.append("Freinds", " "); + 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); + + } + + } + } } else { System.out.println("Malformed Request, Non Recoverable"); BasicDBObject searchQuery = new BasicDBObject(); diff --git a/src/main/java/com/jamesquinley/init.java b/src/main/java/com/jamesquinley/init.java index 2d0221f..7441bb9 100644 --- a/src/main/java/com/jamesquinley/init.java +++ b/src/main/java/com/jamesquinley/init.java @@ -1,4 +1,7 @@ package com.jamesquinley; + +import com.jamesquinley.DelegationServices.status; + /** Hey there! This is the source code for AOTSK-Delegation Server, self explanitory. Also this is multi line so I can justify using this type of comment. @@ -7,6 +10,7 @@ public class init { public static void main( String[] args ) { + 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();