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
|
||||
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.
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user