@@ -1,6 +1,13 @@
1+from base64 import urlsafe_b64encode, urlsafe_b64decode
2+from zlib import compress, decompress
3+from sys import version
1from searx import settings, autocomplete
5from searx import settings, autocomplete
2from searx.languages import language_codes as languages
6from searx.languages import language_codes as languages
3−from searx.url_utils import urlencode
7+from searx.url_utils import parse_qs, urlencode
6COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years
13COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years
@@ -279,7 +286,11 @@ class Preferences(object):
279 settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled)
286 settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled)
280 settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled)
287 settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled)
282− return urlencode(settings_kv)
289+ return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8')
291+ def parse_encoded_data(self, input_data):
292+ decoded_data = decompress(urlsafe_b64decode(input_data.encode('utf-8')))
293+ self.parse_dict({x: y[0] for x,y in parse_qs(unicode(decoded_data)).items()})
284 def parse_dict(self, input_data):
295 def parse_dict(self, input_data):
285 for user_setting_name, user_setting in input_data.items():
296 for user_setting_name, user_setting in input_data.items():