Added support for multiple Allnet Lite keys + extras

This commit is contained in:
Keeboy99
2025-05-31 20:04:28 +12:00
parent 4875caab93
commit 33b7db0e98
5 changed files with 49 additions and 15 deletions

View File

@ -139,17 +139,26 @@ class AllnetServlet:
useragent_header = request.headers.get('User-Agent', "")
is_dfi = pragma_header == "DFI"
is_lite = useragent_header[5:] == "Windows/Lite"
lite_id = useragent_header[:4]
data = await request.body()
if not self.config.allnet.allnet_lite_key and is_lite:
self.logger.error("!!!LITE KEY NOT SET!!!")
os._exit(1)
if not self.config.allnet.allnet_lite_keys and is_lite:
self.logger.error("!!!LITE KEYS NOT SET!!!")
raise AllnetRequestException()
elif is_lite:
for gameids, key in self.config.allnet.allnet_lite_keys.items():
if gameids == lite_id:
litekey = key
if is_lite and "litekey" not in locals():
self.logger.error("!!!UNIQUE LITE KEY NOT FOUND!!!")
raise AllnetRequestException()
try:
if is_dfi:
req_urlencode = self.from_dfi(data)
elif is_lite:
req_urlencode = self.dec_lite(self.config.allnet.allnet_lite_key, data[:16], data)
req_urlencode = self.dec_lite(litekey, data[:16], data)
else:
req_urlencode = data
@ -348,7 +357,7 @@ class AllnetServlet:
)
elif is_lite:
iv = bytes([random.randint(2, 255) for _ in range(16)])
return PlainTextResponse(content=self.enc_lite(self.config.allnet.allnet_lite_key, iv, resp_str))
return PlainTextResponse(content=self.enc_lite(litekey, iv, resp_str))
return PlainTextResponse(resp_str)
@ -358,17 +367,26 @@ class AllnetServlet:
useragent_header = request.headers.get('User-Agent', "")
is_dfi = pragma_header == "DFI"
is_lite = useragent_header[5:] == "Windows/Lite"
lite_id = useragent_header[:4]
data = await request.body()
if not self.config.allnet.allnet_lite_key and is_lite:
self.logger.error("!!!LITE KEY NOT SET!!!")
os._exit(1)
if not self.config.allnet.allnet_lite_keys and is_lite:
self.logger.error("!!!LITE KEYS NOT SET!!!")
raise AllnetRequestException()
elif is_lite:
for gameids, key in self.config.allnet.allnet_lite_keys.items():
if gameids == lite_id:
litekey = key
if is_lite and "litekey" not in locals():
self.logger.error("!!!UNIQUE LITE KEY NOT FOUND!!!")
raise AllnetRequestException()
try:
if is_dfi:
req_urlencode = self.from_dfi(data)
elif is_lite:
req_urlencode = self.dec_lite(self.config.allnet.allnet_lite_key, data[:16], data)
req_urlencode = self.dec_lite(litekey, data[:16], data)
else:
req_urlencode = data.decode()
@ -412,7 +430,7 @@ class AllnetServlet:
)
elif is_lite:
iv = bytes([random.randint(2, 255) for _ in range(16)])
return PlainTextResponse(content=self.enc_lite(self.config.allnet.allnet_lite_key, iv, resp))
return PlainTextResponse(content=self.enc_lite(litekey, iv, resp))
return PlainTextResponse(resp)
else:
@ -425,7 +443,7 @@ class AllnetServlet:
)
elif is_lite:
iv = bytes([random.randint(2, 255) for _ in range(16)])
return PlainTextResponse(content=self.enc_lite(self.config.allnet.allnet_lite_key, iv, resp))
return PlainTextResponse(content=self.enc_lite(litekey, iv, resp))
return PlainTextResponse(resp)
if path.exists(
@ -457,7 +475,7 @@ class AllnetServlet:
)
elif is_lite:
iv = bytes([random.randint(2, 255) for _ in range(16)])
return PlainTextResponse(content=self.enc_lite(self.config.allnet.allnet_lite_key, iv, res_str))
return PlainTextResponse(content=self.enc_lite(litekey, iv, res_str))
return PlainTextResponse(res_str)