OUTLINE-VPN-API-CLIENT
DESCRIPTION
This library provides a convenient interface for managing an Outline VPN server in Python using the official Outline Management API. It simplifies server interaction by enabling you to:
- Programmatically manage user keys, including creation, updates, and deletion.
- Monitor server usage and retrieve detailed statistics.
- Configure server settings such as bandwidth limits and access rules.
- Automate routine maintenance and management tasks.
The library is suitable for both individual users and administrators of corporate VPN solutions, helping to streamline server management, save time, and improve operational efficiency.
It is designed with simplicity in mind and features cleanly implemented, well-documented methods.
INSTALLATION
Using pip
pip install outline-vpn-api-client
Using poetry
poetry add outline-vpn-api-client
USAGE
To get started with the library, you need to obtain the management_url
for your Outline VPN server. Once you have the management_url
, you can create an instance of the OutlineClient
class to interact with the server.
Initializing the Client
from outline_vpn_api_client import OutlineClient
management_url = "your.management.url"
client = OutlineClient(management_url=management_url)
Retrieving Server Information
import json
print(json.dumps(client.get_information(), ensure_ascii=False, indent=4))
Creating Access Keys
Creating a Key Without Limits
client.access_keys.create(name="Example Key")
Creating a Key With a Limit
client.access_keys.create(name="Example Key with Limit", limit=10**9)
Handling Errors
The library uses a custom exception, ResponseNotOkException, to handle server-side errors. This exception is raised whenever the API returns an unexpected response.
from outline_vpn_api_client import ResponseNotOkException
try:
info = client.get_information()
print(info)
except ResponseNotOkException as e:
print(e)
The error message provides details about the HTTP status code and the error message returned by the API. It follows this format:
def _get_error_message(status_code: int, error: str) -> str:
return f"An error occurred: {status_code} - {error}"
For example, if the API returns a 404 error with the message "Not Found", the exception will produce the message:
outline_vpn_api_client.client.ResponseNotOkException: An error occured: 404 - {'code': 'NotFound', 'message': 'Access key "100" not found'}
Async Usage
For use async client install async version of package:
pip install outline-vpn-api-client[async]
Then import async client and create instance of this
from outline_vpn_api_client.async_client import AsyncOutlineClient
# Replace 'your.management.url' with your actual management URL
management_url = "your.management.url"
# Create an AsyncOutlineClient instance
client = AsyncOutlineClient(management_url=management_url)
Console Version
The library also includes a command-line interface (CLI) for quick access. You can use the following command to interact with the server:
python3 -m outline_vpn_api_client management_url get_info
AUTHOR
Created by zeph1rr
Email: grianton535@gmail.com