vpn-connection-test 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vpn_connection_test-0.1.0/.gitignore +16 -0
- vpn_connection_test-0.1.0/CHANGELOG.md +31 -0
- vpn_connection_test-0.1.0/LICENSE +21 -0
- vpn_connection_test-0.1.0/PKG-INFO +100 -0
- vpn_connection_test-0.1.0/README.md +59 -0
- vpn_connection_test-0.1.0/docs/ARCHITECTURE.md +635 -0
- vpn_connection_test-0.1.0/docs/INSTALL.md +112 -0
- vpn_connection_test-0.1.0/docs/USING.md +256 -0
- vpn_connection_test-0.1.0/pyproject.toml +60 -0
- vpn_connection_test-0.1.0/tests/__init__.py +0 -0
- vpn_connection_test-0.1.0/tests/test_advice.py +313 -0
- vpn_connection_test-0.1.0/tests/test_capture.py +143 -0
- vpn_connection_test-0.1.0/tests/test_monitor.py +122 -0
- vpn_connection_test-0.1.0/tests/test_parsers.py +203 -0
- vpn_connection_test-0.1.0/tests/test_report.py +65 -0
- vpn_connection_test-0.1.0/tests/test_route.py +66 -0
- vpn_connection_test-0.1.0/tests/test_tracker.py +140 -0
- vpn_connection_test-0.1.0/vpnct/__init__.py +6 -0
- vpn_connection_test-0.1.0/vpnct/_version.py +24 -0
- vpn_connection_test-0.1.0/vpnct/advice.py +471 -0
- vpn_connection_test-0.1.0/vpnct/capture.py +273 -0
- vpn_connection_test-0.1.0/vpnct/cli.py +215 -0
- vpn_connection_test-0.1.0/vpnct/config.py +56 -0
- vpn_connection_test-0.1.0/vpnct/engine.py +515 -0
- vpn_connection_test-0.1.0/vpnct/gui.py +1215 -0
- vpn_connection_test-0.1.0/vpnct/icon.svg +5 -0
- vpn_connection_test-0.1.0/vpnct/interfaces.py +188 -0
- vpn_connection_test-0.1.0/vpnct/monitor.py +199 -0
- vpn_connection_test-0.1.0/vpnct/probes.py +291 -0
- vpn_connection_test-0.1.0/vpnct/procs.py +52 -0
- vpn_connection_test-0.1.0/vpnct/report.py +498 -0
- vpn_connection_test-0.1.0/vpnct/session.py +84 -0
- vpn_connection_test-0.1.0/vpnct/ss.py +115 -0
- vpn_connection_test-0.1.0/vpnct/tracker.py +236 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Private notes: personal network details, Polish, never committed.
|
|
2
|
+
notes/
|
|
3
|
+
|
|
4
|
+
# Packet captures contain game chat; they must never be kept or committed.
|
|
5
|
+
*.pcap
|
|
6
|
+
*.pcapng
|
|
7
|
+
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.pyc
|
|
10
|
+
|
|
11
|
+
*.egg-info/
|
|
12
|
+
|
|
13
|
+
# Packaging
|
|
14
|
+
vpnct/_version.py
|
|
15
|
+
dist/
|
|
16
|
+
build/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
What changed for users, release by release. Technical details are in
|
|
4
|
+
`docs/ARCHITECTURE.md`.
|
|
5
|
+
|
|
6
|
+
## [0.1.0] — 2026-11-09
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
- First release: a tray program that shows whether a VPN makes the
|
|
10
|
+
connection to a game or another service more stable than the normal
|
|
11
|
+
connection, and whether the extra latency is worth it.
|
|
12
|
+
- The normal connection and each VPN server are recognised by themselves
|
|
13
|
+
and measured separately; switching between them during use is picked up
|
|
14
|
+
within seconds.
|
|
15
|
+
- Watches the connections of chosen programs or server ports, or by
|
|
16
|
+
default the busiest internet connections.
|
|
17
|
+
- The window shows what to do now, what each path did in the last
|
|
18
|
+
15 minutes, hour or three hours, a card per path with ping, spikes,
|
|
19
|
+
stability and loss (the most stable one marked), a chart, and a
|
|
20
|
+
recommendation from all recordings. **Advanced** shows the full data.
|
|
21
|
+
- While the traffic goes through a VPN, the normal connection is watched
|
|
22
|
+
in the background, so both paths are compared in the same minutes. When
|
|
23
|
+
it starts losing, the route is traced to show where the loss begins, or
|
|
24
|
+
that only a single router was answering pings sparingly.
|
|
25
|
+
- Hints and desktop notifications say when switching to the VPN, or back,
|
|
26
|
+
would pay off. Nothing is ever switched automatically.
|
|
27
|
+
- **It stutters now** notes the moment and traces the route at once.
|
|
28
|
+
- Recordings are kept as plain files; terminal commands give reports and
|
|
29
|
+
the recommendation.
|
|
30
|
+
- Nothing from the traffic itself is written to disk, and no `sudo` is
|
|
31
|
+
needed.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 raman78
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: vpn-connection-test
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Is a VPN more stable than your direct connection? Per-connection loss and RTT, route traces and a recommendation, from the system tray.
|
|
5
|
+
Project-URL: homepage, https://github.com/raman78/vpn-connection-test
|
|
6
|
+
Project-URL: repository, https://github.com/raman78/vpn-connection-test
|
|
7
|
+
Project-URL: issues, https://github.com/raman78/vpn-connection-test/issues
|
|
8
|
+
Author: raman78
|
|
9
|
+
License: MIT License
|
|
10
|
+
|
|
11
|
+
Copyright (c) 2026 raman78
|
|
12
|
+
|
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
14
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
15
|
+
in the Software without restriction, including without limitation the rights
|
|
16
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
17
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
18
|
+
furnished to do so, subject to the following conditions:
|
|
19
|
+
|
|
20
|
+
The above copyright notice and this permission notice shall be included in all
|
|
21
|
+
copies or substantial portions of the Software.
|
|
22
|
+
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
24
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
25
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
26
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
27
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
|
+
SOFTWARE.
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Keywords: gaming,latency,linux,network,packet-loss,vpn,wireguard
|
|
32
|
+
Classifier: Development Status :: 3 - Alpha
|
|
33
|
+
Classifier: Environment :: X11 Applications :: Qt
|
|
34
|
+
Classifier: Natural Language :: English
|
|
35
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
36
|
+
Classifier: Programming Language :: Python :: 3
|
|
37
|
+
Classifier: Topic :: System :: Networking :: Monitoring
|
|
38
|
+
Requires-Python: >=3.11
|
|
39
|
+
Requires-Dist: pyqt6>=6.5
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
41
|
+
|
|
42
|
+
# vpn-connection-test
|
|
43
|
+
|
|
44
|
+
Tells you whether a VPN makes your connection to a game (or any other
|
|
45
|
+
service) more stable than your normal connection, and whether the extra
|
|
46
|
+
latency is worth it. It sits in the system tray while you play, measures
|
|
47
|
+
the connection the program really uses, and says which path to use, with
|
|
48
|
+
the numbers behind it.
|
|
49
|
+
|
|
50
|
+
The idea: a connection that stutters now and then usually suffers short
|
|
51
|
+
bursts of packet loss somewhere on its internet route, not on your machine
|
|
52
|
+
and not at the server. A VPN sends your traffic along a different route, so
|
|
53
|
+
it helps only if that route avoids the bad part. The only way to know is to
|
|
54
|
+
measure both: the game's own packets on whichever path it uses, and at the
|
|
55
|
+
same time a steady ping of your normal connection, so that the two paths are
|
|
56
|
+
compared in the same minutes, not on different evenings. When the normal
|
|
57
|
+
connection starts losing, the program traces the route to see where the
|
|
58
|
+
loss begins.
|
|
59
|
+
|
|
60
|
+
It never switches the VPN by itself. Some programs (games especially) break
|
|
61
|
+
when their connection disappears, so it tells you, and you pick the moment.
|
|
62
|
+
|
|
63
|
+
Linux only. Tested on CachyOS (Arch) with Proton VPN (WireGuard), playing
|
|
64
|
+
AION 2. Nothing in it is specific to that game or that VPN.
|
|
65
|
+
|
|
66
|
+
## Quick start
|
|
67
|
+
|
|
68
|
+
1. Install the system tools and allow packet capture — see
|
|
69
|
+
[Installing](https://github.com/raman78/vpn-connection-test/blob/main/docs/INSTALL.md).
|
|
70
|
+
2. `pipx install vpn-connection-test`
|
|
71
|
+
3. `vpnct install-desktop`, then start **VPN connection test** from the
|
|
72
|
+
application menu.
|
|
73
|
+
4. Use your program as usual: on the normal connection, on the VPN, on
|
|
74
|
+
different VPN servers. The window shows which one is the most stable.
|
|
75
|
+
|
|
76
|
+
## Documentation
|
|
77
|
+
|
|
78
|
+
- [docs/INSTALL.md](https://github.com/raman78/vpn-connection-test/blob/main/docs/INSTALL.md) — what it needs, installing,
|
|
79
|
+
updating, removing.
|
|
80
|
+
- [docs/USING.md](https://github.com/raman78/vpn-connection-test/blob/main/docs/USING.md) — the window and tray icon, what the
|
|
81
|
+
numbers mean, hints and the recommendation, the terminal commands,
|
|
82
|
+
problems and questions.
|
|
83
|
+
- [docs/ARCHITECTURE.md](https://github.com/raman78/vpn-connection-test/blob/main/docs/ARCHITECTURE.md) — how it works and why,
|
|
84
|
+
every log column, failure modes, tests, releases.
|
|
85
|
+
- [CHANGELOG.md](https://github.com/raman78/vpn-connection-test/blob/main/CHANGELOG.md) — what changed in each version.
|
|
86
|
+
|
|
87
|
+
## What it keeps, and what it never does
|
|
88
|
+
|
|
89
|
+
- **No `sudo`.** Packet capture works through membership in the
|
|
90
|
+
`wireshark` group, ping through the system's normal unprivileged ping.
|
|
91
|
+
- **No packet contents on disk.** Only the first 96 bytes of each packet
|
|
92
|
+
are captured: the headers, which are enough to count lost packets, and
|
|
93
|
+
on most packets the first few dozen bytes of what they carry. They go
|
|
94
|
+
through a pipe to the counting tool, which reads only the packet numbers
|
|
95
|
+
from them, and are never written anywhere.
|
|
96
|
+
- **Only numbers are kept**: per-second and per-minute figures, ping
|
|
97
|
+
results and route hops, as plain files in
|
|
98
|
+
`~/.local/share/vpn-connection-test/sessions/`.
|
|
99
|
+
- **Nothing is sent anywhere.** Router names on a traced route come from
|
|
100
|
+
your system's own name lookup only.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# vpn-connection-test
|
|
2
|
+
|
|
3
|
+
Tells you whether a VPN makes your connection to a game (or any other
|
|
4
|
+
service) more stable than your normal connection, and whether the extra
|
|
5
|
+
latency is worth it. It sits in the system tray while you play, measures
|
|
6
|
+
the connection the program really uses, and says which path to use, with
|
|
7
|
+
the numbers behind it.
|
|
8
|
+
|
|
9
|
+
The idea: a connection that stutters now and then usually suffers short
|
|
10
|
+
bursts of packet loss somewhere on its internet route, not on your machine
|
|
11
|
+
and not at the server. A VPN sends your traffic along a different route, so
|
|
12
|
+
it helps only if that route avoids the bad part. The only way to know is to
|
|
13
|
+
measure both: the game's own packets on whichever path it uses, and at the
|
|
14
|
+
same time a steady ping of your normal connection, so that the two paths are
|
|
15
|
+
compared in the same minutes, not on different evenings. When the normal
|
|
16
|
+
connection starts losing, the program traces the route to see where the
|
|
17
|
+
loss begins.
|
|
18
|
+
|
|
19
|
+
It never switches the VPN by itself. Some programs (games especially) break
|
|
20
|
+
when their connection disappears, so it tells you, and you pick the moment.
|
|
21
|
+
|
|
22
|
+
Linux only. Tested on CachyOS (Arch) with Proton VPN (WireGuard), playing
|
|
23
|
+
AION 2. Nothing in it is specific to that game or that VPN.
|
|
24
|
+
|
|
25
|
+
## Quick start
|
|
26
|
+
|
|
27
|
+
1. Install the system tools and allow packet capture — see
|
|
28
|
+
[Installing](https://github.com/raman78/vpn-connection-test/blob/main/docs/INSTALL.md).
|
|
29
|
+
2. `pipx install vpn-connection-test`
|
|
30
|
+
3. `vpnct install-desktop`, then start **VPN connection test** from the
|
|
31
|
+
application menu.
|
|
32
|
+
4. Use your program as usual: on the normal connection, on the VPN, on
|
|
33
|
+
different VPN servers. The window shows which one is the most stable.
|
|
34
|
+
|
|
35
|
+
## Documentation
|
|
36
|
+
|
|
37
|
+
- [docs/INSTALL.md](https://github.com/raman78/vpn-connection-test/blob/main/docs/INSTALL.md) — what it needs, installing,
|
|
38
|
+
updating, removing.
|
|
39
|
+
- [docs/USING.md](https://github.com/raman78/vpn-connection-test/blob/main/docs/USING.md) — the window and tray icon, what the
|
|
40
|
+
numbers mean, hints and the recommendation, the terminal commands,
|
|
41
|
+
problems and questions.
|
|
42
|
+
- [docs/ARCHITECTURE.md](https://github.com/raman78/vpn-connection-test/blob/main/docs/ARCHITECTURE.md) — how it works and why,
|
|
43
|
+
every log column, failure modes, tests, releases.
|
|
44
|
+
- [CHANGELOG.md](https://github.com/raman78/vpn-connection-test/blob/main/CHANGELOG.md) — what changed in each version.
|
|
45
|
+
|
|
46
|
+
## What it keeps, and what it never does
|
|
47
|
+
|
|
48
|
+
- **No `sudo`.** Packet capture works through membership in the
|
|
49
|
+
`wireshark` group, ping through the system's normal unprivileged ping.
|
|
50
|
+
- **No packet contents on disk.** Only the first 96 bytes of each packet
|
|
51
|
+
are captured: the headers, which are enough to count lost packets, and
|
|
52
|
+
on most packets the first few dozen bytes of what they carry. They go
|
|
53
|
+
through a pipe to the counting tool, which reads only the packet numbers
|
|
54
|
+
from them, and are never written anywhere.
|
|
55
|
+
- **Only numbers are kept**: per-second and per-minute figures, ping
|
|
56
|
+
results and route hops, as plain files in
|
|
57
|
+
`~/.local/share/vpn-connection-test/sessions/`.
|
|
58
|
+
- **Nothing is sent anywhere.** Router names on a traced route come from
|
|
59
|
+
your system's own name lookup only.
|