Skip to main content

Admin extension for V2Hub VPN Subscription API client

Project description

V2Hub Admin — Admin Extension for VPN Subscription API

Admin-расширение для V2Hub, предоставляющее привилегированные операции управления пользователями и IP через HMAC-SHA256 аутентификацию.

Features

  • 🔐 HMAC Authentication (SHA-256 подпись)
  • 👤 User Management API (CRUD пользователей)
  • 🚫 IP Ban System
  • Whitelist Management
  • 🔄 Async & Sync клиенты
  • 📦 Основан на v2hub
  • 🛡️ Полная типизация (type hints + Pydantic)

Installation

pip install v2hub-admin

Quick Start

Async Usage

from v2hub_admin import AsyncAdminClient

async with AsyncAdminClient(
    base_url="https://api.example.com",
    secret_key="your-hmac-secret"
) as admin:

    user = await admin.get_user(12345)
    print(user)

Sync Usage

from v2hub_admin import AdminClient

with AdminClient(
    base_url="https://api.example.com",
    secret_key="your-hmac-secret"
) as admin:

    user = admin.get_user(12345)
    print(user)

Admin API

👤 User Management

admin.create_user(user_id: int)
admin.get_user(user_id: int)
admin.delete_user(user_id: int)
admin.set_user_status(user_id: int, is_active: bool)
admin.refresh_token(user_id: int)

Example

user = admin.create_user(12345)
print(user.api_token)

user = admin.set_user_status(12345, False)
print(user.is_active)

🚫 IP Ban Management

admin.ban_ip(ip_address: str, duration_seconds: int | None = None)
admin.unban_ip(ip_address: str)
admin.get_ban_status(ip_address: str)
admin.get_ban_list()

Example

ban = admin.ban_ip("192.168.1.100", duration_seconds=3600)
print(ban.banned_until)

status = admin.get_ban_status("192.168.1.100")
print(status.is_banned)

✅ Whitelist Management

admin.add_to_whitelist(ip_address: str, description: str | None = None)
admin.remove_from_whitelist(ip_address: str)
admin.list_whitelist()

Example

admin.add_to_whitelist("10.0.0.0/24", description="Office network")

whitelist = admin.list_whitelist()
for entry in whitelist.entries:
    print(entry.ip_address, entry.description)

⚠️ Error Handling

Все ошибки наследуются из v2hub:

from v2hub import VPNAPIError, AuthenticationError, AuthorizationError

try:
    admin.delete_user(12345)
except AuthenticationError:
    print("Invalid HMAC signature")
except AuthorizationError:
    print("No admin privileges")
except VPNAPIError as e:
    print(e)

Development

pip install -e ".[dev]"

pytest
mypy src/

Requirements

  • Python >= 3.9
  • v2hub >= 1.0.0

Security Notes

⚠️ Важно:

  • Не храните secret_key в коде
  • Используйте env / secret managers
  • Только HTTPS в production
  • Регулярно ротируйте ключи
  • Admin API имеет полный доступ к системе

License

MIT


Author

nestt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

v2hub_admin-1.0.1.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

v2hub_admin-1.0.1-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file v2hub_admin-1.0.1.tar.gz.

File metadata

  • Download URL: v2hub_admin-1.0.1.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for v2hub_admin-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0737b04d1e979546c086d7b6d74d29bf9fceea8d0553524832e26b1217ad79d9
MD5 c33d1a103bea84d8f945475c21a5ab35
BLAKE2b-256 7a77fd07e5f9c0557c0e0147ec7252b3a0ce1fb9eca4844d36c3ea57940406fb

See more details on using hashes here.

File details

Details for the file v2hub_admin-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: v2hub_admin-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for v2hub_admin-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a06aa79ebec606c46b108d513aeeb8316cbc46c9c1301584e2982a195046f749
MD5 cfd9914b6dcc3871d82267abff91a2aa
BLAKE2b-256 7dfe2f1cfe9e249c82ddd2c032695b355212dbfd5c1a4a8504272d74c4287bfa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page