68 lines
2.6 KiB
JavaScript
68 lines
2.6 KiB
JavaScript
import { getNodes } from "getNodes.js";
|
|
|
|
// Contract Solution Imports
|
|
import { caesarEncrypt } from "contracts/CaesarEncryption.js";
|
|
import { lzDecompress } from "contracts/LZ-Decompress.js";
|
|
import { generateIPAddresses } from "contracts/GenerateIPAddresses.js";
|
|
|
|
/** @param {NS} ns */
|
|
export async function main(ns) {
|
|
const nodes = await getNodes(ns);
|
|
var listAllContracts = false;
|
|
|
|
if(nodes == null || nodes.length == 0) {
|
|
ns.tprint("Error retrieving nodes!");
|
|
return;
|
|
}
|
|
|
|
if(ns.args.length != 0) {
|
|
if((ns.args[0] == "--all" || ns.args[0] == "-a") && ns.args.length == 1) {
|
|
listAllContracts = true;
|
|
} else {
|
|
ns.tprint("Invalid usage!");
|
|
return;
|
|
}
|
|
}
|
|
// scan(host)
|
|
nodes.forEach(function(n) {
|
|
if(n != "" || n != "\n") {
|
|
var contracts = [];
|
|
var files = ns.ls(n);
|
|
files.forEach(function(f) {
|
|
if(f.endsWith(".cct")) {
|
|
if(listAllContracts) {
|
|
ns.tprint(n + ":" + ns.codingcontract.getContractType(f, n));
|
|
}
|
|
contracts.push(f);
|
|
}
|
|
});
|
|
contracts.forEach(function(c) {
|
|
var contractType = ns.codingcontract.getContractType(c, n);
|
|
var data = ns.codingcontract.getData(c, n);
|
|
|
|
if(contractType == "Encryption I: Caesar Cipher") {
|
|
var answer = caesarEncrypt(data[0], data[1])
|
|
var attempt = ns.codingcontract.attempt(answer, c, n);
|
|
if(attempt)
|
|
ns.tprint(attempt);
|
|
else
|
|
ns.tprint("Attempt failed! Manual intervention is required.");
|
|
} else if(contractType == "Compression II: LZ Decompression") {
|
|
var answer = lzDecompress(ns, data);
|
|
var attempt = ns.codingcontract.attempt(answer, c, n);
|
|
if(attempt)
|
|
ns.tprint(attempt);
|
|
else
|
|
ns.tprint("Attempt failed! Manual intervention is required.");
|
|
} else if(contractType == "Generate IP Addresses") {
|
|
var answer = generateIPAddresses(data[0]);
|
|
var attempt = ns.codingcontract.attempt(answer, c, n);
|
|
if(attempt)
|
|
ns.tprint(attempt);
|
|
else
|
|
ns.tprint("Attempt failed! Manual intervention is required.");
|
|
}
|
|
});
|
|
}
|
|
});
|
|
} |