PureVPN provider revamp#3165
Conversation
…iner start - prevent leaks for connections made the first ~10 milliseconds when Gluetun starts - seems critical, but in practice this very rarely happen and it very hard to reproduce
|
This PR is more comprehensive but addresses much of the shortcomings of #3149 by finding a better avenue to get an updated server list and parsing accepted protocols, port numbers, and other attributes directly from the same source used by PureVPN's GUI clients. |
|
Test results summary for the PureVPN provider revamp branch. Branch / commit
1) Targeted validation on host (macOS)go build ./cmd/gluetun
go test ./internal/provider/purevpn/... ./internal/provider/purevpn/updater/...Result: ✅ pass 2) Targeted validation in Linux amd64 containerdocker run --rm --platform linux/amd64 \
-v "$PWD":/src -w /src golang:1.25-alpine3.22 \
sh -lc '/usr/local/go/bin/go build ./cmd/gluetun && /usr/local/go/bin/go test ./internal/provider/purevpn/... ./internal/provider/purevpn/updater/...'Result: ✅ pass 3) Full suite on host (informational)go test ./...Result:
PureVPN-related packages are green in all runs above. |
|
[Generated by Codex] Summary of review feedback addressed:
Validation done locally:
|
|
[Generated by Codex]\n\nI split the selector work into a dedicated stacked PR based on :\n- https://github.com/reedog117/gluetun/pull/1\n\nThis contains the PureVPN selector functionality (, , , , country/location code selectors) separated from the base updater changes. |
|
@qdm12 what additional steps are needed at this point to merge this and then i can bring in the newer selector functionality? |
qdm12
left a comment
There was a problem hiding this comment.
Thanks! More comments to address, I'll review one last time after that. It's a bit of a huge PR, so it takes time to review 😉
Awesome - will work on this in the next few days |
40f126b to
44d5104
Compare
|
I actually need this rather fast, this is blocking #3301 which I would like to finish soon (because purevpn is the only one using the public ip fetcher and this makes package imports shitty basically) |
|
FYI working on it now |
d8c8238 to
0cb48ad
Compare
|
@reedog117 Ok so I went through that mountain of AI slop (interesting takeaways here and there, huge mistakes too) Now I need someone to test it out! Servers data is updated on a branch at https://github.com/qdm12/gluetun-servers/blob/purevpn-3165/pkg/servers/purevpn.json and is used by the container image Now what I am especially curious, is to find if those hostnames found in the purevpn linux app such as Below is the list of all server hostnames failing to DNS resolve but that were found in the linux app, if you feel like testing a few more: Detailsae2-auto-tcp.ptoserver.com ae2-auto-udp.ptoserver.com ae2-tcp-pf.ptoserver.com ae2-udp-pf.ptoserver.com af2-auto-tcp.ptoserver.com af2-auto-udp.ptoserver.com af2-tcp.ptoserver.com af2-udp.ptoserver.com al2-auto-tcp.ptoserver.com al2-auto-udp.ptoserver.com al2-tcp.ptoserver.com al2-udp.ptoserver.com ao2-auto-tcp.ptoserver.com ao2-auto-udp.ptoserver.com ao2-udp.ptoserver.com ar2-auto-tcp.ptoserver.com ar2-auto-udp.ptoserver.com ar2-tcp.ptoserver.com ar2-udp.ptoserver.com at2-auto-tcp.ptoserver.com at2-auto-udp.ptoserver.com at2-tcp.ptoserver.com at2-udp.ptoserver.com au2-auto-tcp.ptoserver.com au2-auto-udp.ptoserver.com au2-sd-udp.ptoserver.com aubn2-auto-tcp.ptoserver.com aubn2-auto-udp.ptoserver.com aupe2-auto-tcp.ptoserver.com aupe2-auto-udp.ptoserver.com aupe2-tcp.ptoserver.com aupe2-udp.ptoserver.com ausd2-auto-tcp.ptoserver.com ausd2-auto-udp.ptoserver.com ausd2-tcp.ptoserver.com ausd2-udp.ptoserver.com aw2-auto-tcp.ptoserver.com aw2-auto-udp.ptoserver.com aw2-tcp.ptoserver.com aw2-udp.ptoserver.com bb2-auto-tcp.ptoserver.com bb2-auto-udp.ptoserver.com bb2-tcp.ptoserver.com bb2-udp.ptoserver.com bd2-auto-tcp.ptoserver.com bd2-auto-udp.ptoserver.com bd2-tcp.ptoserver.com bd2-udp.ptoserver.com be2-auto-tcp.ptoserver.com be2-auto-udp.ptoserver.com be2-tcp-pf.ptoserver.com be2-udp-pf.ptoserver.com bg2-auto-tcp.ptoserver.com bg2-auto-udp.ptoserver.com bg2-tcp.ptoserver.com bg2-udp.ptoserver.com bh2-auto-tcp.ptoserver.com bh2-auto-udp.ptoserver.com bh2-tcp.ptoserver.com bh2-udp.ptoserver.com bm2-auto-tcp.ptoserver.com bm2-auto-udp.ptoserver.com bm2-tcp.ptoserver.com bm2-udp.ptoserver.com bn2-auto-tcp.ptoserver.com bn2-auto-udp.ptoserver.com bn2-tcp.ptoserver.com bn2-udp.ptoserver.com bo2-auto-tcp.ptoserver.com bo2-auto-udp.ptoserver.com bo2-tcp.ptoserver.com bo2-udp.ptoserver.com br2-auto-tcp.ptoserver.com br2-auto-udp.ptoserver.com br2-tcp.ptoserver.com br2-udp.ptoserver.com bs2-auto-tcp.ptoserver.com bs2-auto-udp.ptoserver.com bs2-tcp.ptoserver.com bs2-udp.ptoserver.com ca2-auto-tcp.ptoserver.com ca2-auto-udp.ptoserver.com caq2-auto-tcp.ptoserver.com caq2-auto-udp.ptoserver.com caq2-tcp.ptoserver.com caq2-udp.ptoserver.com cato2-auto-tcp.ptoserver.com cato2-auto-udp.ptoserver.com cato2-tcp-pf.ptoserver.com cato2-udp-pf.ptoserver.com cav2-auto-tcp.ptoserver.com cav2-auto-udp.ptoserver.com cav2-tcp.ptoserver.com cav2-udp.ptoserver.com ch2-auto-tcp.ptoserver.com ch2-auto-udp.ptoserver.com ch2-tcp-pf.ptoserver.com ch2-udp-pf.ptoserver.com cl2-auto-tcp.ptoserver.com cl2-auto-udp.ptoserver.com cl2-tcp.ptoserver.com cl2-udp.ptoserver.com cn2-auto-tcp.ptoserver.com cn2-auto-udp.ptoserver.com cz2-auto-tcp.ptoserver.com cz2-auto-udp.ptoserver.com cz2-tcp.ptoserver.com cz2-udp.ptoserver.com de2-auto-tcp.ptoserver.com de2-auto-udp.ptoserver.com de2-tcp-pf.ptoserver.com de2-udp-pf.ptoserver.com dk2-auto-tcp.ptoserver.com dk2-auto-udp.ptoserver.com dk2-tcp.ptoserver.com dk2-udp.ptoserver.com dz2-auto-tcp.ptoserver.com dz2-auto-udp.ptoserver.com dz2-tcp.ptoserver.com dz2-udp.ptoserver.com ee2-auto-tcp.ptoserver.com ee2-auto-udp.ptoserver.com ee2-tcp.ptoserver.com ee2-udp.ptoserver.com eg2-auto-tcp.ptoserver.com eg2-auto-udp.ptoserver.com eg2-tcp.ptoserver.com eg2-udp.ptoserver.com es2-auto-tcp.ptoserver.com es2-auto-udp.ptoserver.com es2-tcp.ptoserver.com es2-udp.ptoserver.com fi2-auto-tcp.ptoserver.com fi2-auto-udp.ptoserver.com fi2-tcp.ptoserver.com fi2-udp.ptoserver.com fr2-auto-tcp.ptoserver.com fr2-auto-udp.ptoserver.com fr2-tcp-pf.ptoserver.com fr2-udp-pf.ptoserver.com gr2-auto-tcp.ptoserver.com gr2-auto-udp.ptoserver.com gr2-tcp.ptoserver.com gr2-udp.ptoserver.com hk2-auto-tcp.ptoserver.com hk2-auto-udp.ptoserver.com hk2-tcp-pf.ptoserver.com hk2-udp-pf.ptoserver.com hu2-auto-tcp.ptoserver.com hu2-auto-udp.ptoserver.com hu2-tcp.ptoserver.com hu2-udp.ptoserver.com ie2-auto-tcp.ptoserver.com ie2-auto-udp.ptoserver.com ie2-ovpn-tcp.pointtoserver.com ie2-ovpn-udp.pointtoserver.com ie2-tcp.ptoserver.com ie2-udp.ptoserver.com in2-auto-tcp.ptoserver.com in2-auto-udp.ptoserver.com in2-udp-qr.ptoserver.com it2-auto-tcp.ptoserver.com it2-auto-udp.ptoserver.com it2-tcp-pf.ptoserver.com it2-tcp.ptoserver.com it2-udp-pf.ptoserver.com it2-udp.ptoserver.com jp2-auto-tcp.ptoserver.com jp2-auto-udp.ptoserver.com jp2-tcp-pf.ptoserver.com jp2-udp-pf.ptoserver.com kr2-auto-tcp.ptoserver.com kr2-auto-udp.ptoserver.com kr2-tcp.ptoserver.com kr2-udp.ptoserver.com ky2-auto-tcp.ptoserver.com ky2-auto-udp.ptoserver.com ky2-tcp.ptoserver.com ky2-udp.ptoserver.com lt2-auto-tcp.ptoserver.com lt2-auto-udp.ptoserver.com lt2-tcp.ptoserver.com lt2-udp.ptoserver.com lu2-auto-tcp.ptoserver.com lu2-auto-udp.ptoserver.com lu2-tcp.ptoserver.com lu2-udp.ptoserver.com lv2-auto-tcp.ptoserver.com lv2-auto-udp.ptoserver.com lv2-tcp.ptoserver.com lv2-udp.ptoserver.com mc2-auto-tcp.ptoserver.com mc2-auto-udp.ptoserver.com mc2-tcp.ptoserver.com mc2-udp.ptoserver.com md2-auto-tcp.ptoserver.com md2-auto-udp.ptoserver.com md2-tcp.ptoserver.com md2-udp.ptoserver.com ng2-auto-tcp.ptoserver.com ng2-auto-udp.ptoserver.com ng2-tcp.ptoserver.com ng2-udp.ptoserver.com nl2-auto-tcp.ptoserver.com nl2-auto-udp.ptoserver.com nl2-tcp-pf.ptoserver.com nl2-udp-pf.ptoserver.com no2-auto-tcp.ptoserver.com no2-auto-udp.ptoserver.com no2-tcp.ptoserver.com no2-udp.ptoserver.com nz2-auto-tcp.ptoserver.com nz2-auto-udp.ptoserver.com nz2-tcp.ptoserver.com nz2-udp.ptoserver.com om2-auto-tcp.ptoserver.com om2-auto-udp.ptoserver.com om2-tcp.ptoserver.com om2-udp.ptoserver.com pa2-auto-tcp.ptoserver.com pa2-auto-udp.ptoserver.com pa2-tcp.ptoserver.com pa2-udp.ptoserver.com ph2-auto-tcp.ptoserver.com ph2-auto-udp.ptoserver.com ph2-tcp.ptoserver.com ph2-udp.ptoserver.com pl2-auto-tcp.ptoserver.com pl2-auto-udp.ptoserver.com pl2-ovpn-tcp.ptoserver.com pl2-ovpn-udp.ptoserver.com pl2-tcp.ptoserver.com pl2-udp.ptoserver.com pr2-auto-tcp.ptoserver.com pr2-auto-udp.ptoserver.com pr2-tcp.ptoserver.com pr2-udp.ptoserver.com pt2-auto-tcp.ptoserver.com pt2-auto-udp.ptoserver.com pt2-tcp.ptoserver.com pt2-udp.ptoserver.com ro2-auto-tcp.ptoserver.com ro2-auto-udp.ptoserver.com ro2-tcp.ptoserver.com ro2-udp.ptoserver.com rs2-auto-tcp.ptoserver.com rs2-auto-udp.ptoserver.com rs2-tcp.ptoserver.com rs2-udp.ptoserver.com ru2-auto-tcp.ptoserver.com ru2-auto-udp.ptoserver.com ru2-tcp-pf.ptoserver.com ru2-udp-pf.ptoserver.com se2-auto-tcp.ptoserver.com se2-auto-udp.ptoserver.com se2-tcp-pf.ptoserver.com se2-udp-pf.ptoserver.com se2-udp-qr.ptoserver.com sg2-auto-tcp.ptoserver.com sg2-auto-udp.ptoserver.com sg2-tcp-pf.ptoserver.com sg2-udp-pf.ptoserver.com sk2-auto-tcp.ptoserver.com sk2-auto-udp.ptoserver.com sk2-tcp.ptoserver.com sk2-udp.ptoserver.com tr2-auto-tcp.ptoserver.com tr2-auto-udp.ptoserver.com tr2-tcp-pf.ptoserver.com tr2-udp-pf.ptoserver.com tw2-auto-tcp.ptoserver.com tw2-auto-udp.ptoserver.com ua2-auto-tcp.ptoserver.com ua2-auto-udp.ptoserver.com ua2-tcp.ptoserver.com ua2-udp.ptoserver.com uk2-auto-tcp.ptoserver.com uk2-auto-udp.ptoserver.com uk2-tcp.ptoserver.com uk2-udp.ptoserver.com ukl2-auto-tcp.ptoserver.com ukl2-auto-udp.ptoserver.com ukl2-tcp-pf.ptoserver.com ukl2-udp-pf.ptoserver.com ukm2-auto-tcp.ptoserver.com ukm2-auto-udp.ptoserver.com ukm2-tcp.ptoserver.com ukm2-udp.ptoserver.com us-global-tcp2.ptoserver.com us2-auto-tcp.ptoserver.com us2-auto-udp.ptoserver.com us2-tcp.ptoserver.com usca2-auto-tcp.ptoserver.com usca2-auto-udp.ptoserver.com usca2-tcp-pf.ptoserver.com usca2-udp-pf.ptoserver.com usfl2-auto-tcp.ptoserver.com usfl2-auto-udp.ptoserver.com usfl2-tcp.ptoserver.com usfl2-udp.ptoserver.com usga2-auto-tcp.ptoserver.com usga2-auto-udp.ptoserver.com usga2-tcp.ptoserver.com usga2-udp.ptoserver.com usil2-auto-tcp.ptoserver.com usil2-auto-udp.ptoserver.com usil2-tcp.ptoserver.com usil2-udp.ptoserver.com usnj2-auto-tcp.ptoserver.com usnj2-auto-udp.ptoserver.com usnj2-tcp.ptoserver.com usnj2-udp.ptoserver.com usny2-auto-tcp.ptoserver.com usny2-auto-udp.ptoserver.com usny2-tcp-pf.ptoserver.com usny2-udp-pf.ptoserver.com usphx2-auto-tcp.ptoserver.com usphx2-auto-udp.ptoserver.com usphx2-tcp.ptoserver.com usphx2-udp.ptoserver.com ussa2-auto-tcp.ptoserver.com ussa2-auto-udp.ptoserver.com ussa2-tcp-pf.ptoserver.com ussa2-udp-pf.ptoserver.com ussf2-auto-tcp.ptoserver.com ussf2-auto-udp.ptoserver.com ussf2-tcp.ptoserver.com ussf2-udp.ptoserver.com ustx2-auto-tcp.ptoserver.com ustx2-auto-udp.ptoserver.com ustx2-tcp.ptoserver.com ustx2-udp.ptoserver.com usut2-auto-tcp.ptoserver.com usut2-auto-udp.ptoserver.com usut2-tcp.ptoserver.com usut2-udp.ptoserver.com usva2-auto-tcp.ptoserver.com usva2-auto-udp.ptoserver.com usva2-tcp.ptoserver.com usva2-udp.ptoserver.com uswdc2-auto-tcp.ptoserver.com uswdc2-auto-udp.ptoserver.com uswdc2-tcp.ptoserver.com uswdc2-udp.ptoserver.com vg2-auto-tcp.ptoserver.com vg2-auto-udp.ptoserver.com vg2-tcp.ptoserver.com vg2-udp.ptoserver.com vleu-be2-ovpn-tcp.pointtoserver.com vn2-auto-tcp.ptoserver.com vn2-auto-udp.ptoserver.com vn2-tcp.ptoserver.com vn2-udp.ptoserver.com za2-auto-tcp.ptoserver.com za2-auto-udp.ptoserver.com za2-tcp.ptoserver.com za2-udp.ptoserver.com |
|
Can confirm that |
Yeah we can do that. Did you try connecting to it using gluetun / openvpn? Because it still has some IP addresses, maybe there is just no DNS record for it. |
|
This is where it gets tricky - a large number of them fail even with IP addresses, but these are still provided by the provider themselves within their software - how do we handle these? Do we still keep them and consider the provider sotware the system of record for all IPs? I noticed that a number of these within the provider software are still active, at least for the endpoints I normally use. (NYC, NJ, Canada) |
|
Ok let me try to rebuild the list with hostnames that revolve only so you can checked they all work ok or not |
|
Connection-test results:
So the listed server set does have at least one working connection, but several entries still fail at transport/TLS negotiation rather than authentication or DNS. |
… ports Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
Follow-up connection testing (TCP + UDP, all protocols/ports) Re-ran connection tests against this branch's build after the merge + Two environment limits on my test host shaped the results (calling them out so the numbers aren't misread as provider bugs):
Verified working end-to-end (real exit IPs):
Both TCP and UDP tunnels establish correctly and route traffic — the provider works. UDP is only confirmable via the one server that runs on port 53, since that's the sole UDP port my host allows out. One behavior worth a look (not env-related): for multi-IP hostnames, gluetun logs |
Nice 💯
So that's not testing all 811 endpoints right?
A bit blunt - but could you send me at
|
Description
PureVPN provider revamp:
Issue
Assertions