diff --git a/Index/architecture.html b/Index/architecture.html new file mode 100644 index 0000000..afe058d --- /dev/null +++ b/Index/architecture.html @@ -0,0 +1,189 @@ + + + + + + + How It Works • Minecraft Server Finder + + + + + + + +
+
+
+
+ + + +
+
+
+ Runtime flow +

Five pillars coordinate every sweep.

+

GUI and console launches call the same functions; only the presentation layer changes.

+
+
+
+ +

1. Configuration ingestion

+

ScannerAppGUI (Tkinter) or the console shim collects ranges, port lists, workers, proxies, and Mullvad toggles. Defaults come from mcsmartscan.constants.

+
+
+ +

2. Work distribution

+

ip_range_generator expands CIDRs/start-end pairs. permuted_index_generator shuffles work deterministically before pushing addresses into a bounded queue.

+
+
+ +

3. Connection attempts

+

ThreadPoolExecutor workers pop targets, dial sockets directly or through ProxyPool, and record latency/failure metrics for adaptive throttling.

+
+
+ +

4. Validation & enrichment

+

Minecraft-specific handshakes confirm services. Optional libraries (mcstatus, python-nmap) enrich MOTDs, banners, and protocol hints.

+
+
+ +

5. Persistence & UI updates

+

StorageManager writes artefacts immediately while the GUI table and console logger surface status updates in real time.

+
+
+

Refer to app.py for the complete orchestration logic and inline comments describing each subsystem hand-off.

+
+ +
+
+ Module map +

Understand what each package is responsible for.

+

Everything sits inside the repository, so you can audit or extend without hunting external dependencies.

+
+
+
+

mcsmartscan.utils

+

Pure functions that normalise inputs and feed work into the scanner.

+
    +
  • ip_range_generator expands IPv4 ranges and CIDR blocks safely.
  • +
  • permuted_index_generator provides deterministic, collision-free shuffling.
  • +
  • Helpers like ip_range_size support progress calculations.
  • +
+
+
+

mcsmartscan.proxy

+

Home of ProxyPool plus custom exceptions for proxy health.

+
    +
  • Tracks success, failure, and cooldown windows per endpoint.
  • +
  • Raises ProxyAcquireTimeout or ProxyTargetError when providers misbehave.
  • +
  • Integrates with Mullvad or custom VPN managers via callbacks.
  • +
+
+
+

mcsmartscan.vpn

+

Optional layer that automates Mullvad exit rotation.

+
    +
  • Validates the Mullvad CLI/API is available before scheduling rotations.
  • +
  • Coordinates timing so proxy health checks and VPN swaps do not collide.
  • +
  • Safe to ignore—if not configured, the scanner defaults to static egress.
  • +
+
+
+

mcsmartscan.storage

+

StorageManager centralises persistence logic and path handling.

+
    +
  • Auto-detects the Desktop path across Windows, macOS, and Linux.
  • +
  • Writes plain-text leads plus structured JSON for GUI state restoration.
  • +
  • Ensures directories exist before writing, reducing runtime surprises.
  • +
+
+
+

app.py

+

The orchestration hub that wires it all together.

+
    +
  • Initialises GUI widgets, binds event handlers, and schedules periodic tasks.
  • +
  • Bootstraps console execution when --nogui is set or Tkinter is unavailable.
  • +
  • Exposes extension hooks such as run_console_scan(app) so advanced users can plug in custom loops.
  • +
+
+
+
+ +
+
+ Observability & safety +

Instrumentation is built in to keep scans predictable.

+

Metrics inform decisions about throttling, proxy rotation, and resumability.

+
+
+
+

Adaptive throttling

+

Workers monitor failure ratios and timeouts, enabling back-off without manual intervention.

+
    +
  • Progress counters track processed hosts, latency averages, and ping failures.
  • +
  • GUI widgets surface bars and status colours for at-a-glance triage.
  • +
  • Console mode logs the same metrics for long-running headless jobs.
  • +
+
+
+

Persistence guarantees

+

Critical writes occur synchronously so crashes or restarts do not lose confirmed hits.

+
    +
  • Artefacts flush after each discovery to avoid large, fragile buffers.
  • +
  • Saved GUI state enables pause/resume workflows across sessions.
  • +
  • Storage paths are customisable if you prefer shared volumes or versioned artefacts.
  • +
+
+
+

Responsible defaults

+

The project ships with conservative settings you can adjust once you understand the impact.

+
    +
  • DEFAULT_TIMEOUT = 4.0 seconds balances reachability with empathy for remote hosts.
  • +
  • DEFAULT_WORKERS = 150 keeps bandwidth requirements reasonable for most connections.
  • +
  • Mullvad cycling and proxy usage are opt-in, avoiding accidental policy breaches.
  • +
+
+
+

When extending the scanner, keep the legal and ethical guidelines in mind—see the Ethics & FAQ page for recommendations.

+
+
+ + + + + + diff --git a/Index/ethics.html b/Index/ethics.html new file mode 100644 index 0000000..786b52c --- /dev/null +++ b/Index/ethics.html @@ -0,0 +1,181 @@ + + + + + + + Ethics & FAQ • Minecraft Server Finder + + + + + + + +
+
+
+
+ + + +
+
+
+ Ethics fundamentals +

Always secure explicit permission and respect the networks you touch.

+

These principles are non-negotiable whenever you run scans, whether locally or in distributed infrastructure.

+
+
+
+

Authorisation first

+
    +
  • Only scan ranges you own or where written consent has been granted.
  • +
  • Review applicable laws, ISP terms, cloud provider policies, and school/company rules.
  • +
  • Document approvals so you can demonstrate compliance later.
  • +
+
+
+

Operate with restraint

+
    +
  • Tune worker counts, timeouts, and proxy pools to align with acceptable use policies.
  • +
  • Respect rate limits from VPN/proxy services such as Mullvad.
  • +
  • Pause scans if contacted by network owners outside your scope.
  • +
+
+
+

Handle findings responsibly

+
    +
  • Confirmed servers may expose MOTDs, player counts, or other information users did not intend to share.
  • +
  • Coordinate disclosure with server operators; never publish sensitive data without consent.
  • +
  • Store artefacts securely if they contain personally identifiable information.
  • +
+
+
+
+ +
+
+ Compliance checklist +

Run through these steps before every engagement.

+

Treat the scanner like any penetration-testing or network-auditing tool.

+
+
+
+

Before scanning

+
    +
  • Collect written permission specifying target ranges, timing windows, and escalation contacts.
  • +
  • Update the proxy list and Mullvad settings to match your approved plan.
  • +
  • Verify storage paths point to secure, access-controlled locations.
  • +
+
+
+

During scanning

+
    +
  • Monitor GUI metrics or console logs for signs of rate limiting or network distress.
  • +
  • Throttle workers or pause scans if you see unexpected load or complaints.
  • +
  • Keep communication lines open with stakeholders to share interim results.
  • +
+
+
+

After scanning

+
    +
  • Deliver results responsibly, omitting sensitive data unless disclosure was approved.
  • +
  • Clean up proxy credentials or VPN sessions that are no longer needed.
  • +
  • Archive artefacts according to your organisation’s retention policies.
  • +
+
+
+
+ +
+
+ Frequently asked questions +

Clarifying common scenarios from the README.

+

If your question is not covered here, open a discussion or issue on GitHub.

+
+
+
+

Does the scanner support Bedrock servers?

+

The default port list targets Java (25565). Add Bedrock ports such as 19132 to the GUI or console configuration to generate leads, but treat them as provisional until you confirm via Bedrock-specific tooling.

+
+
+

Can I pause and resume scans?

+

Yes. Stop the GUI scan at any point; StorageManager persists results so you can restart later without losing confirmed hosts.

+
+
+

What if Tkinter is missing?

+

Install the appropriate package for your distribution (python3-tk on Debian/Ubuntu, tk on Arch/Fedora). Alternatively run python app.py --nogui for console mode.

+
+
+

How do I deal with proxy issues?

+

Ensure SOCKS endpoints are reachable and authenticated. The Proxy Pool panel highlights unhealthy nodes; remove failing endpoints or allow cooldowns to expire before reintroducing them.

+
+
+
+ +
+
+ Troubleshooting highlights +

Resolve the most common stumbling blocks quickly.

+

These points are lifted directly from the project’s troubleshooting section.

+
+
+
+

Permission denied while writing output

+

Pick an output directory you control from the GUI settings or run the process under an account with write access.

+
+
+

Proxy pool never becomes healthy

+

Confirm VPN connectivity and reachability of the SOCKS5 list. Remove failing entries until the pool stabilises.

+
+
+

False positives or empty MOTDs

+

Install mcstatus for richer handshake parsing and python-nmap to corroborate banners before you classify a host as active.

+
+
+

Need to audit usage

+

Review README.md and commit history for updates to ethical guidance. Document your scan settings and approvals for internal audits.

+
+
+

Nothing on this page replaces legal advice. Consult counsel if you are unsure whether a scan is authorised in your jurisdiction.

+
+
+ + + + + + diff --git a/Index/features.html b/Index/features.html new file mode 100644 index 0000000..95f6fd8 --- /dev/null +++ b/Index/features.html @@ -0,0 +1,202 @@ + + + + + + + Features • Minecraft Server Finder + + + + + + + +
+
+
+
+ + + +
+
+
+ Engine core +

Reliable coverage across massive IPv4 ranges.

+

The scanning engine lives in mcsmartscan and is reused by both the GUI and headless entry points.

+
+
+
+

Threaded scan loops

+

The engine balances sockets, CPU, and file writes so long sweeps stay responsive.

+
    +
  • ThreadPoolExecutor workers consume a bounded queue fed by ip_range_generator.
  • +
  • permuted_index_generator shuffles targets deterministically to avoid hotspots while guaranteeing coverage.
  • +
  • DEFAULT_WORKERS = 150 (tune from the GUI or programmatically before launching).
  • +
+
+
+

Proxy and VPN aware

+

ProxyPool manages SOCKS5 endpoints so you can distribute traffic or rotate egress IPs.

+
    +
  • Maintain endpoints in mcsmartscan/mullvadproxyips.txt (one per line, comments allowed).
  • +
  • Cooldown timers quarantine unhealthy proxies and retry on a back-off curve.
  • +
  • Optional MullvadManager hooks into Mullvad’s CLI/SDK for automated exit rotation.
  • +
+
+
+

Protocol enrichment

+

Hosts that pass TCP validation receive Minecraft-specific parsing before being classified.

+
    +
  • Java status handshakes capture protocol version hints, MOTDs, latency, and player counts.
  • +
  • mcstatus (optional) unlocks extended parsing for modern servers.
  • +
  • python-nmap integration (optional) corroborates suspicious responses with banner data.
  • +
+
+
+
+ +
+
+ Operator experience +

Work visually or run in fully headless environments.

+

The UI and console flows ride on the same orchestrator so switching contexts is seamless.

+
+
+
+

Tkinter GUI

+

Launch with python app.py for a desktop experience.

+
    +
  • Configure start/end IPs, port lists, worker counts, timeouts, proxy pools, and Mullvad cycling.
  • +
  • Monitor a live results table with latency bars, MOTDs, version hints, and timestamps.
  • +
  • Inspect the Proxy Pool panel for health, lease counts, failure streaks, and cooldown timers.
  • +
+
+
+

Console / headless mode

+

Invoke python app.py --nogui when Tkinter is unavailable or undesirable.

+
    +
  • Reuses the same scan loop, persistence layer, and proxy logic as the GUI.
  • +
  • Designed for remote servers, containers, and automation pipelines.
  • +
  • Extendable: define run_console_scan(app) or similar hooks in app.py to customise orchestration.
  • +
+
+
+

Persistence & exports

+

StorageManager writes artefacts continuously so you can pause and resume confidently.

+
    +
  • Defaults to the user’s Desktop (auto-detected cross-platform).
  • +
  • Exports confirmed servers, open port leads, and GUI session state in human-friendly formats.
  • +
  • Point storage at shared directories to sync findings with teammates or CI runners.
  • +
+
+
+
+ +
+
+ Key artefacts +

Know exactly what is produced after every sweep.

+

These files land automatically unless you override the destination path from the GUI or code.

+
+
+
+ Minecraft_Servers.txt +

Confirmed servers with timestamps, MOTDs, version hints, latency, and player counts.

+
+
+ Open_Ports.txt +

Leads that passed TCP checks but failed Minecraft protocol validation for further analysis.

+
+
+ saved_servers.json +

Structured GUI state so tables repopulate on restart and long scans resume smoothly.

+
+
+ Proxy configuration +

Maintain SOCKS5 endpoints in mcsmartscan/mullvadproxyips.txt; empty the file to disable proxying.

+
+
+
+ +
+
+ Automation & packaging +

Ship the toolkit anywhere your team needs it.

+

Scripting helpers and CI workflows are already part of the repository.

+
+
+
+

PyInstaller bundle

+

Run pyinstaller.ps1 to invoke the curated build command and generate a Windows executable.

+
    +
  • Wraps pyinstaller with the maintained minecraft_server_finder.spec recipe.
  • +
  • Bundles proxy lists and the mcsmartscan package for redistribution.
  • +
  • Matches the configuration used in the Build Windows Release GitHub Action.
  • +
+
+
+

Workstation bootstrap

+

install_system.bat installs Python prerequisites system-wide for GUI operators.

+
    +
  • Upgrades pip and installs dependencies from requirements.txt.
  • +
  • Optional extras (mcstatus, python-nmap, psutil) can be added after the base install.
  • +
  • Ideal for labs where you need a consistent environment across multiple desktops.
  • +
+
+
+

Continuous integration ready

+

GitHub Actions workflows (.github/workflows) lint, test, and build the project on every push.

+
    +
  • Runs the Python application workflow against Windows, macOS, and Linux runners.
  • +
  • Publishes Windows releases automatically when tagged (or triggered manually).
  • +
  • Keep local changes healthy by mirroring the CI steps: pytest, flake8, and the optional packaging flow.
  • +
+
+
+

All feature claims are sourced from app.py, the mcsmartscan package, and README.md. Verify changes in code before modifying these docs.

+
+
+ + + + + + diff --git a/Index/index.html b/Index/index.html index 0e2e6b7..f10885b 100644 --- a/Index/index.html +++ b/Index/index.html @@ -9,6 +9,7 @@ +
@@ -18,70 +19,68 @@