Browse Source

update: finish test sub command

master^2
dnomd343 2 years ago
parent
commit
1d5618e264
  1. 3
      Basis/Constant.py
  2. 6
      Basis/Test.py
  3. 34
      main.py

3
Basis/Constant.py

@ -15,7 +15,8 @@ LogFile = 'runtime.log'
DnsServer = [] DnsServer = []
WorkDir = '/tmp/ProxyC' WorkDir = '/tmp/ProxyC'
ObfsSite = 'www.bing.com' TestHost = 'proxyc.net'
TestSite = 'www.bing.com'
PathEnv = '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin' PathEnv = '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin'
# Shadowsocks Info # Shadowsocks Info

6
Basis/Test.py

@ -6,12 +6,12 @@ import time
import requests import requests
from threading import Thread from threading import Thread
from Basis.Logger import logging from Basis.Logger import logging
from Basis.Constant import WorkDir, ObfsSite from Basis.Constant import WorkDir, TestHost, TestSite
from Basis.Functions import md5Sum, genFlag, hostFormat, checkPortStatus from Basis.Functions import md5Sum, genFlag, hostFormat, checkPortStatus
Settings = { Settings = {
'workDir': WorkDir, 'workDir': WorkDir,
'site': ObfsSite, 'site': TestSite,
'serverBind': '', 'serverBind': '',
'clientBind': '', 'clientBind': '',
'host': '', 'host': '',
@ -56,7 +56,7 @@ def genCert(host: str, certInfo: dict, remark: str = 'ProxyC') -> None: # gener
os.system('cat %s >> /etc/ssl/certs/ca-certificates.crt' % certInfo['caCert']) # add into system's trust list os.system('cat %s >> /etc/ssl/certs/ca-certificates.crt' % certInfo['caCert']) # add into system's trust list
def loadCert(host: str = 'proxyc.net', certId: str = '') -> None: # load certificate def loadCert(host: str = TestHost, certId: str = '') -> None: # load certificate
newCert = (certId == '') newCert = (certId == '')
certId = genFlag(length = 8) if certId == '' else certId certId = genFlag(length = 8) if certId == '' else certId
certInfo = { certInfo = {

34
main.py

@ -25,13 +25,16 @@ def testArgParse(rawArgs: list) -> argparse.Namespace:
testParser.add_argument('PROTOCOL', type = str, help = 'test protocol name') testParser.add_argument('PROTOCOL', type = str, help = 'test protocol name')
testParser.add_argument('-a', '--all', help = 'test extra shadowsocks items', action = 'store_true') testParser.add_argument('-a', '--all', help = 'test extra shadowsocks items', action = 'store_true')
testParser.add_argument('-6', '--ipv6', help = 'test on ipv6 network', action = 'store_true') testParser.add_argument('-6', '--ipv6', help = 'test on ipv6 network', action = 'store_true')
testParser.add_argument('--debug', help = 'enable debug log level', action = 'store_true')
testParser.add_argument('--url', type = str, default = 'http://baidu.com', help = 'http request url') testParser.add_argument('--url', type = str, default = 'http://baidu.com', help = 'http request url')
testParser.add_argument('--cert', type = str, help = 'specify the certificate id') testParser.add_argument('--cert', type = str, default = '', help = 'specify the certificate id')
testParser.add_argument('--thread', type = int, default = 16, help = 'thread number in check process') testParser.add_argument('--thread', type = int, default = 16, help = 'thread number in check process')
testParser.add_argument('--select', type = str, nargs = '+', help = 'select id list for test') testParser.add_argument('--select', type = str, nargs = '+', help = 'select id list for test')
return testParser.parse_args(rawArgs) return testParser.parse_args(rawArgs)
testArgs = None
testMode = False
inputArgs = copy.copy(sys.argv) inputArgs = copy.copy(sys.argv)
if len(inputArgs) >= 0: # remove first arg (normally file name) if len(inputArgs) >= 0: # remove first arg (normally file name)
inputArgs.pop(0) inputArgs.pop(0)
@ -40,9 +43,8 @@ if len(inputArgs) != 0 and inputArgs[0].lower() == 'test': # test mode
if len(inputArgs) == 0 or inputArgs[0].startswith('-'): # no protocol is specified if len(inputArgs) == 0 or inputArgs[0].startswith('-'): # no protocol is specified
inputArgs = ['all'] + inputArgs inputArgs = ['all'] + inputArgs
testArgs = testArgParse(inputArgs) testArgs = testArgParse(inputArgs)
print(testArgs) Constant.LogLevel = 'debug' if testArgs.debug else 'warning'
sys.exit(1) testMode = True
# TODO: start test process
else: else:
mainArgs = mainArgParse(inputArgs) mainArgs = mainArgParse(inputArgs)
if mainArgs.version: # output version and exit if mainArgs.version: # output version and exit
@ -53,10 +55,12 @@ else:
Constant.ApiToken = mainArgs.token Constant.ApiToken = mainArgs.token
from Tester import testEntry
from Basis.Check import Check from Basis.Check import Check
from Basis import Api, DnsProxy from Basis import Api, DnsProxy
from Basis.Logger import logging from Basis.Logger import logging
from Basis.Manager import Manager from Basis.Manager import Manager
from Basis.Test import Test, loadBind, loadCert
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
@ -84,6 +88,28 @@ def loop(threadNum: int = 16) -> None:
threadPool.submit(runCheck, taskId, taskInfo) # submit into thread pool threadPool.submit(runCheck, taskId, taskInfo) # submit into thread pool
if testMode: # test mode
loadBind(serverV6 = testArgs.ipv6, clientV6 = testArgs.ipv6) # ipv4 / ipv6 (127.0.0.1 / ::1)
loadCert(certId = testArgs.cert) # cert config
logging.critical('TEST ITEM: %s' % testArgs.PROTOCOL)
logging.critical('SELECT: ' + str(testArgs.select))
logging.critical('URL: %s' % testArgs.url)
logging.critical('THREAD NUMBER: %i' % testArgs.thread)
logging.critical('-' * 32 + ' TEST START ' + '-' * 32)
if testArgs.PROTOCOL == 'all': # run all test items
for item in testEntry:
if item == ('ss' if testArgs.all else 'ss-all'): # skip ss / ss-all
continue
logging.critical('TEST ITEM -> ' + item)
Test(testEntry[item], testArgs.thread, testArgs.url, testArgs.select)
else: # run single item
if testArgs.PROTOCOL == 'ss' and testArgs.all: # test shadowsocks extra items
testItem = 'ss-all'
Test(testEntry[testArgs.PROTOCOL], testArgs.thread, testArgs.url, testArgs.select)
logging.critical('-' * 32 + ' TEST COMPLETE ' + '-' * 32)
sys.exit(0) # test complete
logging.warning('ProxyC starts running (%s)' % Constant.Version) logging.warning('ProxyC starts running (%s)' % Constant.Version)
_thread.start_new_thread(pythonCompile, ('/usr',)) # python compile (generate .pyc file) _thread.start_new_thread(pythonCompile, ('/usr',)) # python compile (generate .pyc file)
_thread.start_new_thread(DnsProxy.start, (Constant.DnsServer, 53)) # start dns server _thread.start_new_thread(DnsProxy.start, (Constant.DnsServer, 53)) # start dns server

Loading…
Cancel
Save