Give the six provider implementations shared structure #23
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
airvpn,mullvad,pia,windscribe,protonvpnandazirevpninupdate.pyduplicate one skeleton: allow-list IPs, fetch, parse into{server, protocol, provider},copy_certs,finished.emit.The duplication causes real drift -- inconsistent error handling across the six,
and the
conf.ROOTDIRtypo that has never run.A
Providerbase class with a templaterun()and per-providerfetch/parsehooks is the right structure, and it is what makes SRP tractable: it becomes an
auth strategy on one provider rather than a special case inside a 100-line
method.
Do this after provider parsing has test coverage. These methods encode
undocumented API knowledge (AirVPN's RSA+AES handshake, Windscribe's CSRF login,
Mullvad's scraped table) that is the reason to keep this code at all.
Refactoring it blind is how that gets lost.
Provider-page design decisions from the 2026-08-20 import discussion (see #74), recorded here since the data model would land with this refactor:
SUPPORTED_PROVIDERSmembership checks, per-provider update routines, credential-store paths). This refactor is the moment that split becomes cheap; retrofitting it later is not.Import mechanics (multi-file picker replacing directory semantics) land independently via #74.