Added OTK email and basic gen, need to work on callback and OTK storage within the account database.

This commit is contained in:
James Quinley 2022-06-19 18:52:59 -07:00
parent cafab0fce1
commit f9a71152b6
3 changed files with 127 additions and 71 deletions

View File

@ -8,7 +8,7 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Properties; import java.util.Properties;
public class emailVerify { public class electronicMailHandler {
/* /*
This will handle both account creation verify and login verify tasks, it will not verify for token based logins as This will handle both account creation verify and login verify tasks, it will not verify for token based logins as
that form of login is client controlled and no user input is allowed, hacked clients are also locked out of the network that form of login is client controlled and no user input is allowed, hacked clients are also locked out of the network
@ -95,7 +95,46 @@ public class emailVerify {
System.err.println("Was Not Sent Because Of An Error."); System.err.println("Was Not Sent Because Of An Error.");
} }
} }
private static class SMTPAuthenticator extends
public static void otkEmail (String receiverEmail, String Key, 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 Notice");
message.setText("Hey there, as you may have seen in the launcher, you need a one time key to continue, this email can help! " +
"\nBefore we give you the required key to continue, a gentle reminder to NEVER SHARE YOUR PASSWORD OR ONE TIME KEY! " +
"\nWell, good luck! Your one time key is: " + Key +
"\nThis key will remain active until used, it was generated at your login attempt, and won't be regenerated after the initial creation of said key." +
"\nThis key will only work with the account tied to the username: " + User + ", and will only work one time, its in the name.");
Transport.send(message);
System.out.println("Alert Sent");
} catch (Exception e) {
e.printStackTrace();
System.err.println("Was Not Sent Because Of An Error.");
}
} private static class SMTPAuthenticator extends
javax.mail.Authenticator { javax.mail.Authenticator {
public PasswordAuthentication public PasswordAuthentication
getPasswordAuthentication() { getPasswordAuthentication() {
@ -104,9 +143,4 @@ public class emailVerify {
} }
} }
} }

View File

@ -2,16 +2,12 @@ package com.jamesquinley.Asecure;
import com.jamesquinley.DelegationServices.delegationServices; import com.jamesquinley.DelegationServices.delegationServices;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class secureCalls { public class secureCalls {
public static void locationBasedEmail (String email, String user, String adr, String oldAdr) public static void locationBasedEmail (String email, String user, String adr, String oldAdr)
{ {
final Runnable runnable = new Runnable() { final Runnable runnable = new Runnable() {
public void run() { public void run() {
emailVerify.newLocation(email , user, adr, oldAdr); electronicMailHandler.newLocation(email , user, adr, oldAdr);
} }
}; };
runnable.run(); runnable.run();
@ -21,4 +17,8 @@ public class secureCalls {
{ {
delegationServices.banUserEmail(email); delegationServices.banUserEmail(email);
} }
public static void oneTimeKeyEmail (String email, String key, String user)
{
electronicMailHandler.otkEmail(email,key,user);
}
} }

View File

@ -1,5 +1,6 @@
package com.jamesquinley.DelegationServices; package com.jamesquinley.DelegationServices;
import com.jamesquinley.Asecure.electronicMailHandler;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import com.mongodb.ConnectionString; import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings; import com.mongodb.MongoClientSettings;
@ -10,7 +11,7 @@ import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoDatabase;
import org.bson.Document; import org.bson.Document;
import javax.print.Doc; import java.util.Random;
import java.util.UUID; import java.util.UUID;
import static com.mongodb.client.model.Filters.eq; import static com.mongodb.client.model.Filters.eq;
@ -456,65 +457,85 @@ public class delegationServices {
try { try {
accountServer = accountS.find(eq("User", username)).first(); accountServer = accountS.find(eq("User", username)).first();
Password = (String) accountServer.get("Password"); Password = (String) accountServer.get("Password");
System.out.println("Stuff");
if (accountServer.get("Status").equals(true)) { if (accountServer.get("Status").equals(true)) {
if (Password.equals(password)) { System.out.println("Stuff1");
Token = (int) accountServer.get("Token"); if (accountServer.get("Version").equals("1"))
Fname = (String) accountServer.get("FName"); {
Path = (String) accountServer.get("Path"); System.out.println("Generating OTP");
Email = (String) accountServer.get("Email"); String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
UserName = (String) accountServer.get("User"); StringBuilder sb = new StringBuilder();
lastNet = (String) accountServer.get("lastNet"); Random random = new Random();
localNet.macRead(Macid, lastNet, Email, UserName, Token); int length = 15;
BasicDBObject searchQuery = new BasicDBObject(); for(int i = 0; i < length; i++) {
searchQuery.append("clientid", ClientID); int index = random.nextInt(alphabet.length());
BasicDBObject updateQuery = new BasicDBObject(); char randomChar = alphabet.charAt(index);
BasicDBObject updateQuery1 = new BasicDBObject(); sb.append(randomChar);
BasicDBObject updateQuery2 = new BasicDBObject(); }
BasicDBObject updateQuery3 = new BasicDBObject(); String randomString = sb.toString();
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));
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();
delegationTimer.DeleteTargetRequest(ClientID);
} else {
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("clientid", ClientID);
BasicDBObject updateQuery = new BasicDBObject(); }
BasicDBObject updateQuery1 = new BasicDBObject(); else
updateQuery.append("$set", {
new BasicDBObject().append("type", 7)); if (Password.equals(password)) {
updateQuery1.append("$set", Token = (int) accountServer.get("Token");
new BasicDBObject().append("status", true)); Fname = (String) accountServer.get("FName");
dCollection.updateOne(searchQuery, updateQuery); Path = (String) accountServer.get("Path");
dCollection.updateOne(searchQuery, updateQuery1); Email = (String) accountServer.get("Email");
//delegationTimer.trigger(); UserName = (String) accountServer.get("User");
delegationTimer.DeleteTargetRequest(ClientID); lastNet = (String) accountServer.get("lastNet");
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();
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));
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();
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", 7));
updateQuery1.append("$set",
new BasicDBObject().append("status", true));
dCollection.updateOne(searchQuery, updateQuery);
dCollection.updateOne(searchQuery, updateQuery1);
//delegationTimer.trigger();
delegationTimer.DeleteTargetRequest(ClientID);
}
} }
} else { } else {
System.out.println("Banned Account"); System.out.println("Banned Account");
@ -861,6 +882,7 @@ public class delegationServices {
createForm.append("Token", tokenSTGEN); createForm.append("Token", tokenSTGEN);
createForm.append("Control", 1); createForm.append("Control", 1);
createForm.append("Upgrade", 0); createForm.append("Upgrade", 0);
createForm.append("Version", 2);
//createForm.append("Uid",uid); //createForm.append("Uid",uid);
createForm.append("lastNet", Macid); createForm.append("lastNet", Macid);
accountS.insertOne(createForm); accountS.insertOne(createForm);
@ -872,7 +894,7 @@ public class delegationServices {
FNETDOC.insertOne(FnetInit); FNETDOC.insertOne(FnetInit);
BasicDBObject searchQuery = new BasicDBObject(); BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("clientid", ClientID); searchQuery.append("clientid", ClientID);
com.jamesquinley.Asecure.emailVerify.Onboarding(Email, User); electronicMailHandler.Onboarding(Email, User);
BasicDBObject updateQuery = new BasicDBObject(); BasicDBObject updateQuery = new BasicDBObject();
BasicDBObject updateQuery1 = new BasicDBObject(); BasicDBObject updateQuery1 = new BasicDBObject();
updateQuery.append("$set", updateQuery.append("$set",