Browse Source

shorter code

dev
breakwa11 9 years ago
parent
commit
4551d5c268
  1. 109
      shadowsocks/obfsplugin/verify_simple.py

109
shadowsocks/obfsplugin/verify_simple.py

@ -53,13 +53,10 @@ class sub_encode_obfs(object):
def __init__(self): def __init__(self):
self.sub_obfs = None self.sub_obfs = None
class verify_simple(plain.plain): class verify_base(plain.plain):
def __init__(self, method): def __init__(self, method):
super(verify_base, self).__init__(method)
self.method = method self.method = method
self.recv_buf = b''
self.unit_len = 8100
self.decrypt_packet_num = 0
self.raw_trans = False
self.sub_obfs = None self.sub_obfs = None
def init_data(self): def init_data(self):
@ -68,19 +65,53 @@ class verify_simple(plain.plain):
def set_server_info(self, server_info): def set_server_info(self, server_info):
try: try:
if server_info.param: if server_info.param:
self.sub_obfs = shadowsocks.obfs.obfs(server_info.param) sub_param = ''
param_list = server_info.param.split(',', 1)
if len(param_list) > 1:
self.sub_obfs = shadowsocks.obfs.obfs(param_list[0])
sub_param = param_list[1]
else:
self.sub_obfs = shadowsocks.obfs.obfs(server_info.param)
if server_info.data.sub_obfs is None: if server_info.data.sub_obfs is None:
server_info.data.sub_obfs = self.sub_obfs.init_data() server_info.data.sub_obfs = self.sub_obfs.init_data()
_server_info = shadowsocks.obfs.server_info(server_info.data.sub_obfs) _server_info = shadowsocks.obfs.server_info(server_info.data.sub_obfs)
_server_info.host = server_info.host _server_info.host = server_info.host
_server_info.port = server_info.port _server_info.port = server_info.port
_server_info.tcp_mss = server_info.tcp_mss _server_info.tcp_mss = server_info.tcp_mss
_server_info.param = '' _server_info.param = sub_param
self.sub_obfs.set_server_info(_server_info) self.sub_obfs.set_server_info(_server_info)
except Exception as e: except Exception as e:
shadowsocks.shell.print_exception(e) shadowsocks.shell.print_exception(e)
self.server_info = server_info self.server_info = server_info
def client_encode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.client_encode(buf)
return buf
def client_decode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.client_decode(buf)
return (buf, False)
def server_encode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.server_encode(buf)
return buf
def server_decode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.server_decode(buf)
return (buf, True, False)
class verify_simple(verify_base):
def __init__(self, method):
super(verify_simple, self).__init__(method)
self.recv_buf = b''
self.unit_len = 8100
self.decrypt_packet_num = 0
self.raw_trans = False
def pack_data(self, buf): def pack_data(self, buf):
if len(buf) == 0: if len(buf) == 0:
return b'' return b''
@ -99,16 +130,6 @@ class verify_simple(plain.plain):
ret += self.pack_data(buf) ret += self.pack_data(buf)
return ret return ret
def client_encode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.client_encode(buf)
return buf
def client_decode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.client_decode(buf)
return (buf, False)
def client_post_decrypt(self, buf): def client_post_decrypt(self, buf):
if self.raw_trans: if self.raw_trans:
return buf return buf
@ -150,16 +171,6 @@ class verify_simple(plain.plain):
ret += self.pack_data(buf) ret += self.pack_data(buf)
return ret return ret
def server_encode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.server_encode(buf)
return buf
def server_decode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.server_decode(buf)
return (buf, True, False)
def server_post_decrypt(self, buf): def server_post_decrypt(self, buf):
if self.raw_trans: if self.raw_trans:
return buf return buf
@ -193,33 +204,13 @@ class verify_simple(plain.plain):
self.decrypt_packet_num += 1 self.decrypt_packet_num += 1
return out_buf return out_buf
class verify_deflate(plain.plain): class verify_deflate(verify_base):
def __init__(self, method): def __init__(self, method):
self.method = method super(verify_deflate, self).__init__(method)
self.recv_buf = b'' self.recv_buf = b''
self.unit_len = 32700 self.unit_len = 32700
self.decrypt_packet_num = 0 self.decrypt_packet_num = 0
self.raw_trans = False self.raw_trans = False
self.sub_obfs = None
def init_data(self):
return sub_encode_obfs()
def set_server_info(self, server_info):
try:
if server_info.param:
self.sub_obfs = shadowsocks.obfs.obfs(server_info.param)
if server_info.data.sub_obfs is None:
server_info.data.sub_obfs = self.sub_obfs.init_data()
_server_info = shadowsocks.obfs.server_info(server_info.data.sub_obfs)
_server_info.host = server_info.host
_server_info.port = server_info.port
_server_info.tcp_mss = server_info.tcp_mss
_server_info.param = ''
self.sub_obfs.set_server_info(_server_info)
except Exception as e:
shadowsocks.shell.print_exception(e)
self.server_info = server_info
def pack_data(self, buf): def pack_data(self, buf):
if len(buf) == 0: if len(buf) == 0:
@ -236,16 +227,6 @@ class verify_deflate(plain.plain):
ret += self.pack_data(buf) ret += self.pack_data(buf)
return ret return ret
def client_encode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.client_encode(buf)
return buf
def client_decode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.client_decode(buf)
return (buf, False)
def client_post_decrypt(self, buf): def client_post_decrypt(self, buf):
if self.raw_trans: if self.raw_trans:
return buf return buf
@ -278,16 +259,6 @@ class verify_deflate(plain.plain):
ret += self.pack_data(buf) ret += self.pack_data(buf)
return ret return ret
def server_encode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.server_encode(buf)
return buf
def server_decode(self, buf):
if self.sub_obfs is not None:
return self.sub_obfs.server_decode(buf)
return (buf, True, False)
def server_post_decrypt(self, buf): def server_post_decrypt(self, buf):
if self.raw_trans: if self.raw_trans:
return buf return buf

Loading…
Cancel
Save