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
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
pip install py_multi_3xuifrom 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
from py_multi_3xui import ServerDataManager
host = "some_server.com:PORT/PATH/"
manager = ServerDataManager()
manager.delete_server(host)from py_multi_3xui import ServerDataManager
manager = ServerDataManager()
location = "usa"
best_server = await manager.choose_best_server_by_location(location)
print(best_server)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.
from py_multi_3xui import Server
from py3xui import Client
server = ...
client = ...
await server.add_client(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)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)server = ...
uuid = "some uuid"
inbound_id = 4
server.delete_client_by_uuid(client_uuid=uuid, inbound_id=inbound_id)Please report any bugs or feature requests by opening an issue on GitHub issues
Or DM me via Telegram(through DM to channel): @dmeetprofile
If this project was helpful for you:
- β Star it on GitHub
- π° Donate via CryptoBot
- π Ton:
UQCOKDO9dRYNe3Us8FDK2Ctz6B4fhsonaoKpK93bqneFAyJL
- Add manual
- Add ability to work not only with VLESS+Reality configs
- Improve database (add encryption, verification and etc)