net bug fix and update function

This commit is contained in:
2019-12-19 08:09:06 +08:00
parent 9243c407a1
commit a35524eb0c
5 changed files with 80 additions and 28 deletions

View File

@@ -36,7 +36,7 @@ def send_queue_function():
object_app, new_dp = process_reforware(new_dp)
receive_queues[add_plugins_string(object_app)].put(new_dp)
else:
object_app, dp =process_reforware(dp)
object_app, dp = process_reforware(dp)
receive_queues[add_plugins_string(object_app)].put(dp)

View File

@@ -7,9 +7,9 @@ receive_queue = receive_queues[__name__]
def main():
file_flag = False;
file_flag = False
while True:
file_flag = False;
file_flag = False
raw_data = input()
if raw_data[:6] == '(file)':
@@ -44,7 +44,10 @@ def find_the_last(indata): # find the last ":" index
break
last_index = copy.copy(first_index)
last_index += 1
while indata[last_index] == ' ':
try:
while indata[last_index] == ' ':
last_index += 1
except IndexError:
last_index += 1
return first_index, last_index

View File

@@ -94,6 +94,12 @@ class Netrecv:
def check_send_queue(self):
while True:
dp = receive_queue.get()
# debug code
if dp.body == b'stat':
print(self.stat)
continue
if dp.method == 'file':
print('right')
print(dp.head)
@@ -104,7 +110,7 @@ class Netrecv:
file = open(dp.head['filename'], 'rb')
for data in file:
conn.send(data)
print('sended')
print('sended')
else:
print('wrong')
@@ -125,11 +131,20 @@ class Netrecv:
conn.close()
for id in self.stat:
if (conn, addr) in self.stat[id]:
self.stat[id].remove(conn, addr)
self.stat[id].remove((conn, addr))
self.connection_list.remove((conn, addr))
print('Removed connection', str(addr))
def say_hello(self, conn, addr):
dp = Datapack(head={'from': __name__})
dp.app = 'net'
dp.encode()
conn.sendall(dp.encode_data)
print('hello package has been sent')
def process_connection(self, conn, addr):
self.say_hello(conn, addr)
print('Connection accept %s' % str(addr))
data = b''
while True:
@@ -164,6 +179,20 @@ class Netrecv:
break
# try unpack #
# net config data package
if dp.app == 'net':
dp_id = dp.head['id']
local_id = self.stat.get(dp_id)
if not local_id: # create if not exits
self.stat[dp_id] = []
if not (conn, addr) in self.stat[dp_id]:
self.stat[dp_id].append((conn, addr))
continue
if dp.method == 'file':
length = int(dp.head['length'])
data_length = len(data)
@@ -262,21 +291,9 @@ class Netrecv:
dp.body = data[:length]
data = data[length:]
# net config data package
if dp.app == 'net':
dp_id = dp.head['id']
local_id = self.stat.get(dp_id)
if not local_id: # create if not exits
self.stat[dp_id] = []
if not (conn, addr) in self.stat[dp_id]:
self.stat[dp_id].append((conn, addr))
else:
dp.encode()
send_queue.put(dp)
print('###############\n' + dp.encode_data.decode() + '\n###############')
dp.encode()
send_queue.put(dp)
print('###############\n' + dp.encode_data.decode() + '\n###############')
thread = threading.Thread(target=main, args=())

View File

@@ -6,15 +6,42 @@ from forwarder import receive_queues, send_queue
receive_queue = receive_queues[__name__]
remove_file_list = ['__init__.py']
remove_file_list = ['__init__.py', 'netlist.txt', 'config.json', 'logger.log']
remove_dir_list = ['.git', '.idea', '__pycache__']
def main():
while True:
dp = receive_queue.get()
dp.encode()
print(dp.encode_data.decode())
if dp.method == 'post':
if dp.body == b'compress':
print('Starting update')
compress = Compresser()
filelist = compress.get_filelist()
compress.compress_files(filelist)
print('Compress finished')
elif dp.body == b'all':
print('Start update other client')
compress = Compresser()
filelist = compress.get_filelist()
compress.compress_files(filelist)
print('Compress finished')
dp = Datapack(head={'from': __name__})
dp.method = 'file'
dp.app = 'net:update'
dp.head['filename'] = 'resources/update.tar.xz'
dp.encode()
send_queue.put(dp)
elif dp.method == 'file':
print('Starting update local file')
with tarfile.open(dp.head['filename'], 'r:xz') as f:
f.extractall()
@@ -23,7 +50,7 @@ class Compresser:
self.filelist = []
def compress_files(self, filelist):
with tarfile.open('update.tar.xz', 'w:xz') as f:
with tarfile.open('resources/update.tar.xz', 'w:xz') as f:
for name in filelist:
f.add(name)

View File

@@ -7,7 +7,7 @@ s.bind(('127.0.0.1', 3966))
s.listen(100)
id = '''post net msw/1.0
id: miku
id: miku2
from: test
length: 0
@@ -23,8 +23,13 @@ def process(conn, addr):
if not data:
conn.close()
return
data = data.decode()
print(data)
try:
data = data.decode()
print(data)
except UnicodeDecodeError:
print('Decode error')
print(data[:39])
while True: