FIX PICKLE

This commit is contained in:
pwn
2025-12-14 10:49:32 +03:00
parent 9fb29bda4a
commit 2146e4ea8a

View File

@@ -1,57 +1,35 @@
import socket
import pickle
import json
import base64
import ipaddress
from urllib.parse import urlparse
def load_artwork_settings(settings_data):
if not settings_data:
return None
try:
if not settings_data:
return None
# Пробуем base64 + JSON
try:
padding = len(settings_data) % 4
if padding:
settings_data_padded = settings_data + '=' * (4 - padding)
else:
settings_data_padded = settings_data
raw = base64.b64decode(settings_data_padded)
if raw[:2] in (b'\x80\x03', b'\x80\x04', b'\x80\x05', b'\x80\x02'):
settings = pickle.loads(raw)
if hasattr(settings, '__dict__'):
return settings.__dict__
elif isinstance(settings, dict):
return settings
else:
return {'data': str(settings)}
raw = base64.b64decode(settings_data)
return json.loads(raw)
except:
pass
# Просто JSON
try:
return json.loads(settings_data)
except:
pass
# Fallback — plain text description
return {'description': settings_data}
except:
return {'description': settings_data}
except Exception as e:
return {'error': str(e)}
def save_artwork_description(description):
if not description:
return None
try:
padding = len(description) % 4
if padding:
padded = description + '=' * (4 - padding)
else:
padded = description
raw = base64.b64decode(padded)
if raw[:2] in (b'\x80\x03', b'\x80\x04', b'\x80\x05', b'\x80\x02'):
return description
except:
pass
return description
return json.dumps({'description': description})
class ArtworkConfig: