module for managing multiple 3x-ui panels
Project description
Note: Secret token feature was removed from 3x-ui in 2.6.0. From now this feature doesn't supported by py_multi_3xui and py3xui. Please, edit your constructors and databases
📚 Table of Contents
📖 Overview
This module is based on py3xui.
Used dependencies:
py3xuifor connecting and managing 3xui panelsrequestsfor synchronous APIhttpxfor asynchronous APIpydanticfor models
diskcachefor storing 3xui cookiespyotpfor getting OTP passwords based on string
Supported Python Versions:
3.113.12
License: MIT License
3x-ui is under development. py3xui also. I am not related with 3x-ui or py3xui. This project is only for educational purposes
🚀 Quick Start
💾 Installation
pip install py_multi_3xui
⚙️ Operating with servers
➕ Adding server to database
from py_multi_3xui import Server
from py_multi_3xui import ServerDataManager
username = "Ben"
password = "BenLoveApples123"
host = "https://benserver.com:PORT/PATH/"
internet_speed = 5 # amount in gb per second.
location = "usa"
secret_token_for_2FA = "32secretbase32"
server = Server(admin_username=username,
password=password,
host=host,
location=location,
internet_speed=internet_speed,
use_tls_verification=True,
secret_token_for_2FA=secret_token_for_2FA)
data_manager = ServerDataManager()
data_manager.add_server(server)
💡 Learn your server's traffic speed by using Ookla or ask your VPS seller.
⚠ There is no filtration by valid country code. You can add some silly locations to db
❌ Deleting server from database
from py_multi_3xui import ServerDataManager
host = "some_server.com:PORT/PATH/"
manager = ServerDataManager()
manager.delete_server(host)
🌍 Get best server by country
from py_multi_3xui import ServerDataManager
manager = ServerDataManager()
location = "usa"
best_server = await manager.choose_best_server_by_location(location)
print(best_server)
👥 Working with clients/configs
🆕 Generate client (not add)
from py_multi_3xui import RandomStuffGenerator as rsg
from py_multi_3xui import Server
from py3xui import Client
total_gb = 30
inbound_id = 4
limit_ip = 0
client_email = rsg.generate_email(10)
expiry_time = 30
up = 0
down = 0
#note, generate. NOT ADD. This method returns only client instance
client = Server.generate_client(total_gb=total_gb,
inbound_id=inbound_id,
limit_ip=limit_ip,
client_email=client_email,
expiry_time=expiry_time,
up=up,
down=down)
For more complete info about py3xui.Client visit py3xui documentation.
➕ Add client to server
from py_multi_3xui import Server
from py3xui import Client
server = ...
client = ...
await server.add_client(client)
✏️ Edit/Update client
from py3xui import Client
from py_multi_3xui import Server
server = ...
client = await server.get_client_by_email("some_email")
client.up = 50
client.down = 30#just edit some client's fields
server.update_client(client)
🔑 Get connection string
from py_multi_3xui import Server
from py3xui import Client
server = ...
client = ...
remark = "MyAwesomeVPN"
port = 443# standard port for VLESS+Reality combo
config = server.get_config(client,remark,port)
🗑 Delete client by uuid
server = ...
uuid = "some uuid"
inbound_id = 4
server.delete_client_by_uuid(client_uuid=uuid, inbound_id=inbound_id)
🐞 Bugs and Features
Please report any bugs or feature requests by opening an issue on GitHub issues
Or DM me via Telegram(through DM to channel): @dmeetprofile
❤️ Donate and Support
If this project was helpful for you:
- ⭐ Star it on GitHub
- 💰 Donate via CryptoBot
- 💎 Ton:
UQCOKDO9dRYNe3Us8FDK2Ctz6B4fhsonaoKpK93bqneFAyJL
📌 Plans
- Add manual
- Add ability to work not only with VLESS+Reality configs
- Improve database (add encryption, verification and etc)
Project details
Release history Release notifications | RSS feed
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 py_multi_3xui-1.2.2.tar.gz.
File metadata
- Download URL: py_multi_3xui-1.2.2.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55ea2bcd92b036c668608fade5d09641f46ab9fdc79163e3a3de50b5e0b14364
|
|
| MD5 |
6cf1a71b978008eba9dee0b5e5d60943
|
|
| BLAKE2b-256 |
dc950c389325af3ca188f1015722cf5462e8d67df14bc780bcb700518cacf090
|
File details
Details for the file py_multi_3xui-1.2.2-py3-none-any.whl.
File metadata
- Download URL: py_multi_3xui-1.2.2-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
757ef4baf7a03d81db047ecc677a1430a7215a1bebcc8514045195c40318dde8
|
|
| MD5 |
4486e7544f075b294bbf155a637d5bcd
|
|
| BLAKE2b-256 |
a0fbb410b6055efb021be11feb226885dbd7ba9b583e1c2687959a5617e382a0
|