2022-02-06 13:34:28 -08:00

530 lines
29 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 static com.mongodb.client.model.Filters.eq;
import static java.util.concurrent.TimeUnit.SECONDS;
public class delegationServices {
static ConnectionString scReadconnectionString = new ConnectionString("mongodb+srv://serverClient:ej2ookJGgpV6JyFS@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<Document> 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<Document> accountS = accountDatabase.getCollection("UserPass");
//still need to config
public static void delegationProcesser() {
Document Lrequest = dCollection.find(eq("status", false)).first();
int ClientID = 0;
int requesttype = (int) Lrequest.get("type");
System.out.println("Got Type, Getting Doc ID");
//TODO Get this working, it broke and it wont get OBJ id
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) {
System.out.println("An Excluded Request (7MAL) Has Been Detected, Ignoring");
}
try {
ClientID = (int) Lrequest.get("clientid");
} catch (Exception exrp) {
System.out.println("Failed To Get Client ID");
}
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);
} else {
System.out.println("Sync 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();
}
} 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);
}
} 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();
}
}
//sync read request
//TODO This has issues, and won't get past line 171. Working on a fix for that.
if (requesttype == 1) {
System.out.println("Sync Request (Write)");
int CTOKEN = (int) Lrequest.get("Token");
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)) {
System.out.println("Account is OK");
if (Token == CTOKEN) {
System.out.println("Logged In");
Token = (int) Lrequest.get("Token");
Password = (String) Lrequest.get("Password");
Fname = (String) Lrequest.get("FName");
Path = (String) Lrequest.get("path");
Email = (String) Lrequest.get("Email");
UserName = (String) Lrequest.get("User");
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("Token", Token);
BasicDBObject SqS = new BasicDBObject();
SqS.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));
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(SqS, updateQuery);
dCollection.updateOne(SqS, updateQuery6);
accountS.updateOne(searchQuery, updateQuery1);
accountS.updateOne(searchQuery, updateQuery2);
accountS.updateOne(searchQuery, updateQuery3);
accountS.updateOne(searchQuery, updateQuery4);
accountS.updateOne(searchQuery, updateQuery5);
accountS.updateOne(searchQuery, updateQuery7);
System.out.println("Updated Account");
//delegationTimer.trigger();
} else {
System.out.println("Sync 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();
}
} 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);
}
} 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();
}
}
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");
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();
}
} 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);
}
} 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) {
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");
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, 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();
} 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();
}
} 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);
}
} 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();
}
}
} else {
System.out.println("Malformed Request, Non Recoverable");
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append("type", requesttype);
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);
}
//above is finding one request and starting wheels
//delegationTimer.trigger();
delegate();
}
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);
System.out.println("Flushed Server");
delegationTimer.DeleteAllRequests();
}
public static void delegate ()
{
userAuthetication();
}
public static void userAuthetication (){
try {
delegationProcesser();
} catch (Exception exr) {
System.out.println("No Pending Authentication");
delegationTimer.trigger();
}
}
}