|
|
@ -1,64 +1,66 @@ |
|
|
|
#!/usr/bin/python |
|
|
|
# -*- coding:utf-8 -*- |
|
|
|
import json |
|
|
|
|
|
|
|
import json |
|
|
|
from ProxyTester import Xray |
|
|
|
|
|
|
|
config = {} |
|
|
|
testConfig = {} |
|
|
|
|
|
|
|
|
|
|
|
def trojanBasicTest() -> dict: |
|
|
|
serverConfig = { |
|
|
|
'run_type': 'server', |
|
|
|
'local_addr': '127.0.0.1', |
|
|
|
'local_port': config['port'], |
|
|
|
'local_addr': testConfig['bind'], |
|
|
|
'local_port': testConfig['port'], |
|
|
|
'password': [ |
|
|
|
config['passwd'] |
|
|
|
testConfig['passwd'] |
|
|
|
], |
|
|
|
'ssl': { |
|
|
|
'cert': config['cert'], |
|
|
|
'key': config['key'] |
|
|
|
'cert': testConfig['cert'], |
|
|
|
'key': testConfig['key'] |
|
|
|
} |
|
|
|
} |
|
|
|
return { |
|
|
|
'caption': 'Trojan basic', |
|
|
|
'proxy': { |
|
|
|
'type': 'trojan', |
|
|
|
'server': '127.0.0.1', |
|
|
|
'port': config['port'], |
|
|
|
'passwd': config['passwd'], |
|
|
|
'server': testConfig['addr'], |
|
|
|
'port': testConfig['port'], |
|
|
|
'passwd': testConfig['passwd'], |
|
|
|
'stream': { |
|
|
|
'type': 'tcp', |
|
|
|
'secure': { |
|
|
|
'type': 'tls', |
|
|
|
'sni': config['host'] |
|
|
|
'sni': testConfig['host'] |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
'server': { |
|
|
|
'startCommand': ['trojan', '-c', config['file']], |
|
|
|
'startCommand': ['trojan', '-c', testConfig['file']], |
|
|
|
'fileContent': json.dumps(serverConfig), |
|
|
|
'filePath': config['file'], |
|
|
|
'filePath': testConfig['file'], |
|
|
|
'envVar': {} |
|
|
|
}, |
|
|
|
'aider': None |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def loadTrojanStream(streamInfo: dict, xtlsFlow: str or None) -> dict: |
|
|
|
proxyInfo = { |
|
|
|
'type': 'trojan', |
|
|
|
'server': '127.0.0.1', |
|
|
|
'port': config['port'], |
|
|
|
'passwd': config['passwd'], |
|
|
|
'server': testConfig['addr'], |
|
|
|
'port': testConfig['port'], |
|
|
|
'passwd': testConfig['passwd'], |
|
|
|
'stream': streamInfo['client'] |
|
|
|
} |
|
|
|
inboundConfig = { |
|
|
|
'protocol': 'trojan', |
|
|
|
'listen': '127.0.0.1', |
|
|
|
'port': config['port'], |
|
|
|
'listen': testConfig['bind'], |
|
|
|
'port': testConfig['port'], |
|
|
|
'settings': { |
|
|
|
'clients': [ |
|
|
|
{ |
|
|
|
'password': config['passwd'] |
|
|
|
'password': testConfig['passwd'] |
|
|
|
} |
|
|
|
] |
|
|
|
}, |
|
|
@ -70,79 +72,78 @@ def loadTrojanStream(streamInfo: dict, xtlsFlow: str or None) -> dict: |
|
|
|
'caption': 'Trojan network ' + streamInfo['caption'], |
|
|
|
'proxy': proxyInfo, |
|
|
|
'server': { |
|
|
|
'startCommand': ['xray', '-c', config['file']], |
|
|
|
'startCommand': ['xray', '-c', testConfig['file']], |
|
|
|
'fileContent': Xray.xrayConfig(inboundConfig), |
|
|
|
'filePath': config['file'], |
|
|
|
'filePath': testConfig['file'], |
|
|
|
'envVar': {} |
|
|
|
}, |
|
|
|
'aider': None |
|
|
|
} |
|
|
|
|
|
|
|
def trojanTest(trojanConfig: dict) -> list: |
|
|
|
result = [] |
|
|
|
for key, value in trojanConfig.items(): # trojanConfig -> config |
|
|
|
config[key] = value |
|
|
|
|
|
|
|
result.append(trojanBasicTest()) # basic test |
|
|
|
def test(config: dict) -> list: |
|
|
|
global testConfig |
|
|
|
testConfig = config |
|
|
|
testList = [trojanBasicTest()] # basic test |
|
|
|
|
|
|
|
# TCP stream |
|
|
|
streamInfo = Xray.loadTcpStream(False, '', '') |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
for flow in Xray.xtlsFlowList: |
|
|
|
streamInfo = Xray.loadTcpStream(False, '', '') |
|
|
|
xtlsFlow, streamInfo = Xray.addXtlsConfig(streamInfo, config['cert'], config['key'], config['host'], flow) |
|
|
|
result.append(loadTrojanStream(streamInfo, xtlsFlow)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, xtlsFlow)) |
|
|
|
|
|
|
|
streamInfo = Xray.loadTcpStream(True, config['host'], '/') |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
# mKCP stream |
|
|
|
for obfs in Xray.udpObfsList: |
|
|
|
streamInfo = Xray.loadKcpStream(config['passwd'], obfs) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
for flow in Xray.xtlsFlowList: |
|
|
|
streamInfo = Xray.loadKcpStream(config['passwd'], obfs) |
|
|
|
xtlsFlow, streamInfo = Xray.addXtlsConfig(streamInfo, config['cert'], config['key'], config['host'], flow) |
|
|
|
result.append(loadTrojanStream(streamInfo, xtlsFlow)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, xtlsFlow)) |
|
|
|
|
|
|
|
# WebSocket stream |
|
|
|
streamInfo = Xray.loadWsStream(config['host'], config['path'], False) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
streamInfo = Xray.loadWsStream(config['host'], config['path'], True) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
# HTTP/2 stream |
|
|
|
streamInfo = Xray.loadH2Stream(config['host'], config['path']) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
# QUIC stream |
|
|
|
for method in Xray.quicMethodList: |
|
|
|
for obfs in Xray.udpObfsList: |
|
|
|
streamInfo = Xray.loadQuicStream(method, config['passwd'], obfs) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
# GRPC stream |
|
|
|
streamInfo = Xray.loadGrpcStream(config['service']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
streamInfo = Xray.loadGrpcStream(config['service'], multiMode = True) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
streamInfo = Xray.addTlsConfig(streamInfo, config['cert'], config['key'], config['host']) |
|
|
|
result.append(loadTrojanStream(streamInfo, None)) |
|
|
|
testList.append(loadTrojanStream(streamInfo, None)) |
|
|
|
|
|
|
|
return result |
|
|
|
return testList |
|
|
|