进一步完善同时请求登陆注册等用户相关情况

master
wufayuan 3 years ago
parent 0c45592b8f
commit 3d8e40bb5e

1
.gitignore vendored

@ -1 +1,2 @@
!/dcs/tests/zhiwang.py
!/dcs/tests/cookie.py

@ -380,3 +380,7 @@
2022-03-29 11:26:47.684 | INFO | __main__:<module>:16 - starting the server...
2022-03-29 11:34:44.764 | INFO | __main__:<module>:9 - reading config args...
2022-03-29 11:34:44.764 | INFO | __main__:<module>:16 - starting the server...
2022-03-30 21:17:57.789 | INFO | __main__:<module>:9 - reading config args...
2022-03-30 21:17:57.790 | INFO | __main__:<module>:16 - starting the server...
2022-03-30 21:18:01.353 | INFO | dcs.tests.user_request_handler:login:37 - [REQUEST] login
2022-03-30 21:18:01.380 | INFO | dcs.tests.user_request_handler:login:44 - [RESPONSE] login: 用户名错误,登录失败

@ -6,6 +6,7 @@ import dcs.tests.config
import dcs.tests.database as database
from loguru import logger
from dcs.tests.spider import Spider
from dcs.tests.user_request_handler import Urh
def generate_response(response):
@ -87,16 +88,15 @@ class RequestHandler(threading.Thread):
try:
if self.request_map['action'] == 'test':
self.test()
self.client_socket.close()
elif self.request_map['action'] == 'translate':
self.translate()
elif self.request_map['action'] == 'crawl zhiwang':
self.crawl_zhiwang()
elif self.request_map['action'] == 'report_free':
self.report_state('free')
elif self.request_map['action'] == 'login':
self.login(self.request_map['user'], self.request_map['password'])
elif self.request_map['action'] == 'register':
self.register(self.request_map['user'], self.request_map['password'])
finally:
self.client_socket.close()
self.client_socket.close()
elif self.request_map['action'] in ['report_free', 'login', 'register']:
urh = Urh(self.request_map, self.client_socket)
urh.start()
except:
pass

@ -0,0 +1,64 @@
import threading
import socket
import threading
import json
import struct
import dcs.tests.config
import dcs.tests.database as database
from loguru import logger
def generate_response(response):
response_binary = json.JSONEncoder().encode(response).encode("utf-8")
response_binary_len = len(response_binary)
response_binary_len_binary = struct.pack("!Q", response_binary_len)
response_binary = response_binary_len_binary + response_binary
return response_binary
class Urh(threading.Thread):
def __init__(self, request_map: dict, client_socket: 'socket.socket'):
super().__init__()
self.request_map = request_map
self.client_socket = client_socket
def report_state(self, state):
logger.info(f"[REQUEST] report free")
if self.request_map['spider_info'] not in dcs.tests.config.get_free_spiders():
dcs.tests.config.add_free_spider(self.request_map['spider_info'])
response = {
'report_free': 'success marked ' + str(self.request_map['spider_info'])
}
self.client_socket.sendall(generate_response(response))
logger.info(f"[RESPONSE] report free: {response['report_free']}")
def login(self, user, password):
logger.info(f"[REQUEST] login")
database.mysql_conn()
response = database.login(user, password)
response = {
'login': response
}
self.client_socket.sendall(generate_response(response))
logger.info(f"[RESPONSE] login: {response['login']}")
def register(self, user, password):
logger.info(f"[REQUEST] register")
database.mysql_conn()
response = database.register(user, password)
response = {
'register': response
}
self.client_socket.sendall(generate_response(response))
logger.info(f"[RESPONSE] register: {response['register']}")
def run(self) -> None:
if self.request_map['action'] == 'report_free':
self.report_state('free')
elif self.request_map['action'] == 'login':
self.login(self.request_map['user'], self.request_map['password'])
elif self.request_map['action'] == 'register':
self.register(self.request_map['user'], self.request_map['password'])
else:
self.client_socket.close()
Loading…
Cancel
Save