From 5370d29427701c86357b15ded639ca3b3b990da9 Mon Sep 17 00:00:00 2001 From: James Quinley <55860757+JamesQuinley@users.noreply.github.com> Date: Sun, 23 Jan 2022 20:46:37 -0800 Subject: [PATCH] Added Working Username and password auth, token auth is still under development. --- .../delegationServices.java | 220 +++++++++++++++++- .../DelegationServices/delegationTimer.java | 18 +- src/main/java/com/jamesquinley/startup.java | 7 + 3 files changed, 232 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java index 1912994..1368f08 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java @@ -1,5 +1,6 @@ package com.jamesquinley.DelegationServices; +import com.mongodb.BasicDBObject; import com.mongodb.ConnectionString; import com.mongodb.MongoClientSettings; import com.mongodb.client.MongoClient; @@ -25,31 +26,226 @@ public class delegationServices { static MongoDatabase dClientDatabase = dClient.getDatabase("DelegationRequest"); static MongoCollection dCollection = dClientDatabase.getCollection("accountRequest"); + 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) + .applyToSocketSettings(builder -> + builder.connectTimeout(5, SECONDS) + .readTimeout(6, SECONDS)) + .build(); + static MongoClient accountGetClient = MongoClients.create(AccountSettings); + static MongoDatabase accountDatabase = accountGetClient.getDatabase("account"); + static MongoCollection accountS = accountDatabase.getCollection("UserPass"); + //still need to config public static void delegationProcesser() { - System.out.println("delegation Trigger Set"); + Document Lrequest = dCollection.find(eq("status", false)).first(); + int ClientID = (int) Lrequest.get("clientid"); + String username = (String) Lrequest.get("User"); + String password = (String) Lrequest.get("Password"); + int requesttype = (int) Lrequest.get("type"); + if (requesttype == 0) { +//sync read request + } + if (requesttype == 1) { +//sync write request + } + if (requesttype == 2) { + Document accountServer; + String Password; + String Token; + String Fname; + String Path; + String UserName; + String Email; + try { + accountServer = accountS.find(eq("User", username)).first(); + Password = (String) accountServer.get("Password"); + if (Password.equals(password)) { + 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"); - delegationTimer.trigger(); + 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(); + 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)); + // System.out.println("Sending Info To Forwarding Server"); + 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); + //delegationTimer.trigger(); + } else { + 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(); + } + } catch (Exception ERC) { + 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(); + } + } + if (requesttype == 3) { + Document TResolve = dCollection.find(eq("status", false)).first(); + String CTOKEN = (String) TResolve.get("Token"); + Document accountServer; + String Password; + String Token; + String Fname; + String Path; + String UserName; + String Email; + try { + accountServer = accountS.find(eq("Token", username)).first(); + Password = (String) accountServer.get("Token"); + if (Password.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 updateQuery5 = new BasicDBObject(); + BasicDBObject updateQuery6 = new BasicDBObject(); + BasicDBObject updateQuery7 = 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)); + // System.out.println("Sending Info To Forwarding Server"); + 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); + //delegationTimer.trigger(); + } else { + 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(); + } + } catch (Exception ERC) { + 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(); + } + } + //above is finding one request and starting wheels + //delegationTimer.trigger(); + delegate(); } - public static void clearMute () + public static void Clear () { + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("status", true); + BasicDBObject searchQuery1 = new BasicDBObject(); + searchQuery1.append("status", false); + dCollection.deleteMany(searchQuery); + dCollection.deleteMany(searchQuery1); + } + public static void delegate () { - Document userLookMutedLookUp = dCollection.find(eq("complete", false)).first(); - System.out.println(userLookMutedLookUp + "This is a debug Print at line 37"); + Document userLookMutedLookUp = dCollection.find(eq("status", false)).first(); try { userAuthetication(userLookMutedLookUp); } catch (NullPointerException NPE) { - System.out.println("There were no users to unmute"); + System.out.println("No Pending Authentication Requests"); delegationTimer.trigger(); } } public static void userAuthetication (Document doc){ - String tmpU = null; - tmpU = (String) doc.get("User"); - dCollection.updateOne(eq("User", tmpU), Updates.set("npMUTE", false)); - dCollection.updateOne(eq("User", tmpU), Updates.set("wordRC", 1)); - dCollection.updateOne(eq("User", tmpU), Updates.set("Credits", 1000)); try { - clearMute(); + System.out.println("1"); + delegationProcesser(); } catch (Exception exr) { System.out.println("Pending Authentication Completed"); delegationTimer.trigger(); diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java b/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java index 4702644..fe6676e 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationTimer.java @@ -14,7 +14,23 @@ public class delegationTimer { countdownStarter--; if (countdownStarter <= 0) { countdownStarter = 5; - delegationServices.delegationProcesser(); + delegationServices.delegate(); + scheduler.shutdown(); + } + } + }; + scheduler.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS); + } + public static void DeleteAllRequests () + { + final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + final Runnable runnable = new Runnable() { + int countdownStarter = 60; + public void run() { + countdownStarter--; + if (countdownStarter <= 0) { + countdownStarter = 60; + delegationServices.Clear(); scheduler.shutdown(); } } diff --git a/src/main/java/com/jamesquinley/startup.java b/src/main/java/com/jamesquinley/startup.java index 73dafae..9e1da8f 100644 --- a/src/main/java/com/jamesquinley/startup.java +++ b/src/main/java/com/jamesquinley/startup.java @@ -1,5 +1,9 @@ package com.jamesquinley; +import com.jamesquinley.DelegationServices.delegationServices; + +import static com.jamesquinley.DelegationServices.delegationTimer.DeleteAllRequests; + /** Hey there! This is the source code for AOTSK-Delegation Server, for login * @@ -10,5 +14,8 @@ public class startup { 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(); + DeleteAllRequests(); + delegationServices.Clear(); + System.out.println("We've started everything, requests are now being served"); } }