diff --git a/gui/slick/interfaces/default/config_general.tmpl b/gui/slick/interfaces/default/config_general.tmpl index ada2e4513eaa3e3d9a012c51d14f9960dd593b70..792c9856be01cd3bffb291728fce373d38830997 100644 --- a/gui/slick/interfaces/default/config_general.tmpl +++ b/gui/slick/interfaces/default/config_general.tmpl @@ -566,7 +566,15 @@ </span> </label> </div> - + <div class="field-pair"> + <label for="ssl_verify"> + <span class="component-title">Verify SSL Certs</span> + <span class="component-desc"> + <input type="checkbox" name="ssl_verify" id="ssl_verify" #if $sickbeard.SSL_VERIFY then 'checked="checked"' else ''#/> + <p>Verify SSL Certificates (Disable this for broken SSL installs (Like QNAP)<p> + </span> + </label> + </div> <div class="field-pair"> <label for="no_restart"> <span class="component-title">No Restart</span> diff --git a/gui/slick/interfaces/default/config_notifications.tmpl b/gui/slick/interfaces/default/config_notifications.tmpl index 0a1816b6f6fcebd6de716863fd0feb05c25e5f12..0686a4386a2010aa0f21fbfe25bce7ff92056fb4 100644 --- a/gui/slick/interfaces/default/config_notifications.tmpl +++ b/gui/slick/interfaces/default/config_notifications.tmpl @@ -1469,16 +1469,7 @@ <span class="component-desc">PIN code to authorize SickRage to access Trakt on your behalf.</span> </p> </div> - <input type="button" class="btn hide" value="Authorize SickRage" id="authTrakt" /> - <div class="field-pair"> - <label for="trakt_disable_ssl_verify"> - <span class="component-title">Disable SSL Verification</span> - <span class="component-desc"> - <input type="checkbox" class="enabler" name="trakt_disable_ssl_verify" id="trakt_disable_ssl_verify" #if $sickbeard.TRAKT_DISABLE_SSL_VERIFY then "checked=\"checked\"" else ""# /> - <p>Disable SSL certificate verification for broken SSL installs (like QNAP NAS)</p> - </span> - </label> - </div> + <input type="button" class="btn hide" value="Authorize SickRage" id="authTrakt" /> <div class="field-pair"> <label for="trakt_timeout"> <span class="component-title">API Timeout</span> diff --git a/lib/trakt/trakt.py b/lib/trakt/trakt.py index 08808bf2a786cb5009b7f9eadec1838e6241544e..f8f048026395647835460ded7781b05217c30383 100644 --- a/lib/trakt/trakt.py +++ b/lib/trakt/trakt.py @@ -8,9 +8,9 @@ from sickbeard import logger from exceptions import traktException, traktAuthException, traktServerBusy class TraktAPI(): - def __init__(self, disable_ssl_verify=False, timeout=30): + def __init__(self, ssl_verify=True, timeout=30): self.session = requests.Session() - self.verify = certifi.where() if not disable_ssl_verify else False + self.verify = certifi.where() if ssl_verify else None self.timeout = timeout if timeout else None self.auth_url = sickbeard.TRAKT_OAUTH_URL self.api_url = sickbeard.TRAKT_API_URL diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index fd5d46f1964e3d057bc6fcedf47386ba3799088f..5a05113cd313dd7a17221dee7ba00c51cb92cdd6 100644 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -156,6 +156,7 @@ DOWNLOAD_URL = None HANDLE_REVERSE_PROXY = False PROXY_SETTING = None PROXY_INDEXERS = True +SSL_VERIFY = True LOCALHOST_IP = None @@ -433,7 +434,6 @@ TRAKT_USE_RECOMMENDED = False TRAKT_SYNC = False TRAKT_SYNC_REMOVE = False TRAKT_DEFAULT_INDEXER = None -TRAKT_DISABLE_SSL_VERIFY = False TRAKT_TIMEOUT = None TRAKT_BLACKLIST_NAME = None TRAKT_USE_ROLLING_DOWNLOAD = None @@ -552,7 +552,7 @@ def initialize(consoleLogging=True): TORRENT_USERNAME, TORRENT_PASSWORD, TORRENT_HOST, TORRENT_PATH, TORRENT_SEED_TIME, TORRENT_PAUSED, TORRENT_HIGH_BANDWIDTH, TORRENT_LABEL, TORRENT_LABEL_ANIME, TORRENT_VERIFY_CERT, TORRENT_RPCURL, TORRENT_AUTH_TYPE, \ USE_KODI, KODI_ALWAYS_ON, KODI_NOTIFY_ONSNATCH, KODI_NOTIFY_ONDOWNLOAD, KODI_NOTIFY_ONSUBTITLEDOWNLOAD, KODI_UPDATE_FULL, KODI_UPDATE_ONLYFIRST, \ KODI_UPDATE_LIBRARY, KODI_HOST, KODI_USERNAME, KODI_PASSWORD, BACKLOG_FREQUENCY, \ - USE_TRAKT, TRAKT_USERNAME, TRAKT_ACCESS_TOKEN, TRAKT_REFRESH_TOKEN, TRAKT_REMOVE_WATCHLIST, TRAKT_SYNC_WATCHLIST, TRAKT_REMOVE_SHOW_FROM_SICKRAGE, TRAKT_METHOD_ADD, TRAKT_START_PAUSED, traktCheckerScheduler, traktRollingScheduler, TRAKT_USE_RECOMMENDED, TRAKT_SYNC, TRAKT_SYNC_REMOVE, TRAKT_DEFAULT_INDEXER, TRAKT_REMOVE_SERIESLIST, TRAKT_DISABLE_SSL_VERIFY, TRAKT_TIMEOUT, TRAKT_BLACKLIST_NAME, TRAKT_USE_ROLLING_DOWNLOAD, TRAKT_ROLLING_NUM_EP, TRAKT_ROLLING_ADD_PAUSED, TRAKT_ROLLING_FREQUENCY, \ + USE_TRAKT, TRAKT_USERNAME, TRAKT_ACCESS_TOKEN, TRAKT_REFRESH_TOKEN, TRAKT_REMOVE_WATCHLIST, TRAKT_SYNC_WATCHLIST, TRAKT_REMOVE_SHOW_FROM_SICKRAGE, TRAKT_METHOD_ADD, TRAKT_START_PAUSED, traktCheckerScheduler, traktRollingScheduler, TRAKT_USE_RECOMMENDED, TRAKT_SYNC, TRAKT_SYNC_REMOVE, TRAKT_DEFAULT_INDEXER, TRAKT_REMOVE_SERIESLIST, TRAKT_TIMEOUT, TRAKT_BLACKLIST_NAME, TRAKT_USE_ROLLING_DOWNLOAD, TRAKT_ROLLING_NUM_EP, TRAKT_ROLLING_ADD_PAUSED, TRAKT_ROLLING_FREQUENCY, \ USE_PLEX, PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_NOTIFY_ONSUBTITLEDOWNLOAD, PLEX_UPDATE_LIBRARY, USE_PLEX_CLIENT, PLEX_CLIENT_USERNAME, PLEX_CLIENT_PASSWORD, \ PLEX_SERVER_HOST, PLEX_SERVER_TOKEN, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, DEFAULT_BACKLOG_FREQUENCY, MIN_BACKLOG_FREQUENCY, BACKLOG_STARTUP, SKIP_REMOVED_FILES, \ showUpdateScheduler, __INITIALIZED__, INDEXER_DEFAULT_LANGUAGE, EP_DEFAULT_DELETED_STATUS, LAUNCH_BROWSER, UPDATE_SHOWS_ON_START, UPDATE_SHOWS_ON_SNATCH, TRASH_REMOVE_SHOW, TRASH_ROTATE_LOGS, SORT_ARTICLE, showList, loadingShowList, \ @@ -587,7 +587,7 @@ def initialize(consoleLogging=True): AUTOPOSTPROCESSER_FREQUENCY, SHOWUPDATE_HOUR, DEFAULT_AUTOPOSTPROCESSER_FREQUENCY, MIN_AUTOPOSTPROCESSER_FREQUENCY, \ ANIME_DEFAULT, NAMING_ANIME, ANIMESUPPORT, USE_ANIDB, ANIDB_USERNAME, ANIDB_PASSWORD, ANIDB_USE_MYLIST, \ ANIME_SPLIT_HOME, SCENE_DEFAULT, DOWNLOAD_URL, BACKLOG_DAYS, GIT_ORG, GIT_REPO, GIT_USERNAME, GIT_PASSWORD, \ - GIT_AUTOISSUES, DEVELOPER, gh, DISPLAY_ALL_SEASONS + GIT_AUTOISSUES, DEVELOPER, gh, DISPLAY_ALL_SEASONS, SSL_VERIFY if __INITIALIZED__: return False @@ -613,6 +613,7 @@ def initialize(consoleLogging=True): CheckSection(CFG, 'Pushalot') CheckSection(CFG, 'Pushbullet') CheckSection(CFG, 'Subtitles') + CheckSection(CFG, 'pyTivo') # Need to be before any passwords ENCRYPTION_VERSION = check_setting_int(CFG, 'General', 'encryption_version', 0) @@ -739,6 +740,8 @@ def initialize(consoleLogging=True): WEB_USE_GZIP = bool(check_setting_int(CFG, 'General', 'web_use_gzip', 1)) + SSL_VERIFY = bool(check_setting_int(CFG, 'General', 'ssl_verify', 1)) + INDEXER_DEFAULT_LANGUAGE = check_setting_str(CFG, 'General', 'indexerDefaultLang', 'en') EP_DEFAULT_DELETED_STATUS = check_setting_int(CFG, 'General', 'ep_default_deleted_status', 6) @@ -1029,7 +1032,6 @@ def initialize(consoleLogging=True): TRAKT_SYNC = bool(check_setting_int(CFG, 'Trakt', 'trakt_sync', 0)) TRAKT_SYNC_REMOVE = bool(check_setting_int(CFG, 'Trakt', 'trakt_sync_remove', 0)) TRAKT_DEFAULT_INDEXER = check_setting_int(CFG, 'Trakt', 'trakt_default_indexer', 1) - TRAKT_DISABLE_SSL_VERIFY = bool(check_setting_int(CFG, 'Trakt', 'trakt_disable_ssl_verify', 0)) TRAKT_TIMEOUT = check_setting_int(CFG, 'Trakt', 'trakt_timeout', 30) TRAKT_BLACKLIST_NAME = check_setting_str(CFG, 'Trakt', 'trakt_blacklist_name', '') TRAKT_USE_ROLLING_DOWNLOAD = bool(check_setting_int(CFG, 'Trakt', 'trakt_use_rolling_download', 0)) @@ -1039,7 +1041,6 @@ def initialize(consoleLogging=True): if TRAKT_ROLLING_FREQUENCY < 4: TRAKT_ROLLING_FREQUENCY = 4 - CheckSection(CFG, 'pyTivo') USE_PYTIVO = bool(check_setting_int(CFG, 'pyTivo', 'use_pytivo', 0)) PYTIVO_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'pyTivo', 'pytivo_notify_onsnatch', 0)) PYTIVO_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'pyTivo', 'pytivo_notify_ondownload', 0)) @@ -1636,6 +1637,7 @@ def save_config(): new_config['General']['web_password'] = helpers.encrypt(WEB_PASSWORD, ENCRYPTION_VERSION) new_config['General']['web_cookie_secret'] = WEB_COOKIE_SECRET new_config['General']['web_use_gzip'] = int(WEB_USE_GZIP) + new_config['General']['ssl_verify'] = int(SSL_VERIFY) new_config['General']['download_url'] = DOWNLOAD_URL new_config['General']['localhost_ip'] = LOCALHOST_IP new_config['General']['cpu_preset'] = CPU_PRESET @@ -2000,7 +2002,6 @@ def save_config(): new_config['Trakt']['trakt_sync'] = int(TRAKT_SYNC) new_config['Trakt']['trakt_sync_remove'] = int(TRAKT_SYNC_REMOVE) new_config['Trakt']['trakt_default_indexer'] = int(TRAKT_DEFAULT_INDEXER) - new_config['Trakt']['trakt_disable_ssl_verify'] = int(TRAKT_DISABLE_SSL_VERIFY) new_config['Trakt']['trakt_timeout'] = int(TRAKT_TIMEOUT) new_config['Trakt']['trakt_blacklist_name'] = TRAKT_BLACKLIST_NAME new_config['Trakt']['trakt_use_rolling_download'] = int(TRAKT_USE_ROLLING_DOWNLOAD) diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index 2dbae6613e547e31c128c1136fb6228247eb4451..eecdc1bf84f2b7e60f9710b75fc04a698eb4ffb9 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -1311,7 +1311,7 @@ def _setUpSession(session, headers): session.headers.update(headers) # request session ssl verify - session.verify = certifi.where() + session.verify = certifi.where() if sickbeard.SSL_VERIFY else None # request session proxies if not 'Referer' in session.headers and sickbeard.PROXY_SETTING: diff --git a/sickbeard/notifiers/trakt.py b/sickbeard/notifiers/trakt.py index 5bf08bc4697068179ffcc070701d29db125ea10e..c276b657d97726be7943eba573d212e68260cacc 100644 --- a/sickbeard/notifiers/trakt.py +++ b/sickbeard/notifiers/trakt.py @@ -47,7 +47,7 @@ class TraktNotifier: """ trakt_id = sickbeard.indexerApi(ep_obj.show.indexer).config['trakt_id'] - trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) if sickbeard.USE_TRAKT: try: @@ -100,7 +100,7 @@ class TraktNotifier: update: type o action add or remove """ - trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) if sickbeard.USE_TRAKT: diff --git a/sickbeard/traktChecker.py b/sickbeard/traktChecker.py index 80d2fff963ff427c61e267aab310169d7cb3593a..eb9ca3b576735565b4715dfbd65487b386f9feda 100644 --- a/sickbeard/traktChecker.py +++ b/sickbeard/traktChecker.py @@ -62,7 +62,7 @@ def setEpisodeToWanted(show, s, e): class TraktChecker(): def __init__(self): - self.trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + self.trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) self.todoBacklog = [] self.todoWanted = [] self.ShowWatchlist = {} @@ -644,7 +644,7 @@ class TraktChecker(): class TraktRolling(): def __init__(self): - self.trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + self.trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) self.EpisodeWatched = [] def run(self, force=False): diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index d7f71545f67a9e8f839a07ea67e301b5a51e86f2..eaf03ff7d066295b8140ba0dca7268a2a8dadee9 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -1017,7 +1017,7 @@ class Home(WebRoot): def getTraktToken(self, trakt_pin=None): - trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) response = trakt_api.traktToken(trakt_pin) if response: return "Trakt Authorized" @@ -2400,7 +2400,7 @@ class HomeAddShows(Home): t.trending_shows = [] - trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) try: not_liked_show = "" @@ -2461,7 +2461,7 @@ class HomeAddShows(Home): t.trending_shows = [] - trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) try: not_liked_show = "" @@ -2513,7 +2513,7 @@ class HomeAddShows(Home): ] } - trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) result=trakt_api.traktRequest("users/" + sickbeard.TRAKT_USERNAME + "/lists/" + sickbeard.TRAKT_BLACKLIST_NAME + "/items", data, method='POST') @@ -3703,7 +3703,7 @@ class ConfigGeneral(Config): web_password=None, version_notify=None, enable_https=None, https_cert=None, https_key=None, handle_reverse_proxy=None, sort_article=None, auto_update=None, notify_on_update=None, proxy_setting=None, proxy_indexers=None, anon_redirect=None, git_path=None, git_remote=None, - calendar_unprotected=None, debug=None, no_restart=None, coming_eps_missed_range=None, + calendar_unprotected=None, debug=None, ssl_verify=None, no_restart=None, coming_eps_missed_range=None, filter_row=None, fuzzy_dating=None, trim_zero=None, date_preset=None, date_preset_na=None, time_preset=None, indexer_timeout=None, download_url=None, rootDir=None, theme_name=None, git_reset=None, git_username=None, git_password=None, git_autoissues=None, display_all_seasons=None): @@ -3742,6 +3742,7 @@ class ConfigGeneral(Config): sickbeard.CALENDAR_UNPROTECTED = config.checkbox_to_value(calendar_unprotected) sickbeard.NO_RESTART = config.checkbox_to_value(no_restart) sickbeard.DEBUG = config.checkbox_to_value(debug) + sickbeard.SSL_VERIFY = config.checkbox_to_value(ssl_verify) # sickbeard.LOG_DIR is set in config.change_LOG_DIR() sickbeard.COMING_EPS_MISSED_RANGE = config.to_int(coming_eps_missed_range,default=7) sickbeard.DISPLAY_ALL_SEASONS = config.checkbox_to_value(display_all_seasons) @@ -4676,7 +4677,7 @@ class ConfigNotifications(Config): use_trakt=None, trakt_username=None, trakt_pin=None, trakt_remove_watchlist=None, trakt_sync_watchlist=None, trakt_remove_show_from_sickrage=None, trakt_method_add=None, trakt_start_paused=None, trakt_use_recommended=None, trakt_sync=None, trakt_sync_remove=None, - trakt_default_indexer=None, trakt_remove_serieslist=None, trakt_disable_ssl_verify=None, trakt_timeout=None, trakt_blacklist_name=None, + trakt_default_indexer=None, trakt_remove_serieslist=None, trakt_timeout=None, trakt_blacklist_name=None, trakt_use_rolling_download=None, trakt_rolling_num_ep=None, trakt_rolling_add_paused=None, trakt_rolling_frequency=None, use_synologynotifier=None, synologynotifier_notify_onsnatch=None, synologynotifier_notify_ondownload=None, synologynotifier_notify_onsubtitledownload=None, @@ -4804,7 +4805,6 @@ class ConfigNotifications(Config): sickbeard.TRAKT_SYNC = config.checkbox_to_value(trakt_sync) sickbeard.TRAKT_SYNC_REMOVE = config.checkbox_to_value(trakt_sync_remove) sickbeard.TRAKT_DEFAULT_INDEXER = int(trakt_default_indexer) - sickbeard.TRAKT_DISABLE_SSL_VERIFY = config.checkbox_to_value(trakt_disable_ssl_verify) sickbeard.TRAKT_TIMEOUT = int(trakt_timeout) sickbeard.TRAKT_BLACKLIST_NAME = trakt_blacklist_name config.change_TRAKT_USE_ROLLING_DOWNLOAD(trakt_use_rolling_download)