From c7864acc379214e32da294dd8d6c237022a4227e Mon Sep 17 00:00:00 2001 From: BreakWa11 Date: Sun, 12 Jun 2016 17:41:05 +0800 Subject: [PATCH] add sspanelv3 interface, read the 'method' row --- apiconfig.py | 2 +- db_transfer.py | 12 ++++++++---- server_pool.py | 4 +++- switchrule.py | 10 ++++++++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apiconfig.py b/apiconfig.py index 580e55b..4713db5 100644 --- a/apiconfig.py +++ b/apiconfig.py @@ -1,7 +1,7 @@ # Config TRANSFER_MUL = 1.0 NODE_ID = 1 -API_INTERFACE = 'sspanelv2' #sspanelv2, muapiv2 +API_INTERFACE = 'sspanelv2' #sspanelv2, sspanelv3, muapiv2 # Mysql MYSQL_HOST = 'mdss.mengsky.net' diff --git a/db_transfer.py b/db_transfer.py index b64eb65..5d315eb 100644 --- a/db_transfer.py +++ b/db_transfer.py @@ -124,6 +124,10 @@ class DbTransfer(object): port = row['port'] passwd = common.to_bytes(row['passwd']) + cfg = {} + for name in ['method', 'obfs', 'protocol']: + if name in row: + cfg[name] = row[name] if port not in cur_servers: cur_servers[port] = passwd @@ -140,12 +144,12 @@ class DbTransfer(object): #password changed logging.info('db stop server at port [%s] reason: password changed' % (port,)) ServerPool.get_instance().cb_del_server(port) - new_servers[port] = passwd + new_servers[port] = (passwd, cfg) elif allow and ServerPool.get_instance().server_run_status(port) is False: #new_servers[port] = passwd logging.info('db start server at port [%s] pass [%s]' % (port, passwd)) - ServerPool.get_instance().new_server(port, passwd) + ServerPool.get_instance().new_server(port, passwd, cfg) for row in last_rows: if row['port'] in cur_servers: @@ -158,9 +162,9 @@ class DbTransfer(object): from shadowsocks import eventloop DbTransfer.get_instance().event.wait(eventloop.TIMEOUT_PRECISION) for port in new_servers.keys(): - passwd = new_servers[port] + passwd, cfg = new_servers[port] logging.info('db start server at port [%s] pass [%s]' % (port, passwd)) - ServerPool.get_instance().new_server(port, passwd) + ServerPool.get_instance().new_server(port, passwd, cfg) @staticmethod def del_servers(): diff --git a/server_pool.py b/server_pool.py index b897d20..f0529a5 100644 --- a/server_pool.py +++ b/server_pool.py @@ -106,7 +106,7 @@ class ServerPool(object): return False return True - def new_server(self, port, password): + def new_server(self, port, password, user_config): ret = True port = int(port) ipv6_ok = False @@ -117,6 +117,7 @@ class ServerPool(object): return 'this port server is already running' else: a_config = self.config.copy() + a_config.update(user_config) if len(a_config['server_ipv6']) > 2 and a_config['server_ipv6'][0] == "[" and a_config['server_ipv6'][-1] == "]": a_config['server_ipv6'] = a_config['server_ipv6'][1:-1] a_config['server'] = a_config['server_ipv6'] @@ -145,6 +146,7 @@ class ServerPool(object): return 'this port server is already running' else: a_config = self.config.copy() + a_config.update(user_config) a_config['server_port'] = port a_config['password'] = password a_config['max_connect'] = 128 diff --git a/switchrule.py b/switchrule.py index 3721d2c..5785850 100644 --- a/switchrule.py +++ b/switchrule.py @@ -1,6 +1,12 @@ +from configloader import load_config, get_config + def getKeys(): - return ['port', 'u', 'd', 'transfer_enable', 'passwd', 'enable' ] - #return ['port', 'u', 'd', 'transfer_enable', 'passwd', 'enable', 'plan' ] # append the column name 'plan' + load_config() + key_list = ['port', 'u', 'd', 'transfer_enable', 'passwd', 'enable' ] + if get_config().API_INTERFACE == 'sspanelv3': + key_list += ['method'] + return key_list + #return key_list + ['plan'] # append the column name 'plan' def isTurnOn(row): return True