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.2.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.2-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: v2hub_admin-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 f48200e089e1a5d7cdad0848f1d18563147f54fac6f004752c50cf0a4ebdf999
MD5 ae65b40690ad2f3a134c6d290499a675
BLAKE2b-256 5519d0339fef8b46e6af3100ae23d179d3fffaae0415b4c8cfb42817278b0ef2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: v2hub_admin-1.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c9b5f0913fced1745bf153a94c75470a401590a5b523fab662a855186584d509
MD5 13dc06d9a5ed91ff01f980e2c19f8379
BLAKE2b-256 eac28d2da9ad744d7a0b526be2baf631b4ca970871f6fb707748b34347ad6dac

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