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.
Files changed (34) hide show
  1. vpn_connection_test-0.1.0/.gitignore +16 -0
  2. vpn_connection_test-0.1.0/CHANGELOG.md +31 -0
  3. vpn_connection_test-0.1.0/LICENSE +21 -0
  4. vpn_connection_test-0.1.0/PKG-INFO +100 -0
  5. vpn_connection_test-0.1.0/README.md +59 -0
  6. vpn_connection_test-0.1.0/docs/ARCHITECTURE.md +635 -0
  7. vpn_connection_test-0.1.0/docs/INSTALL.md +112 -0
  8. vpn_connection_test-0.1.0/docs/USING.md +256 -0
  9. vpn_connection_test-0.1.0/pyproject.toml +60 -0
  10. vpn_connection_test-0.1.0/tests/__init__.py +0 -0
  11. vpn_connection_test-0.1.0/tests/test_advice.py +313 -0
  12. vpn_connection_test-0.1.0/tests/test_capture.py +143 -0
  13. vpn_connection_test-0.1.0/tests/test_monitor.py +122 -0
  14. vpn_connection_test-0.1.0/tests/test_parsers.py +203 -0
  15. vpn_connection_test-0.1.0/tests/test_report.py +65 -0
  16. vpn_connection_test-0.1.0/tests/test_route.py +66 -0
  17. vpn_connection_test-0.1.0/tests/test_tracker.py +140 -0
  18. vpn_connection_test-0.1.0/vpnct/__init__.py +6 -0
  19. vpn_connection_test-0.1.0/vpnct/_version.py +24 -0
  20. vpn_connection_test-0.1.0/vpnct/advice.py +471 -0
  21. vpn_connection_test-0.1.0/vpnct/capture.py +273 -0
  22. vpn_connection_test-0.1.0/vpnct/cli.py +215 -0
  23. vpn_connection_test-0.1.0/vpnct/config.py +56 -0
  24. vpn_connection_test-0.1.0/vpnct/engine.py +515 -0
  25. vpn_connection_test-0.1.0/vpnct/gui.py +1215 -0
  26. vpn_connection_test-0.1.0/vpnct/icon.svg +5 -0
  27. vpn_connection_test-0.1.0/vpnct/interfaces.py +188 -0
  28. vpn_connection_test-0.1.0/vpnct/monitor.py +199 -0
  29. vpn_connection_test-0.1.0/vpnct/probes.py +291 -0
  30. vpn_connection_test-0.1.0/vpnct/procs.py +52 -0
  31. vpn_connection_test-0.1.0/vpnct/report.py +498 -0
  32. vpn_connection_test-0.1.0/vpnct/session.py +84 -0
  33. vpn_connection_test-0.1.0/vpnct/ss.py +115 -0
  34. 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.