Skip to content

Dmeetrogon/py_multi_3xui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

75 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

multi_3x_ui

A tool for managing multiple 3x-ui panels at once

PyPI version
Python Versions
License


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:

  • py3xui for connecting and managing 3xui panels
    • requests for synchronous API
    • httpx for asynchronous API
    • pydantic for models
  • diskcache for storing 3xui cookies
  • pyotp for getting OTP passwords based on string

Supported Python Versions:

  • 3.11
  • 3.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)

About

A tool for managing multiple 3x-ui panels at once

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages