- Add scale_cooldown and scale_threshold config options - ThreadScaler now reads scaling params from config - Reset priority queue counter when queue empties to prevent unbounded growth
163 lines
3.3 KiB
Plaintext
163 lines
3.3 KiB
Plaintext
# PPF Configuration
|
|
# Copy this file to config.ini and adjust as needed.
|
|
|
|
[common]
|
|
# Comma-separated list of Tor SOCKS5 proxy addresses
|
|
tor_hosts = 127.0.0.1:9050
|
|
|
|
# Network timeouts (seconds)
|
|
timeout_connect = 10
|
|
timeout_read = 15
|
|
|
|
# Enable cProfile profiling (writes to data/profile.stats)
|
|
profiling = 0
|
|
|
|
[watchd]
|
|
# Proxy validation daemon settings
|
|
|
|
# Database file for proxy storage
|
|
database = proxies.sqlite
|
|
|
|
# Check type(s): judges, ssl, irc, head, tor (comma-separated for random selection)
|
|
# judges - HTTP judge servers that echo back request headers
|
|
# ssl - TLS handshake test (port 443, verifies MITM)
|
|
# irc - IRC server connection test (port 6667)
|
|
# head - HTTP HEAD request test (port 80)
|
|
# tor - Tor exit check via check.torproject.org (port 80)
|
|
checktype = judges,head
|
|
|
|
# Thread configuration
|
|
threads = 50
|
|
min_threads = 5
|
|
|
|
# Timeout for proxy test connections (seconds)
|
|
timeout = 15
|
|
|
|
# Adaptive timeout: extra time per failure (seconds)
|
|
timeout_fail_inc = 1.5
|
|
timeout_fail_max = 15
|
|
|
|
# Number of failures before proxy marked dead
|
|
max_fail = 5
|
|
|
|
# Check intervals (seconds)
|
|
checktime = 1800
|
|
perfail_checktime = 3600
|
|
|
|
# Minimum success rate to accept results (percentage)
|
|
outage_threshold = 4.0
|
|
|
|
# Batch size for database writes
|
|
submit_after = 200
|
|
|
|
# Days before removing dead proxies
|
|
stale_days = 30
|
|
|
|
# Seconds between stats reports (0 = disabled)
|
|
stats_interval = 300
|
|
|
|
# Re-test old (previously dead) proxies
|
|
oldies = 0
|
|
oldies_checktime = 43200
|
|
oldies_multi = 10
|
|
|
|
# Server list file for IRC/head checks
|
|
source_file = servers.txt
|
|
|
|
# Enable Tor circuit health monitoring
|
|
tor_safeguard = 1
|
|
|
|
# Thread scaling
|
|
scale_cooldown = 10
|
|
scale_threshold = 10.0
|
|
|
|
# Debug output
|
|
debug = 0
|
|
|
|
[ppf]
|
|
# URL harvester settings
|
|
|
|
# Database file (usually same as watchd)
|
|
database = proxies.sqlite
|
|
|
|
# Number of URL fetcher threads
|
|
threads = 3
|
|
|
|
# Timeout for URL fetches (seconds)
|
|
timeout = 15
|
|
|
|
# HTTP connection retries
|
|
http_retries = 1
|
|
|
|
# Check intervals for URLs (seconds)
|
|
checktime = 3600
|
|
perfail_checktime = 3600
|
|
|
|
# Number of failures before URL marked dead
|
|
max_fail = 5
|
|
|
|
# Only extract URLs from same domain
|
|
extract_samedomain = 0
|
|
|
|
# Max age in days for proxy list URLs
|
|
# URLs older than this that never produced proxies are skipped
|
|
list_max_age_days = 7
|
|
|
|
# Debug output
|
|
debug = 0
|
|
|
|
[scraper]
|
|
# Search engine scraper settings
|
|
|
|
# Enable scraper
|
|
enabled = 1
|
|
|
|
# Number of scraper threads
|
|
threads = 3
|
|
|
|
# Search engines: searx, duckduckgo, startpage, brave, ecosia,
|
|
# mojeek, qwant, yandex, github, gitlab, codeberg, gitea
|
|
engines = searx,duckduckgo,github
|
|
|
|
# Query mode: p=proxies, s=search, w=websites (combine: psw)
|
|
query = psw
|
|
|
|
# Max pages to fetch per query
|
|
max_pages = 5
|
|
|
|
# Rate limiting: backoff delays (seconds)
|
|
backoff_base = 30
|
|
backoff_max = 3600
|
|
fail_threshold = 2
|
|
|
|
# LibreTranslate for multilingual queries (optional)
|
|
libretranslate_enabled = 0
|
|
libretranslate_url = https://lt.mymx.me/translate
|
|
|
|
# Debug output
|
|
debug = 0
|
|
|
|
[httpd]
|
|
# Web dashboard settings
|
|
|
|
# Enable web dashboard
|
|
enabled = 1
|
|
|
|
# Listen address (use 0.0.0.0 for all interfaces)
|
|
listenip = 127.0.0.1
|
|
|
|
# Listen port
|
|
port = 8081
|
|
|
|
[worker]
|
|
# Distributed worker settings (for --worker mode)
|
|
|
|
# Proxies per work batch
|
|
batch_size = 100
|
|
|
|
# Heartbeat interval in seconds
|
|
heartbeat = 60
|
|
|
|
# Seconds before unclaimed work is released
|
|
claim_timeout = 300
|