mirror of
https://github.com/xnite/MCSeeker.git
synced 2026-05-02 12:54:50 -07:00
version filter. Closes issue #1
This commit is contained in:
@@ -8,14 +8,16 @@ This scans for MineCraft servers... really really fast!
|
|||||||
## Usage
|
## Usage
|
||||||
Run `node ./scanner.js [options] --ip <ip range>`
|
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 --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
|
### CLI Options
|
||||||
* `--ip <ip>` - IP Address or Range of IP Addresses with CIDR notation (eg- 192.168.1.0/24)
|
* `--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`)
|
* `--port <ports>` - Ports to look for minecraft servers on. (Default: `25565-25566`)
|
||||||
* `--min-players <count>` - Minimum number of players.
|
* `--min-players <count>` - Minimum number of players.
|
||||||
* `--max-players <count>` - Maximum player count.
|
* `--max-players <count>` - Maximum player count.
|
||||||
|
* `--version <glob expression>` - Glob expression to filter version (eg- `1.19.*`, or `1.1*.*`). (Default: `*`)
|
||||||
|
|
||||||
#### Output Options
|
#### Output Options
|
||||||
* `--show-desc` - Enable showing of server description in output.
|
* `--show-desc` - Enable showing of server description in output.
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
"maxmind": "^4.3.5",
|
"maxmind": "^4.3.5",
|
||||||
"minecraft-status": "^1.1.0",
|
"minecraft-status": "^1.1.0",
|
||||||
"mineflayer": "^4.0.0",
|
"mineflayer": "^4.0.0",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
"node-mcpe-color-parser": "^0.1.1",
|
"node-mcpe-color-parser": "^0.1.1",
|
||||||
"tar-stream": "^2.2.0",
|
"tar-stream": "^2.2.0",
|
||||||
"zlib": "^1.0.5"
|
"zlib": "^1.0.5"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
var Scanner = require('evilscan');
|
var Scanner = require('evilscan');
|
||||||
var status = require('minecraft-status').MinecraftServerListPing;
|
var status = require('minecraft-status').MinecraftServerListPing;
|
||||||
var mc = require('mineflayer');
|
var mc = require('mineflayer');
|
||||||
|
var minimatch = require("minimatch");
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var maxmind;
|
var maxmind;
|
||||||
var mcp = require('node-mcpe-color-parser');
|
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_HOSTS = (process.params['ip']||'0.0.0.0/0').toString();
|
||||||
var SCAN_OPTS_PORTS = (process.params['port'] || MINECRAFT_DEFAULT_PORT).toString();
|
var SCAN_OPTS_PORTS = (process.params['port'] || MINECRAFT_DEFAULT_PORT).toString();
|
||||||
var SCAN_OPTS_OUTPUT_CSV = (process.params['out']||null);
|
var SCAN_OPTS_OUTPUT_CSV = (process.params['out']||null);
|
||||||
|
var SCAN_OPTS_VERSION_FILTER = (process.params['version']||'*');
|
||||||
var CLIENT_TOKEN;
|
var CLIENT_TOKEN;
|
||||||
|
|
||||||
if(process.params['geo-ip'])
|
if(process.params['geo-ip'])
|
||||||
@@ -118,6 +120,7 @@ if (SCAN_OPTS_OUTPUT_CSV) {
|
|||||||
scan.on('result', function(data){
|
scan.on('result', function(data){
|
||||||
//console.log(data);
|
//console.log(data);
|
||||||
status.ping(757, data.ip, data.port, (process.params['timeout']||15)*1000).then(function(pingRes){
|
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'])))
|
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";
|
var theText = data.ip + ":" + data.port + "\t" + pingRes.version.name + "\t" + pingRes.players.online + " of " + pingRes.players.max + " players";
|
||||||
|
|||||||
Reference in New Issue
Block a user