mizzajl sync
This commit is contained in:
52
local/path/home/singularity/RMroutelist.js
Normal file
52
local/path/home/singularity/RMroutelist.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/** @param {NS} ns */
|
||||
export async function main(ns) {
|
||||
ns.tail();
|
||||
let serverRoutes = await scanRecursiveWrapper(ns);
|
||||
let currentHackingLevel = ns.getHackingLevel();
|
||||
let currentArray = [];
|
||||
let currentHop = "";
|
||||
|
||||
for (const [name, entry] of Object.entries(serverRoutes)) {
|
||||
if (ns.getServerRequiredHackingLevel(name) < currentHackingLevel && ns.hasRootAccess(name) === true) {
|
||||
currentArray = entry;
|
||||
if (entry.length > 0) {
|
||||
while (currentArray.length > 0) {
|
||||
currentHop = currentArray.shift();
|
||||
if (ns.singularity.connect(currentHop) === false) ns.tprint("Error when trying to connect to: " + currentHop);
|
||||
}
|
||||
ns.tprint("Trying to backdoor " + currentHop)
|
||||
await ns.singularity.installBackdoor(currentHop);
|
||||
ns.tprint("Success on " + currentHop)
|
||||
ns.singularity.connect("home");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** @param {NS} ns */
|
||||
async function scanRecursiveWrapper(ns) {
|
||||
let startTime = Date.now();
|
||||
ns.rm("ServerRouteList.txt");
|
||||
await scanRecursive(ns, [], "home", startTime);
|
||||
let result = JSON.parse("[" + ns.read("ServerRouteList.txt") + "{}]").reduce((acc, obj) => ({ ...acc, ...obj }), {});
|
||||
ns.write("ServerRouteList.txt", JSON.stringify(result, "w"));
|
||||
return result;
|
||||
}
|
||||
|
||||
/** @param {NS} ns */
|
||||
async function scanRecursive(ns, parents, currentServer, startTime) {
|
||||
let currentTime = Date.now();
|
||||
if (currentTime > startTime + 5) {
|
||||
return
|
||||
} else {
|
||||
let currentChildren = ns.scan(currentServer);
|
||||
let parentsSet = new Set(parents);
|
||||
let cleanedChildren = currentChildren.filter(element => !parentsSet.has(element));
|
||||
let tempServername = String(currentServer);
|
||||
ns.write("ServerRouteList.txt", JSON.stringify({ [tempServername]: parents }) + ",", "a");
|
||||
parents.push(currentServer);
|
||||
for (let child in cleanedChildren) {
|
||||
await scanRecursive(ns, parents, cleanedChildren[child], startTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user