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

Commit 997fede

Browse files
committed
Servers & daily missions
- Improved server automation - Added daily mission automation
1 parent de03704 commit 997fede

File tree

5 files changed

+89
-61
lines changed

5 files changed

+89
-61
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ dependencies {
2020
compile 'com.google.code.gson:gson:2.8.2'
2121
compile 'ch.qos.logback:logback-classic:1.2.3'
2222
compile 'com.google.guava:guava:24.0-jre'
23-
compile 'net.olympiccode:vHackOSAPI-Java:1e05dd5a3c'
23+
compile 'net.olympiccode:vHackOSAPI-Java:4b9e0383ee'
2424
compile 'io.sentry:sentry:1.7.1'
2525
}
2626
mainClassName = "net.olympiccode.vhackos.bot.core.vHackOSBot"

src/main/java/net/olympiccode/vhackos/bot/core/misc/MiscConfigValues.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,11 @@ public class MiscConfigValues {
1010
@ConfigOption(path = "misc.enableMiner", defaultValue = "true", options={"true", "false"})
1111
public static boolean enableMiner;
1212

13+
@ConfigOption(path = "misc.enableMissions", defaultValue = "true", options={"true", "false"})
14+
public static boolean enableMissions;
15+
16+
@ConfigOption(path = "misc.doMissionActions", defaultValue = "true", options={"true", "false"})
17+
public static boolean doMissionActions;
18+
1319

1420
}

src/main/java/net/olympiccode/vhackos/bot/core/misc/MiscService.java

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.sentry.Sentry;
44
import net.olympiccode.vhackos.api.entities.AppType;
5+
import net.olympiccode.vhackos.api.entities.impl.MissionManagerImpl;
56
import net.olympiccode.vhackos.bot.core.BotService;
67
import net.olympiccode.vhackos.bot.core.vHackOSBot;
78
import org.slf4j.Logger;
@@ -39,17 +40,7 @@ public void setup() {
3940
public static int[] history = {0, 0, 0, 0, 0, 0};
4041
public void runLongService() {
4142
try {
42-
if (MiscConfigValues.enableMiner) {
43-
if (vHackOSBot.api.getAppManager().getApp(AppType.NCMiner).isInstalled()) {
44-
if (vHackOSBot.api.getMiner().start()) {
45-
LOG.info("Collected and restarted miner");
46-
} else {
47-
LOG.info("Failed to collect and restart miner");
48-
}
49-
} else {
50-
LOG.warn("MiscService ran but miner was not installed.");
51-
}
52-
}
43+
5344
} catch (Exception e) {
5445
Sentry.capture(e);
5546
e.printStackTrace();
@@ -58,6 +49,11 @@ public void runLongService() {
5849
}
5950
}
6051

52+
boolean exploitFinished = false;
53+
boolean bruteforceFinished = false;
54+
boolean logFinished = false;
55+
boolean emptyFinished = false;
56+
6157
public void runService() {
6258
try {
6359
history[5] = history[4];
@@ -66,6 +62,48 @@ public void runService() {
6662
history[2] = history[1];
6763
history[1] = history[0];
6864
history[0] = vHackOSBot.api.getLeaderboards().getTournamentRank();
65+
66+
if (MiscConfigValues.enableMiner) {
67+
if (vHackOSBot.api.getAppManager().getApp(AppType.NCMiner).isInstalled()) {
68+
if (!vHackOSBot.api.getMiner().isRunning()) {
69+
if (vHackOSBot.api.getMiner().start()) {
70+
LOG.info("Collected and restarted miner");
71+
} else {
72+
LOG.info("Failed to collect and restart miner");
73+
}
74+
}
75+
} else {
76+
LOG.warn("MiscService ran but miner was not installed.");
77+
}
78+
}
79+
80+
if (MiscConfigValues.enableMissions) {
81+
if (vHackOSBot.api.getAppManager().getApp(AppType.Missions).isInstalled()) {
82+
vHackOSBot.api.getMissionManager().getDailyMissions().forEach(dailyMission -> {
83+
switch (((MissionManagerImpl.DailyMissionImpl) dailyMission).getId()) {
84+
case 0:
85+
exploitFinished = dailyMission.isFinished() || dailyMission.isClaimed();
86+
break;
87+
case 1:
88+
bruteforceFinished = dailyMission.isFinished() || dailyMission.isClaimed();
89+
break;
90+
case 2:
91+
logFinished = dailyMission.isFinished() || dailyMission.isClaimed();
92+
break;
93+
case 3:
94+
emptyFinished = dailyMission.isFinished() || dailyMission.isClaimed();
95+
break;
96+
default:
97+
throw new RuntimeException("Invalid id: " + ((MissionManagerImpl.DailyMissionImpl) dailyMission).getId());
98+
99+
}
100+
if (dailyMission.isFinished() && !dailyMission.isClaimed()) {
101+
LOG.info("Calimed mission for " + dailyMission.getRewardAmount() + " " + dailyMission.getType() + " and " + dailyMission.getExpReward() + "XP");
102+
dailyMission.claim();
103+
}
104+
});
105+
}
106+
}
69107
} catch (Exception e) {
70108
Sentry.capture(e);
71109
e.printStackTrace();

src/main/java/net/olympiccode/vhackos/bot/core/server/ServerService.java

Lines changed: 26 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.sentry.Sentry;
44
import net.olympiccode.vhackos.api.entities.AppType;
5+
import net.olympiccode.vhackos.api.entities.impl.ServerImpl;
56
import net.olympiccode.vhackos.api.server.Server;
67
import net.olympiccode.vhackos.bot.core.BotService;
78
import net.olympiccode.vhackos.bot.core.vHackOSBot;
@@ -45,54 +46,21 @@ public void setup() {
4546
public void runService() {
4647
try {
4748
Server server = vHackOSBot.api.getServer();
48-
server.update();
49+
4950
if (server.getPackages() > 0) {
5051
Server.OpenResult result = server.openAllPacks();
5152
LOG.info("Opened " + server.getPackages() + " server packages, got " + result.getServer() + " server, " + result.getAv() + " av, " + result.getFw() + " fw and " + result.getBoost() + " boosters.");
5253
}
53-
server.update();
5454
if (ServerConfigValues.upgradeNodes) {
55-
if (server.getServerPieces() > 9) {
56-
int times = 0;
57-
int cur = server.getServerStrength();
58-
LOG.info("Upgrading server's server...");
59-
while (server.getServerPieces() > 9 && (server.getServerStrength() < server.getServerStrengthMax())) {
60-
if (server.upgrade(Server.NODE_TYPE.SERVER, 1)) times++;
61-
}
62-
server.update();
63-
LOG.info("Upgraded server's server " + times + " times. (" + cur + "->" + server.getServerStrength() + ")");
64-
}
65-
66-
server.update();
67-
int fwNodes = (int) Arrays.stream(server.getFirewallStrength()).filter(value -> value != 0).count();
68-
for (int i = 0; i < fwNodes; i++) {
69-
if (server.getFirewallPieces() > 9) {
70-
LOG.info("Upgrading server's firewall node " + (i + 1) + "...");
71-
int times = 0;
72-
int cur = server.getFirewallStrength()[i];
73-
while (server.getFirewallPieces() > 9 && (server.getFirewallStrength()[i] < server.getFirewallStrengthMax()[i])) {
74-
if (server.upgrade(Server.NODE_TYPE.FW, i + 1)) times++;
75-
}
76-
server.update();
77-
LOG.info("Upgraded server's firewall node " + (i + 1) + " " + times + " times. (" + cur + "->" + server.getFirewallStrength()[i] + ")");
78-
}
79-
}
80-
81-
82-
server.update();
83-
int avNodes = (int) Arrays.stream(server.getAntivirusStrength()).filter(value -> value != 0).count();
84-
for (int i = 0; i < avNodes; i++) {
85-
if (server.getAntivirusPieces() > 9) {
86-
LOG.info("Upgrading server's antivirus node " + (i + 1) + "...");
87-
int times = 0;
88-
int cur = server.getAntivirusStrength()[0];
89-
while (server.getAntivirusPieces() > 9 && (server.getAntivirusStrength()[i] < server.getAntivirusStrengthMax()[i])) {
90-
if (server.upgrade(Server.NODE_TYPE.AV, i + 1)) times++;
91-
}
92-
server.update();
93-
LOG.info("Upgraded server's antivirus node " + (i + 1) + " " + times + " times. (" + cur + "->" + server.getAntivirusStrength()[i] + ")");
94-
}
95-
}
55+
server.getNodes().forEach(serverNode -> {
56+
while (serverNode.getMaxStrength() > serverNode.getStrength() && has(serverNode, server) != 0) {
57+
int s = serverNode.getStrength();
58+
boolean b = false;
59+
if (has(serverNode, server) == 1) b = serverNode.upgrade(); else if (has(serverNode, server) == 2) b = serverNode.upgradeFive();
60+
((ServerImpl) server).update();
61+
if (b) LOG.info("Upgraded " + serverNode.getType() + " node (" + s + "->" + serverNode.getStrength() + ")"); else LOG.info("Failed to upgrade " + serverNode.getType() + " node.");
62+
}
63+
});
9664
}
9765

9866
} catch (Exception e) {
@@ -103,6 +71,21 @@ public void runService() {
10371
}
10472
}
10573

74+
int has(Server.ServerNode serverNode, Server server) {
75+
switch (serverNode.getType()) {
76+
case AV:
77+
if (server.getAntivirusPieces() > 0) return (server.getAntivirusPieces() > 4) ? 2 : 1;
78+
break;
79+
case FW:
80+
if (server.getFirewallPieces() > 0) return (server.getFirewallPieces() > 4) ? 2 : 1;
81+
break;
82+
case SERVER:
83+
if (server.getServerPieces() > 0) return (server.getServerPieces() > 4) ? 2 : 1;
84+
break;
85+
}
86+
return 0;
87+
}
88+
10689
public class ServerServiceFactory implements ThreadFactory {
10790
public Thread newThread(Runnable r) {
10891
return new Thread(r, "vHackOSBot-ServerService");

src/main/java/net/olympiccode/vhackos/bot/core/vHackOSBot.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.sentry.event.BreadcrumbBuilder;
55
import io.sentry.event.UserBuilder;
66
import net.olympiccode.vhackos.api.entities.impl.vHackOSAPIImpl;
7+
import net.olympiccode.vhackos.api.server.Server;
78
import net.olympiccode.vhackos.api.vHackOSAPI;
89
import net.olympiccode.vhackos.api.vHackOSAPIBuilder;
910
import net.olympiccode.vhackos.api.vHackOSInfo;
@@ -43,7 +44,7 @@ public class vHackOSBot {
4344
static Logger LOG = LoggerFactory.getLogger("vHackOSBot");
4445
ConfigFile config = new ConfigFile();
4546
AdvancedConfigFile advConfig = new AdvancedConfigFile();
46-
double curVersion = 1.14;
47+
double curVersion = 1.15;
4748
private long startTime = 0;
4849

4950
public static void main(String[] args) {
@@ -140,7 +141,7 @@ public void run() throws LoginException, InterruptedException {
140141
String[] args = line.split(" ");
141142
switch (args[0]) {
142143
case "help":
143-
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");
144+
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");
144145
break;
145146
case "stats":
146147
System.out.println("Username: " + api.getStats().getUsername() + SEPARATOR + "Money: " + api.getStats().getMoney() + SEPARATOR + "Netcoins: " + api.getStats().getNetcoins() +
@@ -173,10 +174,10 @@ public void run() throws LoginException, InterruptedException {
173174
System.exit(0);
174175
break;
175176
case "server":
176-
api.getServer().update();
177-
System.out.print("Server: " + api.getServer().getServerStrength() + "/" + api.getServer().getServerStrengthMax() + "\n" +
178-
"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" +
179-
"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());
177+
System.out.print("Server: " + api.getServer().getNode(Server.NodeType.SERVER,0).getStrength() + "/" + api.getServer().getNode(Server.NodeType.SERVER,0).getMaxStrength() + "\n" +
178+
"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" +
179+
"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() +
180+
"\nPackages: " + api.getServer().getPackages() + " | Server Pieces: " + api.getServer().getServerPieces() + " | Antivirus Pieces: " + api.getServer().getAntivirusPieces() + " | Firewall Pieces: " + api.getServer().getFirewallPieces());
180181
break;
181182
default:
182183
System.out.println("Unknown command, use \"help\" to list all commands.");

0 commit comments

Comments
 (0)