Skip to content
This repository has been archived by the owner on Nov 24, 2018. It is now read-only.

Commit

Permalink
Servers & daily missions
Browse files Browse the repository at this point in the history
- Improved server automation
- Added daily mission automation
  • Loading branch information
itsfolf committed Apr 30, 2018
1 parent de03704 commit 997fede
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 61 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ dependencies {
compile 'com.google.code.gson:gson:2.8.2'
compile 'ch.qos.logback:logback-classic:1.2.3'
compile 'com.google.guava:guava:24.0-jre'
compile 'net.olympiccode:vHackOSAPI-Java:1e05dd5a3c'
compile 'net.olympiccode:vHackOSAPI-Java:4b9e0383ee'
compile 'io.sentry:sentry:1.7.1'
}
mainClassName = "net.olympiccode.vhackos.bot.core.vHackOSBot"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,11 @@ public class MiscConfigValues {
@ConfigOption(path = "misc.enableMiner", defaultValue = "true", options={"true", "false"})
public static boolean enableMiner;

@ConfigOption(path = "misc.enableMissions", defaultValue = "true", options={"true", "false"})
public static boolean enableMissions;

@ConfigOption(path = "misc.doMissionActions", defaultValue = "true", options={"true", "false"})
public static boolean doMissionActions;


}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.sentry.Sentry;
import net.olympiccode.vhackos.api.entities.AppType;
import net.olympiccode.vhackos.api.entities.impl.MissionManagerImpl;
import net.olympiccode.vhackos.bot.core.BotService;
import net.olympiccode.vhackos.bot.core.vHackOSBot;
import org.slf4j.Logger;
Expand Down Expand Up @@ -39,17 +40,7 @@ public void setup() {
public static int[] history = {0, 0, 0, 0, 0, 0};
public void runLongService() {
try {
if (MiscConfigValues.enableMiner) {
if (vHackOSBot.api.getAppManager().getApp(AppType.NCMiner).isInstalled()) {
if (vHackOSBot.api.getMiner().start()) {
LOG.info("Collected and restarted miner");
} else {
LOG.info("Failed to collect and restart miner");
}
} else {
LOG.warn("MiscService ran but miner was not installed.");
}
}

} catch (Exception e) {
Sentry.capture(e);
e.printStackTrace();
Expand All @@ -58,6 +49,11 @@ public void runLongService() {
}
}

boolean exploitFinished = false;
boolean bruteforceFinished = false;
boolean logFinished = false;
boolean emptyFinished = false;

public void runService() {
try {
history[5] = history[4];
Expand All @@ -66,6 +62,48 @@ public void runService() {
history[2] = history[1];
history[1] = history[0];
history[0] = vHackOSBot.api.getLeaderboards().getTournamentRank();

if (MiscConfigValues.enableMiner) {
if (vHackOSBot.api.getAppManager().getApp(AppType.NCMiner).isInstalled()) {
if (!vHackOSBot.api.getMiner().isRunning()) {
if (vHackOSBot.api.getMiner().start()) {
LOG.info("Collected and restarted miner");
} else {
LOG.info("Failed to collect and restart miner");
}
}
} else {
LOG.warn("MiscService ran but miner was not installed.");
}
}

if (MiscConfigValues.enableMissions) {
if (vHackOSBot.api.getAppManager().getApp(AppType.Missions).isInstalled()) {
vHackOSBot.api.getMissionManager().getDailyMissions().forEach(dailyMission -> {
switch (((MissionManagerImpl.DailyMissionImpl) dailyMission).getId()) {
case 0:
exploitFinished = dailyMission.isFinished() || dailyMission.isClaimed();
break;
case 1:
bruteforceFinished = dailyMission.isFinished() || dailyMission.isClaimed();
break;
case 2:
logFinished = dailyMission.isFinished() || dailyMission.isClaimed();
break;
case 3:
emptyFinished = dailyMission.isFinished() || dailyMission.isClaimed();
break;
default:
throw new RuntimeException("Invalid id: " + ((MissionManagerImpl.DailyMissionImpl) dailyMission).getId());

}
if (dailyMission.isFinished() && !dailyMission.isClaimed()) {
LOG.info("Calimed mission for " + dailyMission.getRewardAmount() + " " + dailyMission.getType() + " and " + dailyMission.getExpReward() + "XP");
dailyMission.claim();
}
});
}
}
} catch (Exception e) {
Sentry.capture(e);
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.sentry.Sentry;
import net.olympiccode.vhackos.api.entities.AppType;
import net.olympiccode.vhackos.api.entities.impl.ServerImpl;
import net.olympiccode.vhackos.api.server.Server;
import net.olympiccode.vhackos.bot.core.BotService;
import net.olympiccode.vhackos.bot.core.vHackOSBot;
Expand Down Expand Up @@ -45,54 +46,21 @@ public void setup() {
public void runService() {
try {
Server server = vHackOSBot.api.getServer();
server.update();

if (server.getPackages() > 0) {
Server.OpenResult result = server.openAllPacks();
LOG.info("Opened " + server.getPackages() + " server packages, got " + result.getServer() + " server, " + result.getAv() + " av, " + result.getFw() + " fw and " + result.getBoost() + " boosters.");
}
server.update();
if (ServerConfigValues.upgradeNodes) {
if (server.getServerPieces() > 9) {
int times = 0;
int cur = server.getServerStrength();
LOG.info("Upgrading server's server...");
while (server.getServerPieces() > 9 && (server.getServerStrength() < server.getServerStrengthMax())) {
if (server.upgrade(Server.NODE_TYPE.SERVER, 1)) times++;
}
server.update();
LOG.info("Upgraded server's server " + times + " times. (" + cur + "->" + server.getServerStrength() + ")");
}

server.update();
int fwNodes = (int) Arrays.stream(server.getFirewallStrength()).filter(value -> value != 0).count();
for (int i = 0; i < fwNodes; i++) {
if (server.getFirewallPieces() > 9) {
LOG.info("Upgrading server's firewall node " + (i + 1) + "...");
int times = 0;
int cur = server.getFirewallStrength()[i];
while (server.getFirewallPieces() > 9 && (server.getFirewallStrength()[i] < server.getFirewallStrengthMax()[i])) {
if (server.upgrade(Server.NODE_TYPE.FW, i + 1)) times++;
}
server.update();
LOG.info("Upgraded server's firewall node " + (i + 1) + " " + times + " times. (" + cur + "->" + server.getFirewallStrength()[i] + ")");
}
}


server.update();
int avNodes = (int) Arrays.stream(server.getAntivirusStrength()).filter(value -> value != 0).count();
for (int i = 0; i < avNodes; i++) {
if (server.getAntivirusPieces() > 9) {
LOG.info("Upgrading server's antivirus node " + (i + 1) + "...");
int times = 0;
int cur = server.getAntivirusStrength()[0];
while (server.getAntivirusPieces() > 9 && (server.getAntivirusStrength()[i] < server.getAntivirusStrengthMax()[i])) {
if (server.upgrade(Server.NODE_TYPE.AV, i + 1)) times++;
}
server.update();
LOG.info("Upgraded server's antivirus node " + (i + 1) + " " + times + " times. (" + cur + "->" + server.getAntivirusStrength()[i] + ")");
}
}
server.getNodes().forEach(serverNode -> {
while (serverNode.getMaxStrength() > serverNode.getStrength() && has(serverNode, server) != 0) {
int s = serverNode.getStrength();
boolean b = false;
if (has(serverNode, server) == 1) b = serverNode.upgrade(); else if (has(serverNode, server) == 2) b = serverNode.upgradeFive();
((ServerImpl) server).update();
if (b) LOG.info("Upgraded " + serverNode.getType() + " node (" + s + "->" + serverNode.getStrength() + ")"); else LOG.info("Failed to upgrade " + serverNode.getType() + " node.");
}
});
}

} catch (Exception e) {
Expand All @@ -103,6 +71,21 @@ public void runService() {
}
}

int has(Server.ServerNode serverNode, Server server) {
switch (serverNode.getType()) {
case AV:
if (server.getAntivirusPieces() > 0) return (server.getAntivirusPieces() > 4) ? 2 : 1;
break;
case FW:
if (server.getFirewallPieces() > 0) return (server.getFirewallPieces() > 4) ? 2 : 1;
break;
case SERVER:
if (server.getServerPieces() > 0) return (server.getServerPieces() > 4) ? 2 : 1;
break;
}
return 0;
}

public class ServerServiceFactory implements ThreadFactory {
public Thread newThread(Runnable r) {
return new Thread(r, "vHackOSBot-ServerService");
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/net/olympiccode/vhackos/bot/core/vHackOSBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.sentry.event.BreadcrumbBuilder;
import io.sentry.event.UserBuilder;
import net.olympiccode.vhackos.api.entities.impl.vHackOSAPIImpl;
import net.olympiccode.vhackos.api.server.Server;
import net.olympiccode.vhackos.api.vHackOSAPI;
import net.olympiccode.vhackos.api.vHackOSAPIBuilder;
import net.olympiccode.vhackos.api.vHackOSInfo;
Expand Down Expand Up @@ -43,7 +44,7 @@ public class vHackOSBot {
static Logger LOG = LoggerFactory.getLogger("vHackOSBot");
ConfigFile config = new ConfigFile();
AdvancedConfigFile advConfig = new AdvancedConfigFile();
double curVersion = 1.14;
double curVersion = 1.15;
private long startTime = 0;

public static void main(String[] args) {
Expand Down Expand Up @@ -140,7 +141,7 @@ public void run() throws LoginException, InterruptedException {
String[] args = line.split(" ");
switch (args[0]) {
case "help":
System.out.println("stats - List all basic stats\n" + "tasks - Lists all active tasks\n" + "brutes - Lists all active bruteforces" + "\nservices - Check the services status\napps - Check app stats\nquit - Exit the bot\nleaders - Check leaderboards");
System.out.println("stats - List all basic stats\n" + "tasks - Lists all active tasks\n" + "brutes - Lists all active bruteforces" + "\nservices - Check the services status\napps - Check app stats\nquit - Exit the bot\nleaders - Check leaderboards\nserver - Check server stats");
break;
case "stats":
System.out.println("Username: " + api.getStats().getUsername() + SEPARATOR + "Money: " + api.getStats().getMoney() + SEPARATOR + "Netcoins: " + api.getStats().getNetcoins() +
Expand Down Expand Up @@ -173,10 +174,10 @@ public void run() throws LoginException, InterruptedException {
System.exit(0);
break;
case "server":
api.getServer().update();
System.out.print("Server: " + api.getServer().getServerStrength() + "/" + api.getServer().getServerStrengthMax() + "\n" +
"Firewall: " + api.getServer().getFirewallStrength()[0] + "/" + api.getServer().getFirewallStrengthMax()[0] + " | " + api.getServer().getFirewallStrength()[1] + "/" + api.getServer().getFirewallStrengthMax()[1] + " | " + api.getServer().getFirewallStrength()[2] + "/" + api.getServer().getFirewallStrengthMax()[2] + "\n" +
"Antivirus: " + api.getServer().getAntivirusStrength()[0] + "/" + api.getServer().getAntivirusStrengthMax()[0] + " | " + api.getServer().getAntivirusStrength()[1] + "/" + api.getServer().getAntivirusStrengthMax()[1] + " | " + api.getServer().getAntivirusStrength()[2] + "/" + api.getServer().getAntivirusStrengthMax()[2] + "\nPackages: " + api.getServer().getPackages());
System.out.print("Server: " + api.getServer().getNode(Server.NodeType.SERVER,0).getStrength() + "/" + api.getServer().getNode(Server.NodeType.SERVER,0).getMaxStrength() + "\n" +
"Firewall: " + api.getServer().getNode(Server.NodeType.FW, 0).getStrength() + "/" + api.getServer().getNode(Server.NodeType.FW, 0).getMaxStrength() + " | " + api.getServer().getNode(Server.NodeType.FW, 1).getStrength() + "/" + api.getServer().getNode(Server.NodeType.FW, 1).getMaxStrength() + " | " + api.getServer().getNode(Server.NodeType.FW, 2).getStrength() + "/" + api.getServer().getNode(Server.NodeType.FW, 2).getMaxStrength() + "\n" +
"Antivirus: " + api.getServer().getNode(Server.NodeType.AV, 0).getStrength() + "/" + api.getServer().getNode(Server.NodeType.AV, 0).getMaxStrength() + " | " + api.getServer().getNode(Server.NodeType.AV, 1).getStrength() + "/" + api.getServer().getNode(Server.NodeType.AV, 1).getMaxStrength() + " | " + api.getServer().getNode(Server.NodeType.AV, 2).getStrength() + "/" + api.getServer().getNode(Server.NodeType.AV, 2).getMaxStrength() +
"\nPackages: " + api.getServer().getPackages() + " | Server Pieces: " + api.getServer().getServerPieces() + " | Antivirus Pieces: " + api.getServer().getAntivirusPieces() + " | Firewall Pieces: " + api.getServer().getFirewallPieces());
break;
default:
System.out.println("Unknown command, use \"help\" to list all commands.");
Expand Down

0 comments on commit 997fede

Please sign in to comment.