Skip to content

Commit a56ade3

Browse files
committed
v1.18
1 parent 0481917 commit a56ade3

File tree

3 files changed

+43
-24
lines changed

3 files changed

+43
-24
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ All notable changes to this project will be documented in `CHANGELOG.md`.
55
Nothing has been added.
66

77
## Modified
8-
* Fixed scanner setting `offset.mcscan` to 255.255.255.255
8+
* Stopping & resuming handling.
99

1010
## Removed
11-
* Debug prints
11+
Nothing has been removed.
1212

1313
## TODOs
1414
- [ ] Optimise IP generation and inital scanning code.[¹][1]

offset.mcscan

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/com/stupidrepo/mcscanner/MCScanner.java

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public class MCScanner {
2323
private static int offsetJ = 0;
2424
private static int offsetK = 0;
2525
private static int offsetL = 0;
26+
private static boolean stopping = false;
27+
2628
public static void main(String[] var0) {
2729
AtomicInteger threads = new AtomicInteger(1024);
2830
int timeout = 1000;
@@ -72,17 +74,22 @@ public static void main(String[] var0) {
7274
frame.addWindowListener(new java.awt.event.WindowAdapter() {
7375
@Override
7476
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
77+
stopping = true;
7578
logger.log(Level.INFO, "Stopping threads...");
7679
for (Thread nextThread: threadList) {
77-
nextThread.interrupt();
80+
try {
81+
nextThread.join();
82+
} catch (InterruptedException timeouter) {
83+
// Timeout or something idk
84+
}
7885
}
79-
logger.log(Level.INFO, "Making an 'offset.mcscan'...");
86+
logger.log(Level.INFO, "Making an '.resumescan'...");
8087
try {
81-
BufferedWriter writer = new BufferedWriter(new FileWriter("offset.mcscan"));
88+
BufferedWriter writer = new BufferedWriter(new FileWriter(".resumescan"));
8289
writer.write(String.valueOf(offsetI + "\n" + offsetJ + "\n" + offsetK + "\n" + offsetL));
8390
writer.close();
8491
} catch (IOException e) {
85-
logger.log(Level.SEVERE, "Failed to write 'offset.mcscan'!");
92+
logger.log(Level.SEVERE, "Failed to write '.resumescan'!");
8693
}
8794
logger.log(Level.INFO, "Exiting...");
8895
System.exit(0);
@@ -105,10 +112,10 @@ public void windowClosing(java.awt.event.WindowEvent windowEvent) {
105112

106113
frame.setVisible(true);
107114

108-
File offsetFile = new File("offset.mcscan");
115+
File offsetFile = new File(".resumescan");
109116
if (offsetFile.exists()) {
110117
try {
111-
logger.log(Level.INFO, "Found 'offset.mcscan'!");
118+
logger.log(Level.INFO, "Found '.resumescan'!");
112119
BufferedReader reader = new BufferedReader(new FileReader(offsetFile));
113120
offsetI = Integer.parseInt(reader.readLine());
114121
offsetJ = Integer.parseInt(reader.readLine());
@@ -117,7 +124,7 @@ public void windowClosing(java.awt.event.WindowEvent windowEvent) {
117124
logger.log(Level.INFO, "Continuing from " + offsetI + "." + offsetJ + "." + offsetK + "." + offsetL + "...");
118125
reader.close();
119126
} catch (IOException e) {
120-
logger.log(Level.SEVERE, "Failed to read 'offset.mcscan'!");
127+
logger.log(Level.SEVERE, "Failed to read '.resumescan'!");
121128
}
122129
}
123130

@@ -126,26 +133,42 @@ public void windowClosing(java.awt.event.WindowEvent windowEvent) {
126133
int thisOffsetK = offsetK;
127134
int thisOffsetL = offsetL;
128135
for (int i = thisOffsetI; i <= maxRange; ++i) {
129-
offsetI = i;
136+
if(stopping) {
137+
break;
138+
} else {
139+
offsetI = i;
140+
}
130141
for (int j = thisOffsetJ; j <= 255; ++j) {
131-
offsetJ = j;
142+
if(stopping) {
143+
break;
144+
} else {
145+
offsetJ = j;
146+
}
132147
for (int k = thisOffsetK; k <= 255; ++k) {
133-
offsetK = k;
148+
if(stopping) {
149+
break;
150+
} else {
151+
offsetK = k;
152+
}
134153
for (int l = thisOffsetL; l <= 255; ++l) {
135-
offsetL = l;
136-
String ip = i + "." + j + "." + k + "." + l;
137-
138-
ScannerThread scannerThread = new ScannerThread(ip, port, timeout, databaseHandler);
139-
Thread scanThread = new Thread(scannerThread);
140-
threadList.add(scanThread);
141-
scanThread.start();
154+
if(stopping) {
155+
break;
156+
} else {
157+
offsetL = l;
158+
String ip = i + "." + j + "." + k + "." + l;
159+
160+
ScannerThread scannerThread = new ScannerThread(ip, port, timeout, databaseHandler);
161+
Thread scanThread = new Thread(scannerThread);
162+
threadList.add(scanThread);
163+
scanThread.start();
164+
}
142165

143166
if (threadList.size() >= threads.get()) {
144167
for (Thread nextThread: threadList) {
145168
try {
146169
nextThread.join();
147170
++scanned;
148-
scannedLabel.setText("Scanned: " + scanned + "/" + progressThing * 256 + " (" + Math.round((scanned / (progressThing * 256)) * 100) / 100 + "%) (" + ip + ")");
171+
scannedLabel.setText("Scanned: " + scanned + "/" + progressThing * 256 + " (" + Math.round((scanned / (progressThing * 256)) * 100) / 100 + "%)");
149172
} catch (InterruptedException timeout2) {
150173
// Timed out or smth
151174
}

0 commit comments

Comments
 (0)