96 lines
2.5 KiB
Python
96 lines
2.5 KiB
Python
from xray_manager.core import (
|
|
OutboundFactory,
|
|
ProfileStorage,
|
|
Target,
|
|
TargetStorage,
|
|
VlessOutbound,
|
|
XrayManagerConfig,
|
|
)
|
|
|
|
inbound = {
|
|
"tag": "in-vless",
|
|
"listen": "127.0.0.1",
|
|
"port": 443,
|
|
"protocol": "vless",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"email": "test-fr1",
|
|
"id": "0eb7a1a8-c24f-4eb2-9f89-8023a10ed070",
|
|
"flow": "xtls-rprx-vision",
|
|
},
|
|
{
|
|
"email": "test2-us2",
|
|
"id": "7b6da4ce-bb10-4127-a0c6-243618c62edd",
|
|
"flow": "xtls-rprx-vision",
|
|
},
|
|
],
|
|
"decryption": "none",
|
|
},
|
|
"streamSettings": {
|
|
"network": "tcp",
|
|
"security": "reality",
|
|
"realitySettings": {
|
|
"show": False,
|
|
"dest": "google.com:443",
|
|
"xver": 0,
|
|
"serverNames": ["google.com"],
|
|
"privateKey": "yHJQq57MNRi-0UQm7ymiy2DI17iO_Ovu2HF5EV1ViGg",
|
|
"minClientVer": "",
|
|
"maxClientVer": "",
|
|
"maxTimeDiff": 0,
|
|
"shortIds": ["91e7c34ea2c07723", "0419a64d06467571"],
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
def test_from_scratch(target_storage: TargetStorage) -> VlessOutbound:
|
|
target = target_storage.load_by_id("fr1")
|
|
outbound = VlessOutbound.from_scratch(target, "localhost", inbound)
|
|
print("Test from scratch")
|
|
print(outbound)
|
|
return outbound
|
|
|
|
|
|
def test_to_link(outbound: VlessOutbound) -> str:
|
|
link = outbound.to_link()
|
|
print("Test to link")
|
|
print(link)
|
|
return link
|
|
|
|
|
|
def test_from_link(target_storage: TargetStorage, link: str):
|
|
outbound = VlessOutbound.from_link(target_storage, link)
|
|
print("Test from link")
|
|
print(outbound)
|
|
|
|
|
|
def test_from_inbound(target_storage: TargetStorage):
|
|
client = {
|
|
"email": "test-fr1",
|
|
"id": "0eb7a1a8-c24f-4eb2-9f89-8023a10ed070",
|
|
"flow": "xtls-rprx-vision",
|
|
}
|
|
|
|
username, outbound = VlessOutbound.from_inbound(
|
|
target_storage, "localhost", client, inbound
|
|
)
|
|
|
|
print("Test from inbound")
|
|
print(username)
|
|
print(outbound)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
DEV_CONFIG_PATH = "tests/mock_data/etc/xray-manager/config.json"
|
|
xray_manager_config = XrayManagerConfig(DEV_CONFIG_PATH)
|
|
profile_storage = ProfileStorage(xray_manager_config)
|
|
target_storage = TargetStorage(xray_manager_config)
|
|
|
|
outbound = test_from_scratch(target_storage)
|
|
link = test_to_link(outbound)
|
|
test_from_link(target_storage, link)
|
|
|
|
test_from_inbound(target_storage)
|