Skip to content

Instantly share code, notes, and snippets.

@ChaelCodes
Last active November 29, 2020 19:37
Show Gist options
  • Save ChaelCodes/ecf58deab1c733946a491fde02a30d88 to your computer and use it in GitHub Desktop.
Save ChaelCodes/ecf58deab1c733946a491fde02a30d88 to your computer and use it in GitHub Desktop.
Server Status Dashboard for BitBurner
import { networkTraversal } from '/scripts/networkTraversal.js';
export async function main(ns) {
let home = ns.getHostname();
networkTraversal(ns, home, home, crackAndHack);
}
function crackAndHack(ns, targetServer, originServer) {
if (!ns.hasRootAccess(targetServer) && hackableServer(ns, targetServer)) {
crackServer(ns, targetServer);
}
if (ns.hasRootAccess(targetServer)) {
ns.killall(targetServer);
networkTraversal(ns, targetServer, originServer, crackAndHack);
let script = "/scripts/hackServer.script";
let threads = maxThreadsForServer(ns, targetServer, script);
ns.scp(script, targetServer);
ns.exec(script, targetServer, threads, targetServer);
}
}
function crackServer(ns, server) {
ns.brutessh(server);
ns.nuke(server);
}
function hackableServer(ns, server) {
return ns.getHackingLevel() >= ns.getServerRequiredHackingLevel(server) &&
ns.getServerNumPortsRequired(server) <= 1;
}
function maxThreadsForServer(ns, server, script) {
return Math.floor(ns.getServerRam(server)[0] / ns.getScriptRam(script));
}
import { networkTraversal } from '/scripts/networkTraversal.js';
export async function main(ns) {
ns.tprint("Hello! Here is your Server Status Report.");
let home = ns.getHostname();
networkTraversal(ns, home, home, serverReport);
}
function serverReport(ns, targetServer, originServer) {
if (ns.hasRootAccess(targetServer)) {
hackedServer(ns, targetServer);
networkTraversal(ns, targetServer, originServer, serverReport);
} else {
secureServer(ns, targetServer);
}
}
function hackedServer(ns, server) {
ns.tprint(`๐Ÿ”“${server} -Hacked-`);
ns.tprint(`$$$: ${Math.round(ns.getServerMoneyAvailable(server))}/${ns.getServerMaxMoney(server)}`);
ns.tprint(`๐Ÿ’ธ${Math.round(ns.getScriptIncome("/scripts/hackServer.script", server, server))}/s`);
ns.tprint(`โš”๏ธ๏ธ${Math.round(ns.getServerSecurityLevel(server))}/${ns.getServerMinSecurityLevel(server)}`);
ns.tprint('----------------------------');
}
function secureServer(ns, server) {
ns.tprint(`๐Ÿ”’${server}`);
ns.tprint("Hack Level: " + hackLevel(ns, server));
ns.tprint("Ports: " + ns.getServerNumPortsRequired(server));
ns.tprint('----------------------------');
}
function hackLevel(ns, server) {
let hackLevel = ns.getServerRequiredHackingLevel(server);
if (ns.getHackingLevel() >= hackLevel) {
hackLevel + " HACKABLE!"
}
return hackLevel;
}
/*
* Your func function should call networkTraversal.
*/
export function networkTraversal(ns, targetServer, originServer, func) {
let servers = ns.scan(targetServer, true).filter(server => server != originServer);
servers.forEach((server) => func(ns, server, targetServer));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment