Skip to content

Latest commit

History

63 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

PyXUI

An application with python that allows you to modify your xui panel (alireza0 x-ui) (Sanaeii 3x-ui)

How To Install

pip install -U git+https://github.com/staliox/pyxui.git

How To Use

  • Import pyxui in your .py file
frompyxuiimportXUI# Basic:xui=XUI(
full_address="https://staliox.com:2087",
panel="alireza", # Your panel name, "alireza" or "sanaei"
)
# Advanced:xui=XUI(
full_address="http://staliox.site:2087",
panel="alireza", # Your panel name, "alireza" or "sanaei"https=False, # Make note if you don't use https set False else set Truesession_string=... # If you have session cookie to use panel without login
)
  • Login in your panel
frompyxui.errorsimportBadLogintry:
xui.login(USERNAME, PASSWORD)
exceptBadLogin:
...
  • Get inbounds list
get_inbounds=xui.get_inbounds()
# Result
{
"success": true,
"msg": "",
"obj": [
{
"id": 1,
"up": 552345026,
"down": 18164200325,
"total": 0,
"remark": "Staliox",
"enable": true,
"expiryTime": 0,
"clientStats": [
{
"id": 1,
"inboundId": 1,
"enable": true,
"email": "Me",
"up": 191308877,
"down": 4945030148,
"expiryTime": 0,
"total": 0
}
],
"listen": "",
"port": 443,
"protocol": "vless",
"settings": "{\n\"clients\": [\n {\n\"email\": \"Me\",\n\"enable\": true,\n\"expiryTime\": 0,\n\"flow\": \"\",\n\"id\": \"c6419651-68d7-gfhg-d611-32v5df41g105\",\n\"limitIp\": 0,\n\"subId\": \"\",\n\"tgId\": \"@staliox\",\n\"totalGB\": 0\n }\n ],\n\"decryption\": \"none\",\n\"fallbacks\": []\n}",
"tag": "inbound-443",
"sniffing": "{\n\"enabled\": true,\n\"destOverride\": [\n\"http\",\n\"tls\"\n ]\n}"
}
]
}
  • Add client to the existing inbound
get=xui.add_client(
inbound_id=1,
email="example@gmal.com",
uuid="5d3d1bac-49cd-4b66-8be9-a728efa205fa",
enable=True,
flow="",
limit_ip=0,
total_gb=5368709120,
expire_time=1684948641772, # You must pass 13 digit timestamptelegram_id="",
subscription_id=""
)
  • Update the existing client
get=xui.update_client(
inbound_id=1,
email="example@gmal.com",
uuid="5d3d1bac-49cd-4b66-8be9-a728efa205fa",
enable=True,
flow="",
limit_ip=0,
total_gb=5368709120,
expire_time=1684948641772,
telegram_id="",
subscription_id=""
)
  • Get client's information:
get_client=xui.get_client(
inbound_id=1,
email="Me",
uuid="5d3d1bac-49cd-4b66-8be9-a728efa205fa"# Make note you don't have to pass both of them (emaill, uuid), just one is enough
)
# Result
{
'email': 'Me',
'enable': True,
'expiryTime': 0,
'flow': 'xtls-rprx-vision',
'id': '5d3d1bac-49cd-4b66-8be9-a728efa205fa',
'limitIp': 0,
'subId': '',
'tgId': '',
'totalGB': 0
}
  • Get client's statistics:
get_client=xui.get_client_stats(
inbound_id=1,
email="Me",
)
# Result
{
'id': 1,
'inboundId': 1,
'enable': True,
'email': 'Me',
'up': 111494230,
'down': 620533614,
'expiryTime': 0,
'total': 0
}
  • Delete client from the existing inbound:
get_client=xui.delete_client(
inbound_id=1,
email="Me",
uuid="5d3d1bac-49cd-4b66-8be9-a728efa205fa"# Make note you don't have to pass both of them (email, uuid), just one is enough
)

Create vmess and vless config string

  • Import config_generator
frompyxui.config_genimportconfig_generator
  • VMESS:
config= {
"v": "2",
"ps": "Staliox-Me",
"add": "staliox.com",
"port": "443",
"id": "a85def57-0a86-43d1-b15c-0494519067c6",
"aid": "0",
"scy": "auto",
"net": "tcp",
"type": "ws",
"host": "staliox.site",
"path": "/",
"tls": "tls",
"sni": "staliox.site",
"alpn": "h2,http/1.1",
"fp": "chrome"
}
generate_config=config_generator("vmess", config)
# Resultvmess://eyJ2IjogIjIiLCAicHMiOiAiU3RhbGlveC1NZSIsICJhZGQiOiAic3RhbGlveC5jb20iLCAicG9ydCI6ICI0NDMiLCAiaWQiOiAiYTg1ZGVmNTctMGE4Ni00M2QxLWIxNWMtMDQ5NDUxOTA2N2M2IiwgImFpZCI6ICIwIiwgInNjeSI6ICJhdXRvIiwgIm5ldCI6ICJ0Y3AiLCAidHlwZSI6ICJ3cyIsICJob3N0IjogInN0YWxpb3guc2l0ZSIsICJwYXRoIjogIi8iLCAidGxzIjogInRscyIsICJzbmkiOiAic3RhbGlveC5zaXRlIiwgImFscG4iOiAiaDIsaHR0cC8xLjEiLCAiZnAiOiAiY2hyb21lIn0=
  • VLESS:
config= {
"ps": "Staliox-Me",
"add": "staliox.com",
"port": "443",
"id": "a85def57-0a86-43d1-b15c-0494519067c6"
}
data= {
"security": "tls",
"type": "ws",
"host": "staliox.site",
"path": "/",
"sni": "staliox.site",
"alpn": "h2,http/1.1",
"fp": "chrome"
}
generate_config=config_generator("vless", config, data)
# Resultvless://a85def57-0a86-43d1-b15c-0494519067c6@staliox.com:443?security=tls&type=ws&host=staliox.site&path=%2F&tls=tls&sni=staliox.site&alpn=h2%2Chttp%2F1.1&fp=chrome#Staliox-Me

Used by

Contributors

Languages