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

Commit c8b2854

Browse files
committed
1.3 let's go
1 parent bea361b commit c8b2854

File tree

5 files changed

+83
-20
lines changed

5 files changed

+83
-20
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package net.olympiccode.vhackos.bot.core;
22

3+
import java.util.concurrent.ScheduledExecutorService;
4+
35
public interface BotService {
6+
ScheduledExecutorService getService();
47
void setup();
58
void runService();
69
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.olympiccode.vhackos.bot.core.misc;
22

3+
import io.sentry.Sentry;
34
import net.olympiccode.vhackos.api.entities.AppType;
45
import net.olympiccode.vhackos.api.network.ExploitedTarget;
56
import net.olympiccode.vhackos.bot.core.BotService;
@@ -21,6 +22,11 @@ public MiscService() {
2122
miscService = Executors.newScheduledThreadPool(1, new MiscServiceFactory());
2223
}
2324

25+
@Override
26+
public ScheduledExecutorService getService() {
27+
return miscService;
28+
}
29+
2430
public void setup() {
2531
LOG.info("Setting up MiscSerice...");
2632
miscService.scheduleAtFixedRate(() -> runService(), 0, 60000 * 60, TimeUnit.MILLISECONDS);
@@ -40,7 +46,10 @@ public void runService() {
4046
}
4147
}
4248
} catch (Exception e) {
49+
Sentry.capture(e);
4350
e.printStackTrace();
51+
miscService.shutdownNow();
52+
LOG.warn("The misc service has been shutdown due to an error.");
4453
}
4554
}
4655

src/main/java/net/olympiccode/vhackos/bot/core/networking/NetworkingService.java

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

33
import com.google.common.cache.Cache;
44
import com.google.common.cache.CacheBuilder;
5+
import io.sentry.Sentry;
56
import net.olympiccode.vhackos.api.entities.AppType;
67
import net.olympiccode.vhackos.api.entities.BruteForceState;
78
import net.olympiccode.vhackos.api.entities.impl.BruteForceImpl;
@@ -25,7 +26,7 @@
2526
import java.util.concurrent.TimeUnit;
2627

2728
public class NetworkingService implements BotService {
28-
ScheduledExecutorService networkingService;
29+
public static ScheduledExecutorService networkingService;
2930
Logger LOG = LoggerFactory.getLogger("NetworkingService");
3031

3132
public NetworkingService() {
@@ -40,6 +41,11 @@ public Thread newThread(Runnable r) {
4041
}
4142

4243

44+
@Override
45+
public ScheduledExecutorService getService() {
46+
return networkingService;
47+
}
48+
4349
public void setup() {
4450
LOG.info("Setting up NetworkingSerice...");
4551
networkingService.scheduleAtFixedRate(() -> runService(), 0, 60000, TimeUnit.MILLISECONDS);
@@ -53,8 +59,8 @@ public void runService() {
5359
try {
5460
((ArrayList<BruteForce>)((ArrayList)vHackOSBot.api.getTaskManager().getActiveBrutes()).clone()).forEach(bruteForce -> {
5561
if (cache.asMap().containsKey(bruteForce.getIp())) return;
56-
cache.put(bruteForce.getIp(), "");
5762
if (bruteForce.getState() == BruteForceState.SUCCESS) {
63+
cache.put(bruteForce.getIp(), "");
5864
ExploitedTarget etarget = bruteForce.exploit();
5965
ExploitedTarget.Banking banking = etarget.getBanking();
6066

@@ -96,7 +102,10 @@ public void runService() {
96102
}
97103
}
98104
} catch (Exception e) {
105+
Sentry.capture(e);
99106
e.printStackTrace();
107+
networkingService.shutdownNow();
108+
LOG.warn("The networking service has been shutdown due to an error.");
100109
}
101110
}
102111

src/main/java/net/olympiccode/vhackos/bot/core/updating/UpdateService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.olympiccode.vhackos.bot.core.updating;
22

3+
import io.sentry.Sentry;
34
import net.olympiccode.vhackos.api.appstore.App;
45
import net.olympiccode.vhackos.api.appstore.Task;
56
import net.olympiccode.vhackos.api.entities.AppType;
@@ -25,6 +26,11 @@ public UpdateService() {
2526
updateService = Executors.newScheduledThreadPool(1, new UpdateServiceFactory());
2627
}
2728

29+
@Override
30+
public ScheduledExecutorService getService() {
31+
return updateService;
32+
}
33+
2834
public void setup() {
2935
LOG.info("Setting up UpdateSerice...");
3036
updateService.scheduleAtFixedRate(()->runService(), 0, 30000, TimeUnit.MILLISECONDS);
@@ -104,7 +110,10 @@ public void runService() {
104110
proccessBoosts();
105111
}
106112
} catch (Exception e) {
113+
Sentry.capture(e);
107114
e.printStackTrace();
115+
updateService.shutdownNow();
116+
LOG.warn("The update service has been shutdown due to an error.");
108117
}
109118
}
110119

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

Lines changed: 51 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package net.olympiccode.vhackos.bot.core;
22

33
import io.sentry.Sentry;
4-
import io.sentry.SentryClientFactory;
54
import io.sentry.event.BreadcrumbBuilder;
6-
import io.sentry.event.Event;
7-
import io.sentry.event.EventBuilder;
85
import io.sentry.event.UserBuilder;
96
import net.olympiccode.vhackos.api.vHackOSAPI;
107
import net.olympiccode.vhackos.api.vHackOSAPIBuilder;
@@ -25,23 +22,42 @@
2522
import java.io.BufferedReader;
2623
import java.io.IOException;
2724
import java.io.InputStreamReader;
25+
import java.util.concurrent.ScheduledExecutorService;
26+
import java.util.concurrent.TimeUnit;
2827
import java.util.stream.Collectors;
2928

3029
public class vHackOSBot {
3130

3231
public static vHackOSAPI api;
32+
static Logger LOG = LoggerFactory.getLogger("vHackOSBot");
3333
ConfigFile config = new ConfigFile();
3434
AdvancedConfigFile advConfig = new AdvancedConfigFile();
3535
BotService updateService = new UpdateService();
3636
BotService miscService = new MiscService();
3737
BotService networkingService = new NetworkingService();
38-
Logger LOG = LoggerFactory.getLogger("vHackOSBot");
3938

4039
public static void main(String[] args) {
41-
new vHackOSBot().run();
40+
try {
41+
new vHackOSBot().run();
42+
} catch (LoginException e) {
43+
LOG.error("vHack returned invalid username/password.");
44+
} catch (InterruptedException e) {
45+
LOG.error("There was a problem initializing the vHackOSBot.");
46+
} catch (RuntimeException e) {
47+
if (e.getMessage().contains("vhack account has been banned")) {
48+
LOG.error("Your vhack account has been banned.");
49+
System.exit(0);
50+
} else {
51+
Sentry.capture(e);
52+
e.printStackTrace();
53+
}
54+
} catch (Exception e) {
55+
Sentry.capture(e);
56+
e.printStackTrace();
57+
}
4258
}
4359

44-
public void run() {
60+
public void run() throws LoginException, InterruptedException {
4561
Sentry.init("https://36b5e13fe253466f8b98b5adacb2aa32:cf886218c21b4ba7ad4692f303020f7a@sentry.io/303008");
4662
Sentry.getContext().addExtra("version", vHackOSInfo.API_PREFIX);
4763
Sentry.getContext().recordBreadcrumb(
@@ -75,16 +91,7 @@ public void run() {
7591
LOG.error("Please set your login data in the config file");
7692
System.exit(0);
7793
}
78-
try {
79-
api = new vHackOSAPIBuilder().setUsername(ConfigValues.username).setPassword(ConfigValues.password).buildBlocking();
80-
} catch (LoginException e) {
81-
LOG.error("vHack returned invalid username/password.");
82-
} catch (InterruptedException e) {
83-
LOG.error("There was a problem initializing the vHackOSBot.");
84-
} catch (Exception e) {
85-
Sentry.capture(e);
86-
e.printStackTrace();
87-
}
94+
api = new vHackOSAPIBuilder().setUsername(ConfigValues.username).setPassword(ConfigValues.password).buildBlocking();
8895
Sentry.getContext().setUser(
8996
new UserBuilder().setUsername(ConfigValues.username).build()
9097
);
@@ -112,19 +119,32 @@ public void run() {
112119
String[] args = line.split(" ");
113120
switch (args[0]) {
114121
case "help":
115-
System.out.println("stats - List all basic stats\n" + "tasks - Lists all active tasks");
122+
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");
116123
break;
117124
case "stats":
118125
System.out.println("Username: " + api.getStats().getUsername() + SEPARATOR + "Money: " + api.getStats().getMoney() + SEPARATOR + "Netcoins: " + api.getStats().getNetcoins() +
119126
"\n" + "Exploits: " + api.getStats().getExploits() + SEPARATOR + "IP: " + api.getStats().getIpAddress() + "\n" +
120127
"Level: " + api.getStats().getLevel() + getProgressBar());
121128
break;
122129
case "tasks":
123-
System.out.println("-------------------\n" + "Boosters: " + api.getTaskManager().getBoosters() + "-------------------\n" + api.getTaskManager().getActiveTasks().stream().map(task -> task.getType() + ": " + task.getLevel() + " " + ((task.getEndTimestamp() - System.currentTimeMillis()) / 1000) + "sec left.").collect(Collectors.joining("\n")) + "\n-------------------");
130+
System.out.println("-------------------\n" + "Boosters: " + api.getTaskManager().getBoosters() + "\n-------------------\n" + api.getTaskManager().getActiveTasks().stream().map(task -> task.getType() + ": " + task.getLevel() + " " + ((task.getEndTimestamp() - System.currentTimeMillis()) / 1000) + "sec left.").collect(Collectors.joining("\n")) + "\n-------------------");
124131
break;
125132
case "brutes":
126133
System.out.println("-------------------\n" + api.getTaskManager().getActiveBrutes().stream().map(bruteForce -> bruteForce.getUsername() + ": " + bruteForce.getState()).collect(Collectors.joining("\n")) + "\n-------------------");
127134
break;
135+
case "services":
136+
System.out.println("NetworkingService: " + getStatus(networkingService.getService()) + "\n" +
137+
"UpdateService: " + getStatus(updateService.getService()) + "\n" +
138+
"MiscService: " + getStatus(miscService.getService()));
139+
break;
140+
case "apps":
141+
System.out.println("-------------------\n" + api.getAppManager().getApps().stream().map(app -> app.getType().getName() + ": " + (app.isInstalled() ? app.getLevel() : "Not installed")).collect(Collectors.joining("\n")) + "\n-------------------");
142+
break;
143+
case "leader":
144+
case "leaders":
145+
case "leaderboards":
146+
System.out.println("-------------------\n" + "Current tournament pos: " + api.getLeaderboards().getTournamentRank() + "\nTournament ends in: " + getTimeLeft() + "\nCurrent global pos: " + api.getLeaderboards().getRank() + "\n-------------------");
147+
break;
128148
case "quit":
129149
System.exit(0);
130150
break;
@@ -137,6 +157,19 @@ public void run() {
137157
}
138158
}
139159

160+
private String getStatus(ScheduledExecutorService service) {
161+
if (service.isShutdown() || service.isTerminated()) return "Stopped.";
162+
return "Running.";
163+
}
164+
165+
private String getTimeLeft() {
166+
long time = api.getLeaderboards().getTournamentEndTimestamp();
167+
long millis = time - System.currentTimeMillis();
168+
return String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
169+
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
170+
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
171+
}
172+
140173
private String getProgressBar() {
141174
long barnum = (Math.round(api.getStats().getLevelPorcentage() / 10)) - 1;
142175
StringBuilder builder = new StringBuilder();

0 commit comments

Comments
 (0)