Browse Source

add interface legendsockssr

dev
破娃酱 8 years ago
parent
commit
c3bb64bc2c
  1. 2
      apiconfig.py
  2. 111
      db_transfer.py

2
apiconfig.py

@ -1,5 +1,5 @@
# Config # Config
API_INTERFACE = 'sspanelv2' #mudbjson, sspanelv2, sspanelv3, sspanelv3ssr, glzjinmod, muapiv2(not support) API_INTERFACE = 'sspanelv2' #mudbjson, sspanelv2, sspanelv3, sspanelv3ssr, glzjinmod, legendsockssr, muapiv2(not support)
UPDATE_TIME = 60 UPDATE_TIME = 60
SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link

111
db_transfer.py

@ -410,13 +410,19 @@ class DbTransfer(TransferBase):
class Dbv3Transfer(DbTransfer): class Dbv3Transfer(DbTransfer):
def __init__(self): def __init__(self):
super(Dbv3Transfer, self).__init__() super(Dbv3Transfer, self).__init__()
self.key_list += ['id', 'method'] self.update_node_state = True if get_config().API_INTERFACE != 'legendsockssr' else False
self.ss_node_info_name = 'ss_node_info_log' if self.update_node_state:
if get_config().API_INTERFACE == 'sspanelv3ssr': self.key_list += ['id']
self.key_list += ['obfs', 'protocol'] self.key_list += ['method']
if get_config().API_INTERFACE == 'glzjinmod': if self.update_node_state:
self.ss_node_info_name = 'ss_node_info_log'
if get_config().API_INTERFACE == 'sspanelv3ssr':
self.key_list += ['obfs', 'protocol']
if get_config().API_INTERFACE == 'glzjinmod':
self.key_list += ['obfs', 'protocol']
self.ss_node_info_name = 'ss_node_info'
else:
self.key_list += ['obfs', 'protocol'] self.key_list += ['obfs', 'protocol']
self.ss_node_info_name = 'ss_node_info'
self.start_time = time.time() self.start_time = time.time()
def update_all_user(self, dt_transfer): def update_all_user(self, dt_transfer):
@ -458,16 +464,17 @@ class Dbv3Transfer(DbTransfer):
query_sub_when2 += ' WHEN %s THEN d+%s' % (id, int(transfer[1] * self.cfg["transfer_mul"])) query_sub_when2 += ' WHEN %s THEN d+%s' % (id, int(transfer[1] * self.cfg["transfer_mul"]))
update_transfer[id] = transfer update_transfer[id] = transfer
cur = conn.cursor() if self.update_node_state:
try: cur = conn.cursor()
if id in self.port_uid_table: try:
cur.execute("INSERT INTO `user_traffic_log` (`id`, `user_id`, `u`, `d`, `node_id`, `rate`, `traffic`, `log_time`) VALUES (NULL, '" + \ if id in self.port_uid_table:
str(self.port_uid_table[id]) + "', '" + str(transfer[0]) + "', '" + str(transfer[1]) + "', '" + \ cur.execute("INSERT INTO `user_traffic_log` (`id`, `user_id`, `u`, `d`, `node_id`, `rate`, `traffic`, `log_time`) VALUES (NULL, '" + \
str(self.cfg["node_id"]) + "', '" + str(self.cfg["transfer_mul"]) + "', '" + \ str(self.port_uid_table[id]) + "', '" + str(transfer[0]) + "', '" + str(transfer[1]) + "', '" + \
self.traffic_format((transfer[0] + transfer[1]) * self.cfg["transfer_mul"]) + "', unix_timestamp()); ") str(self.cfg["node_id"]) + "', '" + str(self.cfg["transfer_mul"]) + "', '" + \
except: self.traffic_format((transfer[0] + transfer[1]) * self.cfg["transfer_mul"]) + "', unix_timestamp()); ")
logging.warn('no `user_traffic_log` in db') except:
cur.close() logging.warn('no `user_traffic_log` in db')
cur.close()
if query_sub_in is not None: if query_sub_in is not None:
query_sub_in += ',%s' % id query_sub_in += ',%s' % id
@ -486,25 +493,26 @@ class Dbv3Transfer(DbTransfer):
logging.error(e) logging.error(e)
cur.close() cur.close()
try: if self.update_node_state:
cur = conn.cursor()
try: try:
cur.execute("INSERT INTO `ss_node_online_log` (`id`, `node_id`, `online_user`, `log_time`) VALUES (NULL, '" + \ cur = conn.cursor()
str(self.cfg["node_id"]) + "', '" + str(alive_user_count) + "', unix_timestamp()); ") try:
except Exception as e: cur.execute("INSERT INTO `ss_node_online_log` (`id`, `node_id`, `online_user`, `log_time`) VALUES (NULL, '" + \
logging.error(e) str(self.cfg["node_id"]) + "', '" + str(alive_user_count) + "', unix_timestamp()); ")
cur.close() except Exception as e:
logging.error(e)
cur.close()
cur = conn.cursor() cur = conn.cursor()
try: try:
cur.execute("INSERT INTO `" + self.ss_node_info_name + "` (`id`, `node_id`, `uptime`, `load`, `log_time`) VALUES (NULL, '" + \ cur.execute("INSERT INTO `" + self.ss_node_info_name + "` (`id`, `node_id`, `uptime`, `load`, `log_time`) VALUES (NULL, '" + \
str(self.cfg["node_id"]) + "', '" + str(self.uptime()) + "', '" + \ str(self.cfg["node_id"]) + "', '" + str(self.uptime()) + "', '" + \
str(self.load()) + "', unix_timestamp()); ") str(self.load()) + "', unix_timestamp()); ")
except Exception as e: except Exception as e:
logging.error(e) logging.error(e)
cur.close() cur.close()
except: except:
logging.warn('no `ss_node_online_log` or `" + self.ss_node_info_name + "` in db') logging.warn('no `ss_node_online_log` or `" + self.ss_node_info_name + "` in db')
conn.close() conn.close()
return update_transfer return update_transfer
@ -518,26 +526,27 @@ class Dbv3Transfer(DbTransfer):
cur = conn.cursor() cur = conn.cursor()
node_info_keys = ['traffic_rate'] if self.update_node_state:
try: node_info_keys = ['traffic_rate']
cur.execute("SELECT " + ','.join(node_info_keys) +" FROM ss_node where `id`='" + str(self.cfg["node_id"]) + "'") try:
nodeinfo = cur.fetchone() cur.execute("SELECT " + ','.join(node_info_keys) +" FROM ss_node where `id`='" + str(self.cfg["node_id"]) + "'")
except Exception as e: nodeinfo = cur.fetchone()
logging.error(e) except Exception as e:
nodeinfo = None logging.error(e)
nodeinfo = None
if nodeinfo == None:
rows = [] if nodeinfo == None:
rows = []
cur.close()
conn.commit()
logging.warn('None result when select node info from ss_node in db, maybe you set the incorrect node id')
return rows
cur.close() cur.close()
conn.commit()
logging.warn('None result when select node info from ss_node in db, maybe you set the incorrect node id')
return rows
cur.close()
node_info_dict = {} node_info_dict = {}
for column in range(len(nodeinfo)): for column in range(len(nodeinfo)):
node_info_dict[node_info_keys[column]] = nodeinfo[column] node_info_dict[node_info_keys[column]] = nodeinfo[column]
self.cfg['transfer_mul'] = float(node_info_dict['traffic_rate']) self.cfg['transfer_mul'] = float(node_info_dict['traffic_rate'])
cur = conn.cursor() cur = conn.cursor()
try: try:

Loading…
Cancel
Save