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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file v2hub_admin-1.0.3.tar.gz.
File metadata
- Download URL: v2hub_admin-1.0.3.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f0ff29d81dab07cc1613999857e6976b113c84263fc2559fa8bd87638e82f85
|
|
| MD5 |
926e452f7a5a0725bbb15bc9e7709b6a
|
|
| BLAKE2b-256 |
6d715a7468880e3decac8f49c600fece0c9dbde884b12516a8e0cfd289d5c683
|
Provenance
The following attestation bundles were made for v2hub_admin-1.0.3.tar.gz:
Publisher:
publish.yml on nestthub/v2hub-admin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
v2hub_admin-1.0.3.tar.gz -
Subject digest:
7f0ff29d81dab07cc1613999857e6976b113c84263fc2559fa8bd87638e82f85 - Sigstore transparency entry: 2224234341
- Sigstore integration time:
-
Permalink:
nestthub/v2hub-admin@dded8ad766a3ca5663e7bee4ac6be6bdef86b7de -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/nestthub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dded8ad766a3ca5663e7bee4ac6be6bdef86b7de -
Trigger Event:
push
-
Statement type:
File details
Details for the file v2hub_admin-1.0.3-py3-none-any.whl.
File metadata
- Download URL: v2hub_admin-1.0.3-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
068074cd6bc46714d4b5f7c2d04fd51b6cfa64c95d522aa579f0e1c75fe6e2f8
|
|
| MD5 |
8f08a75639be54db0de2887031bbdd23
|
|
| BLAKE2b-256 |
0ff24ea6ac4f431db350f2f58d7c0112309faea7cc715d1a53407d50878ba13c
|
Provenance
The following attestation bundles were made for v2hub_admin-1.0.3-py3-none-any.whl:
Publisher:
publish.yml on nestthub/v2hub-admin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
v2hub_admin-1.0.3-py3-none-any.whl -
Subject digest:
068074cd6bc46714d4b5f7c2d04fd51b6cfa64c95d522aa579f0e1c75fe6e2f8 - Sigstore transparency entry: 2224234704
- Sigstore integration time:
-
Permalink:
nestthub/v2hub-admin@dded8ad766a3ca5663e7bee4ac6be6bdef86b7de -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/nestthub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dded8ad766a3ca5663e7bee4ac6be6bdef86b7de -
Trigger Event:
push
-
Statement type: