diff options
author | James Taylor <user234683@users.noreply.github.com> | 2020-09-18 14:37:24 -0700 |
---|---|---|
committer | James Taylor <user234683@users.noreply.github.com> | 2020-09-18 14:40:21 -0700 |
commit | e9989af03a0d6044106030f164f807cee42c1420 (patch) | |
tree | 79ef454fdeb7ad45f07247f52b6220928d09e6cc /settings.py | |
parent | 1ff97bfde1467f7f18d4d2715a9357c41d9e9b8f (diff) | |
download | yt-local-e9989af03a0d6044106030f164f807cee42c1420.tar.lz yt-local-e9989af03a0d6044106030f164f807cee42c1420.tar.xz yt-local-e9989af03a0d6044106030f164f807cee42c1420.zip |
Add tor video routing
Includes non-tor video routing by default, so no more chances
of the browser leaking headers or user agent to googlevideo
Adjust settings upgrade system to facilitate change to route_tor
setting.
Add some more space on settings page for dropdown settings so does
not overflow due to options with long names.
Closes #7
Diffstat (limited to 'settings.py')
-rw-r--r-- | settings.py | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/settings.py b/settings.py index a6c2d55..dd39c9b 100644 --- a/settings.py +++ b/settings.py @@ -9,10 +9,17 @@ from flask import request SETTINGS_INFO = collections.OrderedDict([ ('route_tor', { - 'type': bool, - 'default': False, + 'type': int, + 'default': 0, 'label': 'Route Tor', - 'comment': '', + 'comment': '''0 - Off +1 - On, except video +2 - On, including video (see warnings)''', + 'options': [ + (0, 'Off'), + (1, 'On, except video'), + (2, 'On, including video (see warnings)'), + ], }), ('port_number', { @@ -148,7 +155,7 @@ For security reasons, enabling this is not recommended.''', ('settings_version', { 'type': int, - 'default': 2, + 'default': 3, 'comment': '''Do not change, remove, or comment out this value, or else your settings may be lost or corrupted''', 'hidden': True, }), @@ -186,8 +193,21 @@ def upgrade_to_2(settings_dict): if 'enable_related_videos' in settings_dict: new_settings['related_videos_mode'] = int(settings_dict['enable_related_videos']) del new_settings['enable_related_videos'] + new_settings['settings_version'] = 2 + return new_settings + +def upgrade_to_3(settings_dict): + new_settings = settings_dict.copy() + if 'route_tor' in settings_dict: + new_settings['route_tor'] = int(settings_dict['route_tor']) + new_settings['settings_version'] = 3 return new_settings +upgrade_functions = { + 1: upgrade_to_2, + 2: upgrade_to_3, +} + def log_ignored_line(line_number, message): print("WARNING: Ignoring settings.txt line " + str(node.lineno) + " (" + message + ")") @@ -251,14 +271,20 @@ else: current_settings_dict[target.id] = node.value.__getattribute__(attributes[type(node.value)]) - - if 'settings_version' not in current_settings_dict: - print('Upgrading settings.txt') - current_settings_dict = add_missing_settings(upgrade_to_2(current_settings_dict)) + # upgrades + latest_version = SETTINGS_INFO['settings_version']['default'] + while current_settings_dict.get('settings_version',1) < latest_version: + current_version = current_settings_dict.get('settings_version', 1) + print('Upgrading settings.txt to version', current_version+1) + upgrade_func = upgrade_functions[current_version] + # Must add missing settings here rather than below because + # save_settings needs all settings to be present + current_settings_dict = add_missing_settings( + upgrade_func(current_settings_dict)) save_settings(current_settings_dict) # some settings not in the file, add those missing settings to the file - elif not current_settings_dict.keys() >= SETTINGS_INFO.keys(): + if not current_settings_dict.keys() >= SETTINGS_INFO.keys(): print('Adding missing settings to settings.txt') current_settings_dict = add_missing_settings(current_settings_dict) save_settings(current_settings_dict) |