fix: another player see your skin!
This commit is contained in:
@ -108,7 +108,7 @@ class AuthService:
|
||||
|
||||
textures = {
|
||||
"timestamp": int(datetime.now().timestamp() * 1000),
|
||||
"profileId": user["uuid"], # UUID с дефисами
|
||||
"profileId": user["uuid"].replace("-", ""),
|
||||
"profileName": user["username"],
|
||||
"textures": {}
|
||||
}
|
||||
@ -124,29 +124,67 @@ class AuthService:
|
||||
|
||||
textures_json = json.dumps(textures).encode()
|
||||
base64_textures = base64.b64encode(textures_json).decode()
|
||||
|
||||
# Подписываем текстуры
|
||||
with open("private_key.pem", "rb") as key_file:
|
||||
private_key = serialization.load_pem_private_key(
|
||||
key_file.read(),
|
||||
password=None
|
||||
)
|
||||
|
||||
signature = private_key.sign(
|
||||
textures_json,
|
||||
padding.PKCS1v15(),
|
||||
hashes.SHA1()
|
||||
)
|
||||
try:
|
||||
# Подписываем текстуры
|
||||
private_key_path = "app/keys/private_key.pem"
|
||||
with open(private_key_path, "rb") as key_file:
|
||||
private_key = serialization.load_pem_private_key(
|
||||
key_file.read(),
|
||||
password=None
|
||||
)
|
||||
|
||||
signature = private_key.sign(
|
||||
base64.b64encode(textures_json),
|
||||
padding.PKCS1v15(),
|
||||
hashes.SHA1()
|
||||
)
|
||||
|
||||
signature_base64 = base64.b64encode(signature).decode()
|
||||
|
||||
return {
|
||||
"id": user["uuid"].replace("-", ""),
|
||||
"name": user["username"],
|
||||
"properties": [{
|
||||
"name": "textures",
|
||||
"value": base64_textures,
|
||||
"signature": signature_base64
|
||||
}]
|
||||
}
|
||||
except Exception as e:
|
||||
print(f"Error signing textures: {e}")
|
||||
# В случае ошибки возвращаем текстуры без подписи
|
||||
return {
|
||||
"id": user["uuid"].replace("-", ""),
|
||||
"name": user["username"],
|
||||
"properties": [{
|
||||
"name": "textures",
|
||||
"value": base64_textures
|
||||
}]
|
||||
}
|
||||
|
||||
return JSONResponse({
|
||||
"id": user["uuid"].replace("-", ""), # Уберите дефисы
|
||||
"name": user["username"],
|
||||
"properties": [{
|
||||
"name": "textures",
|
||||
"value": base64_textures,
|
||||
"signature": base64.b64encode(signature).decode()
|
||||
}]
|
||||
})
|
||||
# # Подписываем текстуры
|
||||
# with open("private_key.pem", "rb") as key_file:
|
||||
# private_key = serialization.load_pem_private_key(
|
||||
# key_file.read(),
|
||||
# password=None
|
||||
# )
|
||||
|
||||
# signature = private_key.sign(
|
||||
# textures_json,
|
||||
# padding.PKCS1v15(),
|
||||
# hashes.SHA1()
|
||||
# )
|
||||
|
||||
# return JSONResponse({
|
||||
# "id": user["uuid"].replace("-", ""), # Уберите дефисы
|
||||
# "name": user["username"],
|
||||
# "properties": [{
|
||||
# "name": "textures",
|
||||
# "value": base64_textures,
|
||||
# # "signature": base64.b64encode(signature).decode()
|
||||
# }]
|
||||
# })
|
||||
|
||||
async def join_server(self, request_data: dict):
|
||||
access_token = request_data.get("accessToken")
|
||||
@ -186,24 +224,59 @@ class AuthService:
|
||||
if not session:
|
||||
raise HTTPException(status_code=403, detail="Not joined this server")
|
||||
|
||||
textures = {}
|
||||
if user.get("skin_url"):
|
||||
textures["SKIN"] = {"url": user["skin_url"]}
|
||||
if user.get("cloak_url"):
|
||||
textures["CAPE"] = {"url": user["cloak_url"]}
|
||||
|
||||
textures_value = base64.b64encode(json.dumps({
|
||||
"timestamp": int(datetime.now().timestamp()),
|
||||
"profileId": user["uuid"].replace("-", ""), # UUID без дефисов
|
||||
"profileName": username,
|
||||
"textures": textures
|
||||
}).encode()).decode()
|
||||
|
||||
return {
|
||||
"id": user["uuid"].replace("-", ""), # UUID без дефисов
|
||||
"name": username,
|
||||
"properties": [{
|
||||
"name": "textures",
|
||||
"value": textures_value
|
||||
}] if textures else []
|
||||
textures = {
|
||||
"timestamp": int(datetime.now().timestamp() * 1000),
|
||||
"profileId": user["uuid"].replace("-", ""),
|
||||
"profileName": user["username"],
|
||||
"textures": {}
|
||||
}
|
||||
|
||||
if user.get("skin_url"):
|
||||
textures["textures"]["SKIN"] = {
|
||||
"url": user["skin_url"],
|
||||
"metadata": {"model": user.get("skin_model", "classic")}
|
||||
}
|
||||
|
||||
if user.get("cloak_url"):
|
||||
textures["textures"]["CAPE"] = {"url": user["cloak_url"]}
|
||||
|
||||
textures_json = json.dumps(textures).encode()
|
||||
base64_textures = base64.b64encode(textures_json).decode()
|
||||
|
||||
try:
|
||||
# Подписываем текстуры
|
||||
private_key_path = "app/keys/private_key.pem"
|
||||
with open(private_key_path, "rb") as key_file:
|
||||
private_key = serialization.load_pem_private_key(
|
||||
key_file.read(),
|
||||
password=None
|
||||
)
|
||||
|
||||
signature = private_key.sign(
|
||||
base64.b64encode(textures_json),
|
||||
padding.PKCS1v15(),
|
||||
hashes.SHA1()
|
||||
)
|
||||
|
||||
signature_base64 = base64.b64encode(signature).decode()
|
||||
|
||||
return {
|
||||
"id": user["uuid"].replace("-", ""),
|
||||
"name": user["username"],
|
||||
"properties": [{
|
||||
"name": "textures",
|
||||
"value": base64_textures,
|
||||
"signature": signature_base64
|
||||
}]
|
||||
}
|
||||
except Exception as e:
|
||||
print(f"Error signing textures: {e}")
|
||||
# В случае ошибки возвращаем текстуры без подписи
|
||||
return {
|
||||
"id": user["uuid"].replace("-", ""),
|
||||
"name": user["username"],
|
||||
"properties": [{
|
||||
"name": "textures",
|
||||
"value": base64_textures
|
||||
}]
|
||||
}
|
||||
|
Reference in New Issue
Block a user