Browse Source

shorter code

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

107
shadowsocks/obfsplugin/verify_simple.py

@ -53,13 +53,10 @@ class sub_encode_obfs(object):
def __init__(self):
self.sub_obfs = None
class verify_simple(plain.plain):
class verify_base(plain.plain):
def __init__(self, method):
super(verify_base, self).__init__(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
def init_data(self):
@ -68,6 +65,12 @@ class verify_simple(plain.plain):
def set_server_info(self, server_info):
try:
if 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:
server_info.data.sub_obfs = self.sub_obfs.init_data()
@ -75,12 +78,40 @@ class verify_simple(plain.plain):
_server_info.host = server_info.host
_server_info.port = server_info.port
_server_info.tcp_mss = server_info.tcp_mss
_server_info.param = ''
_server_info.param = sub_param
self.sub_obfs.set_server_info(_server_info)
except Exception as e:
shadowsocks.shell.print_exception(e)
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):
if len(buf) == 0:
return b''
@ -99,16 +130,6 @@ class verify_simple(plain.plain):
ret += self.pack_data(buf)
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):
if self.raw_trans:
return buf
@ -150,16 +171,6 @@ class verify_simple(plain.plain):
ret += self.pack_data(buf)
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):
if self.raw_trans:
return buf
@ -193,33 +204,13 @@ class verify_simple(plain.plain):
self.decrypt_packet_num += 1
return out_buf
class verify_deflate(plain.plain):
class verify_deflate(verify_base):
def __init__(self, method):
self.method = method
super(verify_deflate, self).__init__(method)
self.recv_buf = b''
self.unit_len = 32700
self.decrypt_packet_num = 0
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):
if len(buf) == 0:
@ -236,16 +227,6 @@ class verify_deflate(plain.plain):
ret += self.pack_data(buf)
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):
if self.raw_trans:
return buf
@ -278,16 +259,6 @@ class verify_deflate(plain.plain):
ret += self.pack_data(buf)
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):
if self.raw_trans:
return buf

Loading…
Cancel
Save