2022-05-04 19:58:29 -07:00

994 lines
63 KiB
Java

package com.jamesquinley.DelegationServices;
import com.mongodb.BasicDBObject;
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCommandException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.UUID;
import static com.mongodb.client.model.Filters.eq;
import static java.util.concurrent.TimeUnit.SECONDS;
public class delegationServices {
static ConnectionString scReadconnectionString;
static MongoClientSettings scReadsettings;
static MongoClient dClient;
static MongoDatabase dClientDatabase;
static MongoCollection<Document> dCollection;
static MongoDatabase RGFilterDB;
static MongoCollection<Document> 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)
.applyToSocketSettings(builder ->
builder.connectTimeout(5, SECONDS)
.readTimeout(6, SECONDS))
.build();
static MongoClient accountGetClient = MongoClients.create(AccountSettings);
static MongoDatabase accountDatabase = accountGetClient.getDatabase("account");
static MongoCollection<Document> accountS = accountDatabase.getCollection("UserPass");
static MongoCollection<Document> FNETDOC = accountDatabase.getCollection("FNet");
static int RequestR;
//still need to config
public static String lastNet = null;
public static String Macid = null;
public static void delegationProcesser() {
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 {
try {
try {
ClientID = (int) Lrequest.get("clientid");
} catch (Exception exrp) {
delegationTimer.DeleteTargetRequest(ClientID);
}
try {
Macid = (String) Lrequest.get("net");
} catch (Exception exrp) {
System.out.println("Failed To Get MacAdr");
delegationTimer.DeleteTargetRequest(ClientID);
}
String RG = (String) Lrequest.get("rg");
Filter = RGFilter.find(eq("rgkey", "UAROCKS")).first();
String blockedRG = (String) Filter.get("rgflag");
if (blockedRG.contains(RG)) {
System.out.println("User Is Trying To Join From A Blocked Region, Halted Login Request.");
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", 19));
updateQuery1.append("$set",
new BasicDBObject().append("status", true));
dCollection.updateOne(searchQuery, updateQuery);
dCollection.updateOne(searchQuery, updateQuery1);
delegationTimer.DeleteTargetRequest(ClientID);
} else {
System.out.println("User On Allowed Region");
int requesttype = (int) Lrequest.get("type");
System.out.println("Got Type, Getting Doc ID");
RequestR = requesttype;
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 == 20 || requesttype == 21 || requesttype == 41 || requesttype == 18) {
if ( requesttype == 7 || requesttype == 12 || requesttype == 4 || requesttype == 5 || requesttype == 6 || requesttype == 19 || requesttype == 12) {
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.
System.out.println(requesttype);
}
if (requesttype == 41)
{
System.out.println("Update 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) {
int CTOKEN = (int) Lrequest.get("Token");
System.out.println("Sync Request (Read)");
Document accountServer;
String Password;
int Token;
String Fname;
String Path;
String UserName;
String Email;
try {
accountServer = accountS.find(eq("Token", CTOKEN)).first();
Token = (int) accountServer.get("Token");
if (accountServer.get("Status").equals(true)) {
if (Token == CTOKEN) {
Token = (int) 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");
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", 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));
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.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");
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);
}
}
System.out.println("Lets Service This Request: " + ClientID);
//sync write request
if (requesttype == 1) {
System.out.println("Sync Request (Write)");
int CTOKEN = (int) Lrequest.get("Token");
System.out.println("Got Token.");
Document accountServer;
int Token;
String Fname;
String Path;
String UserName;
try {
accountServer = accountS.find(eq("Token", CTOKEN)).first();
Token = (int) accountServer.get("Token");
if (accountServer.get("Status").equals(true)) {
System.out.println("Account is OK");
if (Token == CTOKEN) {
System.out.println("Logged In");
Token = (int) Lrequest.get("Token");
Fname = (String) Lrequest.get("FName");
Path = (String) Lrequest.get("Path");
UserName = (String) Lrequest.get("User");
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 updateQuery2 = new BasicDBObject();
BasicDBObject updateQuery3 = new BasicDBObject();
BasicDBObject updateQuery4 = new BasicDBObject();
BasicDBObject updateQuery6 = new BasicDBObject();
System.out.println("Made Objects");
updateQuery.append("$set",
new BasicDBObject().append("type", 12));
updateQuery2.append("$set",
new BasicDBObject().append("FName", Fname));
updateQuery3.append("$set",
new BasicDBObject().append("Path", Path));
updateQuery4.append("$set",
new BasicDBObject().append("User", UserName));
updateQuery6.append("$set",
new BasicDBObject().append("status", true));
dCollection.updateOne(SqS, updateQuery);
dCollection.updateOne(SqS, updateQuery6);
accountS.updateOne(searchQuery, updateQuery2);
accountS.updateOne(searchQuery, updateQuery3);
accountS.updateOne(searchQuery, updateQuery4);
System.out.println("Updated Account");
//delegationTimer.trigger();
delegationTimer.DeleteTargetRequest(ClientID);
} else {
System.out.println("Sync Failure");
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);
}
} 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;
int Token;
String Fname;
String Path;
String UserName;
String Email;
try {
accountServer = accountS.find(eq("User", username)).first();
Password = (String) accountServer.get("Password");
if (accountServer.get("Status").equals(true)) {
if (Password.equals(password)) {
Token = (int) 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");
localNet.macRead(Macid,lastNet,Email,UserName,Token);
// com.jamesquinley.Asecure.emailVerify.SendEmailThroughGmail(Email, UserName);
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();
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 {
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) {
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);
}
}
if (requesttype == 3) {
System.out.println("Login Request (TKN)");
int CTOKEN = (int) Lrequest.get("Token");
// Document TResolve = dCollection.find(eq("type", 3)).first();
Document accountServer;
int TKN;
String Password;
String Fname;
String Path;
String UserName;
String Email;
try {
accountServer = accountS.find(eq("Token", CTOKEN)).first();
TKN = (int) accountServer.get("Token");
if (accountServer.get("Status").equals(true)) {
if (TKN == CTOKEN) {
TKN = (int) 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");
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();
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));
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, updateQuery6);
dCollection.updateOne(searchQuery, updateQuery8);
dCollection.updateOne(searchQuery, updateQuery7);
//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) {
//TOKEN LOGIN FOR GAME, DOES NOT SEND EMAIL, LAUNCHER WILL NOT USE THIS.
System.out.println("Game Login");
int CTOKEN = (int) Lrequest.get("Token");
Document accountServer;
int TKN;
String Password;
String Fname;
String Path;
String UserName;
String Email;
String Uid;
try {
accountServer = accountS.find(eq("Token", CTOKEN)).first();
TKN = (int) accountServer.get("Token");
if (accountServer.get("Status").equals(true)) {
if (TKN == CTOKEN) {
TKN = (int) 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");
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));
updateQuery6.append("$set",
new BasicDBObject().append("status", true));
updateQuery8.append("$set",
new BasicDBObject().append("Token", TKN));
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, updateQuery5);
dCollection.updateOne(searchQuery, updateQuery6);
dCollection.updateOne(searchQuery, updateQuery8);
dCollection.updateOne(searchQuery, updateQuery7);
//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 == 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");
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) {
UUID uid = UUID.randomUUID();
System.out.println("Token Free (Main)");
System.out.println("Creating.");
Document createForm = new Document();
Document FnetInit = 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", tokenSTGEN);
createForm.append("Control", 1);
createForm.append("Upgrade", 0);
//createForm.append("Uid",uid);
createForm.append("lastNet", Macid);
accountS.insertOne(createForm);
FnetInit.append("User", User);
FnetInit.append("Status", true);
FnetInit.append("Freinds", " ");
FnetInit.append("Token", tokenSTGEN);
FnetInit.append("Control", 1);
FNETDOC.insertOne(FnetInit);
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("clientid", ClientID);
com.jamesquinley.Asecure.emailVerify.Onboarding(Email, User);
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("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();
Document FnetInit = 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);
//create Fnet user
FnetInit.append("User", User);
FnetInit.append("Status", true);
FnetInit.append("Freinds", " ");
FnetInit.append("Token", tokenSTGEN);
FnetInit.append("Control", 1);
FNETDOC.insertOne(FnetInit);
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.
}
} else {
System.out.println("Malformed Request, Non Recoverable (Request Type Not Found)");
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));
Lrequest.append("status",true);
dCollection.updateOne(searchQuery, updateQuery1);
dCollection.updateOne(searchQuery, updateQuery);
delegationTimer.DeleteTargetRequest(ClientID);
}
}
} catch (Exception Erp) {
System.out.println("Malformed Request, Non Recoverable");
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));
updateQuery1.append("$set",
new BasicDBObject().append("pos", "934"));
Lrequest.append("status",true);
dCollection.updateOne(searchQuery, updateQuery1);
dCollection.updateOne(searchQuery, updateQuery);
dCollection.updateOne(searchQuery,updateQuery);
delegationTimer.DeleteTargetRequest(ClientID);
}
}
//above is finding one request and starting wheels
//delegationTimer.trigger();
delegate();
}
public static void Purge () {
BasicDBObject searchQueryT = new BasicDBObject();
BasicDBObject searchQueryF = new BasicDBObject();
searchQueryT.append("status", true);
searchQueryF.append("status", false);
dCollection.deleteMany(searchQueryT);
dCollection.deleteMany(searchQueryF);
System.out.println("Flushed Server");
}
public static void TargetDelete (int CID) {
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("clientid",CID);
dCollection.deleteMany(searchQuery);
System.out.println("Flushed a targeted request (CID) from the server");
}
public static void TargetDeleteRID (int CID) {
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("rid",CID);
dCollection.deleteMany(searchQuery);
System.out.println("Flushed a targeted request (RID) from the server");
} public static void delegate ()
{
userAuthetication();
}
public static void userAuthetication (){
try {
delegationProcesser();
} catch (Exception exr) {
delegationTimer.trigger();
}
}
}