change: Mullvad import is WireGuard-only #145
Loading…
Reference in a new issue
No description provided.
Delete branch "change/mullvad-wireguard-only"
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?
Problem
Mullvad removed OpenVPN on 2026-01-15, server-side included, and the scraped
/en/serverstable no longer exists — the scrape raised before the WireGuard section could run, so Mullvad import was dead end-to-end. Probe details on #32 (this addresses that issue's Mullvad half; the Windscribe half stays open).Fix
MullvadProvider.fetchkeeps only the relay-list path: the page scrape, the four-entry OpenVPN protocol table and the certificate downloads (which served only OpenVPN configs) are gone. The protocol table shrinks to WireGuard's single fixed port rather than disappearing, becausecreate_server_dictand the gui protocol tab index the provider's entry unguarded.One guard rides along in the gui: the re-import carry-forward copied the previously selected protocol into the new table without checking it still exists, so a selection from the old four-entry table would dangle and crash the next connect. It now falls back to
protocol_1.Verification
pytest— 328 passed. The Mullvad characterization tests now pin the WG-only shape (all servers WireGuard, single-entry protocol table); the legacy-scrape fixture and the tableless-page test are deleted with the behavior they pinned. Key-upload and auth-failure tests unchanged.ruff+ compileall gates clean. Note: the live WG key-upload endpoint answers but needs a real-account test before 0.9.2 ships Mullvad as working — the legacy/wg/API may be retired in favor of the devices API at any point.Related fixes (found along the way, technically out of scope)
for k,v in c.items()with an unused k,v) — output identical, work tripled. Dropped.resources/Mullvad_configand the seededopenvpn.confare now vestigial for Mullvad (nothing can connect over OpenVPN); left in place — their fate is #143's template restructuring.🤖 Generated with Claude Code