From 1db6bd21dc6ed4353dea65f56db15c41aa571f1a Mon Sep 17 00:00:00 2001 From: James Quinley Date: Sun, 27 Nov 2022 21:38:58 -0800 Subject: [PATCH] Keeps server alive even after fatal crashes, known issue working on a fix need server to be online in the meantime. --- .../Asecure/electronicMailHandler.java | 40 +++++ .../com/jamesquinley/Asecure/secureCalls.java | 9 ++ .../delegationServices.java | 137 +++++++++++++++++- src/main/java/com/jamesquinley/Main.java | 16 +- 4 files changed, 193 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/jamesquinley/Asecure/electronicMailHandler.java b/src/main/java/com/jamesquinley/Asecure/electronicMailHandler.java index 974d241..344f60f 100644 --- a/src/main/java/com/jamesquinley/Asecure/electronicMailHandler.java +++ b/src/main/java/com/jamesquinley/Asecure/electronicMailHandler.java @@ -139,6 +139,46 @@ public class electronicMailHandler { System.err.println("Was Not Sent Because Of An Error."); } } + public static void newLink (String receiverEmail, String Platform, String User) { + //get date for email + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy"); + String Date = formatter.format(date); + //get time for sign in time + Date dt = new Date(); + SimpleDateFormat dateFormat; + dateFormat = new SimpleDateFormat("kk:mm:ss"); + + Properties props = new Properties(); + props.put("mail.smtp.host", emailSMTPserver); + props.put("mail.smtp.socketFactory.port", emailSMTPPort); + props.put("mail.smtp.socketFactory.class", + "javax.net.ssl.SSLSocketFactory"); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.port", emailSMTPPort); + + try { + Authenticator auth = new SMTPAuthenticator(); + Session session = Session.getInstance(props, auth); + Message message = new MimeMessage(session); + message.setFrom(new InternetAddress(senderEmailId)); + message.setRecipients(Message.RecipientType.TO, + InternetAddress.parse(receiverEmail)); + message.setSubject("Obsidian Core Account Linked to " + Platform + " | " + Date); + message.setText("Hello, " + User + + "\nYou've linked your " + Platform + " account with your Obsidian Core Studios account. \n" + + "You can now use our services which we ofter there with the same account as the launcher! \n" + + "This is an automated email, please don't reply." + + "\n See the account management dashboard at https://www.obsidiancorestudios.com/account/" + + "\nYour use of our services regardless of platform are subject to our usage agreements, which can be found at https://www.obsidiancorestudios.com/legal/eula"); + + Transport.send(message); + System.out.println("Alert Sent"); + } catch (Exception e) { + e.printStackTrace(); + System.err.println("Was Not Sent Because Of An Error."); + } + } public static void otkEmail (String receiverEmail, String Key, String User) { //get date for email diff --git a/src/main/java/com/jamesquinley/Asecure/secureCalls.java b/src/main/java/com/jamesquinley/Asecure/secureCalls.java index b6481da..52e5d6f 100644 --- a/src/main/java/com/jamesquinley/Asecure/secureCalls.java +++ b/src/main/java/com/jamesquinley/Asecure/secureCalls.java @@ -32,6 +32,15 @@ public class secureCalls { }; runnable.run(); } + public static void accountLinked (String email, String Platform, String user) + { + final Runnable runnable = new Runnable() { + public void run() { + electronicMailHandler.newLink(email,Platform,user); + } + }; + runnable.run(); + } public static void accountMigrationComplete (String email, String user) { final Runnable runnable = new Runnable() { diff --git a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java index 5a16293..a9004e6 100644 --- a/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java +++ b/src/main/java/com/jamesquinley/DelegationServices/delegationServices.java @@ -101,7 +101,6 @@ public class delegationServices { Boolean mac = false; Document Filter; int ClientID = 0; - System.out.println(Lrequest); try { try { ClientID = (int) Lrequest.get("clientid"); @@ -1781,7 +1780,7 @@ public class delegationServices { } else { System.out.println("Running in limited mode (Web Request)"); - if (requesttype == 73 || requesttype == 74) { + if (requesttype == 73 || requesttype == 74 || requesttype == 75) { if (requesttype == 73) { System.out.println("Login Request (USR&PASS)"); String username = (String) Lrequest.get("user"); @@ -2092,6 +2091,138 @@ public class delegationServices { 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(); + } + } + if (requesttype == 75) { + System.out.println("Link request"); + String CTOKEN = (String) Lrequest.get("token"); + String platform = (String) Lrequest.get("linkplatform"); + String id = (String) Lrequest.get("linktoken"); + 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"); + if (accountServer.get("Status").equals(true)) { + if (TKN.equals(CTOKEN)) { + if (accountServer.get(platform+"idstatus") == null) { + Email = (String) accountServer.get("Email"); + UserName = (String) accountServer.get("User"); + BasicDBObject searchQuery = new BasicDBObject(); + searchQuery.append("_id", Lrequest.get("_id")); + BasicDBObject searchQueryASC = new BasicDBObject(); + searchQueryASC.append("Token", TKN); + + BasicDBObject updateQuery = new BasicDBObject(); + BasicDBObject updateQuery3 = new BasicDBObject(); + BasicDBObject updateQuery4 = new BasicDBObject(); + BasicDBObject updateQueryAD = new BasicDBObject(); + BasicDBObject updateQueryADBS = new BasicDBObject(); + updateQuery.append("$set", + new BasicDBObject().append("type", 76)); + updateQuery4.append("$set", + new BasicDBObject().append("status", true)); + updateQueryAD.append("$set", + new BasicDBObject().append(platform+"id", id)); + updateQueryADBS.append("$set", + new BasicDBObject().append(platform+"idstatus", true)); + System.out.println("Sending Info To Forwarding Server"); + dCollection.updateOne(searchQuery, updateQuery); + accountS.updateOne(searchQueryASC, updateQueryAD); + accountS.updateOne(searchQueryASC, updateQueryADBS); + dCollection.updateOne(searchQuery, updateQuery4); + secureCalls.accountLinked(Email, platform, UserName); + delegationTimer.DeleteTargetRequestByID(Lrequest.get("_id")); + + } else { + System.out.println("Already linked"); + 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", 77)); + 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("Link 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", 77)); + 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", 77)); + 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", @@ -2105,7 +2236,7 @@ public class delegationServices { } } } else { - System.out.println("Malformed Request, Non Recoverable ErrorInfo: "); + System.out.println("Type does not exist (ERR4)"); BasicDBObject searchQuery = new BasicDBObject(); searchQuery.append("_id",Lrequest.get("_id")); diff --git a/src/main/java/com/jamesquinley/Main.java b/src/main/java/com/jamesquinley/Main.java index 4099e31..9004659 100644 --- a/src/main/java/com/jamesquinley/Main.java +++ b/src/main/java/com/jamesquinley/Main.java @@ -6,14 +6,16 @@ import com.jamesquinley.DelegationServices.status; Hey there! This is the source code for AOTSK-Delegation Server, self explanatory. Also this is multi line so I can justify using this type of comment. */ -public class Main -{ - public static void main( String[] args ) - { +public class Main { + 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."); + System.out.println("We're starting the login delegation server, please wait one moment while we check a few things."); System.out.println("We've started everything, requests are now being served"); + isolatedTimer(); + } + + static void isolatedTimer() { while (true) { try { @@ -21,7 +23,9 @@ public class Main com.jamesquinley.DelegationServices.delegationServices.userAuthetication(); } catch (InterruptedException e) { e.printStackTrace(); + System.out.println("We ran into an issue, this is a known issue and will be fixed once I can figure it out."); + isolatedTimer(); } } } -} +} \ No newline at end of file