Skip to main content

Python OpenVPN Client

This package allows an OpenVPN connection to be established seamlessly given a config.ovpn file and then later be disconnected when instructed to. The functionality is tested to work on macOS and Linux (images: macOS-latest and ubuntu-24.04).

Note: Testing requires openvpn >= 2.6 since the used peer-fingerprint feature was first introduced then.

Authors

Command line usage

# connect
python3 -m openvpnclient --config=path/to/ovpn/config

# disconnect
python3 -m openvpnclient --disconnect

Usage in code

from openvpnclient import OpenVPNClient

# manually connect and disconnect
vpn = OpenVPNClient(ovpn_file)
vpn.connect()
# interact with network
vpn.disconnect()

# utilize context handler
with OpenVPNClient(ovpn_file):
    # interact with network

Contributing

Create virtual environment and install dependencies:

python3 -m venv venv
source venv/bin/activate
pip install -r prod-requirements.txt

After making changes, make sure the tests pass:

pip install -r test-requirements.txt
pytest tests/test_openvpnclient.py -s -v

Create a PR from the feature branch with the incorporated changes.

Test cases

  1. Manually connect and disconnect the OpenVPN client
  2. Use context manager to connect and disconnect the OpenVPN client
  3. Disconnect client on SIGINT (ctrl+c)
  4. Disconnect when not connected
  5. Connect when already connected
  6. Invalid configuration syntax
  7. Unreachable server
  8. Invalid path to ovpn config file
  9. Connection attempt timeout

An autouse fixture (await_openvpn_cleanup) forces a delay between all tests. Given the rapid closing and opening of the same socket, this timeout can be adjusted to make sure the socket is ready for subsequent test.

Metadata

Release files for python-openvpn-client 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-openvpn-client 0.0.1
File Size Uploaded
python_openvpn_client-0.0.1.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-openvpn-client 0.0.1
File Interpreter ABI Platform
python_openvpn_client-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 15.5 kB

Release files / python_openvpn_client-0.0.1.tar.gz

Download URL python_openvpn_client-0.0.1.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
eec2b80b327925a28340bf08d6e8ec668181fb845ac600313c4c96413e9ed030
BLAKE2b-256 checksum
How to use checksums
ad73c58e538b726d34eaa4b1917c1680dfb3c11c18f68387ab949f627e00ddbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / python_openvpn_client-0.0.1-py3-none-any.whl

Download URL python_openvpn_client-0.0.1-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f2f66bece4de5ed80fe14111aba58d3548cc83c68808b1d8b4231ebfe03c8f1
BLAKE2b-256 checksum
How to use checksums
2a5113fddf3e9413768f2b3a6dbf3f517571aa8059febe3eb0662b5ea8acca17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page