diff --git a/rodchenko/app/utils/security.py b/rodchenko/app/utils/security.py index f52fd4b..1af480c 100755 --- a/rodchenko/app/utils/security.py +++ b/rodchenko/app/utils/security.py @@ -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: