added .server ports

This commit is contained in:
Cloudburst
2021-06-03 19:24:12 +02:00
parent d90419f374
commit d0f7cb0d8a
4 changed files with 261 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
package cloudburst.rejects.utils.portscanner;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.*;
import java.util.function.Consumer;
public class PScanRunner {
public boolean running = true;
public int portsScanned = 0;
ExecutorService es;
List<Future<PortScannerManager.ScanResult>> futures = new ArrayList<>();
Thread runner;
public PScanRunner(InetAddress address, int threads, int threadDelay, int timeoutMS, Collection<Integer> ports,
Consumer<List<PortScannerManager.ScanResult>> callback) {
runner = new Thread(() -> {
es = Executors.newFixedThreadPool(threads);
ports.forEach(port -> {
futures.add(isPortOpen(es, address.getHostAddress(), port, timeoutMS, threadDelay));
});
try {
boolean _1 = es.awaitTermination(200L, TimeUnit.MILLISECONDS);
} catch (InterruptedException ignored) {
}
List<PortScannerManager.ScanResult> results = new ArrayList<>();
for (Future<PortScannerManager.ScanResult> fsc : futures) {
try {
results.add(fsc.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
callback.accept(results);
});
runner.start();
}
public void cancel() {
running = false;
}
private Future<PortScannerManager.ScanResult> isPortOpen(ExecutorService es, String ip, int port, int timeout,
int delay) {
return es.submit(() -> {
if (!running)
return new PortScannerManager.ScanResult(port, false);
Thread.sleep(delay);
portsScanned++;
try {
//System.out.println(ip + ":" + port);
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, port), timeout);
socket.close();
return new PortScannerManager.ScanResult(port, true);
} catch (Exception exc) {
return new PortScannerManager.ScanResult(port, false);
}
});
}
}

View File

@@ -0,0 +1,45 @@
package cloudburst.rejects.utils.portscanner;
import java.util.ArrayList;
import java.util.List;
public class PortScannerManager {
public static List<PScanRunner> scans = new ArrayList<>();
public static void killAllScans() {
for (PScanRunner runner : scans) {
if (runner.running)
runner.cancel();
}
scans.clear();
}
public static class ScanResult {
private int port;
private boolean isOpen;
public ScanResult(int port, boolean isOpen) {
super();
this.port = port;
this.isOpen = isOpen;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public boolean isOpen() {
return isOpen;
}
public void setOpen(boolean isOpen) {
this.isOpen = isOpen;
}
}
}