77from zipfile import ZipFile
88from datetime import datetime
99from io import BytesIO
10+ import ssl
1011from urllib .parse import quote
1112from urllib .request import urlopen , Request
1213from urllib .error import HTTPError , URLError
2526)
2627USE_CACHE = int (os .environ .get ('TLDR_CACHE_ENABLED' , '1' )) > 0
2728MAX_CACHE_AGE = int (os .environ .get ('TLDR_CACHE_MAX_AGE' , 24 ))
29+ URLOPEN_CONTEXT = None
30+ if int (os .environ .get ('TLDR_ALLOW_INSECURE' , '0' )) == 1 :
31+ URLOPEN_CONTEXT = ssl .create_default_context ()
32+ URLOPEN_CONTEXT .check_hostname = False
33+ URLOPEN_CONTEXT .verify_mode = ssl .CERT_NONE
2834
2935OS_DIRECTORIES = {
3036 "linux" : "linux" ,
@@ -88,7 +94,7 @@ def get_page_for_platform(command, platform, remote=None):
8894 else :
8995 page_url = get_page_url (platform , command , remote )
9096 try :
91- data = urlopen (Request (page_url , headers = REQUEST_HEADERS )).read ()
97+ data = urlopen (Request (page_url , headers = REQUEST_HEADERS ), context = URLOPEN_CONTEXT ).read ()
9298 data_downloaded = True
9399 except Exception :
94100 data = load_page_from_cache (command , platform )
@@ -101,7 +107,7 @@ def get_page_for_platform(command, platform, remote=None):
101107
102108def update_page_for_platform (command , platform , remote = None ):
103109 page_url = get_page_url (platform , command , remote )
104- data = urlopen (Request (page_url , headers = REQUEST_HEADERS )).read ()
110+ data = urlopen (Request (page_url , headers = REQUEST_HEADERS ), context = URLOPEN_CONTEXT ).read ()
105111 store_page_to_cache (data , command , platform )
106112
107113
@@ -222,7 +228,7 @@ def update_cache():
222228 req = urlopen (Request (
223229 DOWNLOAD_CACHE_LOCATION ,
224230 headers = REQUEST_HEADERS
225- ))
231+ ), context = URLOPEN_CONTEXT )
226232 zipfile = ZipFile (BytesIO (req .read ()))
227233 pattern = re .compile (r'pages/(.+)/(.+)\.md' )
228234 cached = 0
0 commit comments