fix server

This commit is contained in:
clowwindy 2013-05-18 14:35:57 +08:00
parent 472a2b6233
commit a3ee28dc45
2 changed files with 20 additions and 10 deletions

View file

@ -116,7 +116,8 @@ class LocalHandler(object):
header_length = 5 + addr_len + 2 header_length = 5 + addr_len + 2
else: else:
# TODO check addrtype in (1, 3, 4) # TODO check addrtype in (1, 3, 4)
raise # raise Exception('addrtype wrong')
raise something
remote_port = struct.unpack('>H', remote_port)[0] remote_port = struct.unpack('>H', remote_port)[0]
logging.info('connecting %s:%d' % (remote_addr, remote_port)) logging.info('connecting %s:%d' % (remote_addr, remote_port))
self.conn.write('\x05\x00\x00\x01\x00\x00\x00\x00\x10\x10') self.conn.write('\x05\x00\x00\x01\x00\x00\x00\x00\x10\x10')
@ -177,7 +178,9 @@ if __name__ == '__main__':
if '-6' in sys.argv[1:]: if '-6' in sys.argv[1:]:
argv.remove('-6') argv.remove('-6')
optlist, args = getopt.getopt(argv, 's:p:k:l:') level = logging.INFO
optlist, args = getopt.getopt(argv, 's:p:k:l:v')
for key, value in optlist: for key, value in optlist:
if key == '-p': if key == '-p':
REMOTE_PORT = int(value) REMOTE_PORT = int(value)
@ -187,8 +190,10 @@ if __name__ == '__main__':
PORT = int(value) PORT = int(value)
elif key == '-s': elif key == '-s':
SERVER = value SERVER = value
elif key == '-v':
level = logging.NOTSET
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)-8s %(message)s', logging.basicConfig(level=level, format='%(asctime)s %(levelname)1.1s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', filemode='a+') datefmt='%Y-%m-%d %H:%M:%S', filemode='a+')
encrypt_table = ''.join(get_table(KEY)) encrypt_table = ''.join(get_table(KEY))

View file

@ -65,8 +65,9 @@ class RemoteHandler(object):
conn.connect(local_handler.remote_addr_pair) conn.connect(local_handler.remote_addr_pair)
def on_connect(self, s): def on_connect(self, s):
logging.debug('on_connnect')
for piece in self.local_handler.cached_pieces: for piece in self.local_handler.cached_pieces:
self.conn.write(decrypt(piece)) self.conn.write(piece)
# TODO write cached pieces # TODO write cached pieces
self.local_handler.stage = 5 self.local_handler.stage = 5
@ -84,8 +85,8 @@ class RemoteHandler(object):
class LocalHandler(object): class LocalHandler(object):
def on_data(self, s, data): def on_data(self, s, data):
data = decrypt(data)
if self.stage == 5: if self.stage == 5:
data = decrypt(data)
self.remote_handler.conn.write(data) self.remote_handler.conn.write(data)
return return
if self.stage == 0: if self.stage == 0:
@ -107,7 +108,8 @@ class LocalHandler(object):
header_length = 2 + addr_len + 2 header_length = 2 + addr_len + 2
else: else:
# TODO check addrtype in (1, 3, 4) # TODO check addrtype in (1, 3, 4)
raise # raise 'addrtype wrong'
raise something
remote_port = struct.unpack('>H', remote_port)[0] remote_port = struct.unpack('>H', remote_port)[0]
self.remote_addr_pair = (remote_addr, remote_port) self.remote_addr_pair = (remote_addr, remote_port)
logging.info('connecting %s:%d' % self.remote_addr_pair) logging.info('connecting %s:%d' % self.remote_addr_pair)
@ -121,8 +123,7 @@ class LocalHandler(object):
self.stage = 4 self.stage = 4
return return
except: except:
import traceback logging.exception('')
traceback.print_exc()
if self.stage == 4: if self.stage == 4:
self.cached_pieces.append(data) self.cached_pieces.append(data)
@ -166,14 +167,18 @@ if __name__ == '__main__':
if '-6' in sys.argv[1:]: if '-6' in sys.argv[1:]:
argv.remove('-6') argv.remove('-6')
optlist, args = getopt.getopt(argv, 'p:k:') level = logging.INFO
optlist, args = getopt.getopt(argv, 'p:k:v')
for key, value in optlist: for key, value in optlist:
if key == '-p': if key == '-p':
PORT = int(value) PORT = int(value)
elif key == '-k': elif key == '-k':
KEY = value KEY = value
elif key == '-v':
level = logging.NOTSET
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)-8s %(message)s', logging.basicConfig(level=level, format='%(asctime)s %(levelname)1.1s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', filemode='a+') datefmt='%Y-%m-%d %H:%M:%S', filemode='a+')
encrypt_table = ''.join(get_table(KEY)) encrypt_table = ''.join(get_table(KEY))