feat: add WHOIS subnet querying and IP consolidation utility

- Implemented a new utility for querying WHOIS information and consolidating IP addresses by subnet.
- Added caching mechanism for WHOIS responses to improve performance.
- Introduced functions for loading and saving the WHOIS cache, querying subnets, and consolidating IPs based on a threshold.

feat: create Flask web UI for intrusion detection system

- Developed a Flask web application to manage the intrusion detection system.
- Implemented routes for scanning, reports, blocklist management, and firewall configuration.
- Added helper functions for reading files and handling requests.

feat: define routes for web UI

- Registered routes for various web pages and API endpoints in the Flask application.
- Implemented functionality for scanning, reporting, blocklist management, and firewall state retrieval.

feat: implement background scan runner for web UI

- Created a background scan runner to handle scan jobs in a separate thread.
- Managed an in-memory job store for tracking scan jobs and their statuses.
- Added persistence for scan jobs to maintain state across application restarts.

chore: update start script for Flask application

- Enhanced the PowerShell start script to check for the existence of the virtual environment.
- Added comments and structured the script for better readability and usability.
This commit is contained in:
zwitschi committed 2026-08-08 14:33:51 +02:00
1 parent 41230ce04c
commit 9f8ab0f61c
102 files changed
+1102652 -268

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
# https://editorconfig.org
root = true
# -------------------------------------------------
# Common settings – apply to every file
# -------------------------------------------------
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# -------------------------------------------------
# Python (*.py)
# -------------------------------------------------
[*.py]
indent_style = space
indent_size = 4
max_line_length = 88 # matches Black’s default line length
# Optional: enforce a newline at the end of the file (already set globally)
# -------------------------------------------------
# JavaScript & TypeScript (*.js, *.jsx, *.ts, *.tsx)
# -------------------------------------------------
[*.{js,jsx,ts,tsx}]
indent_style = space
indent_size = 2
max_line_length = 120
trim_trailing_whitespace = true
# -------------------------------------------------
# JSON (*.json, *.jsonc)
# -------------------------------------------------
[*.json]
indent_style = space
indent_size = 2
max_line_length = off # JSON is often compact; don’t enforce length
trim_trailing_whitespace = false # JSON parsers ignore trailing spaces
# -------------------------------------------------
# HTML (*.html, *.htm)
# -------------------------------------------------
[*.{html,htm}]
indent_style = space
indent_size = 2
max_line_length = 120
trim_trailing_whitespace = true
# -------------------------------------------------
# CSS & SCSS (*.css, *.scss)
# -------------------------------------------------
[*.{css,scss}]
indent_style = space
indent_size = 2
max_line_length = 120
trim_trailing_whitespace = true
# -------------------------------------------------
# Markdown (*.md, *.markdown)
# -------------------------------------------------
[*.{md,markdown}]
max_line_length = off # Markdown lines can be long for readability
trim_trailing_whitespace = false # Preserve intentional spaces (e.g., line breaks)
+9
View File
@@ -51,6 +51,15 @@ WHOIS_TIMEOUT=3.0
# Minimum number of same-subnet IPs before blocking the whole subnet.
SUBNET_THRESHOLD=3
# --- Report retention ------------------------------------------------------
# Each subdirectory under /reports/ keeps at most REPORT_RETENTION_MAX_FILES
# files, all newer than REPORT_RETENTION_DAYS days. Older timestamped reports
# are pruned automatically after each consolidated scan. The blocklist files
# in reports/app/data/ are always protected.
REPORT_RETENTION_DAYS=30
REPORT_RETENTION_MAX_FILES=10
# --- Scan / flagging defaults ----------------------------------------------
# Rows in the top-IP report tables.
+57 -42
View File
@@ -5,21 +5,16 @@ Local-development intrusion detection / log analysis for two log sources:
| Script | Source | Detection rule |
| --------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `app.py` | unified entry point | runs both analyzers + optional firewall sync |
| `app/scan.py` | consolidated scanner | runs both analyzers, merges blocklists, syncs firewall |
| `app/scan/` | consolidated scanner | runs both analyzers, merges blocklists, syncs firewall |
| `app/copyparty.py` | [copyparty](https://github.com/9001/copyparty) server logs | denied-only IPs + copyparty auto-bans |
| `app/npm.py` | [Nginx Proxy Manager](https://nginxproxymanager.com) proxy logs | high error-rate IPs (scanners) |
| `app/utils.py` | re-export layer | thin barrel — imports from sub-modules below |
| `app/models.py` | data model | `Request`, `IPStats`, `aggregate()` |
| `app/ip_utils.py` | IP helpers | `parse_ip`, `whitelist_of`, `is_whitelisted`, `sort_ips`, `split_versions` |
| `app/flags.py` | detection rules | `flag_scanners`, `flag_denied_only`, `flag_malicious_patterns`, `by_total` |
| `app/utils/` | shared utilities | constants, I/O helpers, IP utils, models, reporting, whitelists, WHOIS |
| `app/web/` | Flask web UI | app factory, routes, background scan runner |
| `app/analyzer.py` | pipeline | `Analyzer` — discover → load → analyze → report → write |
| `app/whitelists.py` | whitelist module | provider CIDR constants, local/remote load, CIDR extraction |
| `app/flags.py` | detection rules | `flag_scanners`, `flag_denied_only`, `flag_malicious_patterns`, `by_total` |
| `app/bad_patterns.py` | pattern detection | malicious URL/file regex classification |
| `app/whois.py` | WHOIS query | `query_whois_subnet`, `consolidate_by_subnet` |
| `app/mikrotik.py` | RouterOS export | `mikrotik_script`, `write_mikrotik`, `split_cidr_versions` |
| `app/firewall.py` | RouterOS SSH client | `MikrotikFirewall` — connect, sync blocklist, audit state |
| `app/files.py` | I/O helpers | `read_lines`, `find_logs`, `write_csv`, `write_json`, etc. |
| `app/reporting.py` | text rendering | `Column`, `render_table`, `render_kv`, `timestamp_name` |
Both per-source scripts parse logs, aggregate per-IP behaviour, split
IPv4/IPv6, skip whitelisted provider ranges, detect malicious path patterns,
@@ -40,26 +35,33 @@ intrusion-detection/
├── app.py unified entry point
├── app/ application package
│ ├── __init__.py
│ ├── constants.py all config constants (paths, env vars, thresholds)
│ ├── scan.py consolidated scanner
│ ├── copyparty.py copyparty log adapter (~150 lines)
│ ├── npm.py NPM proxy log adapter (~150 lines)
│ ├── firewall.py MikroTik RouterOS SSH client
│ ├── utils.py thin re-export barrel (~90 lines)
│ ├── models.py Request, IPStats, aggregate()
│ ├── ip_utils.py IP parsing, whitelist lookups, sorting
│ ├── flags.py flag_scanners, flag_denied_only, flag_malicious_patterns
│ ├── analyzer.py Analyzer pipeline base class
│ ├── whitelists.py provider CIDR constants, local/remote load
│ ├── bad_patterns.py malicious URL/file regex patterns
│ ├── whois.py query_whois_subnet, consolidate_by_subnet
│ ├── copyparty.py copyparty log adapter (~150 lines)
│ ├── firewall.py MikroTik RouterOS SSH client
│ ├── flags.py flag_scanners, flag_denied_only, flag_malicious_patterns
│ ├── mikrotik.py RouterOS .rsc script generation
│ ├── files.py read_lines, find_logs, write_csv/json/lines
│ ├── reporting.py Column, render_table, render_kv, timestamp_name
│ ├── web.py Flask web UI (app factory, JSON API, pages)
│ ├── web_scan.py background scan runner + in-memory job store
│ ├── templates/ Jinja2 page templates (dashboard, scan, reports, …)
│ └── static/ style.css + app.js (dark-theme UI)
│ ├── npm.py NPM proxy log adapter (~150 lines)
│ ├── web/ Flask web UI
│ │ ├── __init__.py app factory + helpers + serve()
│ │ ├── routes.py all HTTP route definitions
│ │ └── web_scan.py background scan runner + in-memory job store
│ ├── scan/ scan pipeline
│ │ ├── __init__.py consolidated scanner (run_scan, ScanParams, ScanResult)
│ │ └── scan_state.py incremental log scan state (load/save)
│ ├── utils/ shared utilities
│ │ ├── constants.py all config constants (paths, env vars, thresholds)
│ │ ├── files.py read_lines, find_logs, write_csv/json/lines
│ │ ├── ip_utils.py IP parsing, whitelist lookups, sorting
│ │ ├── models.py Request, IPStats, aggregate()
│ │ ├── reporting.py Column, render_table, render_kv, timestamp_name
│ │ ├── utils.py shared CLI arg parser
│ │ ├── whitelists.py provider CIDR constants, local/remote load
│ │ ├── whois.py query_whois_subnet, consolidate_by_subnet
│ │ ├── blocklist_history.py git-backed cumulative blocklist
│ │ └── retention.py report file retention & pruning
│ ├── static/ style.css + app.js (dark-theme UI)
│ └── templates/ Jinja2 page templates (dashboard, scan, reports, …)
├── data/ whitelist source files (cached locally)
│ ├── openfactory/
│ │ └── geofeed.csv
@@ -80,22 +82,24 @@ matcher, a line parser, a flagging rule, and column definitions.
Core responsibilities by module:
| Module | Owns |
| --------------------- | -------------------------------------------------------------------------------- |
| `app/constants.py` | all config constants — paths, env vars, network/scan thresholds |
| `app/models.py` | `Request`, `IPStats`, `aggregate()` |
| `app/ip_utils.py` | `parse_ip`, `whitelist_of`, `is_whitelisted`, `sort_ips`, `split_versions` |
| `app/flags.py` | `flag_scanners`, `flag_denied_only`, `flag_malicious_patterns`, `by_total` |
| `app/analyzer.py` | `Analyzer` — discover → load → analyze → report → write |
| `app/whitelists.py` | provider CIDR constants, local-file / remote / built-in loading |
| `app/bad_patterns.py` | malicious URL/file regex classification |
| `app/whois.py` | `query_whois_subnet`, `consolidate_by_subnet` |
| `app/mikrotik.py` | `mikrotik_script`, `write_mikrotik`, `split_cidr_versions` |
| `app/firewall.py` | `MikrotikFirewall` — SSH connect, sync blocklist, audit state |
| `app/web.py` | Flask app factory, JSON API routes, page rendering |
| `app/web_scan.py` | background scan runner, in-memory job store, single-scan busy lock |
| `app/files.py` | `read_lines`, `find_logs`, `validate_dir`, `ensure_dirs`, `write_csv/json/lines` |
| `app/reporting.py` | `Column`, `render_table`, `render_kv`, `timestamp_name` |
| Module | Owns |
| -------------------------------- | -------------------------------------------------------------------------------- |
| `app/utils/constants.py` | all config constants — paths, env vars, network/scan thresholds |
| `app/utils/models.py` | `Request`, `IPStats`, `aggregate()` |
| `app/utils/ip_utils.py` | `parse_ip`, `whitelist_of`, `is_whitelisted`, `sort_ips`, `split_versions` |
| `app/flags.py` | `flag_scanners`, `flag_denied_only`, `flag_malicious_patterns`, `by_total` |
| `app/analyzer.py` | `Analyzer` — discover → load → analyze → report → write |
| `app/utils/whitelists.py` | provider CIDR constants, local-file / remote / built-in loading |
| `app/bad_patterns.py` | malicious URL/file regex classification |
| `app/utils/whois.py` | `query_whois_subnet`, `consolidate_by_subnet` |
| `app/mikrotik.py` | `mikrotik_script`, `write_mikrotik`, `split_cidr_versions` |
| `app/firewall.py` | `MikrotikFirewall` — SSH connect, sync blocklist, audit state |
| `app/web/` | Flask app factory, JSON API routes, page rendering, background scan runner |
| `app/scan/` | consolidated scan pipeline, incremental scan state |
| `app/utils/files.py` | `read_lines`, `find_logs`, `validate_dir`, `ensure_dirs`, `write_csv/json/lines` |
| `app/utils/reporting.py` | `Column`, `render_table`, `render_kv`, `timestamp_name` |
| `app/utils/blocklist_history.py` | git-backed cumulative blocklist reconstruction |
| `app/utils/retention.py` | report file retention & pruning |
Console output and saved reports are the **same string** (`Analyzer.text_report()`).
@@ -209,6 +213,17 @@ change report to `reports/app/YYYY-MM-DD-hh-mm-ss.json`: the number and list
of entries added / removed (complete-set delta), the full cumulative blocked
list, and the router sync changes.
### Report retention
Generated files under `reports/` are pruned automatically after each
consolidated scan: every subdirectory keeps at most
`REPORT_RETENTION_MAX_FILES` files (default 10), all newer than
`REPORT_RETENTION_DAYS` days (default 30). The blocklist source of truth
(`reports/app/data/blocklist_ipv4.txt` / `blocklist_ipv6.txt`) is always
protected and never pruned. Tune via `REPORT_RETENTION_DAYS` /
`REPORT_RETENTION_MAX_FILES`; `--dry-run` previews the cleanup without
deleting.
## Web UI
`python app.py` starts a **localhost-only** Flask web UI (default
+1 -1
View File
@@ -15,7 +15,7 @@ from __future__ import annotations
import argparse
import sys
from app.constants import WEB_HOST, WEB_PORT
from app.utils.constants import WEB_HOST, WEB_PORT
def _web_parser() -> argparse.ArgumentParser:
+8
View File
@@ -1 +1,9 @@
# Intrusion Detection System — app package
#
# Package structure:
# app/ core domain (analyzers, firewall, detection rules)
# app/web/ Flask web UI (app factory, routes, background scan runner)
# app/scan/ consolidated scan pipeline + incremental scan state
# app/utils/ shared utilities (constants, I/O, models, whitelists, etc.)
# app/static/ static assets (CSS, JS)
# app/templates/ Jinja2 templates
+7 -7
View File
@@ -13,15 +13,15 @@ from collections import Counter
from datetime import datetime
from typing import Any, Sequence
from .files import ensure_dirs, find_logs, read_lines, read_lines_from, validate_dir, write_csv, write_json, write_lines
from .utils.files import ensure_dirs, find_logs, read_lines, read_lines_from, validate_dir, write_csv, write_json, write_lines
from .flags import by_total, flag_malicious_patterns
from .ip_utils import is_whitelisted, split_versions
from .utils.ip_utils import is_whitelisted, split_versions
from .mikrotik import write_mikrotik
from .models import IPStats, Request, aggregate
from .reporting import Column, columns_header, columns_row, render_kv, render_table, timestamp_name
from .constants import DEFAULT_TOP, DEFAULT_TOP_PATHS
from . import scan_state
from .whitelists import refresh_whitelists
from .utils.models import IPStats, Request, aggregate
from .utils.reporting import Column, columns_header, columns_row, render_kv, render_table, timestamp_name
from .utils.constants import DEFAULT_TOP, DEFAULT_TOP_PATHS
from .scan import scan_state
from .utils.whitelists import refresh_whitelists
class Analyzer:
+5 -5
View File
@@ -13,16 +13,16 @@ import os
import re
from .analyzer import Analyzer
from .constants import (
from .utils.constants import (
COPYPARTY_LOG_PATH,
COPYPARTY_REPORT_DIR,
DEFAULT_MIN_DENIED,
)
from .ip_utils import split_versions
from .files import write_json, write_lines
from .utils.ip_utils import split_versions
from .utils.files import write_json, write_lines
from .flags import flag_denied_only
from .models import IPStats, Request
from .utils import arg_parser
from .utils.models import IPStats, Request
from .utils.utils import arg_parser
# "HH:MM:SS.mmm <ip> <port> LEVEL: message"
# System lines ("hsrv", "root", ...) have no port and are skipped.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -3892,5 +3892,251 @@
"creation-time": "2026-08-06",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "104.28.197.9",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "136.109.138.137",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "136.85.109.148",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "136.85.73.62",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "143.198.196.120",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "146.190.111.244",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "152.42.196.11",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "161.35.168.166",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "172.160.0.0/11",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "173.230.156.37",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "173.239.240.239",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "193.47.62.167",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "207.175.159.248",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "207.175.31.171",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "210.1.31.3",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "34.140.123.172",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "34.140.63.19",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "34.9.173.20",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "35.205.237.94",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "35.237.0.0/16",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "45.131.193.0/24",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "50.116.9.132",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "77.90.185.129",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "104.154.228.246",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "107.173.254.55",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "128.90.128.9",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "130.12.182.0/24",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "136.66.0.0/15",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "146.70.36.142",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "154.54.100.172",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "154.54.100.173",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "169.58.39.189",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "188.95.65.99",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "207.175.165.22",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "34.53.218.155",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "34.92.204.213",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "43.228.157.0/24",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "5.104.85.119",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "51.103.131.31",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "8.229.0.0/16",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "8.235.76.197",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
}
]
@@ -355,5 +355,30 @@
"creation-time": "2026-08-06",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a00:6340:2017:3810::/64",
"comment": "hosting",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2001:8d8:5ff:5f:82:165:82:154/128",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2600:3c15::/32",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2001:448a:a071:520:e18f:3d1f:944e:174d/128",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
}
]
File renamed without changes.
@@ -94,6 +94,20 @@
"hop-limit": "equal:1",
"protocol": "icmpv6"
},
{
"action": "accept",
"chain": "forward",
"comment": "ids",
"log": "no",
"log-prefix": "",
"src-address-list": "Openfactory"
},
{
"action": "drop",
"chain": "forward",
"comment": "ids",
"src-address-list": "Blocked"
},
{
"action": "accept",
"chain": "forward",
@@ -172,11 +186,5 @@
"chain": "input",
"comment": "ids",
"src-address-list": "Blocked"
},
{
"action": "drop",
"chain": "forward",
"comment": "ids",
"src-address-list": "Blocked"
}
]
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File diff suppressed because it is too large. Load diff
+115
View File
@@ -0,0 +1,115 @@
{
"P:\\copyparty\\2026-07-11.txt": 7403,
"P:\\copyparty\\2026-07-11.txt.1": 84622,
"P:\\copyparty\\2026-07-12.txt": 99031,
"P:\\copyparty\\2026-07-13.txt": 92896,
"P:\\copyparty\\2026-07-14.txt": 191781,
"P:\\copyparty\\2026-07-15.txt": 55394,
"P:\\copyparty\\2026-07-15.txt.1": 8770,
"P:\\copyparty\\2026-07-15.txt.2": 9606,
"P:\\copyparty\\2026-07-16.txt": 35715,
"P:\\copyparty\\2026-07-17.txt": 102469,
"P:\\copyparty\\2026-07-17.txt.1": 35820,
"P:\\copyparty\\2026-07-18.txt": 1784,
"P:\\copyparty\\2026-07-19.txt": 273815,
"P:\\copyparty\\2026-07-20.txt": 572443,
"P:\\copyparty\\2026-07-21.txt": 56055,
"P:\\copyparty\\2026-07-22.txt": 135922,
"P:\\copyparty\\2026-07-23.txt": 2468,
"P:\\copyparty\\2026-07-23.txt.1": 349125,
"P:\\copyparty\\2026-07-23.txt.2": 199809,
"P:\\copyparty\\2026-07-23.txt.3": 1023,
"P:\\copyparty\\2026-07-23.txt.4": 1023,
"P:\\copyparty\\2026-07-23.txt.5": 1041,
"P:\\copyparty\\2026-07-23.txt.6": 114042,
"P:\\copyparty\\2026-07-23.txt.7": 19621,
"P:\\copyparty\\2026-07-23.txt.8": 29806,
"P:\\copyparty\\2026-07-23.txt.9": 15526221,
"P:\\copyparty\\2026-07-24.txt": 99348,
"P:\\copyparty\\2026-07-25.txt": 63410,
"P:\\copyparty\\2026-07-26.txt": 217801,
"P:\\copyparty\\2026-07-27.txt": 66457,
"P:\\copyparty\\2026-07-28.txt": 59236,
"P:\\copyparty\\2026-07-29.txt": 153562,
"P:\\copyparty\\2026-07-29.txt.1": 24147,
"P:\\copyparty\\2026-07-30.txt": 1212354,
"P:\\copyparty\\2026-07-31.txt": 49026,
"P:\\copyparty\\2026-08-01.txt": 298970,
"P:\\copyparty\\2026-08-01.txt.1": 274541,
"P:\\copyparty\\2026-08-02.txt": 45372,
"P:\\copyparty\\2026-08-03.txt": 34302,
"P:\\copyparty\\2026-08-04.txt": 33282,
"P:\\copyparty\\2026-08-05.txt": 75013,
"P:\\copyparty\\2026-08-06.txt": 64948,
"P:\\copyparty\\2026-08-07.txt": 38873,
"Y:\\npm\\logs\\fallback_error.log": 20586,
"Y:\\npm\\logs\\fallback_http_access.log": 1966362,
"Y:\\npm\\logs\\fallback_http_error.log": 2930280,
"Y:\\npm\\logs\\fallback_stream_access.log": 0,
"Y:\\npm\\logs\\proxy-host-10_access.log": 495244,
"Y:\\npm\\logs\\proxy-host-10_error.log": 316,
"Y:\\npm\\logs\\proxy-host-11_access.log": 2618795,
"Y:\\npm\\logs\\proxy-host-11_error.log": 53360,
"Y:\\npm\\logs\\proxy-host-12_access.log": 3171885,
"Y:\\npm\\logs\\proxy-host-12_error.log": 40987,
"Y:\\npm\\logs\\proxy-host-13_access.log": 1032922,
"Y:\\npm\\logs\\proxy-host-13_error.log": 160173,
"Y:\\npm\\logs\\proxy-host-14_access.log": 0,
"Y:\\npm\\logs\\proxy-host-14_error.log": 0,
"Y:\\npm\\logs\\proxy-host-15_access.log": 0,
"Y:\\npm\\logs\\proxy-host-15_error.log": 0,
"Y:\\npm\\logs\\proxy-host-16_access.log": 0,
"Y:\\npm\\logs\\proxy-host-16_error.log": 0,
"Y:\\npm\\logs\\proxy-host-17_access.log": 249525,
"Y:\\npm\\logs\\proxy-host-17_error.log": 45568,
"Y:\\npm\\logs\\proxy-host-18_access.log": 210292,
"Y:\\npm\\logs\\proxy-host-18_error.log": 45944,
"Y:\\npm\\logs\\proxy-host-19_access.log": 56437,
"Y:\\npm\\logs\\proxy-host-19_error.log": 41305,
"Y:\\npm\\logs\\proxy-host-1_access.log": 421346,
"Y:\\npm\\logs\\proxy-host-1_error.log": 46031,
"Y:\\npm\\logs\\proxy-host-20_access.log": 2074017,
"Y:\\npm\\logs\\proxy-host-20_error.log": 50956,
"Y:\\npm\\logs\\proxy-host-21_access.log": 0,
"Y:\\npm\\logs\\proxy-host-21_error.log": 0,
"Y:\\npm\\logs\\proxy-host-22_access.log": 263312,
"Y:\\npm\\logs\\proxy-host-22_error.log": 3733,
"Y:\\npm\\logs\\proxy-host-23_access.log": 4268,
"Y:\\npm\\logs\\proxy-host-23_error.log": 4454,
"Y:\\npm\\logs\\proxy-host-24_access.log": 0,
"Y:\\npm\\logs\\proxy-host-24_error.log": 0,
"Y:\\npm\\logs\\proxy-host-25_access.log": 0,
"Y:\\npm\\logs\\proxy-host-25_error.log": 0,
"Y:\\npm\\logs\\proxy-host-26_access.log": 0,
"Y:\\npm\\logs\\proxy-host-26_error.log": 0,
"Y:\\npm\\logs\\proxy-host-27_access.log": 0,
"Y:\\npm\\logs\\proxy-host-27_error.log": 0,
"Y:\\npm\\logs\\proxy-host-28_access.log": 107302,
"Y:\\npm\\logs\\proxy-host-28_error.log": 116208,
"Y:\\npm\\logs\\proxy-host-29_access.log": 158185,
"Y:\\npm\\logs\\proxy-host-29_error.log": 90709,
"Y:\\npm\\logs\\proxy-host-2_access.log": 0,
"Y:\\npm\\logs\\proxy-host-2_error.log": 0,
"Y:\\npm\\logs\\proxy-host-30_access.log": 0,
"Y:\\npm\\logs\\proxy-host-30_error.log": 0,
"Y:\\npm\\logs\\proxy-host-31_access.log": 3846085,
"Y:\\npm\\logs\\proxy-host-31_error.log": 282448,
"Y:\\npm\\logs\\proxy-host-3_access.log": 658178,
"Y:\\npm\\logs\\proxy-host-3_error.log": 46739,
"Y:\\npm\\logs\\proxy-host-4_access.log": 0,
"Y:\\npm\\logs\\proxy-host-4_error.log": 0,
"Y:\\npm\\logs\\proxy-host-5_access.log": 0,
"Y:\\npm\\logs\\proxy-host-5_error.log": 0,
"Y:\\npm\\logs\\proxy-host-6_access.log": 0,
"Y:\\npm\\logs\\proxy-host-6_error.log": 0,
"Y:\\npm\\logs\\proxy-host-7_access.log": 0,
"Y:\\npm\\logs\\proxy-host-7_error.log": 0,
"Y:\\npm\\logs\\proxy-host-8_access.log": 558598,
"Y:\\npm\\logs\\proxy-host-8_error.log": 45468,
"Y:\\npm\\logs\\proxy-host-9_access.log": 34788693,
"Y:\\npm\\logs\\proxy-host-9_error.log": 292624,
"Y:\\npm\\logs\\stream-1_access.log": 0,
"Y:\\npm\\logs\\stream-1_error.log": 0,
"Y:\\npm\\logs\\stream-2_access.log": 0,
"Y:\\npm\\logs\\stream-2_error.log": 0
}
@@ -999,5 +999,67 @@
"137.131.8.253": "137.131.0.0/18",
"96.126.130.210": "96.126.130.0/24",
"34.38.186.58": "34.38.0.0/16",
"34.140.156.231": "34.140.144.0/20"
"34.140.156.231": "34.140.144.0/20",
"74.248.24.61": "74.248.0.0/15",
"104.28.197.9": "104.28.197.0/24",
"136.109.138.137": "136.109.128.0/17",
"173.230.156.37": "173.230.144.0/20",
"2600:3c15::2000:adff:fe60:c527": "2600:3c15::/32",
"34.9.173.20": "34.9.0.0/16",
"34.140.123.172": "34.140.112.0/20",
"207.175.159.248": "207.175.128.0/17",
"172.161.1.105": "172.160.0.0/11",
"193.47.62.167": "193.47.62.0/24",
"2a00:6340:2008:ec80:be24:11ff:fe7b:3c19": "2a00:6340::/32",
"152.42.196.11": "152.42.192.0/19",
"146.190.111.244": "146.190.96.0/20",
"45.131.193.191": "45.131.193.0/24",
"210.1.31.3": "210.1.31.0/24",
"172.206.67.244": "172.200.0.0/13",
"4.232.185.206": "4.224.0.0/12",
"136.85.109.148": "136.85.0.0/17",
"34.140.63.19": "34.140.48.0/20",
"4.225.166.176": "4.224.0.0/12",
"216.73.217.65": "216.73.216.0/22",
"161.35.168.166": "161.35.160.0/20",
"173.239.240.239": "173.239.240.0/24",
"207.175.31.171": "207.175.0.0/17",
"143.198.196.120": "143.198.192.0/20",
"172.213.227.73": "172.208.0.0/13",
"45.131.193.176": "45.131.193.0/24",
"50.116.9.132": "50.116.0.0/20",
"4.232.147.36": "4.224.0.0/12",
"35.205.237.94": "35.205.224.0/20",
"20.250.24.46": "20.192.0.0/10",
"136.85.73.62": "136.85.0.0/17",
"35.237.181.242": "35.237.0.0/16",
"2001:8d8:5ff:5f:82:165:82:154": "2001:8d8::/32",
"77.90.185.129": "77.90.185.0/24",
"216.73.216.135": "216.73.216.0/22",
"107.173.254.55": "107.173.0.0/16",
"43.228.157.178": "43.228.157.0/24",
"188.95.65.99": "188.95.65.0/24",
"20.215.211.30": "20.192.0.0/10",
"20.100.198.199": "20.64.0.0/10",
"104.154.228.246": "104.154.224.0/20",
"209.99.189.125": "209.99.184.0/21",
"128.90.128.9": "128.90.128.0/24",
"216.73.216.40": "216.73.216.0/22",
"4.232.185.87": "4.224.0.0/12",
"8.229.189.90": "8.229.0.0/16",
"20.100.191.218": "20.64.0.0/10",
"154.54.100.172": "154.54.100.0/22",
"34.53.218.155": "34.53.128.0/17",
"130.12.182.66": "130.12.182.0/24",
"8.235.76.197": "8.235.0.0/17",
"2001:448a:a071:520:e18f:3d1f:944e:174d": "2001:448a::/32",
"136.66.0.6": "136.66.0.0/15",
"5.104.85.119": "5.104.84.0/22",
"34.92.204.213": "34.92.0.0/16",
"207.175.165.22": "207.175.128.0/17",
"185.223.152.26": "185.223.152.0/24",
"146.70.36.142": "146.70.36.0/24",
"169.58.39.189": "169.58.0.0/17",
"51.103.131.31": "51.103.0.0/16",
"154.54.100.173": "154.54.100.0/22"
}
+4 -4
View File
@@ -13,7 +13,7 @@ import paramiko
from datetime import datetime
import shlex
from typing import Iterable
from .constants import (
from .utils.constants import (
BLOCKLIST_NAME,
MIKROTIK_DATA_DIR,
REPORT_DIR,
@@ -24,8 +24,9 @@ from .constants import (
SSH_TIMEOUT,
WHITELIST_NAMES,
)
from .files import write_lines
from .ip_utils import is_whitelisted
from .utils.files import write_lines
from .utils.ip_utils import is_whitelisted
from .utils.blocklist_history import compute_changes, cumulative_blocklist
class MikrotikFirewall:
@@ -190,7 +191,6 @@ class MikrotikFirewall:
Only router entries absent from the complete set — i.e. never blocked
by the system — are pruned. See ``app.blocklist_history``.
"""
from .blocklist_history import compute_changes, cumulative_blocklist
desired_ipv4 = set(blocked_ipv4)
desired_ipv6 = set(blocked_ipv6)
+2 -2
View File
@@ -7,8 +7,8 @@ Detection functions that identify hostile IPs based on aggregated stats.
from __future__ import annotations
from . import bad_patterns
from .constants import DEFAULT_ERROR_RATIO, DEFAULT_MIN_DENIED, DEFAULT_MIN_ERRORS
from .models import IPStats
from .utils.constants import DEFAULT_ERROR_RATIO, DEFAULT_MIN_DENIED, DEFAULT_MIN_ERRORS
from .utils.models import IPStats
def flag_scanners(stats: dict[str, IPStats], min_errors: int = DEFAULT_MIN_ERRORS,
+3 -3
View File
@@ -7,9 +7,9 @@ import ipaddress
from datetime import datetime
from typing import Iterable
from .ip_utils import is_ipv4, is_ipv6, is_whitelisted, parse_ip
from .whitelists import WHITELISTS
from .constants import BLOCKLIST_NAME
from .utils.ip_utils import is_ipv4, is_ipv6, is_whitelisted, parse_ip
from .utils.whitelists import WHITELISTS
from .utils.constants import BLOCKLIST_NAME
def split_cidr_versions(targets: Iterable[str]) -> tuple[list[str], list[str]]:
+4 -4
View File
@@ -13,16 +13,16 @@ import re
from collections import Counter
from .analyzer import Analyzer
from .constants import (
from .utils.constants import (
DEFAULT_ERROR_RATIO,
DEFAULT_MIN_ERRORS,
NPM_LOG_PATH,
NPM_REPORT_DIR,
)
from .files import write_csv
from .utils.files import write_csv
from .flags import flag_scanners
from .models import Request
from .utils import arg_parser
from .utils.models import Request
from .utils.utils import arg_parser
# [02/Aug/2026:05:01:31 +0200] - 401 401 - GET https host "/path"
# [Client IP] [Length N] [Gzip X] [Sent-to IP] "UA" "Referer"
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -7,6 +7,7 @@
103.221.220.62/32
103.76.88.36/32
103.76.88.37/32
104.154.228.246/32
104.168.93.75/32
104.196.62.35/32
104.199.182.104/32
@@ -17,6 +18,7 @@
104.248.151.168/32
104.248.5.228/32
104.251.181.106/32
104.28.197.9/32
104.28.215.219/32
104.28.215.220/32
104.28.222.131/32
@@ -28,6 +30,7 @@
106.117.109.102/32
106.63.0.0/17
107.170.9.103/32
107.173.254.55/32
108.130.204.104/32
110.176.0.0/13
111.113.88.210/32
@@ -50,6 +53,7 @@
128.199.182.152/32
128.199.182.55/32
128.90.128.13/32
128.90.128.9/32
128.90.141.10/32
129.212.237.196/32
13.126.86.18/32
@@ -58,8 +62,7 @@
13.83.161.80/32
130.12.180.126/32
130.12.180.39/32
130.12.182.12/32
130.12.182.254/32
130.12.182.0/24
130.131.231.171/32
132.196.11.13/32
132.196.83.33/32
@@ -76,6 +79,7 @@
136.107.217.8/32
136.108.11.195/32
136.108.15.119/32
136.109.138.137/32
136.109.87.37/32
136.110.80.8/32
136.115.17.125/32
@@ -86,10 +90,12 @@
136.144.43.127/32
136.64.132.60/32
136.64.51.224/32
136.66.128.85/32
136.66.153.34/32
136.66.0.0/15
136.70.149.147/32
136.70.153.123/32
136.85.109.148/32
136.85.73.62/32
137.131.8.253/32
138.124.103.234/32
138.197.104.211/32
138.197.191.87/32
@@ -106,6 +112,7 @@
142.93.62.168/32
143.110.178.165/32
143.110.217.244/32
143.198.196.120/32
143.198.25.99/32
143.198.6.225/32
143.20.64.236/32
@@ -121,10 +128,12 @@
144.172.97.164/32
144.76.19.27/32
145.132.103.19/32
146.190.111.244/32
146.190.63.248/32
146.190.63.48/32
146.190.83.166/32
146.70.194.0/24
146.70.36.142/32
146.70.40.68/32
147.182.149.75/32
147.93.168.0/22
@@ -136,8 +145,11 @@
151.240.45.69/32
152.39.198.115/32
152.42.137.175/32
152.42.196.11/32
152.53.242.93/32
153.75.89.249/32
154.54.100.172/32
154.54.100.173/32
155.2.215.98/32
157.143.3.35/32
157.245.105.107/32
@@ -164,6 +176,7 @@
160.179.166.222/32
161.118.245.12/32
161.118.251.181/32
161.35.168.166/32
162.141.167.14/32
162.141.167.71/32
162.243.79.174/32
@@ -192,11 +205,11 @@
168.144.174.42/32
168.144.83.150/32
168.62.180.116/32
169.58.39.189/32
170.64.144.116/32
170.64.156.114/32
171.104.81.195/32
172.170.254.20/32
172.171.198.214/32
172.160.0.0/11
172.196.32.64/32
172.200.0.0/13
172.208.0.0/13
@@ -206,9 +219,11 @@
172.86.119.249/32
172.86.122.106/32
172.98.33.251/32
173.230.156.37/32
173.239.196.33/32
173.239.196.35/32
173.239.240.222/32
173.239.240.239/32
173.249.34.197/32
176.227.240.17/32
176.227.240.61/32
@@ -237,6 +252,7 @@
188.166.227.85/32
188.166.245.173/32
188.213.202.0/24
188.95.65.99/32
191.232.0.0/13
192.133.76.0/23
192.133.77.15/32
@@ -252,6 +268,7 @@
193.36.225.0/24
193.37.32.0/24
193.37.33.0/24
193.47.62.167/32
193.47.62.168/32
194.102.104.29/32
194.156.79.68/32
@@ -286,13 +303,17 @@
206.81.12.187/32
206.81.24.227/32
207.154.197.113/32
207.175.159.248/32
207.175.165.22/32
207.175.20.232/32
207.175.31.171/32
207.241.173.229/32
208.84.102.195/32
209.126.2.173/32
209.87.169.0/24
209.97.166.251/32
209.99.184.0/21
210.1.31.3/32
211.175.22.56/32
213.111.158.220/32
213.35.113.47/32
@@ -341,6 +362,9 @@
34.125.42.15/32
34.131.251.163/32
34.139.141.56/32
34.140.123.172/32
34.140.156.231/32
34.140.63.19/32
34.141.160.140/32
34.145.62.28/32
34.146.12.12/32
@@ -368,12 +392,14 @@
34.26.191.118/32
34.26.219.248/32
34.31.88.250/32
34.38.186.58/32
34.39.210.94/32
34.40.240.124/32
34.42.48.100/32
34.47.183.174/32
34.47.194.183/32
34.48.168.223/32
34.53.218.155/32
34.55.200.45/32
34.57.157.110/32
34.59.187.134/32
@@ -393,10 +419,12 @@
34.84.59.119/32
34.86.126.198/32
34.86.217.208/32
34.9.173.20/32
34.90.87.32/32
34.90.88.37/32
34.91.134.67/32
34.91.243.226/32
34.92.204.213/32
34.94.172.72/32
34.95.238.121/32
34.95.239.96/32
@@ -415,12 +443,12 @@
35.201.159.247/32
35.204.141.252/32
35.204.88.252/32
35.205.237.94/32
35.230.52.27/32
35.231.0.0/17
35.233.191.179/32
35.234.181.205/32
35.237.138.104/32
35.237.178.50/32
35.237.0.0/16
35.243.173.211/32
35.243.223.147/32
35.255.40.65/32
@@ -436,13 +464,12 @@
4.224.0.0/12
4.246.70.112/32
41.143.154.1/32
43.228.157.102/32
43.228.157.191/32
43.228.157.0/24
43.98.201.177/32
44.224.0.0/11
45.130.203.154/32
45.130.203.177/32
45.131.193.139/32
45.131.193.0/24
45.131.195.0/24
45.134.20.116/32
45.134.20.128/32
@@ -468,11 +495,14 @@
46.23.108.234/32
46.232.235.0/24
47.85.160.47/32
5.104.85.119/32
5.161.225.116/32
5.161.62.209/32
5.253.247.16/32
5.255.119.161/32
5.34.213.142/32
50.116.9.132/32
51.103.131.31/32
51.103.133.211/32
51.103.152.96/32
51.107.190.246/32
@@ -522,13 +552,14 @@
74.248.0.0/15
74.248.33.172/32
74.7.0.0/16
77.90.185.129/32
77.90.185.230/32
8.229.1.130/32
8.229.130.50/32
8.229.0.0/16
8.231.78.19/32
8.234.157.73/32
8.234.207.247/32
8.235.114.162/32
8.235.76.197/32
80.91.86.169/32
80.94.92.167/32
81.171.72.135/32
@@ -570,5 +601,6 @@
93.152.221.13/32
94.154.43.0/24
95.85.238.18/32
96.126.130.210/32
98.159.36.147/32
98.159.37.147/32
@@ -1,12 +1,13 @@
2001:448a:a071:520:e18f:3d1f:944e:174d/128
2001:4ca0:108:42::24/128
2001:8d8:5ff:5f:82:165:82:154/128
2001:ba0:24c:a500::1/128
2400:8901::2000:62ff:fe9a:e1c2/128
2400:8901::2000:beff:fea3:5a44/128
2406:da18:525:0:a23e:e8f6:3ea1:4c2c/128
2600:3000::/32
2600:3c09::2000:5cff:fe99:c802/128
2600:3c15::2000:53ff:fe31:8c0b/128
2600:3c15::2000:9cff:fef0:8ad6/128
2600:3c15::/32
2602:fa59::/40
2a00:6340:2008:ec80:be24:11ff:fe3b:4058/128
2a00:6340::/32
@@ -0,0 +1,25 @@
copyparty log analysis report
generated: 2026-08-06T09:39:10
log path: P:\copyparty
log files: 42
total requests: 2
unique IPs: 1 (IPv4 1 / IPv6 0)
error requests: 0
unique denied paths: 0
denied requests: 0
banned IPs: 0
authenticated users: {}
denied-only ips: 0
whitelisted IPs seen: 0
block candidates: 0
== top 30 IPs ==
ip total denied banned first last users whitelist
-----------------------------------------------------------------------------------
104.196.222.45 2 0 0 01:50:33.244 01:50:33.295 *
== top 20 denied paths ==
== Denied-only IPs (0) ==
never authenticated -- ban candidates
@@ -0,0 +1,51 @@
copyparty log analysis report
generated: 2026-08-06T11:48:58
log path: P:\copyparty
log files: 42
total requests: 256
unique IPs: 2 (IPv4 2 / IPv6 0)
error requests: 124
unique denied paths: 123
denied requests: 124
banned IPs: 1
authenticated users: {}
denied-only ips: 2
whitelisted IPs seen: 0
block candidates: 2
== top 30 IPs ==
ip total denied banned first last users whitelist
-----------------------------------------------------------------------------------
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
== top 20 denied paths ==
2 /xmlrpc.php
1 /wp-content/plugins/hellopress/wp_filemanager.php
1 /this_is_a_new_hello_world.php
1 /admin.php
1 /public/css.php
1 /classwithtostring.php
1 /wp-includes/block-supports
1 /wp-content/admin.php
1 /gelay.php
1 /wp-admin/images/admin.php
1 /adminfuns.php
1 /wp-admin/css
1 /admin/controller/extension/extension/ultra.php
1 /about.php
1 /wp-admin/css/colors/index.php
1 /f35.php
1 /wp-includes/js
1 /inputs.php
1 /wp-admin/css/colors
1 /alfa.php
== Denied-only IPs (2) ==
never authenticated -- ban candidates
-- IPv4 (2) --
ip total denied banned first last users whitelist
-----------------------------------------------------------------------------------
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
@@ -0,0 +1,191 @@
copyparty log analysis report
generated: 2026-08-06T11:51:47
log path: P:\copyparty
log files: 42
total requests: 25295
unique IPs: 246 (IPv4 202 / IPv6 44)
error requests: 6581
unique denied paths: 2002
denied requests: 6581
banned IPs: 26
authenticated users: {'admin': 519, 'corky': 78}
denied-only ips: 110
whitelisted IPs seen: 19
block candidates: 112
== top 30 IPs ==
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
... 216 more IPs omitted
== top 20 denied paths ==
52 /admin.php
51 /.env
44 /wp-content/plugins/hellopress/wp_filemanager.php
44 /this_is_a_new_hello_world.php
35 /1.php
34 /.git/config
33 /classwithtostring.php
33 /222.php
33 /wp-content/uploads
32 /wp-content/admin.php
29 /8.php
27 /file.php
27 /mac.php
26 /wp.php
26 /edit.php
26 /aa.php
25 /images.php
25 /ops.php
24 /f35.php
24 /x.php
== Denied-only IPs (110) ==
never authenticated -- ban candidates
-- IPv4 (107) --
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
20.203.179.12 250 125 0 17:33:20.484 17:33:29.742 *
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
158.158.105.63 208 104 0 11:24:12.912 23:00:49.043 *
4.223.71.149 209 104 0 00:26:55.320 00:27:19.244 *
135.225.93.215 203 101 0 02:32:24.496 02:32:32.326 *
20.9.85.55 203 101 0 15:43:36.450 15:44:20.170 *
20.91.208.34 203 101 0 22:07:01.428 22:07:20.883 *
52.238.192.78 203 101 0 00:04:31.589 00:05:07.114 *
172.213.208.13 192 96 0 13:27:56.743 19:14:00.938 *
172.213.244.85 165 82 0 17:01:49.042 17:01:52.331 *
20.206.105.145 157 78 0 04:06:08.085 04:06:29.772 *
51.120.83.160 144 72 0 15:40:29.699 15:40:39.446 *
4.223.73.90 106 53 0 19:50:04.916 19:50:11.164 *
20.91.203.45 94 47 0 16:27:01.288 16:27:10.455 *
20.197.192.193 88 44 0 13:45:32.377 13:45:43.108 *
74.248.24.145 74 37 0 09:21:37.839 09:21:43.127 *
172.213.144.209 70 35 0 07:52:16.066 07:52:17.778 *
35.198.180.224 46 22 0 14:14:37.617 14:14:48.930 *
45.148.10.62 98 22 40 07:53:03.360 03:15:12.651 *
45.148.10.244 109 18 70 04:53:37.585 09:56:59.103 *
45.148.10.120 33 16 0 14:24:06.542 17:06:11.688 *
34.39.210.94 24 12 0 19:31:07.030 19:31:07.101 *
195.178.110.31 49 11 20 02:27:56.164 02:27:58.425 *
195.178.110.223 37 10 13 01:31:40.464 01:56:49.503 *
34.95.239.96 20 10 0 11:25:18.487 11:25:18.532 *
136.108.11.195 25 9 7 08:33:11.182 08:33:13.921 *
139.59.118.17 180 9 157 08:21:30.247 08:22:03.812 *
146.70.40.68 30 9 10 18:55:47.310 18:55:48.145 *
147.182.149.75 40 9 21 21:50:17.837 21:50:45.474 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
163.7.11.71 93 9 72 07:24:55.235 07:25:05.144 *
167.99.181.249 40 9 21 21:50:26.091 21:51:01.239 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
209.99.189.190 77 9 59 17:04:48.190 09:53:52.093 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.105.30.251 29 9 9 15:55:43.824 15:55:49.547 *
34.23.104.90 25 9 7 14:40:59.025 14:41:01.713 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
45.67.85.190 32 9 11 19:41:44.132 19:41:46.806 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
85.204.70.100 30 9 10 13:55:11.862 13:55:12.567 *
91.192.10.86 31 9 10 13:38:54.986 13:38:56.159 *
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.155 57 8 0 09:10:16.072 09:10:19.329 *
45.148.10.194 58 8 0 15:46:42.822 15:46:45.473 *
45.148.10.247 57 8 0 00:58:56.398 00:58:59.599 *
72.146.20.230 14 7 0 03:01:31.244 03:01:31.427 *
209.99.189.152 13 6 0 18:03:04.845 18:03:12.906 *
162.243.79.174 11 5 0 12:20:28.790 12:20:40.350 *
51.79.208.246 10 5 0 13:50:27.669 13:50:29.418 *
91.92.241.196 11 5 0 13:55:12.175 13:05:16.007 *
94.154.43.184 10 5 0 11:23:26.214 09:31:40.319 *
195.178.110.211 8 4 0 19:35:03.504 20:22:13.338 *
163.7.13.115 5 2 0 14:06:27.842 14:06:29.745 *
45.138.16.114 5 2 0 03:09:59.971 03:10:00.217 *
45.148.10.95 4 2 0 21:05:26.356 14:40:26.566 *
91.92.41.115 8 2 0 14:44:48.975 14:44:54.158 *
94.154.43.179 5 2 0 13:27:23.753 04:38:17.921 *
107.170.9.103 2 1 0 00:19:26.062 00:19:26.062 *
129.212.237.196 2 1 0 09:23:08.470 09:23:08.471 *
134.209.162.128 2 1 0 00:43:12.731 00:43:12.731 *
157.245.63.62 2 1 0 08:13:33.142 08:13:33.142 *
158.101.144.198 2 1 0 14:30:06.125 14:30:06.125 *
165.245.185.158 2 1 0 09:20:47.477 09:20:47.477 *
195.178.110.159 2 1 0 20:41:43.691 20:41:43.691 *
2.57.122.173 2 1 0 12:10:19.177 12:10:19.177 *
23.180.120.147 4 1 0 13:53:30.303 13:53:30.473 *
31.58.51.184 4 1 0 15:07:53.176 15:07:58.514 *
34.125.42.15 2 1 0 21:39:44.709 21:39:44.709 *
34.91.243.226 2 1 0 19:51:57.606 19:51:57.606 *
35.231.100.82 2 1 0 15:36:23.715 15:36:23.715 *
35.233.191.179 2 1 0 00:16:07.188 00:16:07.199 *
35.95.56.230 3 1 0 02:29:40.010 02:29:40.562 *
43.98.201.177 2 1 0 01:01:05.988 01:01:05.988 *
45.139.104.172 2 1 0 03:14:49.950 03:14:49.950 *
64.226.123.37 2 1 0 21:33:32.148 21:33:32.148 *
8.229.130.50 2 1 0 19:23:37.001 19:23:37.002 *
93.123.109.167 2 1 0 04:39:35.474 04:39:35.474 *
94.154.43.183 3 1 0 21:50:39.582 00:01:42.127 *
94.154.43.185 3 1 0 01:40:53.903 04:02:34.085 *
94.154.43.186 3 1 0 21:07:26.439 13:43:18.923 *
94.154.43.188 5 1 0 02:45:01.636 11:09:54.264 *
-- IPv6 (3) --
ip total denied banned first last users whitelist
--------------------------------------------------------------------------------------------------------
2a04:4e40:e000:0:d09:97ab:43b1:a59a 4 2 0 14:41:30.905 14:41:30.922 *
2600:3c15::2000:53ff:fe31:8c0b 2 1 0 12:35:18.643 12:35:18.643 *
2602:fa59:10:a3a::1 2 1 0 02:10:02.531 02:10:02.532 *
@@ -0,0 +1,24 @@
copyparty log analysis report
generated: 2026-08-06T13:03:30
log path: P:\copyparty
log files: 42
total requests: 0
unique IPs: 0 (IPv4 0 / IPv6 0)
error requests: 0
unique denied paths: 0
denied requests: 0
banned IPs: 0
authenticated users: {}
denied-only ips: 0
whitelisted IPs seen: 0
block candidates: 0
== top 30 IPs ==
ip total denied banned first last users whitelist
--------------------------------------------------------
== top 20 denied paths ==
== Denied-only IPs (0) ==
never authenticated -- ban candidates
@@ -0,0 +1,191 @@
copyparty log analysis report
generated: 2026-08-06T13:21:41
log path: P:\copyparty
log files: 42
total requests: 25295
unique IPs: 246 (IPv4 202 / IPv6 44)
error requests: 6581
unique denied paths: 2002
denied requests: 6581
banned IPs: 26
authenticated users: {'admin': 519, 'corky': 78}
denied-only ips: 110
whitelisted IPs seen: 19
block candidates: 112
== top 30 IPs ==
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
... 216 more IPs omitted
== top 20 denied paths ==
52 /admin.php
51 /.env
44 /wp-content/plugins/hellopress/wp_filemanager.php
44 /this_is_a_new_hello_world.php
35 /1.php
34 /.git/config
33 /classwithtostring.php
33 /222.php
33 /wp-content/uploads
32 /wp-content/admin.php
29 /8.php
27 /file.php
27 /mac.php
26 /wp.php
26 /edit.php
26 /aa.php
25 /images.php
25 /ops.php
24 /f35.php
24 /x.php
== Denied-only IPs (110) ==
never authenticated -- ban candidates
-- IPv4 (107) --
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
20.203.179.12 250 125 0 17:33:20.484 17:33:29.742 *
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
158.158.105.63 208 104 0 11:24:12.912 23:00:49.043 *
4.223.71.149 209 104 0 00:26:55.320 00:27:19.244 *
135.225.93.215 203 101 0 02:32:24.496 02:32:32.326 *
20.9.85.55 203 101 0 15:43:36.450 15:44:20.170 *
20.91.208.34 203 101 0 22:07:01.428 22:07:20.883 *
52.238.192.78 203 101 0 00:04:31.589 00:05:07.114 *
172.213.208.13 192 96 0 13:27:56.743 19:14:00.938 *
172.213.244.85 165 82 0 17:01:49.042 17:01:52.331 *
20.206.105.145 157 78 0 04:06:08.085 04:06:29.772 *
51.120.83.160 144 72 0 15:40:29.699 15:40:39.446 *
4.223.73.90 106 53 0 19:50:04.916 19:50:11.164 *
20.91.203.45 94 47 0 16:27:01.288 16:27:10.455 *
20.197.192.193 88 44 0 13:45:32.377 13:45:43.108 *
74.248.24.145 74 37 0 09:21:37.839 09:21:43.127 *
172.213.144.209 70 35 0 07:52:16.066 07:52:17.778 *
35.198.180.224 46 22 0 14:14:37.617 14:14:48.930 *
45.148.10.62 98 22 40 07:53:03.360 03:15:12.651 *
45.148.10.244 109 18 70 04:53:37.585 09:56:59.103 *
45.148.10.120 33 16 0 14:24:06.542 17:06:11.688 *
34.39.210.94 24 12 0 19:31:07.030 19:31:07.101 *
195.178.110.31 49 11 20 02:27:56.164 02:27:58.425 *
195.178.110.223 37 10 13 01:31:40.464 01:56:49.503 *
34.95.239.96 20 10 0 11:25:18.487 11:25:18.532 *
136.108.11.195 25 9 7 08:33:11.182 08:33:13.921 *
139.59.118.17 180 9 157 08:21:30.247 08:22:03.812 *
146.70.40.68 30 9 10 18:55:47.310 18:55:48.145 *
147.182.149.75 40 9 21 21:50:17.837 21:50:45.474 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
163.7.11.71 93 9 72 07:24:55.235 07:25:05.144 *
167.99.181.249 40 9 21 21:50:26.091 21:51:01.239 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
209.99.189.190 77 9 59 17:04:48.190 09:53:52.093 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.105.30.251 29 9 9 15:55:43.824 15:55:49.547 *
34.23.104.90 25 9 7 14:40:59.025 14:41:01.713 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
45.67.85.190 32 9 11 19:41:44.132 19:41:46.806 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
85.204.70.100 30 9 10 13:55:11.862 13:55:12.567 *
91.192.10.86 31 9 10 13:38:54.986 13:38:56.159 *
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.155 57 8 0 09:10:16.072 09:10:19.329 *
45.148.10.194 58 8 0 15:46:42.822 15:46:45.473 *
45.148.10.247 57 8 0 00:58:56.398 00:58:59.599 *
72.146.20.230 14 7 0 03:01:31.244 03:01:31.427 *
209.99.189.152 13 6 0 18:03:04.845 18:03:12.906 *
162.243.79.174 11 5 0 12:20:28.790 12:20:40.350 *
51.79.208.246 10 5 0 13:50:27.669 13:50:29.418 *
91.92.241.196 11 5 0 13:55:12.175 13:05:16.007 *
94.154.43.184 10 5 0 11:23:26.214 09:31:40.319 *
195.178.110.211 8 4 0 19:35:03.504 20:22:13.338 *
163.7.13.115 5 2 0 14:06:27.842 14:06:29.745 *
45.138.16.114 5 2 0 03:09:59.971 03:10:00.217 *
45.148.10.95 4 2 0 21:05:26.356 14:40:26.566 *
91.92.41.115 8 2 0 14:44:48.975 14:44:54.158 *
94.154.43.179 5 2 0 13:27:23.753 04:38:17.921 *
107.170.9.103 2 1 0 00:19:26.062 00:19:26.062 *
129.212.237.196 2 1 0 09:23:08.470 09:23:08.471 *
134.209.162.128 2 1 0 00:43:12.731 00:43:12.731 *
157.245.63.62 2 1 0 08:13:33.142 08:13:33.142 *
158.101.144.198 2 1 0 14:30:06.125 14:30:06.125 *
165.245.185.158 2 1 0 09:20:47.477 09:20:47.477 *
195.178.110.159 2 1 0 20:41:43.691 20:41:43.691 *
2.57.122.173 2 1 0 12:10:19.177 12:10:19.177 *
23.180.120.147 4 1 0 13:53:30.303 13:53:30.473 *
31.58.51.184 4 1 0 15:07:53.176 15:07:58.514 *
34.125.42.15 2 1 0 21:39:44.709 21:39:44.709 *
34.91.243.226 2 1 0 19:51:57.606 19:51:57.606 *
35.231.100.82 2 1 0 15:36:23.715 15:36:23.715 *
35.233.191.179 2 1 0 00:16:07.188 00:16:07.199 *
35.95.56.230 3 1 0 02:29:40.010 02:29:40.562 *
43.98.201.177 2 1 0 01:01:05.988 01:01:05.988 *
45.139.104.172 2 1 0 03:14:49.950 03:14:49.950 *
64.226.123.37 2 1 0 21:33:32.148 21:33:32.148 *
8.229.130.50 2 1 0 19:23:37.001 19:23:37.002 *
93.123.109.167 2 1 0 04:39:35.474 04:39:35.474 *
94.154.43.183 3 1 0 21:50:39.582 00:01:42.127 *
94.154.43.185 3 1 0 01:40:53.903 04:02:34.085 *
94.154.43.186 3 1 0 21:07:26.439 13:43:18.923 *
94.154.43.188 5 1 0 02:45:01.636 11:09:54.264 *
-- IPv6 (3) --
ip total denied banned first last users whitelist
--------------------------------------------------------------------------------------------------------
2a04:4e40:e000:0:d09:97ab:43b1:a59a 4 2 0 14:41:30.905 14:41:30.922 *
2600:3c15::2000:53ff:fe31:8c0b 2 1 0 12:35:18.643 12:35:18.643 *
2602:fa59:10:a3a::1 2 1 0 02:10:02.531 02:10:02.532 *
@@ -0,0 +1,24 @@
copyparty log analysis report
generated: 2026-08-06T14:43:58
log path: P:\copyparty
log files: 42
total requests: 0
unique IPs: 0 (IPv4 0 / IPv6 0)
error requests: 0
unique denied paths: 0
denied requests: 0
banned IPs: 0
authenticated users: {}
denied-only ips: 0
whitelisted IPs seen: 0
block candidates: 0
== top 30 IPs ==
ip total denied banned first last users whitelist
--------------------------------------------------------
== top 20 denied paths ==
== Denied-only IPs (0) ==
never authenticated -- ban candidates
@@ -0,0 +1,192 @@
copyparty log analysis report
generated: 2026-08-06T15:09:10
log path: P:\copyparty
log files: 42
total requests: 25297
unique IPs: 246 (IPv4 202 / IPv6 44)
error requests: 6582
unique denied paths: 2002
denied requests: 6582
banned IPs: 26
authenticated users: {'admin': 519, 'corky': 78}
denied-only ips: 111
whitelisted IPs seen: 19
block candidates: 113
== top 30 IPs ==
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
... 216 more IPs omitted
== top 20 denied paths ==
52 /.env
52 /admin.php
44 /wp-content/plugins/hellopress/wp_filemanager.php
44 /this_is_a_new_hello_world.php
35 /1.php
34 /.git/config
33 /classwithtostring.php
33 /222.php
33 /wp-content/uploads
32 /wp-content/admin.php
29 /8.php
27 /file.php
27 /mac.php
26 /wp.php
26 /edit.php
26 /aa.php
25 /images.php
25 /ops.php
24 /f35.php
24 /x.php
== Denied-only IPs (111) ==
never authenticated -- ban candidates
-- IPv4 (108) --
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
20.203.179.12 250 125 0 17:33:20.484 17:33:29.742 *
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
158.158.105.63 208 104 0 11:24:12.912 23:00:49.043 *
4.223.71.149 209 104 0 00:26:55.320 00:27:19.244 *
135.225.93.215 203 101 0 02:32:24.496 02:32:32.326 *
20.9.85.55 203 101 0 15:43:36.450 15:44:20.170 *
20.91.208.34 203 101 0 22:07:01.428 22:07:20.883 *
52.238.192.78 203 101 0 00:04:31.589 00:05:07.114 *
172.213.208.13 192 96 0 13:27:56.743 19:14:00.938 *
172.213.244.85 165 82 0 17:01:49.042 17:01:52.331 *
20.206.105.145 157 78 0 04:06:08.085 04:06:29.772 *
51.120.83.160 144 72 0 15:40:29.699 15:40:39.446 *
4.223.73.90 106 53 0 19:50:04.916 19:50:11.164 *
20.91.203.45 94 47 0 16:27:01.288 16:27:10.455 *
20.197.192.193 88 44 0 13:45:32.377 13:45:43.108 *
74.248.24.145 74 37 0 09:21:37.839 09:21:43.127 *
172.213.144.209 70 35 0 07:52:16.066 07:52:17.778 *
35.198.180.224 46 22 0 14:14:37.617 14:14:48.930 *
45.148.10.62 98 22 40 07:53:03.360 03:15:12.651 *
45.148.10.244 109 18 70 04:53:37.585 09:56:59.103 *
45.148.10.120 33 16 0 14:24:06.542 17:06:11.688 *
34.39.210.94 24 12 0 19:31:07.030 19:31:07.101 *
195.178.110.31 49 11 20 02:27:56.164 02:27:58.425 *
195.178.110.223 37 10 13 01:31:40.464 01:56:49.503 *
34.95.239.96 20 10 0 11:25:18.487 11:25:18.532 *
136.108.11.195 25 9 7 08:33:11.182 08:33:13.921 *
139.59.118.17 180 9 157 08:21:30.247 08:22:03.812 *
146.70.40.68 30 9 10 18:55:47.310 18:55:48.145 *
147.182.149.75 40 9 21 21:50:17.837 21:50:45.474 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
163.7.11.71 93 9 72 07:24:55.235 07:25:05.144 *
167.99.181.249 40 9 21 21:50:26.091 21:51:01.239 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
209.99.189.190 77 9 59 17:04:48.190 09:53:52.093 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.105.30.251 29 9 9 15:55:43.824 15:55:49.547 *
34.23.104.90 25 9 7 14:40:59.025 14:41:01.713 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
45.67.85.190 32 9 11 19:41:44.132 19:41:46.806 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
85.204.70.100 30 9 10 13:55:11.862 13:55:12.567 *
91.192.10.86 31 9 10 13:38:54.986 13:38:56.159 *
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.155 57 8 0 09:10:16.072 09:10:19.329 *
45.148.10.194 58 8 0 15:46:42.822 15:46:45.473 *
45.148.10.247 57 8 0 00:58:56.398 00:58:59.599 *
72.146.20.230 14 7 0 03:01:31.244 03:01:31.427 *
209.99.189.152 13 6 0 18:03:04.845 18:03:12.906 *
162.243.79.174 11 5 0 12:20:28.790 12:20:40.350 *
51.79.208.246 10 5 0 13:50:27.669 13:50:29.418 *
91.92.241.196 11 5 0 13:55:12.175 13:05:16.007 *
94.154.43.184 10 5 0 11:23:26.214 09:31:40.319 *
195.178.110.211 8 4 0 19:35:03.504 20:22:13.338 *
163.7.13.115 5 2 0 14:06:27.842 14:06:29.745 *
45.138.16.114 5 2 0 03:09:59.971 03:10:00.217 *
45.148.10.95 4 2 0 21:05:26.356 14:40:26.566 *
91.92.41.115 8 2 0 14:44:48.975 14:44:54.158 *
94.154.43.179 5 2 0 13:27:23.753 04:38:17.921 *
107.170.9.103 2 1 0 00:19:26.062 00:19:26.062 *
129.212.237.196 2 1 0 09:23:08.470 09:23:08.471 *
134.209.162.128 2 1 0 00:43:12.731 00:43:12.731 *
157.245.63.62 2 1 0 08:13:33.142 08:13:33.142 *
158.101.144.198 2 1 0 14:30:06.125 14:30:06.125 *
165.245.185.158 2 1 0 09:20:47.477 09:20:47.477 *
195.178.110.159 2 1 0 20:41:43.691 20:41:43.691 *
2.57.122.173 2 1 0 12:10:19.177 12:10:19.177 *
23.180.120.147 4 1 0 13:53:30.303 13:53:30.473 *
31.58.51.184 4 1 0 15:07:53.176 15:07:58.514 *
34.125.42.15 2 1 0 21:39:44.709 21:39:44.709 *
34.91.243.226 2 1 0 19:51:57.606 19:51:57.606 *
35.231.100.82 2 1 0 15:36:23.715 15:36:23.715 *
35.233.191.179 2 1 0 00:16:07.188 00:16:07.199 *
35.95.56.230 3 1 0 02:29:40.010 02:29:40.562 *
43.98.201.177 2 1 0 01:01:05.988 01:01:05.988 *
45.139.104.172 2 1 0 03:14:49.950 03:14:49.950 *
64.226.123.37 2 1 0 21:33:32.148 21:33:32.148 *
8.229.130.50 2 1 0 19:23:37.001 19:23:37.002 *
93.123.109.167 2 1 0 04:39:35.474 04:39:35.474 *
94.154.43.183 3 1 0 21:50:39.582 00:01:42.127 *
94.154.43.185 3 1 0 01:40:53.903 04:02:34.085 *
94.154.43.186 3 1 0 21:07:26.439 13:43:18.923 *
94.154.43.188 5 1 0 02:45:01.636 11:09:54.264 *
94.154.43.229 4 1 0 14:35:26.801 12:53:30.198 *
-- IPv6 (3) --
ip total denied banned first last users whitelist
--------------------------------------------------------------------------------------------------------
2a04:4e40:e000:0:d09:97ab:43b1:a59a 4 2 0 14:41:30.905 14:41:30.922 *
2600:3c15::2000:53ff:fe31:8c0b 2 1 0 12:35:18.643 12:35:18.643 *
2602:fa59:10:a3a::1 2 1 0 02:10:02.531 02:10:02.532 *
@@ -0,0 +1,70 @@
copyparty log analysis report
generated: 2026-08-07T19:48:03
log path: P:\copyparty
log files: 43
total requests: 1227
unique IPs: 14 (IPv4 14 / IPv6 0)
error requests: 279
unique denied paths: 182
denied requests: 279
banned IPs: 3
authenticated users: {}
denied-only ips: 9
whitelisted IPs seen: 0
block candidates: 9
== top 30 IPs ==
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
34.140.123.172 434 6 411 21:34:17.485 21:35:45.084 *
20.100.172.153 275 137 0 09:10:06.751 09:10:17.835 *
34.9.173.20 245 9 224 16:55:22.164 16:55:30.344 *
172.213.153.79 114 57 0 18:40:13.799 18:40:20.149 *
20.91.239.158 114 57 0 13:42:20.392 13:42:24.986 *
207.175.159.248 25 9 7 03:52:06.643 03:52:07.542 *
35.196.132.85 6 0 0 14:20:00.708 16:50:00.731 *
91.92.241.196 4 2 0 15:50:20.187 15:50:21.628 *
157.245.63.62 2 1 0 13:04:56.122 13:04:56.122 *
35.227.62.178 2 0 0 15:20:01.556 15:20:01.557 *
35.237.169.55 2 0 0 13:53:04.249 13:53:04.250 *
94.154.43.229 2 1 0 12:53:30.198 12:53:30.198 *
34.85.209.183 1 0 0 15:59:40.864 15:59:40.864 *
94.154.43.178 1 0 0 16:14:12.910 16:14:12.910 *
== top 20 denied paths ==
5 /admin.php
3 /wp-content/plugins/hellopress/wp_filemanager.php
3 /this_is_a_new_hello_world.php
3 /av.php
3 /media.php
3 /images.php
3 /222.php
3 /mac.php
3 /ops.php
3 /8.php
3 /biufile.php
3 /coffexium.php
3 /1.php
3 /classwithtostring.php
3 /wp-ws68.php
3 /mgrr.php
3 /yj09.php
3 /3PJcpMFsD8B.php
3 /BDKR28WP.php
3 /shiny.php
== Denied-only IPs (9) ==
never authenticated -- ban candidates
-- IPv4 (9) --
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
20.100.172.153 275 137 0 09:10:06.751 09:10:17.835 *
172.213.153.79 114 57 0 18:40:13.799 18:40:20.149 *
20.91.239.158 114 57 0 13:42:20.392 13:42:24.986 *
207.175.159.248 25 9 7 03:52:06.643 03:52:07.542 *
34.9.173.20 245 9 224 16:55:22.164 16:55:30.344 *
34.140.123.172 434 6 411 21:34:17.485 21:35:45.084 *
91.92.241.196 4 2 0 15:50:20.187 15:50:21.628 *
157.245.63.62 2 1 0 13:04:56.122 13:04:56.122 *
94.154.43.229 2 1 0 12:53:30.198 12:53:30.198 *
@@ -0,0 +1,198 @@
copyparty log analysis report
generated: 2026-08-07T19:48:44
log path: P:\copyparty
log files: 43
total requests: 26522
unique IPs: 253 (IPv4 209 / IPv6 44)
error requests: 6860
unique denied paths: 2022
denied requests: 6860
banned IPs: 29
authenticated users: {'admin': 519, 'corky': 78}
denied-only ips: 117
whitelisted IPs seen: 19
block candidates: 119
== top 30 IPs ==
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
34.140.123.172 434 6 411 21:34:17.485 21:35:45.084 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
... 223 more IPs omitted
== top 20 denied paths ==
57 /admin.php
52 /.env
47 /wp-content/plugins/hellopress/wp_filemanager.php
47 /this_is_a_new_hello_world.php
38 /1.php
36 /.git/config
36 /classwithtostring.php
36 /222.php
34 /wp-content/uploads
33 /wp-content/admin.php
32 /8.php
30 /mac.php
28 /aa.php
28 /images.php
28 /ops.php
27 /wp.php
27 /file.php
27 /edit.php
26 /coffexium.php
25 /f35.php
== Denied-only IPs (117) ==
never authenticated -- ban candidates
-- IPv4 (114) --
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
20.100.172.153 275 137 0 09:10:06.751 09:10:17.835 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
20.203.179.12 250 125 0 17:33:20.484 17:33:29.742 *
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
158.158.105.63 208 104 0 11:24:12.912 23:00:49.043 *
4.223.71.149 209 104 0 00:26:55.320 00:27:19.244 *
135.225.93.215 203 101 0 02:32:24.496 02:32:32.326 *
20.9.85.55 203 101 0 15:43:36.450 15:44:20.170 *
20.91.208.34 203 101 0 22:07:01.428 22:07:20.883 *
52.238.192.78 203 101 0 00:04:31.589 00:05:07.114 *
172.213.208.13 192 96 0 13:27:56.743 19:14:00.938 *
172.213.244.85 165 82 0 17:01:49.042 17:01:52.331 *
20.206.105.145 157 78 0 04:06:08.085 04:06:29.772 *
51.120.83.160 144 72 0 15:40:29.699 15:40:39.446 *
172.213.153.79 114 57 0 18:40:13.799 18:40:20.149 *
20.91.239.158 114 57 0 13:42:20.392 13:42:24.986 *
4.223.73.90 106 53 0 19:50:04.916 19:50:11.164 *
20.91.203.45 94 47 0 16:27:01.288 16:27:10.455 *
20.197.192.193 88 44 0 13:45:32.377 13:45:43.108 *
74.248.24.145 74 37 0 09:21:37.839 09:21:43.127 *
172.213.144.209 70 35 0 07:52:16.066 07:52:17.778 *
35.198.180.224 46 22 0 14:14:37.617 14:14:48.930 *
45.148.10.62 98 22 40 07:53:03.360 03:15:12.651 *
45.148.10.244 109 18 70 04:53:37.585 09:56:59.103 *
45.148.10.120 33 16 0 14:24:06.542 17:06:11.688 *
34.39.210.94 24 12 0 19:31:07.030 19:31:07.101 *
195.178.110.31 49 11 20 02:27:56.164 02:27:58.425 *
195.178.110.223 37 10 13 01:31:40.464 01:56:49.503 *
34.95.239.96 20 10 0 11:25:18.487 11:25:18.532 *
136.108.11.195 25 9 7 08:33:11.182 08:33:13.921 *
139.59.118.17 180 9 157 08:21:30.247 08:22:03.812 *
146.70.40.68 30 9 10 18:55:47.310 18:55:48.145 *
147.182.149.75 40 9 21 21:50:17.837 21:50:45.474 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
163.7.11.71 93 9 72 07:24:55.235 07:25:05.144 *
167.99.181.249 40 9 21 21:50:26.091 21:51:01.239 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
207.175.159.248 25 9 7 03:52:06.643 03:52:07.542 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
209.99.189.190 77 9 59 17:04:48.190 09:53:52.093 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.105.30.251 29 9 9 15:55:43.824 15:55:49.547 *
34.23.104.90 25 9 7 14:40:59.025 14:41:01.713 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
34.9.173.20 245 9 224 16:55:22.164 16:55:30.344 *
45.67.85.190 32 9 11 19:41:44.132 19:41:46.806 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
85.204.70.100 30 9 10 13:55:11.862 13:55:12.567 *
91.192.10.86 31 9 10 13:38:54.986 13:38:56.159 *
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.155 57 8 0 09:10:16.072 09:10:19.329 *
45.148.10.194 58 8 0 15:46:42.822 15:46:45.473 *
45.148.10.247 57 8 0 00:58:56.398 00:58:59.599 *
72.146.20.230 14 7 0 03:01:31.244 03:01:31.427 *
91.92.241.196 15 7 0 13:55:12.175 15:50:21.628 *
209.99.189.152 13 6 0 18:03:04.845 18:03:12.906 *
34.140.123.172 434 6 411 21:34:17.485 21:35:45.084 *
162.243.79.174 11 5 0 12:20:28.790 12:20:40.350 *
51.79.208.246 10 5 0 13:50:27.669 13:50:29.418 *
94.154.43.184 10 5 0 11:23:26.214 09:31:40.319 *
195.178.110.211 8 4 0 19:35:03.504 20:22:13.338 *
157.245.63.62 4 2 0 08:13:33.142 13:04:56.122 *
163.7.13.115 5 2 0 14:06:27.842 14:06:29.745 *
45.138.16.114 5 2 0 03:09:59.971 03:10:00.217 *
45.148.10.95 4 2 0 21:05:26.356 14:40:26.566 *
91.92.41.115 8 2 0 14:44:48.975 14:44:54.158 *
94.154.43.179 5 2 0 13:27:23.753 04:38:17.921 *
107.170.9.103 2 1 0 00:19:26.062 00:19:26.062 *
129.212.237.196 2 1 0 09:23:08.470 09:23:08.471 *
134.209.162.128 2 1 0 00:43:12.731 00:43:12.731 *
158.101.144.198 2 1 0 14:30:06.125 14:30:06.125 *
165.245.185.158 2 1 0 09:20:47.477 09:20:47.477 *
195.178.110.159 2 1 0 20:41:43.691 20:41:43.691 *
2.57.122.173 2 1 0 12:10:19.177 12:10:19.177 *
23.180.120.147 4 1 0 13:53:30.303 13:53:30.473 *
31.58.51.184 4 1 0 15:07:53.176 15:07:58.514 *
34.125.42.15 2 1 0 21:39:44.709 21:39:44.709 *
34.91.243.226 2 1 0 19:51:57.606 19:51:57.606 *
35.231.100.82 2 1 0 15:36:23.715 15:36:23.715 *
35.233.191.179 2 1 0 00:16:07.188 00:16:07.199 *
35.95.56.230 3 1 0 02:29:40.010 02:29:40.562 *
43.98.201.177 2 1 0 01:01:05.988 01:01:05.988 *
45.139.104.172 2 1 0 03:14:49.950 03:14:49.950 *
64.226.123.37 2 1 0 21:33:32.148 21:33:32.148 *
8.229.130.50 2 1 0 19:23:37.001 19:23:37.002 *
93.123.109.167 2 1 0 04:39:35.474 04:39:35.474 *
94.154.43.183 3 1 0 21:50:39.582 00:01:42.127 *
94.154.43.185 3 1 0 01:40:53.903 04:02:34.085 *
94.154.43.186 3 1 0 21:07:26.439 13:43:18.923 *
94.154.43.188 5 1 0 02:45:01.636 11:09:54.264 *
94.154.43.229 4 1 0 14:35:26.801 12:53:30.198 *
-- IPv6 (3) --
ip total denied banned first last users whitelist
--------------------------------------------------------------------------------------------------------
2a04:4e40:e000:0:d09:97ab:43b1:a59a 4 2 0 14:41:30.905 14:41:30.922 *
2600:3c15::2000:53ff:fe31:8c0b 2 1 0 12:35:18.643 12:35:18.643 *
2602:fa59:10:a3a::1 2 1 0 02:10:02.531 02:10:02.532 *
@@ -0,0 +1,201 @@
copyparty log analysis report
generated: 2026-08-08T14:31:22
log path: P:\copyparty
log files: 44
total requests: 26784
unique IPs: 263 (IPv4 218 / IPv6 45)
error requests: 6976
unique denied paths: 2059
denied requests: 6976
banned IPs: 30
authenticated users: {'admin': 523, 'corky': 78}
denied-only ips: 120
whitelisted IPs seen: 21
block candidates: 122
== top 30 IPs ==
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
34.140.123.172 434 6 411 21:34:17.485 21:35:45.084 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
... 233 more IPs omitted
== top 20 denied paths ==
58 /admin.php
53 /.env
49 /wp-content/plugins/hellopress/wp_filemanager.php
49 /this_is_a_new_hello_world.php
39 /1.php
37 /classwithtostring.php
37 /222.php
36 /.git/config
34 /wp-content/uploads
33 /8.php
33 /wp-content/admin.php
31 /mac.php
29 /aa.php
29 /images.php
29 /ops.php
28 /wp.php
28 /edit.php
27 /file.php
27 /coffexium.php
25 /f35.php
== Denied-only IPs (120) ==
never authenticated -- ban candidates
-- IPv4 (117) --
ip total denied banned first last users whitelist
------------------------------------------------------------------------------------
195.178.110.199 1258 621 0 03:02:41.078 03:02:42.924 *
45.148.10.67 1258 621 0 20:49:39.003 20:49:41.111 *
20.251.48.208 612 306 0 23:50:43.575 17:01:41.376 *
20.215.216.94 516 257 0 16:16:39.439 15:21:39.387 *
20.215.218.234 504 252 0 02:46:27.628 05:35:25.304 *
20.198.120.225 428 214 0 10:07:52.191 10:09:25.008 *
20.197.178.120 374 186 0 14:54:24.411 14:54:52.938 *
74.249.245.134 354 177 0 21:27:53.575 21:29:06.182 *
20.151.10.161 325 162 0 17:31:38.451 17:32:27.663 *
20.205.229.184 323 161 0 12:17:54.322 12:18:41.173 *
4.185.41.66 323 161 0 18:18:18.046 18:18:24.319 *
52.184.96.217 323 161 0 20:02:55.760 20:03:44.824 *
172.213.225.181 321 160 0 13:48:04.161 13:48:11.331 *
20.48.236.161 321 160 0 15:11:59.817 15:12:31.060 *
158.158.32.229 316 158 0 12:33:51.566 12:34:03.712 *
20.63.63.128 315 157 0 16:04:22.373 16:04:50.675 *
20.206.67.15 313 156 0 05:56:36.144 05:57:20.412 *
20.215.185.25 300 150 0 08:18:05.984 08:19:09.190 *
20.203.243.122 294 147 0 03:58:39.580 03:58:55.359 *
20.226.26.5 286 143 0 06:33:33.891 06:34:07.483 *
68.221.130.241 278 139 0 08:28:43.979 08:28:50.496 *
20.100.172.153 275 137 0 09:10:06.751 09:10:17.835 *
74.248.33.172 257 128 0 23:32:36.049 23:32:42.718 *
20.203.179.12 250 125 0 17:33:20.484 17:33:29.742 *
20.113.142.140 231 115 0 07:47:47.716 07:48:00.044 *
158.158.105.63 208 104 0 11:24:12.912 23:00:49.043 *
4.223.71.149 209 104 0 00:26:55.320 00:27:19.244 *
135.225.93.215 203 101 0 02:32:24.496 02:32:32.326 *
20.9.85.55 203 101 0 15:43:36.450 15:44:20.170 *
20.91.208.34 203 101 0 22:07:01.428 22:07:20.883 *
52.238.192.78 203 101 0 00:04:31.589 00:05:07.114 *
172.213.208.13 192 96 0 13:27:56.743 19:14:00.938 *
172.213.244.85 165 82 0 17:01:49.042 17:01:52.331 *
20.206.105.145 157 78 0 04:06:08.085 04:06:29.772 *
51.120.83.160 144 72 0 15:40:29.699 15:40:39.446 *
172.213.153.79 114 57 0 18:40:13.799 18:40:20.149 *
20.91.239.158 114 57 0 13:42:20.392 13:42:24.986 *
172.213.227.73 108 54 0 03:00:13.592 03:00:18.810 *
4.223.73.90 106 53 0 19:50:04.916 19:50:11.164 *
4.232.185.87 110 53 0 21:23:31.012 21:23:33.019 *
20.91.203.45 94 47 0 16:27:01.288 16:27:10.455 *
20.197.192.193 88 44 0 13:45:32.377 13:45:43.108 *
74.248.24.145 74 37 0 09:21:37.839 09:21:43.127 *
172.213.144.209 70 35 0 07:52:16.066 07:52:17.778 *
35.198.180.224 46 22 0 14:14:37.617 14:14:48.930 *
45.148.10.62 98 22 40 07:53:03.360 03:15:12.651 *
45.148.10.244 109 18 70 04:53:37.585 09:56:59.103 *
45.148.10.120 33 16 0 14:24:06.542 17:06:11.688 *
34.39.210.94 24 12 0 19:31:07.030 19:31:07.101 *
195.178.110.31 49 11 20 02:27:56.164 02:27:58.425 *
195.178.110.223 37 10 13 01:31:40.464 01:56:49.503 *
34.95.239.96 20 10 0 11:25:18.487 11:25:18.532 *
107.173.254.55 29 9 9 07:04:56.768 07:05:17.755 *
136.108.11.195 25 9 7 08:33:11.182 08:33:13.921 *
139.59.118.17 180 9 157 08:21:30.247 08:22:03.812 *
146.70.40.68 30 9 10 18:55:47.310 18:55:48.145 *
147.182.149.75 40 9 21 21:50:17.837 21:50:45.474 *
16.146.99.254 279 9 256 12:11:20.725 12:12:09.790 *
163.7.11.71 93 9 72 07:24:55.235 07:25:05.144 *
167.99.181.249 40 9 21 21:50:26.091 21:51:01.239 *
18.142.90.109 279 9 256 17:06:23.216 17:07:15.117 *
18.227.73.7 392 9 363 22:00:31.465 22:01:33.982 *
207.175.159.248 25 9 7 03:52:06.643 03:52:07.542 *
207.175.20.232 25 9 7 09:43:00.775 09:43:03.604 *
209.99.189.190 77 9 59 17:04:48.190 09:53:52.093 *
3.79.41.12 286 9 263 04:20:16.234 04:20:22.797 *
34.105.30.251 29 9 9 15:55:43.824 15:55:49.547 *
34.23.104.90 25 9 7 14:40:59.025 14:41:01.713 *
34.242.226.103 286 9 263 06:52:40.299 06:52:54.689 *
34.9.173.20 245 9 224 16:55:22.164 16:55:30.344 *
45.67.85.190 32 9 11 19:41:44.132 19:41:46.806 *
54.163.186.39 286 9 263 01:39:29.740 01:40:00.874 *
85.204.70.100 30 9 10 13:55:11.862 13:55:12.567 *
91.192.10.86 31 9 10 13:38:54.986 13:38:56.159 *
93.123.109.101 4320 9 4264 00:35:05.539 00:40:32.578 *
185.93.89.147 3762 8 0 19:07:14.620 08:52:41.657 *
195.178.110.155 57 8 0 09:10:16.072 09:10:19.329 *
45.148.10.194 58 8 0 15:46:42.822 15:46:45.473 *
45.148.10.247 57 8 0 00:58:56.398 00:58:59.599 *
72.146.20.230 14 7 0 03:01:31.244 03:01:31.427 *
91.92.241.196 15 7 0 13:55:12.175 15:50:21.628 *
209.99.189.152 13 6 0 18:03:04.845 18:03:12.906 *
34.140.123.172 434 6 411 21:34:17.485 21:35:45.084 *
162.243.79.174 11 5 0 12:20:28.790 12:20:40.350 *
51.79.208.246 10 5 0 13:50:27.669 13:50:29.418 *
94.154.43.184 10 5 0 11:23:26.214 09:31:40.319 *
195.178.110.211 8 4 0 19:35:03.504 20:22:13.338 *
157.245.63.62 4 2 0 08:13:33.142 13:04:56.122 *
163.7.13.115 5 2 0 14:06:27.842 14:06:29.745 *
45.138.16.114 5 2 0 03:09:59.971 03:10:00.217 *
45.148.10.95 4 2 0 21:05:26.356 14:40:26.566 *
91.92.41.115 8 2 0 14:44:48.975 14:44:54.158 *
94.154.43.179 5 2 0 13:27:23.753 04:38:17.921 *
107.170.9.103 2 1 0 00:19:26.062 00:19:26.062 *
129.212.237.196 2 1 0 09:23:08.470 09:23:08.471 *
134.209.162.128 2 1 0 00:43:12.731 00:43:12.731 *
158.101.144.198 2 1 0 14:30:06.125 14:30:06.125 *
165.245.185.158 2 1 0 09:20:47.477 09:20:47.477 *
195.178.110.159 2 1 0 20:41:43.691 20:41:43.691 *
2.57.122.173 2 1 0 12:10:19.177 12:10:19.177 *
23.180.120.147 4 1 0 13:53:30.303 13:53:30.473 *
31.58.51.184 4 1 0 15:07:53.176 15:07:58.514 *
34.125.42.15 2 1 0 21:39:44.709 21:39:44.709 *
34.91.243.226 2 1 0 19:51:57.606 19:51:57.606 *
35.231.100.82 2 1 0 15:36:23.715 15:36:23.715 *
35.233.191.179 2 1 0 00:16:07.188 00:16:07.199 *
35.95.56.230 3 1 0 02:29:40.010 02:29:40.562 *
43.98.201.177 2 1 0 01:01:05.988 01:01:05.988 *
45.139.104.172 2 1 0 03:14:49.950 03:14:49.950 *
64.226.123.37 2 1 0 21:33:32.148 21:33:32.148 *
8.229.130.50 2 1 0 19:23:37.001 19:23:37.002 *
93.123.109.167 2 1 0 04:39:35.474 04:39:35.474 *
94.154.43.183 3 1 0 21:50:39.582 00:01:42.127 *
94.154.43.185 3 1 0 01:40:53.903 04:02:34.085 *
94.154.43.186 3 1 0 21:07:26.439 13:43:18.923 *
94.154.43.188 5 1 0 02:45:01.636 11:09:54.264 *
94.154.43.229 4 1 0 14:35:26.801 12:53:30.198 *
-- IPv6 (3) --
ip total denied banned first last users whitelist
--------------------------------------------------------------------------------------------------------
2a04:4e40:e000:0:d09:97ab:43b1:a59a 4 2 0 14:41:30.905 14:41:30.922 *
2600:3c15::2000:53ff:fe31:8c0b 2 1 0 12:35:18.643 12:35:18.643 *
2602:fa59:10:a3a::1 2 1 0 02:10:02.531 02:10:02.532 *
@@ -0,0 +1,4 @@
{
"admin": 523,
"corky": 78
}
+30
View File
@@ -0,0 +1,30 @@
3.79.41.12
16.146.99.254
18.142.90.109
18.227.73.7
34.9.173.20
34.23.104.90
34.105.30.251
34.140.123.172
34.242.226.103
45.67.85.190
45.148.10.62
45.148.10.244
54.163.186.39
85.204.70.100
91.192.10.86
93.123.109.101
107.173.254.55
136.108.11.195
139.59.118.17
146.70.40.68
147.182.149.75
163.7.11.71
167.99.181.249
195.178.110.31
195.178.110.104
195.178.110.135
195.178.110.223
207.175.20.232
207.175.159.248
209.99.189.190
Whitespace-only changes.
+119
View File
@@ -0,0 +1,119 @@
2.57.122.173
3.79.41.12
4.185.41.66
4.223.71.149
4.223.73.90
4.232.185.87
8.229.130.50
16.146.99.254
18.142.90.109
18.227.73.7
20.9.85.55
20.48.236.161
20.63.63.128
20.91.203.45
20.91.208.34
20.91.239.158
20.100.172.153
20.113.142.140
20.151.10.161
20.197.178.120
20.197.192.193
20.198.120.225
20.203.179.12
20.203.243.122
20.205.229.184
20.206.67.15
20.206.105.145
20.215.185.25
20.215.216.94
20.215.218.234
20.226.26.5
20.251.48.208
23.180.120.147
31.58.51.184
34.9.173.20
34.23.104.90
34.39.210.94
34.91.243.226
34.95.239.96
34.105.30.251
34.125.42.15
34.140.123.172
34.242.226.103
35.95.56.230
35.198.180.224
35.231.100.82
35.233.191.179
43.98.201.177
45.67.85.190
45.138.16.114
45.139.104.172
45.148.10.62
45.148.10.67
45.148.10.95
45.148.10.120
45.148.10.194
45.148.10.244
45.148.10.247
51.79.208.246
51.120.83.160
52.184.96.217
52.238.192.78
54.163.186.39
64.226.123.37
68.221.130.241
72.146.20.230
74.248.24.145
74.248.33.172
74.249.245.134
85.204.70.100
91.92.41.115
91.92.241.196
91.192.10.86
93.123.109.101
93.123.109.167
94.154.43.179
94.154.43.183
94.154.43.184
94.154.43.185
94.154.43.186
94.154.43.188
94.154.43.229
107.170.9.103
107.173.254.55
129.212.237.196
134.209.162.128
135.225.93.215
136.108.11.195
139.59.118.17
146.70.40.68
147.182.149.75
157.245.63.62
158.101.144.198
158.158.32.229
158.158.105.63
162.243.79.174
163.7.11.71
163.7.13.115
165.245.185.158
167.99.181.249
172.213.144.209
172.213.153.79
172.213.208.13
172.213.225.181
172.213.227.73
172.213.244.85
185.93.89.147
195.178.110.31
195.178.110.104
195.178.110.135
195.178.110.155
195.178.110.159
195.178.110.199
195.178.110.211
195.178.110.223
207.175.20.232
207.175.159.248
209.99.189.152
209.99.189.190
@@ -0,0 +1,3 @@
2600:3c15::2000:53ff:fe31:8c0b
2602:fa59:10:a3a::1
2a04:4e40:e000:0:d09:97ab:43b1:a59a
+117
View File
@@ -0,0 +1,117 @@
195.178.110.199 # denied=621 total=1258 first=03:02:41.078 last=03:02:42.924
45.148.10.67 # denied=621 total=1258 first=20:49:39.003 last=20:49:41.111
20.251.48.208 # denied=306 total=612 first=23:50:43.575 last=17:01:41.376
20.215.216.94 # denied=257 total=516 first=16:16:39.439 last=15:21:39.387
20.215.218.234 # denied=252 total=504 first=02:46:27.628 last=05:35:25.304
20.198.120.225 # denied=214 total=428 first=10:07:52.191 last=10:09:25.008
20.197.178.120 # denied=186 total=374 first=14:54:24.411 last=14:54:52.938
74.249.245.134 # denied=177 total=354 first=21:27:53.575 last=21:29:06.182
20.151.10.161 # denied=162 total=325 first=17:31:38.451 last=17:32:27.663
20.205.229.184 # denied=161 total=323 first=12:17:54.322 last=12:18:41.173
4.185.41.66 # denied=161 total=323 first=18:18:18.046 last=18:18:24.319
52.184.96.217 # denied=161 total=323 first=20:02:55.760 last=20:03:44.824
172.213.225.181 # denied=160 total=321 first=13:48:04.161 last=13:48:11.331
20.48.236.161 # denied=160 total=321 first=15:11:59.817 last=15:12:31.060
158.158.32.229 # denied=158 total=316 first=12:33:51.566 last=12:34:03.712
20.63.63.128 # denied=157 total=315 first=16:04:22.373 last=16:04:50.675
20.206.67.15 # denied=156 total=313 first=05:56:36.144 last=05:57:20.412
20.215.185.25 # denied=150 total=300 first=08:18:05.984 last=08:19:09.190
20.203.243.122 # denied=147 total=294 first=03:58:39.580 last=03:58:55.359
20.226.26.5 # denied=143 total=286 first=06:33:33.891 last=06:34:07.483
68.221.130.241 # denied=139 total=278 first=08:28:43.979 last=08:28:50.496
20.100.172.153 # denied=137 total=275 first=09:10:06.751 last=09:10:17.835
74.248.33.172 # denied=128 total=257 first=23:32:36.049 last=23:32:42.718
20.203.179.12 # denied=125 total=250 first=17:33:20.484 last=17:33:29.742
20.113.142.140 # denied=115 total=231 first=07:47:47.716 last=07:48:00.044
158.158.105.63 # denied=104 total=208 first=11:24:12.912 last=23:00:49.043
4.223.71.149 # denied=104 total=209 first=00:26:55.320 last=00:27:19.244
135.225.93.215 # denied=101 total=203 first=02:32:24.496 last=02:32:32.326
20.9.85.55 # denied=101 total=203 first=15:43:36.450 last=15:44:20.170
20.91.208.34 # denied=101 total=203 first=22:07:01.428 last=22:07:20.883
52.238.192.78 # denied=101 total=203 first=00:04:31.589 last=00:05:07.114
172.213.208.13 # denied=96 total=192 first=13:27:56.743 last=19:14:00.938
172.213.244.85 # denied=82 total=165 first=17:01:49.042 last=17:01:52.331
20.206.105.145 # denied=78 total=157 first=04:06:08.085 last=04:06:29.772
51.120.83.160 # denied=72 total=144 first=15:40:29.699 last=15:40:39.446
172.213.153.79 # denied=57 total=114 first=18:40:13.799 last=18:40:20.149
20.91.239.158 # denied=57 total=114 first=13:42:20.392 last=13:42:24.986
172.213.227.73 # denied=54 total=108 first=03:00:13.592 last=03:00:18.810
4.223.73.90 # denied=53 total=106 first=19:50:04.916 last=19:50:11.164
4.232.185.87 # denied=53 total=110 first=21:23:31.012 last=21:23:33.019
20.91.203.45 # denied=47 total=94 first=16:27:01.288 last=16:27:10.455
20.197.192.193 # denied=44 total=88 first=13:45:32.377 last=13:45:43.108
74.248.24.145 # denied=37 total=74 first=09:21:37.839 last=09:21:43.127
172.213.144.209 # denied=35 total=70 first=07:52:16.066 last=07:52:17.778
35.198.180.224 # denied=22 total=46 first=14:14:37.617 last=14:14:48.930
45.148.10.62 # denied=22 total=98 first=07:53:03.360 last=03:15:12.651
45.148.10.244 # denied=18 total=109 first=04:53:37.585 last=09:56:59.103
45.148.10.120 # denied=16 total=33 first=14:24:06.542 last=17:06:11.688
34.39.210.94 # denied=12 total=24 first=19:31:07.030 last=19:31:07.101
195.178.110.31 # denied=11 total=49 first=02:27:56.164 last=02:27:58.425
195.178.110.223 # denied=10 total=37 first=01:31:40.464 last=01:56:49.503
34.95.239.96 # denied=10 total=20 first=11:25:18.487 last=11:25:18.532
107.173.254.55 # denied=9 total=29 first=07:04:56.768 last=07:05:17.755
136.108.11.195 # denied=9 total=25 first=08:33:11.182 last=08:33:13.921
139.59.118.17 # denied=9 total=180 first=08:21:30.247 last=08:22:03.812
146.70.40.68 # denied=9 total=30 first=18:55:47.310 last=18:55:48.145
147.182.149.75 # denied=9 total=40 first=21:50:17.837 last=21:50:45.474
16.146.99.254 # denied=9 total=279 first=12:11:20.725 last=12:12:09.790
163.7.11.71 # denied=9 total=93 first=07:24:55.235 last=07:25:05.144
167.99.181.249 # denied=9 total=40 first=21:50:26.091 last=21:51:01.239
18.142.90.109 # denied=9 total=279 first=17:06:23.216 last=17:07:15.117
18.227.73.7 # denied=9 total=392 first=22:00:31.465 last=22:01:33.982
207.175.159.248 # denied=9 total=25 first=03:52:06.643 last=03:52:07.542
207.175.20.232 # denied=9 total=25 first=09:43:00.775 last=09:43:03.604
209.99.189.190 # denied=9 total=77 first=17:04:48.190 last=09:53:52.093
3.79.41.12 # denied=9 total=286 first=04:20:16.234 last=04:20:22.797
34.105.30.251 # denied=9 total=29 first=15:55:43.824 last=15:55:49.547
34.23.104.90 # denied=9 total=25 first=14:40:59.025 last=14:41:01.713
34.242.226.103 # denied=9 total=286 first=06:52:40.299 last=06:52:54.689
34.9.173.20 # denied=9 total=245 first=16:55:22.164 last=16:55:30.344
45.67.85.190 # denied=9 total=32 first=19:41:44.132 last=19:41:46.806
54.163.186.39 # denied=9 total=286 first=01:39:29.740 last=01:40:00.874
85.204.70.100 # denied=9 total=30 first=13:55:11.862 last=13:55:12.567
91.192.10.86 # denied=9 total=31 first=13:38:54.986 last=13:38:56.159
93.123.109.101 # denied=9 total=4320 first=00:35:05.539 last=00:40:32.578
185.93.89.147 # denied=8 total=3762 first=19:07:14.620 last=08:52:41.657
195.178.110.155 # denied=8 total=57 first=09:10:16.072 last=09:10:19.329
45.148.10.194 # denied=8 total=58 first=15:46:42.822 last=15:46:45.473
45.148.10.247 # denied=8 total=57 first=00:58:56.398 last=00:58:59.599
72.146.20.230 # denied=7 total=14 first=03:01:31.244 last=03:01:31.427
91.92.241.196 # denied=7 total=15 first=13:55:12.175 last=15:50:21.628
209.99.189.152 # denied=6 total=13 first=18:03:04.845 last=18:03:12.906
34.140.123.172 # denied=6 total=434 first=21:34:17.485 last=21:35:45.084
162.243.79.174 # denied=5 total=11 first=12:20:28.790 last=12:20:40.350
51.79.208.246 # denied=5 total=10 first=13:50:27.669 last=13:50:29.418
94.154.43.184 # denied=5 total=10 first=11:23:26.214 last=09:31:40.319
195.178.110.211 # denied=4 total=8 first=19:35:03.504 last=20:22:13.338
157.245.63.62 # denied=2 total=4 first=08:13:33.142 last=13:04:56.122
163.7.13.115 # denied=2 total=5 first=14:06:27.842 last=14:06:29.745
45.138.16.114 # denied=2 total=5 first=03:09:59.971 last=03:10:00.217
45.148.10.95 # denied=2 total=4 first=21:05:26.356 last=14:40:26.566
91.92.41.115 # denied=2 total=8 first=14:44:48.975 last=14:44:54.158
94.154.43.179 # denied=2 total=5 first=13:27:23.753 last=04:38:17.921
107.170.9.103 # denied=1 total=2 first=00:19:26.062 last=00:19:26.062
129.212.237.196 # denied=1 total=2 first=09:23:08.470 last=09:23:08.471
134.209.162.128 # denied=1 total=2 first=00:43:12.731 last=00:43:12.731
158.101.144.198 # denied=1 total=2 first=14:30:06.125 last=14:30:06.125
165.245.185.158 # denied=1 total=2 first=09:20:47.477 last=09:20:47.477
195.178.110.159 # denied=1 total=2 first=20:41:43.691 last=20:41:43.691
2.57.122.173 # denied=1 total=2 first=12:10:19.177 last=12:10:19.177
23.180.120.147 # denied=1 total=4 first=13:53:30.303 last=13:53:30.473
31.58.51.184 # denied=1 total=4 first=15:07:53.176 last=15:07:58.514
34.125.42.15 # denied=1 total=2 first=21:39:44.709 last=21:39:44.709
34.91.243.226 # denied=1 total=2 first=19:51:57.606 last=19:51:57.606
35.231.100.82 # denied=1 total=2 first=15:36:23.715 last=15:36:23.715
35.233.191.179 # denied=1 total=2 first=00:16:07.188 last=00:16:07.199
35.95.56.230 # denied=1 total=3 first=02:29:40.010 last=02:29:40.562
43.98.201.177 # denied=1 total=2 first=01:01:05.988 last=01:01:05.988
45.139.104.172 # denied=1 total=2 first=03:14:49.950 last=03:14:49.950
64.226.123.37 # denied=1 total=2 first=21:33:32.148 last=21:33:32.148
8.229.130.50 # denied=1 total=2 first=19:23:37.001 last=19:23:37.002
93.123.109.167 # denied=1 total=2 first=04:39:35.474 last=04:39:35.474
94.154.43.183 # denied=1 total=3 first=21:50:39.582 last=00:01:42.127
94.154.43.185 # denied=1 total=3 first=01:40:53.903 last=04:02:34.085
94.154.43.186 # denied=1 total=3 first=21:07:26.439 last=13:43:18.923
94.154.43.188 # denied=1 total=5 first=02:45:01.636 last=11:09:54.264
94.154.43.229 # denied=1 total=4 first=14:35:26.801 last=12:53:30.198
@@ -0,0 +1,3 @@
2a04:4e40:e000:0:d09:97ab:43b1:a59a # denied=2 total=4 first=14:41:30.905 last=14:41:30.922
2600:3c15::2000:53ff:fe31:8c0b # denied=1 total=2 first=12:35:18.643 last=12:35:18.643
2602:fa59:10:a3a::1 # denied=1 total=2 first=02:10:02.531 last=02:10:02.532
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,193 @@
# copyparty-ids firewall export - generated 2026-08-08T14:31:22
# Openfactory IPv4 ranges (whitelisted)
/ip firewall address-list
add list=Openfactory address=5.226.144.0/21
# Cloudflare IPv4 ranges (whitelisted)
/ip firewall address-list
add list=Cloudflare address=173.245.48.0/20
add list=Cloudflare address=103.21.244.0/22
add list=Cloudflare address=103.22.200.0/22
add list=Cloudflare address=103.31.4.0/22
add list=Cloudflare address=141.101.64.0/18
add list=Cloudflare address=108.162.192.0/18
add list=Cloudflare address=190.93.240.0/20
add list=Cloudflare address=188.114.96.0/20
add list=Cloudflare address=197.234.240.0/22
add list=Cloudflare address=198.41.128.0/17
add list=Cloudflare address=162.158.0.0/15
add list=Cloudflare address=104.16.0.0/13
add list=Cloudflare address=104.24.0.0/14
add list=Cloudflare address=172.64.0.0/13
add list=Cloudflare address=131.0.72.0/22
# Cloudflare IPv6 ranges (whitelisted)
/ipv6 firewall address-list
add list=Cloudflare address=2400:cb00::/32
add list=Cloudflare address=2606:4700::/32
add list=Cloudflare address=2803:f800::/32
add list=Cloudflare address=2405:b500::/32
add list=Cloudflare address=2405:8100::/32
add list=Cloudflare address=2a06:98c0::/29
add list=Cloudflare address=2c0f:f248::/32
# PaloAlto IPv4 ranges (whitelisted)
/ip firewall address-list
add list=PaloAlto address=35.203.210.0/23
add list=PaloAlto address=144.86.173.0/24
add list=PaloAlto address=147.185.132.0/23
add list=PaloAlto address=162.216.149.0/24
add list=PaloAlto address=162.216.150.0/24
add list=PaloAlto address=172.105.147.0/24
add list=PaloAlto address=198.235.24.0/24
add list=PaloAlto address=205.210.31.0/24
add list=PaloAlto address=216.25.88.0/21
# PaloAlto IPv6 ranges (whitelisted)
/ipv6 firewall address-list
add list=PaloAlto address=2604:a940:300:5b6::/64
add list=PaloAlto address=2604:a940:301:225::/64
add list=PaloAlto address=2604:a940:302:118::/64
# Blocked IPv4 (119, non-whitelisted)
/ip firewall address-list
add list=Blocked address=2.57.122.173
add list=Blocked address=3.79.41.12
add list=Blocked address=4.185.41.66
add list=Blocked address=4.223.71.149
add list=Blocked address=4.223.73.90
add list=Blocked address=4.232.185.87
add list=Blocked address=8.229.130.50
add list=Blocked address=16.146.99.254
add list=Blocked address=18.142.90.109
add list=Blocked address=18.227.73.7
add list=Blocked address=20.9.85.55
add list=Blocked address=20.48.236.161
add list=Blocked address=20.63.63.128
add list=Blocked address=20.91.203.45
add list=Blocked address=20.91.208.34
add list=Blocked address=20.91.239.158
add list=Blocked address=20.100.172.153
add list=Blocked address=20.113.142.140
add list=Blocked address=20.151.10.161
add list=Blocked address=20.197.178.120
add list=Blocked address=20.197.192.193
add list=Blocked address=20.198.120.225
add list=Blocked address=20.203.179.12
add list=Blocked address=20.203.243.122
add list=Blocked address=20.205.229.184
add list=Blocked address=20.206.67.15
add list=Blocked address=20.206.105.145
add list=Blocked address=20.215.185.25
add list=Blocked address=20.215.216.94
add list=Blocked address=20.215.218.234
add list=Blocked address=20.226.26.5
add list=Blocked address=20.251.48.208
add list=Blocked address=23.180.120.147
add list=Blocked address=31.58.51.184
add list=Blocked address=34.9.173.20
add list=Blocked address=34.23.104.90
add list=Blocked address=34.39.210.94
add list=Blocked address=34.91.243.226
add list=Blocked address=34.95.239.96
add list=Blocked address=34.105.30.251
add list=Blocked address=34.125.42.15
add list=Blocked address=34.140.123.172
add list=Blocked address=34.242.226.103
add list=Blocked address=35.95.56.230
add list=Blocked address=35.198.180.224
add list=Blocked address=35.231.100.82
add list=Blocked address=35.233.191.179
add list=Blocked address=43.98.201.177
add list=Blocked address=45.67.85.190
add list=Blocked address=45.138.16.114
add list=Blocked address=45.139.104.172
add list=Blocked address=45.148.10.62
add list=Blocked address=45.148.10.67
add list=Blocked address=45.148.10.95
add list=Blocked address=45.148.10.120
add list=Blocked address=45.148.10.194
add list=Blocked address=45.148.10.244
add list=Blocked address=45.148.10.247
add list=Blocked address=51.79.208.246
add list=Blocked address=51.120.83.160
add list=Blocked address=52.184.96.217
add list=Blocked address=52.238.192.78
add list=Blocked address=54.163.186.39
add list=Blocked address=64.226.123.37
add list=Blocked address=68.221.130.241
add list=Blocked address=72.146.20.230
add list=Blocked address=74.248.24.145
add list=Blocked address=74.248.33.172
add list=Blocked address=74.249.245.134
add list=Blocked address=85.204.70.100
add list=Blocked address=91.92.41.115
add list=Blocked address=91.92.241.196
add list=Blocked address=91.192.10.86
add list=Blocked address=93.123.109.101
add list=Blocked address=93.123.109.167
add list=Blocked address=94.154.43.179
add list=Blocked address=94.154.43.183
add list=Blocked address=94.154.43.184
add list=Blocked address=94.154.43.185
add list=Blocked address=94.154.43.186
add list=Blocked address=94.154.43.188
add list=Blocked address=94.154.43.229
add list=Blocked address=107.170.9.103
add list=Blocked address=107.173.254.55
add list=Blocked address=129.212.237.196
add list=Blocked address=134.209.162.128
add list=Blocked address=135.225.93.215
add list=Blocked address=136.108.11.195
add list=Blocked address=139.59.118.17
add list=Blocked address=146.70.40.68
add list=Blocked address=147.182.149.75
add list=Blocked address=157.245.63.62
add list=Blocked address=158.101.144.198
add list=Blocked address=158.158.32.229
add list=Blocked address=158.158.105.63
add list=Blocked address=162.243.79.174
add list=Blocked address=163.7.11.71
add list=Blocked address=163.7.13.115
add list=Blocked address=165.245.185.158
add list=Blocked address=167.99.181.249
add list=Blocked address=172.213.144.209
add list=Blocked address=172.213.153.79
add list=Blocked address=172.213.208.13
add list=Blocked address=172.213.225.181
add list=Blocked address=172.213.227.73
add list=Blocked address=172.213.244.85
add list=Blocked address=185.93.89.147
add list=Blocked address=195.178.110.31
add list=Blocked address=195.178.110.104
add list=Blocked address=195.178.110.135
add list=Blocked address=195.178.110.155
add list=Blocked address=195.178.110.159
add list=Blocked address=195.178.110.199
add list=Blocked address=195.178.110.211
add list=Blocked address=195.178.110.223
add list=Blocked address=207.175.20.232
add list=Blocked address=207.175.159.248
add list=Blocked address=209.99.189.152
add list=Blocked address=209.99.189.190
# Blocked IPv6 (3, non-whitelisted)
/ipv6 firewall address-list
add list=Blocked address=2600:3c15::2000:53ff:fe31:8c0b
add list=Blocked address=2602:fa59:10:a3a::1
add list=Blocked address=2a04:4e40:e000:0:d09:97ab:43b1:a59a
/ip firewall filter
add chain=input action=accept src-address-list=Openfactory comment="copyparty-ids openfactory whitelist (v4)"
add chain=input action=accept src-address-list=Cloudflare comment="copyparty-ids cloudflare whitelist (v4)"
add chain=input action=accept src-address-list=PaloAlto comment="copyparty-ids paloalto whitelist (v4)"
add chain=input action=drop src-address-list=Blocked comment="copyparty-ids blocked (v4)"
add chain=forward action=drop src-address-list=Blocked comment="copyparty-ids blocked (v4)"
/ipv6 firewall filter
add chain=input action=accept src-address-list=Openfactory comment="copyparty-ids openfactory whitelist (v6)"
add chain=input action=accept src-address-list=Cloudflare comment="copyparty-ids cloudflare whitelist (v6)"
add chain=input action=accept src-address-list=PaloAlto comment="copyparty-ids paloalto whitelist (v6)"
add chain=input action=drop src-address-list=Blocked comment="copyparty-ids blocked (v6)"
add chain=forward action=drop src-address-list=Blocked comment="copyparty-ids blocked (v6)"
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,384 @@
[
{
"address": "::/128",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "::1/128",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "fec0::/10",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "::ffff:0.0.0.0/96",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "::/96",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "100::/64",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "2001:db8::/32",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "2001:10::/28",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "3ffe::/16",
"comment": "defconf:",
"creation-time": "2025-11-21",
"dynamic": "no",
"list": "bad_ipv6"
},
{
"address": "2a0e:8f04::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a0e:8f05::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a0e:8f06::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a0e:8f07::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a00:6340::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a00:6340:2080::/48",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2001:67c:2648::/48",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a00:6340:2044:200::/56",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a00:6340:2044:600::/56",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2a00:6340:2044:800::/56",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2400:cb00::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2606:4700::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2803:f800::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2405:b500::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2405:8100::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2a06:98c0::/29",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2c0f:f248::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Cloudflare"
},
{
"address": "2604:a940:300:5b6::/64",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "PaloAlto"
},
{
"address": "2604:a940:301:225::/64",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "PaloAlto"
},
{
"address": "2604:a940:302:118::/64",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "PaloAlto"
},
{
"address": "2001:4ca0:108:42::24/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2400:8901::2000:62ff:fe9a:e1c2/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2600:3000::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2600:3c09::2000:5cff:fe99:c802/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2600:3c15::2000:53ff:fe31:8c0b/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2602:fa59:10:a3a::1/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a01:2a8:a0dd:1::1012/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a04:4e40:e000:0:d09:97ab:43b1:a59a/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a04:c300::/29",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a09:bac5:9443:3af::5e:4d/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a09:bac5:9443:3af::5e:88/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a0a:4cc0:2000:8528:c4e8:3ff:febb:3ee9/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2001:ba0:24c:a500::1/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2406:da18:525:0:a23e:e8f6:3ea1:4c2c/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2600:3c15::2000:9cff:fef0:8ad6/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2602:fa59::/40",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a00:6340:2008:ec80:64cc:9116:beb2:1931/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a00:6340:2008:ec80:be24:11ff:fe3b:4058/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a00:6340:2008:ec80:be24:11ff:fe82:2775/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a01:4f8:c014:7f9e::1/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a04:4e40:4400:0:537:cdd2:7250:95db/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a04:4e40:e000::/48",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a05:4140:3::37cd/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a06:a880:5:7fb3::1/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a09:bac1:76c0:460::5e:6a/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a09:bac5::/32",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a13:adc0::2ed:89ff:fe58:19c5/128",
"creation-time": "2026-08-03",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2400:8901::2000:beff:fea3:5a44/128",
"creation-time": "2026-08-05",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a00:6340::/32",
"creation-time": "2026-08-06",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2a00:6340:2017:3810::/64",
"comment": "hosting",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Openfactory"
},
{
"address": "2001:8d8:5ff:5f:82:165:82:154/128",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2600:3c15::/32",
"creation-time": "2026-08-07",
"dynamic": "no",
"list": "Blocked"
},
{
"address": "2001:448a:a071:520:e18f:3d1f:944e:174d/128",
"creation-time": "2026-08-08",
"dynamic": "no",
"list": "Blocked"
}
]
@@ -0,0 +1,135 @@
[
{
"action": "passthrough",
"chain": "forward",
"comment": "special"
},
{
"action": "fasttrack-connection",
"chain": "forward",
"comment": "defconf:",
"connection-state": "established,related",
"hw-offload": "yes",
"log": "no",
"log-prefix": ""
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"connection-state": "established,related",
"log": "no",
"log-prefix": ""
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"connection-state": "invalid",
"log": "no",
"log-prefix": ""
},
{
"action": "accept",
"chain": "forward",
"comment": "Allow",
"connection-nat-state": "dstnat"
},
{
"action": "accept",
"chain": "forward",
"comment": "allow",
"connection-state": "new",
"dst-address": "192.168.88.25",
"dst-port": "6667",
"log": "no",
"log-prefix": "",
"protocol": "tcp"
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"connection-nat-state": "!dstnat",
"connection-state": "new",
"in-interface-list": "WAN",
"log": "no",
"log-prefix": ""
},
{
"action": "accept",
"chain": "input",
"log": "no",
"log-prefix": "",
"protocol": "icmp"
},
{
"action": "accept",
"chain": "input",
"connection-state": "established",
"log": "no",
"log-prefix": ""
},
{
"action": "accept",
"chain": "input",
"comment": "allow",
"dst-port": "500",
"protocol": "udp"
},
{
"action": "drop",
"chain": "input",
"comment": "Block",
"dst-port": "80,443",
"in-interface-list": "WAN",
"protocol": "tcp"
},
{
"action": "accept",
"chain": "input",
"comment": "Allow",
"dst-port": "80,443",
"in-interface-list": "LAN",
"protocol": "tcp",
"src-address": "192.168.88.0/24"
},
{
"action": "accept",
"chain": "input",
"comment": "ids",
"src-address-list": "Openfactory"
},
{
"action": "accept",
"chain": "input",
"comment": "ids",
"src-address-list": "Cloudflare"
},
{
"action": "accept",
"chain": "input",
"comment": "ids",
"src-address-list": "PaloAlto"
},
{
"action": "drop",
"chain": "input",
"comment": "ids",
"src-address-list": "Blocked"
},
{
"action": "drop",
"chain": "forward",
"comment": "ids",
"src-address-list": "Blocked"
},
{
"action": "drop",
"chain": "input",
"comment": "drop",
"in-interface": "pppoe-out1",
"log": "no",
"log-prefix": ""
}
]
@@ -0,0 +1,190 @@
[
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"connection-state": "established,related,untracked"
},
{
"action": "drop",
"chain": "input",
"comment": "defconf:",
"connection-state": "invalid"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"protocol": "icmpv6"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"port": "33434-33534",
"protocol": "udp"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"dst-port": "546",
"protocol": "udp",
"src-address": "fe80::/10"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"dst-port": "500,4500",
"protocol": "udp"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"protocol": "ipsec-ah"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"protocol": "ipsec-esp"
},
{
"action": "accept",
"chain": "input",
"comment": "defconf:",
"ipsec-policy": "in,ipsec"
},
{
"action": "drop",
"chain": "input",
"comment": "defconf:",
"in-interface-list": "!LAN"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"connection-state": "established,related,untracked"
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"connection-state": "invalid"
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"src-address-list": "bad_ipv6"
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"dst-address-list": "bad_ipv6"
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"hop-limit": "equal:1",
"protocol": "icmpv6"
},
{
"action": "accept",
"chain": "forward",
"comment": "ids",
"log": "no",
"log-prefix": "",
"src-address-list": "Openfactory"
},
{
"action": "drop",
"chain": "forward",
"comment": "ids",
"src-address-list": "Blocked"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"protocol": "icmpv6"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"protocol": "139"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"dst-port": "500,4500",
"protocol": "udp"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"protocol": "ipsec-ah"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"protocol": "ipsec-esp"
},
{
"action": "accept",
"chain": "forward",
"comment": "defconf:",
"ipsec-policy": "in,ipsec"
},
{
"action": "drop",
"chain": "forward",
"comment": "defconf:",
"in-interface-list": "!LAN"
},
{
"action": "accept",
"chain": "forward",
"comment": "Allow",
"protocol": "icmpv6"
},
{
"action": "accept",
"chain": "input",
"comment": "Allow",
"protocol": "icmpv6"
},
{
"action": "accept",
"chain": "input",
"comment": "ids",
"src-address-list": "Openfactory"
},
{
"action": "accept",
"chain": "input",
"comment": "ids",
"src-address-list": "Cloudflare"
},
{
"action": "accept",
"chain": "input",
"comment": "ids",
"src-address-list": "PaloAlto"
},
{
"action": "drop",
"chain": "input",
"comment": "ids",
"src-address-list": "Blocked"
}
]
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+998
View File
@@ -0,0 +1,998 @@
2.57.122.13
2.57.122.173
2.58.56.101
3.27.206.50
3.77.92.222
3.79.41.12
3.101.54.4
3.107.107.18
3.237.185.144
3.250.52.216
4.184.121.217
4.184.185.91
4.184.238.149
4.185.41.66
4.193.178.28
4.194.24.143
4.204.201.85
4.223.65.51
4.223.71.149
4.223.73.90
4.223.77.241
4.223.140.16
4.223.226.192
4.225.166.176
4.225.166.222
4.225.203.22
4.225.203.146
4.231.36.50
4.232.147.36
4.232.185.87
4.232.185.206
4.232.188.49
4.236.158.50
4.246.70.112
5.34.213.142
5.104.85.119
5.161.62.209
5.161.225.116
5.253.247.16
5.255.119.161
8.229.1.130
8.229.130.50
8.229.189.90
8.231.78.19
8.234.157.73
8.234.207.247
8.235.76.197
8.235.114.162
9.205.16.190
13.57.15.41
13.83.161.80
13.126.86.18
13.221.106.198
15.206.146.240
16.146.99.254
18.191.56.164
18.227.73.7
18.236.136.230
20.9.4.9
20.9.15.100
20.9.44.210
20.9.85.55
20.12.214.177
20.46.121.148
20.46.252.52
20.48.234.177
20.48.236.161
20.52.54.143
20.52.125.110
20.52.217.208
20.55.86.49
20.63.10.215
20.63.63.128
20.79.29.209
20.91.140.156
20.91.199.21
20.91.203.45
20.91.208.34
20.91.239.158
20.100.169.152
20.100.172.153
20.100.173.28
20.100.175.1
20.100.176.141
20.100.178.92
20.100.186.69
20.100.187.246
20.100.191.218
20.100.198.199
20.100.203.84
20.104.16.169
20.104.18.253
20.104.22.47
20.104.50.116
20.104.96.117
20.106.182.98
20.113.56.22
20.113.142.140
20.116.62.111
20.119.205.224
20.125.176.178
20.127.18.0
20.151.10.161
20.151.200.100
20.151.205.204
20.151.225.23
20.170.16.216
20.170.17.213
20.171.55.167
20.172.218.20
20.184.150.240
20.195.181.10
20.196.209.159
20.197.178.120
20.197.192.193
20.197.195.24
20.198.114.210
20.199.136.34
20.199.181.219
20.199.183.73
20.200.216.112
20.203.133.142
20.203.135.57
20.203.148.31
20.203.179.12
20.203.200.218
20.203.208.191
20.203.209.227
20.203.219.190
20.203.221.142
20.203.243.122
20.205.229.184
20.206.67.15
20.206.89.130
20.206.105.145
20.208.40.114
20.208.41.112
20.214.106.237
20.215.185.25
20.215.186.32
20.215.189.213
20.215.191.139
20.215.211.30
20.215.211.95
20.215.216.94
20.215.218.105
20.215.218.234
20.218.73.95
20.218.243.163
20.220.15.170
20.220.150.193
20.220.203.117
20.220.210.52
20.220.212.5
20.220.225.223
20.220.227.237
20.226.5.174
20.226.26.5
20.226.43.166
20.226.60.151
20.226.83.28
20.226.90.242
20.226.114.112
20.230.47.94
20.230.87.222
20.240.137.17
20.250.24.46
20.251.48.84
20.251.48.208
20.251.58.190
23.94.155.57
23.95.226.104
23.102.123.231
23.161.169.62
23.161.169.127
23.178.112.103
23.178.112.104
23.178.112.105
23.178.112.106
23.178.112.107
23.178.112.108
23.178.112.210
23.178.112.211
23.178.112.212
23.178.112.213
23.178.112.219
23.180.120.134
23.180.120.146
23.234.98.171
24.144.85.55
31.56.58.122
31.56.58.124
31.56.58.129
31.56.58.134
31.58.51.130
31.59.129.193
31.184.236.8
34.7.160.235
34.7.193.250
34.9.173.20
34.11.108.163
34.11.127.22
34.17.159.73
34.17.191.102
34.18.38.137
34.21.144.169
34.23.104.90
34.24.155.203
34.26.191.118
34.26.219.248
34.31.88.250
34.38.186.58
34.39.210.94
34.40.240.124
34.42.48.100
34.47.183.174
34.47.194.183
34.48.168.223
34.53.218.155
34.55.200.45
34.57.157.110
34.59.187.134
34.62.38.199
34.64.173.205
34.65.14.246
34.65.18.71
34.65.138.195
34.69.107.154
34.73.128.17
34.74.203.130
34.75.4.161
34.82.10.34
34.83.69.198
34.84.59.119
34.86.126.198
34.86.217.208
34.90.87.32
34.90.88.37
34.91.134.67
34.91.243.226
34.92.204.213
34.94.172.72
34.95.238.121
34.95.239.96
34.105.30.251
34.116.255.65
34.118.184.2
34.125.42.15
34.125.213.146
34.125.219.56
34.131.251.163
34.139.141.56
34.140.63.19
34.140.123.172
34.140.156.231
34.141.160.140
34.145.62.28
34.146.12.12
34.148.8.63
34.148.98.62
34.154.122.183
34.156.139.95
34.158.83.192
34.171.75.208
34.175.82.8
34.176.154.83
34.181.134.189
34.186.83.134
34.187.20.70
34.187.82.183
34.187.200.119
34.242.226.103
34.244.177.56
35.157.251.190
35.182.17.8
35.184.157.121
35.185.21.88
35.187.9.30
35.187.221.219
35.192.232.168
35.196.22.146
35.198.180.224
35.199.111.12
35.199.115.51
35.199.183.190
35.201.159.247
35.204.88.252
35.204.141.252
35.205.237.94
35.230.52.27
35.231.41.225
35.231.100.82
35.231.118.233
35.233.191.179
35.234.181.205
35.237.138.104
35.237.178.50
35.237.181.242
35.243.173.211
35.243.223.147
35.255.40.65
36.106.166.92
36.106.166.223
37.140.223.6
37.140.223.58
38.248.95.248
41.143.154.1
43.98.201.177
43.228.157.102
43.228.157.178
43.228.157.191
44.245.216.107
44.248.34.34
44.251.113.120
45.8.196.200
45.45.237.69
45.45.237.214
45.61.150.67
45.61.187.30
45.67.85.190
45.88.138.44
45.130.203.154
45.130.203.177
45.131.193.139
45.131.193.176
45.131.193.191
45.131.195.127
45.131.195.153
45.131.195.175
45.134.20.116
45.134.20.128
45.138.16.114
45.139.104.172
45.146.54.80
45.146.54.137
45.146.55.11
45.146.55.48
45.146.55.165
45.148.10.21
45.148.10.40
45.148.10.42
45.148.10.60
45.148.10.62
45.148.10.67
45.148.10.95
45.148.10.119
45.148.10.120
45.148.10.194
45.148.10.244
45.148.10.247
45.153.34.16
45.153.34.43
45.153.34.182
45.154.98.52
45.154.98.101
45.154.98.134
45.154.138.181
45.154.138.232
46.23.108.234
46.232.235.3
46.232.235.4
46.232.235.5
46.232.235.6
47.85.160.47
50.116.9.132
51.79.208.246
51.103.131.31
51.103.133.211
51.103.152.96
51.107.190.246
51.116.233.22
51.120.76.82
51.120.79.193
51.120.83.160
52.64.227.143
52.139.36.144
52.159.244.176
52.165.196.84
52.165.250.117
52.167.144.160
52.184.96.217
52.225.25.48
52.238.192.78
52.242.193.144
52.242.217.80
52.253.111.48
54.82.69.43
54.163.186.39
54.169.103.174
54.179.129.22
54.206.147.115
54.210.219.163
54.216.227.171
54.251.19.144
58.212.237.231
62.60.130.128
62.60.130.227
62.93.179.146
64.23.218.208
64.89.161.82
64.89.161.85
64.225.63.129
64.225.75.246
64.226.123.37
64.227.32.66
65.0.122.218
66.187.5.228
66.187.6.102
66.228.38.221
66.249.74.164
66.249.74.165
66.249.79.68
68.183.9.16
68.183.180.73
68.221.69.72
68.221.130.241
68.221.137.211
68.221.186.136
69.30.85.194
69.164.220.85
69.164.220.232
72.11.155.223
72.146.20.230
72.146.33.199
73.116.194.16
74.7.227.43
74.7.230.46
74.7.241.46
74.7.241.170
74.208.40.151
74.248.16.78
74.248.20.32
74.248.24.61
74.248.24.145
74.248.33.65
74.248.35.25
74.248.96.101
74.248.97.169
74.248.139.103
74.249.245.134
77.90.185.129
77.90.185.230
80.91.86.169
80.94.92.167
81.171.72.93
81.171.72.135
81.171.74.60
82.39.206.154
82.102.18.180
82.102.18.182
82.102.18.188
82.102.18.190
82.165.82.154
84.17.60.251
84.235.249.236
85.11.167.225
85.204.70.90
85.204.70.92
85.204.70.94
85.204.70.96
85.204.70.98
85.204.70.100
85.204.70.102
85.204.70.106
85.204.70.112
85.204.70.114
85.204.70.116
85.204.70.118
87.121.79.42
88.184.210.4
91.92.41.115
91.92.42.86
91.92.47.81
91.92.47.101
91.92.47.153
91.92.241.196
91.92.243.245
91.124.88.29
91.124.88.36
91.134.35.95
91.148.244.131
91.148.245.81
91.192.10.86
91.192.10.243
91.193.232.61
91.193.232.155
91.193.232.168
91.193.232.249
91.224.92.159
91.224.92.190
91.230.225.2
91.230.225.186
91.230.225.189
91.230.225.192
91.239.79.146
92.118.39.29
92.118.39.126
92.119.121.196
92.165.170.72
93.123.109.10
93.123.109.101
93.123.109.152
93.123.109.163
93.123.109.165
93.123.109.166
93.123.109.167
93.123.109.178
93.152.221.13
94.154.43.177
94.154.43.178
94.154.43.179
94.154.43.183
94.154.43.184
94.154.43.185
94.154.43.186
94.154.43.187
94.154.43.188
94.154.43.229
95.85.238.18
96.126.130.210
98.159.36.147
98.159.37.147
102.37.110.74
103.76.88.36
103.76.88.37
103.153.183.126
103.168.66.237
103.177.150.66
103.215.75.19
103.215.75.66
103.221.220.62
104.28.197.9
104.28.215.219
104.28.215.220
104.28.222.131
104.28.240.187
104.28.240.188
104.28.240.189
104.28.247.219
104.28.247.220
104.28.254.131
104.28.254.134
104.154.228.246
104.168.93.75
104.196.62.35
104.199.182.104
104.208.94.19
104.234.19.67
104.234.19.110
104.238.222.26
104.248.5.228
104.248.151.168
104.251.181.106
106.63.26.6
106.63.26.7
106.63.26.8
106.63.26.21
106.63.26.22
106.117.109.102
107.170.9.103
107.173.254.55
108.130.204.104
110.179.80.63
110.179.80.213
110.179.81.90
111.113.88.210
111.113.89.107
112.94.252.15
113.31.186.196
113.57.186.101
117.14.153.168
118.81.196.142
118.81.207.202
118.194.253.208
118.212.120.78
121.29.51.109
123.158.61.179
123.160.175.254
123.163.114.150
123.178.210.228
124.88.113.10
124.117.194.69
128.90.128.9
128.90.128.13
128.90.141.10
128.199.182.55
128.199.182.152
130.12.180.39
130.12.180.126
130.12.182.12
130.12.182.66
130.12.182.254
130.131.231.171
132.196.11.13
132.196.83.33
134.122.94.138
134.199.148.147
134.209.25.199
134.209.185.72
135.119.63.61
135.119.74.228
135.225.93.215
135.232.177.160
136.64.51.224
136.64.132.60
136.66.0.6
136.66.128.85
136.66.153.34
136.70.149.147
136.70.153.123
136.85.73.62
136.85.109.148
136.107.208.33
136.107.217.8
136.108.11.195
136.108.15.119
136.109.87.37
136.109.138.137
136.110.80.8
136.115.17.125
136.116.215.248
136.144.19.51
136.144.33.102
136.144.35.201
136.144.43.127
137.131.8.253
138.124.103.234
138.197.34.12
138.197.104.211
138.197.191.87
139.28.219.70
139.59.118.17
139.59.231.238
140.248.75.106
141.98.11.171
141.148.153.213
142.93.62.168
142.93.155.36
142.111.152.16
142.111.152.57
143.20.64.236
143.110.178.165
143.110.217.244
143.198.6.225
143.198.25.99
143.198.196.120
143.244.57.84
143.244.57.92
143.244.57.120
143.244.57.121
143.244.57.123
143.244.162.58
143.244.168.161
143.244.186.167
144.76.19.27
144.126.207.57
144.172.93.117
144.172.97.164
144.172.100.174
144.172.101.168
145.132.103.19
146.70.36.142
146.70.40.68
146.70.194.220
146.70.194.228
146.70.194.230
146.70.194.252
146.70.194.254
146.190.63.48
146.190.63.248
146.190.83.166
146.190.111.244
147.93.168.91
147.93.169.103
147.93.169.104
147.93.171.188
147.182.149.75
148.251.182.79
149.56.150.98
150.255.94.250
151.240.45.69
152.39.198.115
152.42.137.175
152.42.196.11
152.53.242.93
153.75.89.249
154.54.100.172
154.54.100.173
155.2.215.98
157.143.3.35
157.245.63.62
157.245.105.107
157.245.113.227
157.245.197.36
157.245.204.205
158.51.126.144
158.101.144.198
158.158.32.226
158.158.32.229
158.158.36.150
158.158.41.78
158.158.41.79
158.158.45.224
158.158.76.106
158.158.96.17
158.158.105.63
159.65.10.116
159.65.144.72
159.89.12.166
159.89.46.165
159.89.97.19
159.89.117.109
159.89.123.252
159.89.174.87
159.203.13.62
159.223.79.25
159.223.132.86
160.179.166.124
160.179.166.222
161.35.168.166
161.118.245.12
161.118.251.181
162.141.167.14
162.141.167.71
162.243.79.174
163.7.12.6
163.7.12.80
163.7.12.95
163.7.13.111
163.7.13.115
163.7.13.205
164.90.169.163
165.22.24.78
165.22.147.152
165.22.235.3
165.245.190.205
167.71.0.47
167.71.39.61
167.86.82.167
167.99.181.249
167.99.182.39
167.99.204.6
167.99.210.137
167.172.31.131
167.172.53.28
167.172.192.26
168.62.180.116
168.144.83.150
168.144.100.227
168.144.106.212
168.144.167.238
168.144.174.42
169.58.39.189
170.64.144.116
170.64.156.114
171.104.81.195
172.86.119.249
172.86.122.106
172.98.33.251
172.161.1.105
172.170.254.20
172.171.198.214
172.196.32.64
172.202.29.124
172.202.37.160
172.202.44.182
172.202.95.21
172.204.17.66
172.206.67.244
172.212.171.144
172.213.2.180
172.213.8.106
172.213.27.135
172.213.144.209
172.213.153.79
172.213.155.173
172.213.208.13
172.213.208.20
172.213.216.126
172.213.218.74
172.213.225.181
172.213.227.73
172.213.232.128
172.213.244.85
172.232.175.132
172.245.102.64
173.230.156.37
173.239.196.33
173.239.196.35
173.239.240.222
173.239.240.239
173.249.34.197
176.227.240.17
176.227.240.61
178.16.54.137
178.62.196.238
178.128.176.132
179.43.134.114
180.95.231.78
182.88.226.154
182.119.230.145
185.93.89.147
185.93.89.167
185.151.21.124
185.177.72.5
185.177.72.9
185.177.72.10
185.177.72.12
185.177.72.13
185.177.72.17
185.177.72.22
185.177.72.24
185.177.72.29
185.177.72.30
185.177.72.31
185.177.72.38
185.177.72.49
185.177.72.52
185.177.72.53
185.177.72.54
185.177.72.56
185.177.72.58
185.177.72.67
185.177.72.69
185.177.72.70
185.177.72.81
185.177.72.100
185.177.72.205
185.192.71.2
185.192.71.3
185.192.71.5
185.192.71.6
185.192.71.13
185.192.71.16
185.192.71.76
185.192.71.247
185.198.240.238
185.213.175.168
185.223.152.26
185.223.152.40
185.223.152.60
185.223.152.103
185.223.152.126
185.238.231.167
185.251.19.30
188.95.65.99
188.166.227.85
188.166.245.173
188.213.202.84
188.213.202.113
188.213.202.116
188.213.202.121
191.232.199.39
191.235.102.147
191.235.105.17
191.237.250.106
191.237.255.150
192.34.61.236
192.133.77.14
192.133.77.15
192.133.77.16
192.133.77.17
192.133.77.18
192.253.248.7
192.253.248.142
193.19.109.68
193.19.109.122
193.19.109.151
193.36.224.57
193.36.225.117
193.36.225.133
193.36.225.180
193.37.32.149
193.37.32.157
193.37.32.159
193.37.33.55
193.37.33.117
193.37.33.251
193.47.62.167
193.47.62.168
193.143.1.112
193.148.56.148
193.148.57.33
193.149.176.55
194.5.82.59
194.5.82.61
194.5.82.63
194.5.82.87
194.5.82.89
194.5.82.92
194.5.82.95
194.5.82.98
194.5.82.100
194.5.82.104
194.5.82.123
194.5.82.141
194.5.82.153
194.26.192.156
194.32.120.151
194.102.104.29
194.156.79.68
194.233.91.21
195.178.110.18
195.178.110.31
195.178.110.48
195.178.110.72
195.178.110.100
195.178.110.104
195.178.110.135
195.178.110.155
195.178.110.159
195.178.110.199
195.178.110.211
195.178.110.223
195.178.110.241
195.178.110.242
198.98.52.229
199.16.157.180
199.16.157.181
199.16.157.182
199.16.157.183
200.162.145.50
200.162.145.220
200.162.152.170
201.78.128.89
203.159.90.217
206.81.12.187
206.81.24.227
206.189.19.19
206.189.95.232
206.189.233.36
207.154.197.113
207.175.20.232
207.175.31.171
207.175.159.248
207.175.165.22
207.241.173.229
208.84.102.195
209.87.169.76
209.87.169.125
209.87.169.142
209.97.166.251
209.99.189.125
209.99.189.152
209.99.189.160
209.99.189.190
209.99.190.99
209.99.190.126
209.126.2.173
210.1.31.3
211.175.22.56
213.35.113.47
213.35.127.232
213.111.158.220
216.24.210.46
216.24.212.14
216.24.212.43
216.24.212.45
216.24.212.233
216.24.212.243
216.26.233.39
216.73.163.119
216.73.163.122
216.73.163.132
216.73.163.138
216.73.163.148
216.73.216.10
216.73.216.24
216.73.216.25
216.73.216.40
216.73.216.41
216.73.216.66
216.73.216.67
216.73.216.98
216.73.216.133
216.73.216.135
216.73.216.140
216.73.216.209
216.73.216.229
216.73.216.230
216.73.216.244
216.73.217.11
216.73.217.13
216.73.217.32
216.73.217.54
216.73.217.65
216.73.217.87
216.73.217.121
216.73.217.145
216.73.217.173
216.73.217.176
216.81.248.20
217.217.252.197
220.202.112.100
221.13.93.71
222.176.200.21
222.176.200.251
223.199.187.171
+52
View File
@@ -0,0 +1,52 @@
2001:8d8:5ff:5f:82:165:82:154
2001:ba0:24c:a500::1
2001:448a:a071:520:e18f:3d1f:944e:174d
2001:4ca0:108:42::24
2400:8901::2000:62ff:fe9a:e1c2
2400:8901::2000:beff:fea3:5a44
2406:da18:525:0:a23e:e8f6:3ea1:4c2c
2600:3000:1305:4212::81
2600:3000:1305:4212::82
2600:3000:1305:4212::83
2600:3000:1305:4212::84
2600:3000:1305:4212::85
2600:3000:2710:200::81
2600:3000:2710:200::82
2600:3000:2710:200::83
2600:3000:2710:200::84
2600:3000:2710:200::85
2600:3000:2710:200::86
2600:3c09::2000:5cff:fe99:c802
2600:3c15::2000:53ff:fe31:8c0b
2600:3c15::2000:9cff:fef0:8ad6
2600:3c15::2000:adff:fe60:c527
2602:fa59:10:4c9::1
2602:fa59:10:712::1
2602:fa59:10:a3a::1
2602:fa59:10:e70::1
2a00:6340:2008:ec80:1ca2:6634:b8cd:fb01
2a00:6340:2008:ec80:64cc:9116:beb2:1931
2a00:6340:2008:ec80:be24:11ff:fe3b:4058
2a00:6340:2008:ec80:be24:11ff:fe7b:3c19
2a00:6340:2008:ec80:be24:11ff:fe82:2775
2a01:2a8:a0dd:1::1012
2a01:4f8:c014:7f9e::1
2a04:4e40:4400:0:537:cdd2:7250:95db
2a04:4e40:e000:0:33c:a689:be95:5a4
2a04:4e40:e000:0:566:f8d7:adbe:f536
2a04:4e40:e000:0:954:9789:20b1:d5fc
2a04:4e40:e000:0:bfc:4b0:174b:d52d
2a04:c300::3ce
2a04:c300:400::58
2a04:c300:400::5d
2a04:c300:400::6f
2a04:c300:400::99
2a05:4140:3::37cd
2a06:a880:5:7fb3::1
2a09:bac1:76c0:460::5e:6a
2a09:bac5:3e0d:11c3::1c5:145
2a09:bac5:55fb:18c8::278:a7
2a09:bac5:9443:3af::5e:4d
2a09:bac5:9443:3af::5e:88
2a0a:4cc0:2000:8528:c4e8:3ff:febb:3ee9
2a13:adc0::2ed:89ff:fe58:19c5
File diff suppressed because it is too large. Load diff
+24
View File
@@ -0,0 +1,24 @@
host,count
git.allucanget.biz,134073
s.allucanget.biz,61201
coolify.allucanget.biz,60922
wagnerloibner.com,46451
pbs.allucanget.biz,43743
openmicodyssey.com,31745
copyparty.allucanget.biz,21520
contact.allucanget.biz,16205
contact.wagnerloibner.com,15287
openwebui.allucanget.biz,14539
ai.allucanget.biz,14065
linearvoid.tv,12297
www.openmicodyssey.com,9609
admin.openmicodyssey.com,9304
api.openmicodyssey.com,8178
cam.openmicodyssey.com,2893
tcv.allucanget.biz,2557
lounge.allucanget.biz,2113
code.allucanget.biz,1026
www.wagnerloibner.com,709
m.allucanget.biz,242
postiz.allucanget.biz,190
media.linearvoid.tv,69
1 host count
2 git.allucanget.biz 134073
3 s.allucanget.biz 61201
4 coolify.allucanget.biz 60922
5 wagnerloibner.com 46451
6 pbs.allucanget.biz 43743
7 openmicodyssey.com 31745
8 copyparty.allucanget.biz 21520
9 contact.allucanget.biz 16205
10 contact.wagnerloibner.com 15287
11 openwebui.allucanget.biz 14539
12 ai.allucanget.biz 14065
13 linearvoid.tv 12297
14 www.openmicodyssey.com 9609
15 admin.openmicodyssey.com 9304
16 api.openmicodyssey.com 8178
17 cam.openmicodyssey.com 2893
18 tcv.allucanget.biz 2557
19 lounge.allucanget.biz 2113
20 code.allucanget.biz 1026
21 www.wagnerloibner.com 709
22 m.allucanget.biz 242
23 postiz.allucanget.biz 190
24 media.linearvoid.tv 69
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+33
View File
@@ -0,0 +1,33 @@
2a01:2a8:a0dd:1::1012 # errors=10317 total=10317 ratio=1.0 first=02/Aug/2026:05:06:41 +0200 last=18/Jul/2026:23:59:49 +0200
2a00:6340:2008:ec80:be24:11ff:fe7b:3c19 # errors=727 total=1800 ratio=0.404 first=03/Aug/2026:21:56:17 +0200 last=07/Aug/2026:17:34:08 +0200
2a0a:4cc0:2000:8528:c4e8:3ff:febb:3ee9 # errors=150 total=150 ratio=1.0 first=27/Jul/2026:14:49:23 +0200 last=27/Jul/2026:14:49:53 +0200
2a00:6340:2008:ec80:be24:11ff:fe3b:4058 # errors=105 total=120 ratio=0.875 first=31/Jul/2026:18:53:29 +0200 last=17/Jul/2026:17:28:19 +0200
2600:3000:1305:4212::83 # errors=95 total=168 ratio=0.565 first=02/Aug/2026:08:40:16 +0200 last=06/Aug/2026:22:37:20 +0200
2600:3000:1305:4212::81 # errors=86 total=153 ratio=0.562 first=02/Aug/2026:08:41:14 +0200 last=30/Jul/2026:02:00:11 +0200
2a06:98c0:3600::103 # errors=79 total=92 ratio=0.859 first=06/Aug/2026:15:15:49 +0200 last=05/Aug/2026:08:43:00 +0200
2600:3000:2710:200::82 # errors=74 total=138 ratio=0.536 first=03/Aug/2026:19:59:17 +0200 last=17/Jul/2026:17:14:39 +0200
2600:3000:2710:200::83 # errors=58 total=101 ratio=0.574 first=02/Aug/2026:08:43:47 +0200 last=17/Jul/2026:17:27:06 +0200
2600:3000:2710:200::85 # errors=53 total=93 ratio=0.57 first=04/Aug/2026:10:50:25 +0200 last=29/Jul/2026:02:00:14 +0200
2600:3000:1305:4212::85 # errors=51 total=90 ratio=0.567 first=02/Aug/2026:08:40:29 +0200 last=08/Aug/2026:14:05:44 +0200
2600:3000:2710:200::86 # errors=49 total=85 ratio=0.576 first=03/Aug/2026:02:00:12 +0200 last=17/Jul/2026:17:26:06 +0200
2600:3000:1305:4212::84 # errors=48 total=87 ratio=0.552 first=03/Aug/2026:19:20:49 +0200 last=07/Aug/2026:16:08:06 +0200
2600:3000:2710:200::81 # errors=44 total=83 ratio=0.53 first=04/Aug/2026:09:18:39 +0200 last=15/Jul/2026:18:29:14 +0200
2600:3000:1305:4212::82 # errors=43 total=77 ratio=0.558 first=02/Aug/2026:08:40:04 +0200 last=06/Aug/2026:22:42:16 +0200
2a09:bac5:9443:3af::5e:4d # errors=40 total=40 ratio=1.0 first=25/Jul/2026:05:55:27 +0200 last=25/Jul/2026:05:55:39 +0200
2600:3000:2710:200::84 # errors=26 total=48 ratio=0.542 first=03/Aug/2026:19:59:13 +0200 last=17/Jul/2026:17:22:50 +0200
2a04:c300:400::99 # errors=15 total=15 ratio=1.0 first=25/Jul/2026:16:45:35 +0200 last=25/Jul/2026:16:45:40 +0200
2600:3c15::2000:adff:fe60:c527 # errors=14 total=14 ratio=1.0 first=07/Aug/2026:12:23:28 +0200 last=07/Aug/2026:12:23:31 +0200
2a00:6340:2008:ec80:be24:11ff:fe82:2775 # errors=14 total=16 ratio=0.875 first=31/Jul/2026:19:10:46 +0200 last=31/Jul/2026:19:11:42 +0200
2a04:c300:400::6f # errors=12 total=19 ratio=0.632 first=04/Aug/2026:11:48:39 +0200 last=04/Aug/2026:11:48:43 +0200
2400:8901::2000:62ff:fe9a:e1c2 # errors=9 total=9 ratio=1.0 first=18/Jul/2026:21:57:41 +0200 last=18/Jul/2026:21:57:44 +0200
2a06:a880:5:7fb3::1 # errors=8 total=20 ratio=0.4 first=03/Aug/2026:07:38:51 +0200 last=03/Aug/2026:07:39:02 +0200
2a09:bac5:9443:3af::5e:88 # errors=8 total=8 ratio=1.0 first=16/Jul/2026:10:53:36 +0200 last=16/Jul/2026:10:53:36 +0200
2a04:c300:400::58 # errors=7 total=8 ratio=0.875 first=20/Jul/2026:23:55:45 +0200 last=29/Jul/2026:17:55:40 +0200
2a04:c300:400::5d # errors=7 total=13 ratio=0.538 first=23/Jul/2026:15:28:34 +0200 last=23/Jul/2026:15:28:38 +0200
2001:448a:a071:520:e18f:3d1f:944e:174d # errors=6 total=11 ratio=0.545 first=08/Aug/2026:13:13:00 +0200 last=08/Aug/2026:13:13:08 +0200
2001:4ca0:108:42::24 # errors=6 total=7 ratio=0.857 first=02/Aug/2026:20:56:28 +0200 last=19/Jul/2026:09:41:27 +0200
2001:8d8:5ff:5f:82:165:82:154 # errors=5 total=5 ratio=1.0 first=02/Aug/2026:22:01:57 +0200 last=30/Jul/2026:23:29:58 +0200
2600:3c09::2000:5cff:fe99:c802 # errors=5 total=5 ratio=1.0 first=28/Jul/2026:22:51:11 +0200 last=28/Jul/2026:22:51:14 +0200
2600:3c15::2000:53ff:fe31:8c0b # errors=5 total=8 ratio=0.625 first=23/Jul/2026:14:35:18 +0200 last=23/Jul/2026:14:34:55 +0200
2602:fa59:10:a3a::1 # errors=5 total=7 ratio=0.714 first=28/Jul/2026:04:10:02 +0200 last=28/Jul/2026:05:36:59 +0200
2a00:6340:2008:ec80:1ca2:6634:b8cd:fb01 # errors=5 total=10 ratio=0.5 first=06/Aug/2026:09:16:55 +0200 last=06/Aug/2026:11:41:37 +0200
File diff suppressed because it is too large. Load diff
+24 -8
View File
@@ -11,13 +11,13 @@ import argparse
import os
from dataclasses import dataclass, field
from .blocklist_history import (
from ..utils.blocklist_history import (
committed_lines,
cumulative_blocklist,
current_file_lines,
write_blocklist_report,
)
from .constants import (
from ..utils.constants import (
COPYPARTY_LOG_PATH,
COPYPARTY_REPORT_DIR,
DEFAULT_ERROR_RATIO,
@@ -27,14 +27,17 @@ from .constants import (
NPM_LOG_PATH,
NPM_REPORT_DIR,
REPORT_DIR,
REPORT_RETENTION_DAYS,
REPORT_RETENTION_MAX_FILES,
SUBNET_THRESHOLD,
)
from .firewall import MikrotikFirewall, write_blocklist_files
from .copyparty import CopypartyAnalyzer
from .npm import NpmAnalyzer
from .ip_utils import is_whitelisted
from .mikrotik import split_cidr_versions
from .whois import consolidate_by_subnet
from ..firewall import MikrotikFirewall, write_blocklist_files
from ..utils.retention import prune_report_dirs
from ..copyparty import CopypartyAnalyzer
from ..npm import NpmAnalyzer
from ..utils.ip_utils import is_whitelisted
from ..mikrotik import split_cidr_versions
from ..utils.whois import consolidate_by_subnet
@dataclass
@@ -224,6 +227,19 @@ def run_scan(params: ScanParams) -> ScanResult:
errors=errors)
print(f"blocklist report: {blocklist_report_path}")
# --- Step 8: prune old reports (retention) ------------------------------
# Each report subdirectory keeps at most REPORT_RETENTION_MAX_FILES files,
# all newer than REPORT_RETENTION_DAYS days. The blocklist files in
# ``app/data`` are always protected. ``--dry-run`` only previews.
pruned = prune_report_dirs(
params.report_dir, params.copyparty_report_dir, params.npm_report_dir,
dry_run=params.dry_run)
total_pruned = sum(len(paths) for paths in pruned.values())
action = "Would prune" if params.dry_run else "Pruned"
print(f"{action} {total_pruned} report file(s) "
f"(keep {REPORT_RETENTION_DAYS}d / "
f"max {REPORT_RETENTION_MAX_FILES} per dir)")
return ScanResult(
ok=True,
cp_exists=cp_exists,
+1 -1
View File
@@ -11,7 +11,7 @@ from __future__ import annotations
import json
import os
from .constants import SCAN_STATE_PATH
from ..utils.constants import SCAN_STATE_PATH
def load_state() -> dict[str, int]:
+13
View File
@@ -0,0 +1,13 @@
# Intrusion Detection System — shared utilities
#
# Modules:
# constants.py central configuration, paths, env vars
# files.py filesystem & I/O helpers
# ip_utils.py IP address parsing, validation, whitelist lookup
# models.py data models (Request, IPStats) + aggregate()
# reporting.py text rendering, table formatting
# utils.py shared CLI arg parser
# whitelists.py whitelist CIDR download, caching, validation
# whois.py WHOIS subnet queries, IP consolidation
# blocklist_history.py git-backed cumulative blocklist reconstruction
# retention.py report file retention & pruning
File renamed without changes.
@@ -62,6 +62,13 @@ SCAN_STATE_PATH = os.path.join(DATA_DIR, "scan_state.json")
SCAN_JOBS_PATH = os.path.join(DATA_DIR, "scan_jobs.json")
SCAN_JOBS_MAX = 50
# Report retention: per-directory cleanup of generated files under /reports/.
# Each directory keeps at most REPORT_RETENTION_MAX_FILES files, all newer
# than REPORT_RETENTION_DAYS days (see app/retention.py).
REPORT_RETENTION_DAYS = int(os.environ.get("REPORT_RETENTION_DAYS", "30"))
REPORT_RETENTION_MAX_FILES = int(
os.environ.get("REPORT_RETENTION_MAX_FILES", "10"))
# ---------------------------------------------------------------------------
# Log sources (configurable via environment)
# ---------------------------------------------------------------------------
View File
File renamed without changes.
File renamed without changes.
+1 -1
View File
@@ -10,7 +10,7 @@ from collections import Counter
from dataclasses import dataclass, field
from typing import Iterable
from . import bad_patterns
from .. import bad_patterns
from .ip_utils import ip_version, whitelist_of
File renamed without changes.
+107
View File
@@ -0,0 +1,107 @@
#!/usr/bin/env python3
"""Report retention for generated files under ``/reports/``.
Every subdirectory keeps at most ``REPORT_RETENTION_MAX_FILES`` files, all
newer than ``REPORT_RETENTION_DAYS`` days. Older timestamped reports (e.g.
``reports/copyparty/*.txt``) are pruned automatically after each consolidated
scan so the tree does not grow without bound.
The git-tracked blocklist source of truth
(``<report_dir>/app/data/blocklist_ipv4.txt`` / ``blocklist_ipv6.txt``) is
always protected and never pruned.
"""
from __future__ import annotations
import os
import time
from typing import Iterable
from .constants import (
REPORT_RETENTION_DAYS,
REPORT_RETENTION_MAX_FILES,
)
#: default protected files (never pruned): the cumulative blocklist
BLOCKLIST_FILES = ("blocklist_ipv4.txt", "blocklist_ipv6.txt")
def _age_days(mtime: float) -> float:
return (time.time() - mtime) / 86400.0
def prune_report_tree(root: str,
*,
max_age_days: int = REPORT_RETENTION_DAYS,
max_files: int = REPORT_RETENTION_MAX_FILES,
dry_run: bool = False,
protected: Iterable[str] = ()) -> dict[str, list[str]]:
"""Prune a report tree so each directory keeps ≤ ``max_files`` recent files.
A file is kept only if it is both among the ``max_files`` most recently
modified files in its directory AND newer than ``max_age_days`` days.
Protected paths are never touched. Returns ``{dir: [deleted paths]}``.
"""
protected_abs = {os.path.abspath(p) for p in protected}
removed: dict[str, list[str]] = {}
for dirpath, _dirnames, filenames in os.walk(root):
files: list[tuple[str, float]] = []
for name in filenames:
path = os.path.join(dirpath, name)
if os.path.abspath(path) in protected_abs:
continue # protected files are neither kept-counted nor pruned
try:
mtime = os.path.getmtime(path)
except OSError:
continue
files.append((path, mtime))
# Newest first; only these (within the age window) survive.
files.sort(key=lambda t: t[1], reverse=True)
newest = {path for path, _ in files[:max_files]}
cutoff_days = max_age_days
deleted: list[str] = []
for path, mtime in files:
if path in newest and _age_days(mtime) <= cutoff_days:
continue # keep: recent and within the file cap
deleted.append(path)
if not dry_run:
try:
os.remove(path)
except OSError:
# e.g. file in use on Windows — skip and leave it.
continue
if deleted:
removed[dirpath] = deleted
return removed
def prune_report_dirs(*roots: str,
dry_run: bool = False,
max_age_days: int = REPORT_RETENTION_DAYS,
max_files: int = REPORT_RETENTION_MAX_FILES,
) -> dict[str, list[str]]:
"""Prune each of the given report roots (deduplicated by real path).
The blocklist source-of-truth files are always protected.
Returns ``{dir: [deleted paths]}`` across all roots.
"""
protected = [
os.path.join(root, "app", "data", name)
for root in roots
for name in BLOCKLIST_FILES
]
seen: set[str] = set()
summary: dict[str, list[str]] = {}
for root in roots:
real = os.path.realpath(root)
if real in seen or not os.path.isdir(root):
continue
seen.add(real)
summary.update(prune_report_tree(
root, max_age_days=max_age_days, max_files=max_files,
dry_run=dry_run, protected=protected))
return summary
View File
File renamed without changes.
File renamed without changes.
View File
File renamed without changes.
+171
View File
@@ -0,0 +1,171 @@
#!/usr/bin/env python3
"""Flask web UI for the intrusion-detection system.
A localhost-only web server (``127.0.0.1:<high port>``) for running scans,
browsing reports, and managing the MikroTik blocklist / firewall.
Run directly: ``python -m app.web``
Or via the entry point: ``python app.py --web`` (see ``serve()``).
"""
from __future__ import annotations
import json
import os
from flask import Flask, jsonify, request
from ..utils.constants import (
APP_REPORT_DATA_DIR,
APP_REPORT_DIR,
COPYPARTY_LOG_PATH,
COPYPARTY_REPORT_DIR,
DEFAULT_ERROR_RATIO,
DEFAULT_MIN_DENIED,
DEFAULT_MIN_ERRORS,
DEFAULT_TOP,
MIKROTIK_REPORT_DIR,
NPM_LOG_PATH,
NPM_REPORT_DIR,
REPORT_DIR,
WEB_HOST,
WEB_PORT,
)
from ..firewall import MikrotikFirewall
from ..scan import ScanParams
from . import web_scan
#: report sources exposed by the API -> report directory
REPORT_SOURCES = {
"copyparty": COPYPARTY_REPORT_DIR,
"npm": NPM_REPORT_DIR,
"app": APP_REPORT_DIR,
"mikrotik": MIKROTIK_REPORT_DIR,
}
SCAN_KINDS = ("copyparty", "npm", "consolidated")
# ---------------------------------------------------------------------------
# helpers
# ---------------------------------------------------------------------------
def _count_lines(path: str) -> int | None:
"""Return the line count of a file, or None if it cannot be read."""
try:
with open(path, "r", encoding="utf-8") as f:
return sum(1 for _ in f)
except OSError:
return None
def _read_lines(path: str) -> list[str]:
"""Return non-empty lines of a file, or [] if it cannot be read."""
try:
with open(path, "r", encoding="utf-8") as f:
return [line.strip() for line in f if line.strip()]
except OSError:
return []
def _read_json(path: str, default: list | dict | None = None) -> list | dict:
"""Read a JSON file, returning ``default`` (or []) on failure."""
try:
with open(path, "r", encoding="utf-8") as f:
return json.load(f)
except (OSError, ValueError):
return default if default is not None else []
def _params_from_request() -> ScanParams:
"""Build ScanParams from the JSON request body, falling back to defaults."""
data = request.get_json(silent=True) or {}
def _pick(key: str, default):
value = data.get(key)
return default if value is None or value == "" else value
return ScanParams(
copyparty_log_path=str(
_pick("copyparty_log_path", COPYPARTY_LOG_PATH)),
copyparty_report_dir=str(
_pick("copyparty_report_dir", COPYPARTY_REPORT_DIR)),
min_denied=int(_pick("min_denied", DEFAULT_MIN_DENIED)),
npm_log_path=str(_pick("npm_log_path", NPM_LOG_PATH)),
npm_report_dir=str(_pick("npm_report_dir", NPM_REPORT_DIR)),
min_errors=int(_pick("min_errors", DEFAULT_MIN_ERRORS)),
error_ratio=float(_pick("error_ratio", DEFAULT_ERROR_RATIO)),
report_dir=str(_pick("report_dir", REPORT_DIR)),
top=int(_pick("top", DEFAULT_TOP)),
quiet=bool(data.get("quiet", False)),
full=bool(data.get("full", False)),
update_firewall=bool(data.get("update_firewall", False)),
dry_run=bool(data.get("dry_run", False)),
)
def _with_router(fn):
"""Connect to the router, run ``fn(fw)``, always disconnect.
Returns a JSON error response (502) if the router is unreachable.
"""
fw = MikrotikFirewall()
try:
fw.connect()
return fn(fw)
except Exception as e:
return jsonify({"error": str(e)}), 502
finally:
fw.disconnect()
def _sync_firewall(dry_run: bool):
"""Sync the latest consolidated blocklist to the router (preview or apply)."""
v4 = _read_lines(os.path.join(APP_REPORT_DATA_DIR, "blocklist_ipv4.txt"))
v6 = _read_lines(os.path.join(APP_REPORT_DATA_DIR, "blocklist_ipv6.txt"))
def _sync(fw):
changes = fw.sync_blocklist(v4, v6, dry_run=dry_run)
return jsonify({**changes, "dry_run": dry_run})
return _with_router(_sync)
# ---------------------------------------------------------------------------
# app factory
# ---------------------------------------------------------------------------
def create_app() -> Flask:
"""Build and configure the Flask application."""
_app_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
app = Flask(__name__,
template_folder=os.path.join(_app_dir, "templates"),
static_folder=os.path.join(_app_dir, "static"))
# Seed the in-memory job store from disk so the dashboard keeps showing
# recent scans across server restarts.
web_scan.load_persisted()
from .routes import register_routes
helpers = {
"_count_lines": _count_lines,
"_read_lines": _read_lines,
"_read_json": _read_json,
"_params_from_request": _params_from_request,
"_with_router": _with_router,
"_sync_firewall": _sync_firewall,
}
register_routes(app, REPORT_SOURCES, SCAN_KINDS, web_scan, helpers)
return app
def serve(host: str = WEB_HOST, port: int = WEB_PORT) -> None:
"""Run the web server on localhost at the configured high port."""
app = create_app()
print(f"Intrusion Detection web UI running at http://{host}:{port}")
app.run(host=host, port=port, use_reloader=False)
if __name__ == "__main__":
serve()
+20 -162
View File
@@ -1,151 +1,38 @@
#!/usr/bin/env python3
"""Flask web UI for the intrusion-detection system.
A localhost-only web server (``127.0.0.1:<high port>``) for running scans,
browsing reports, and managing the MikroTik blocklist / firewall.
Run directly: ``python -m app.web``
Or via the entry point: ``python app.py --web`` (see ``serve()``).
"""
"""Route definitions for the intrusion-detection web UI."""
from __future__ import annotations
import json
import os
from flask import Flask, abort, jsonify, render_template, request
from .constants import (
from ..utils.constants import (
APP_REPORT_DATA_DIR,
APP_REPORT_DIR,
BLOCKLIST_NAME,
COPYPARTY_LOG_PATH,
COPYPARTY_REPORT_DIR,
DEFAULT_ERROR_RATIO,
DEFAULT_MIN_DENIED,
DEFAULT_MIN_ERRORS,
DEFAULT_TOP,
MIKROTIK_DATA_DIR,
MIKROTIK_REPORT_DIR,
NPM_LOG_PATH,
NPM_REPORT_DIR,
REPORT_DIR,
WEB_HOST,
WEB_PORT,
WHITELIST_NAMES,
)
from .firewall import MikrotikFirewall
from .ip_utils import ip_version
from .scan import ScanParams
from . import web_scan
#: report sources exposed by the API -> report directory
REPORT_SOURCES = {
"copyparty": COPYPARTY_REPORT_DIR,
"npm": NPM_REPORT_DIR,
"app": APP_REPORT_DIR,
"mikrotik": MIKROTIK_REPORT_DIR,
}
SCAN_KINDS = ("copyparty", "npm", "consolidated")
from ..utils.ip_utils import ip_version
# ---------------------------------------------------------------------------
# helpers
# ---------------------------------------------------------------------------
def register_routes(app: Flask,
report_sources: dict,
scan_kinds: tuple,
web_scan,
helpers) -> None:
"""Register all web UI routes on the Flask application."""
def _count_lines(path: str) -> int | None:
"""Return the line count of a file, or None if it cannot be read."""
try:
with open(path, "r", encoding="utf-8") as f:
return sum(1 for _ in f)
except OSError:
return None
_count_lines = helpers["_count_lines"]
_read_lines = helpers["_read_lines"]
_read_json = helpers["_read_json"]
_params_from_request = helpers["_params_from_request"]
_with_router = helpers["_with_router"]
_sync_firewall = helpers["_sync_firewall"]
def _read_lines(path: str) -> list[str]:
"""Return non-empty lines of a file, or [] if it cannot be read."""
try:
with open(path, "r", encoding="utf-8") as f:
return [line.strip() for line in f if line.strip()]
except OSError:
return []
def _read_json(path: str, default: list | dict | None = None) -> list | dict:
"""Read a JSON file, returning ``default`` (or []) on failure."""
try:
with open(path, "r", encoding="utf-8") as f:
return json.load(f)
except (OSError, ValueError):
return default if default is not None else []
def _params_from_request() -> ScanParams:
"""Build ScanParams from the JSON request body, falling back to defaults."""
data = request.get_json(silent=True) or {}
def _pick(key: str, default):
value = data.get(key)
return default if value is None or value == "" else value
return ScanParams(
copyparty_log_path=str(
_pick("copyparty_log_path", COPYPARTY_LOG_PATH)),
copyparty_report_dir=str(
_pick("copyparty_report_dir", COPYPARTY_REPORT_DIR)),
min_denied=int(_pick("min_denied", DEFAULT_MIN_DENIED)),
npm_log_path=str(_pick("npm_log_path", NPM_LOG_PATH)),
npm_report_dir=str(_pick("npm_report_dir", NPM_REPORT_DIR)),
min_errors=int(_pick("min_errors", DEFAULT_MIN_ERRORS)),
error_ratio=float(_pick("error_ratio", DEFAULT_ERROR_RATIO)),
report_dir=str(_pick("report_dir", REPORT_DIR)),
top=int(_pick("top", DEFAULT_TOP)),
quiet=bool(data.get("quiet", False)),
full=bool(data.get("full", False)),
update_firewall=bool(data.get("update_firewall", False)),
dry_run=bool(data.get("dry_run", False)),
)
def _with_router(fn):
"""Connect to the router, run ``fn(fw)``, always disconnect.
Returns a JSON error response (502) if the router is unreachable.
"""
fw = MikrotikFirewall()
try:
fw.connect()
return fn(fw)
except Exception as e:
return jsonify({"error": str(e)}), 502
finally:
fw.disconnect()
def _sync_firewall(dry_run: bool):
"""Sync the latest consolidated blocklist to the router (preview or apply)."""
v4 = _read_lines(os.path.join(APP_REPORT_DATA_DIR, "blocklist_ipv4.txt"))
v6 = _read_lines(os.path.join(APP_REPORT_DATA_DIR, "blocklist_ipv6.txt"))
def _sync(fw):
changes = fw.sync_blocklist(v4, v6, dry_run=dry_run)
return jsonify({**changes, "dry_run": dry_run})
return _with_router(_sync)
# ---------------------------------------------------------------------------
# app factory
# ---------------------------------------------------------------------------
def create_app() -> Flask:
"""Build and configure the Flask application."""
app = Flask(__name__)
# Seed the in-memory job store from disk so the dashboard keeps showing
# recent scans across server restarts.
web_scan.load_persisted()
# --- pages -------------------------------------------------------------
@app.get("/")
def index():
@@ -198,11 +85,9 @@ def create_app() -> Flask:
@app.post("/api/scan/<kind>")
def start_scan(kind):
if kind not in SCAN_KINDS:
if kind not in scan_kinds:
abort(404, f"unknown scan kind: {kind}")
job = web_scan.start_scan(kind, _params_from_request())
# A busy-lock rejection is a bare {"error": ...}; a started job has
# "error" == None, so test for a truthy value, not key presence.
if job.get("error"):
return jsonify(job), 409
return jsonify(job), 202
@@ -225,7 +110,7 @@ def create_app() -> Flask:
@app.get("/api/reports/<source>")
def list_reports(source):
base = REPORT_SOURCES.get(source)
base = report_sources.get(source)
if base is None:
abort(404, f"unknown report source: {source}")
names = sorted(
@@ -235,7 +120,7 @@ def create_app() -> Flask:
@app.get("/api/reports/<source>/<path:name>")
def get_report(source, name):
base = REPORT_SOURCES.get(source)
base = report_sources.get(source)
if base is None:
abort(404, f"unknown report source: {source}")
full = os.path.realpath(os.path.join(base, name))
@@ -292,17 +177,10 @@ def create_app() -> Flask:
return _with_router(_remove)
# --- graph --------------------------------------------------------------
# --- graph -------------------------------------------------------------
@app.get("/api/graph/ipv4")
def graph_ipv4():
"""Data for the IPv4 /8 tile map.
Blocked targets come from the consolidated blocklist
(``reports/app/data/blocklist_ipv4.txt``); whitelisted ranges from the
router snapshot (``data/mikrotik/address_list_ipv4.json``) filtered to
the configured whitelist address-list names.
"""
blocked = _read_lines(
os.path.join(APP_REPORT_DATA_DIR, "blocklist_ipv4.txt"))
addr_v4 = _read_json(
@@ -343,17 +221,10 @@ def create_app() -> Flask:
@app.post("/api/firewall/sync")
def firewall_sync():
"""Preview the blocklist sync (dry-run, no changes applied)."""
return _sync_firewall(dry_run=True)
@app.post("/api/firewall/apply")
def firewall_apply():
"""Apply the blocklist sync (cumulative — adds new entries only).
The blocklist is grow-only: it adds entries present in the complete
set (git history + working files + scan targets) and only prunes
router entries never seen in any git version of the blocklist files.
"""
return _sync_firewall(dry_run=False)
# --- whitelist ---------------------------------------------------------
@@ -404,16 +275,3 @@ def create_app() -> Flask:
"name": name, "address": address})
return _with_router(_update)
return app
def serve(host: str = WEB_HOST, port: int = WEB_PORT) -> None:
"""Run the web server on localhost at the configured high port."""
app = create_app()
print(f"Intrusion Detection web UI running at http://{host}:{port}")
app.run(host=host, port=port, use_reloader=False)
if __name__ == "__main__":
serve()
Loaded 100 of 102 files, more files were not shown because too many files have changed in this diff. Show more