version filter. Closes issue #1

This commit is contained in:
Robert Whitney
2022-09-25 10:44:43 -05:00
committed by GitHub
parent d060605253
commit a801231a84
3 changed files with 8 additions and 2 deletions

View File

@@ -8,14 +8,16 @@ This scans for MineCraft servers... really really fast!
## Usage
Run `node ./scanner.js [options] --ip <ip range>`
### Example
### Examples
`node ./scanner.js --ip 192.168.1.0/24 --port 25565-25569 --show-desc --min-players 1 --max-players 100 --out report.csv`
`node ./scanner.js --ip 192.168.1.0/24 --port 25565-25569 --show-desc --min-players 1 --max-players 100 --version '1.8.*' --out 1.8.x-servers.csv`
`node ./scanner.js --ip 192.168.1.0/24 --port 25565-25569 --show-desc --min-players 1 --max-players 100 --version '*forge*' --out forge-servers.csv`
### CLI Options
* `--ip <ip>` - IP Address or Range of IP Addresses with CIDR notation (eg- 192.168.1.0/24)
* `--port <ports>` - Ports to look for minecraft servers on. (Default: `25565-25566`)
* `--min-players <count>` - Minimum number of players.
* `--max-players <count>` - Maximum player count.
* `--version <glob expression>` - Glob expression to filter version (eg- `1.19.*`, or `1.1*.*`). (Default: `*`)
#### Output Options
* `--show-desc` - Enable showing of server description in output.

View File

@@ -5,6 +5,7 @@
"maxmind": "^4.3.5",
"minecraft-status": "^1.1.0",
"mineflayer": "^4.0.0",
"minimatch": "^3.0.4",
"node-mcpe-color-parser": "^0.1.1",
"tar-stream": "^2.2.0",
"zlib": "^1.0.5"

View File

@@ -1,6 +1,7 @@
var Scanner = require('evilscan');
var status = require('minecraft-status').MinecraftServerListPing;
var mc = require('mineflayer');
var minimatch = require("minimatch");
var fs = require('fs');
var maxmind;
var mcp = require('node-mcpe-color-parser');
@@ -11,6 +12,7 @@ var SCAN_MIN_PLAYERS = (process.params['min-players'] || 0);
var SCAN_OPTS_HOSTS = (process.params['ip']||'0.0.0.0/0').toString();
var SCAN_OPTS_PORTS = (process.params['port'] || MINECRAFT_DEFAULT_PORT).toString();
var SCAN_OPTS_OUTPUT_CSV = (process.params['out']||null);
var SCAN_OPTS_VERSION_FILTER = (process.params['version']||'*');
var CLIENT_TOKEN;
if(process.params['geo-ip'])
@@ -118,6 +120,7 @@ if (SCAN_OPTS_OUTPUT_CSV) {
scan.on('result', function(data){
//console.log(data);
status.ping(757, data.ip, data.port, (process.params['timeout']||15)*1000).then(function(pingRes){
if(!minimatch(pingRes.version.name, SCAN_OPTS_VERSION_FILTER)) { return; } // Does not match version filter
if (pingRes.players.online >= SCAN_MIN_PLAYERS && (!process.params['max-players'] || (process.params['max-players'] && pingRes.players.max <= process.params['max-players'])))
{
var theText = data.ip + ":" + data.port + "\t" + pingRes.version.name + "\t" + pingRes.players.online + " of " + pingRes.players.max + " players";