Username
2ea7eb41b7
tests: add extraction short-circuit and integration tests
...
CI / validate (push) Successful in 19s
Cover short-circuit guards, table/JSON/hint extraction,
and full extract_proxies() integration (82 tests, all passing).
2026-02-22 13:50:34 +01:00
Username
98b232f3d3
fetch: add short-circuit guards to extraction functions
...
Skip expensive regex scans when content lacks required markers:
- extract_auth_proxies: skip if no '@' in content
- extract_proxies_from_table: skip if no '<table' tag
- extract_proxies_from_json: skip if no '{' or '['
- Hoist table regexes to module-level precompiled constants
2026-02-22 13:50:29 +01:00
Username
b300afed6c
httpd: expose URL pipeline stats in /api/stats
...
CI / validate (push) Successful in 19s
Add urls section with total/healthy/dead/erroring counts, fetch
activity, productive source count, aggregate yield, and top sources
ranked by working_ratio.
2026-02-22 11:53:57 +01:00
Username
eeadf656f5
httpd: add ASN enrichment for worker-reported proxies
...
CI / validate (push) Successful in 20s
Load pyasn database in httpd and look up ASN when workers report
working proxies. Falls back to a pure-Python ipasn.dat reader when
the pyasn C extension is unavailable (Python 2.7 containers).
Backfills existing proxies with null ASN on startup.
2026-02-22 11:30:01 +01:00
Username
7ae0ac0c26
ppf: add periodic re-seeding of proxy source URLs
...
Seed sources that error out are permanently excluded from claiming.
Over time this starves the pipeline. Re-seed every 6 hours with
error reset for exhausted sources, preventing the starvation loop
that caused the previous outage.
2026-02-22 11:18:45 +01:00
Username
35285a84bf
watchd: update last_seen on successful proxy verification
...
CI / validate (push) Successful in 20s
Serving endpoints filter by last_seen >= now - 3600, but watchd
never set last_seen -- only worker reports did. This caused the
API to return 0 proxies despite 70+ passing verification.
2026-02-22 10:04:28 +01:00
Username
438e956be9
httpd: log report-proxies 500 errors
CI / validate (push) Successful in 19s
2026-02-20 09:30:53 +01:00
Username
5dd9060c2b
ppf: add periodic heartbeat and proxy reporting during test phase
CI / validate (push) Successful in 19s
2026-02-19 18:17:19 +01:00
Username
304cdb3b4c
comboparse: replace SafeConfigParser with ConfigParser
CI / validate (push) Successful in 19s
2026-02-18 21:01:10 +01:00
Username
9f926f4ab5
ci: consolidate jobs, expand import check, add yaml lint
CI / validate (push) Failing after 19s
2026-02-18 20:59:49 +01:00
Username
7705ef54f6
ci: run syntax-check in container (fix missing git)
CI / syntax-check (push) Successful in 17s
CI / memory-leak-check (push) Successful in 16s
2026-02-18 18:34:54 +01:00
Username
f5b9037763
docs: update roadmap with completed target health tracking
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 17s
2026-02-18 18:23:58 +01:00
Username
56accde90d
httpd: add mitm field to JSON proxy list endpoints
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 16s
2026-02-18 18:21:58 +01:00
Username
e985f52fe6
watchd: add target health tracking for all target pools
...
Generalizes JudgeStats into TargetStats with cooldown-based filtering
for head targets, SSL targets, and IRC servers. Targets that repeatedly
block or fail are temporarily avoided, preventing unfair proxy failures
when a target goes down. Exposes per-pool health via /api/stats.
2026-02-18 18:21:53 +01:00
Username
3e5c486e7e
watchd: adaptive ssl for secondary checks
...
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 18s
Use SSL error reason from primary handshake to decide whether
the secondary check should use SSL or plain HTTP. Protocol errors
(proxy can't TLS) fall back to plain HTTP; other failures retry
with SSL sans cert verification.
2026-02-18 09:49:40 +01:00
Username
727ed86692
compose: add k8s-file logging driver to master
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 17s
2026-02-18 08:35:04 +01:00
Username
821ade95ef
worker: add local proxy test cache
...
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 16s
Skip redundant proxy tests across URL batches using a memory-only
TTL cache (default 300s, configurable via worker.cache_ttl).
2026-02-18 01:37:09 +01:00
Username
01b91836c4
tools: fix ansible output filter in ppf-db
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 16s
2026-02-18 01:02:45 +01:00
Username
04fb362181
tools: add ppf-status cluster overview
2026-02-18 01:02:42 +01:00
Username
304830e382
watchd: delete proxies immediately on max_fail instead of marking stale
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 17s
2026-02-18 00:50:00 +01:00
Username
752ef359b5
docs: update odin role to SSL-only verification
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 17s
2026-02-18 00:46:51 +01:00
Username
af6e27bd77
config: allow ppf.threads = 0 to disable URL cycling
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 17s
2026-02-18 00:33:16 +01:00
Username
c091216afc
docs: add ppf-db to README operations toolkit
CI / syntax-check (push) Failing after 1s
CI / memory-leak-check (push) Successful in 16s
2026-02-18 00:29:28 +01:00
Username
4cefdf976c
docs: update CLAUDE.md for ppf-db and corrected odin role
2026-02-18 00:29:25 +01:00
Username
98c2e74412
ppf: skip URL cycling when ppf.threads = 0
2026-02-18 00:28:37 +01:00
Username
24d6f345f6
tools: add ppf-db for database operations
2026-02-18 00:28:27 +01:00
Username
1ca096c78a
ppf-service: use down+up for restart to pick up code changes
2026-02-18 00:22:55 +01:00
Username
15a7f0bb6a
ppf-common: fix compose_cmd to run as podman user
2026-02-18 00:22:52 +01:00
Username
b6045bd05c
tools: use down+up in deploy handler to pick up code changes
2026-02-18 00:22:48 +01:00
Username
d7b004f0ac
httpd: include protocol in /proxies plain text format
2026-02-18 00:18:58 +01:00
Username
00952b7947
fix: call evaluate() in worker mode before checking results
...
failcount was initialized to 0 and never updated because
evaluate() was skipped, causing all proxies to pass.
2026-02-18 00:16:35 +01:00
Username
6800995361
docs: reflect podman-compose on all nodes
...
Remove stale systemd unit and standalone podman run references.
All nodes now managed exclusively via compose.
2026-02-17 23:44:35 +01:00
Username
7a271896a8
ppf-common: fix ad-hoc ansible for toolkit inventory
...
Add --become to ansible_cmd (needed when connecting as
ansible user). Add cd /tmp to podman_cmd so sudo -u podman
doesn't fail on inaccessible /home/ansible cwd.
2026-02-17 23:38:13 +01:00
Username
8779979780
tools: use compose up -d for ppf-service restart
2026-02-17 23:23:10 +01:00
Username
195d25c653
tools: use compose up -d instead of restart in handler
...
compose restart reuses the existing container config; up -d
recreates from compose.yml, picking up changes like renamed
CLI flags.
2026-02-17 23:22:33 +01:00
Username
9b8be9d302
tools: use toolkit inventory for all ansible commands
...
Route ansible_cmd through ppf inventory instead of /opt/ansible
default. Eliminates dynamic inventory warnings and connects
via WireGuard IPs.
2026-02-17 23:22:29 +01:00
Username
9eff4496d6
docs: update README and ROADMAP for playbook deployment
2026-02-17 23:19:59 +01:00
Username
b1de91a969
docs: update CLAUDE.md for playbook-based deployment
...
Document WireGuard connectivity, playbook architecture, --check
flag, parallel execution, and updated ad-hoc ansible commands
using toolkit inventory.
2026-02-17 23:19:54 +01:00
Username
df2078c7f7
tools: fix symlink resolution in ppf-logs and ppf-service
2026-02-17 23:18:50 +01:00
Username
782deab95d
tools: rewrite ppf-deploy as playbook wrapper
...
Replace sequential ansible ad-hoc calls with ansible-playbook.
Add ansible_playbook_cmd to shared library. Supports --check
for dry runs.
2026-02-17 23:18:46 +01:00
Username
8208670fc1
tools: add ansible deploy playbook
...
Parallel execution across hosts, handler-based restart on change,
role-aware paths via group_vars. Connects over WireGuard with
dedicated inventory and SSH key.
2026-02-17 23:18:41 +01:00
Username
d902ecafff
docs: add tools to ROADMAP.md file reference
2026-02-17 22:53:01 +01:00
Username
fdb761f9f1
docs: add operations toolkit to README.md
2026-02-17 22:52:58 +01:00
Username
12f6b1d8eb
docs: update CLAUDE.md for operations toolkit
...
Replace verbose ansible deployment commands with ppf-deploy,
ppf-logs, and ppf-service references. Keep raw ansible only
for ad-hoc config operations not covered by tools.
2026-02-17 22:52:54 +01:00
Username
1f14173595
tools: add ppf-service
...
Status, start, stop, restart for PPF containers. Status includes
compose ps, master health check, and worker API query.
2026-02-17 22:50:42 +01:00
Username
2128814a41
tools: add ppf-logs
...
View container logs with -f follow and -n line count. Resolves
dynamic UID and container name per node role.
2026-02-17 22:50:38 +01:00
Username
7f59cae05c
tools: add ppf-deploy
...
Validates syntax, rsyncs code, copies compose files, fixes ownership,
restarts containers. Supports --no-restart and per-host targeting.
2026-02-17 22:50:34 +01:00
Username
9b7ca20728
tools: add shared library ppf-common.sh
...
Host topology, ansible/podman/compose wrappers, color helpers,
syntax validation, and target resolution for the PPF ops toolkit.
2026-02-17 22:50:30 +01:00
Username
82c909d7c0
rename --worker-v2 to --worker
...
No V1 means no need for the suffix. Update flag, function name,
compose command, log messages, and docs.
2026-02-17 22:30:09 +01:00
Username
cb52a978e9
todo: mark V1 worker deprecation complete
2026-02-17 22:13:49 +01:00