From b97db1339daa56755dcc67447eefc6f8f5fe33ed Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 23 May 2017 21:22:14 +1000 Subject: [PATCH 1/2] open files via the 'with' statement, to avoid ResourceWarnings on unclosed files --- onionshare/common.py | 9 ++++++--- onionshare/onion.py | 6 ++++-- onionshare/settings.py | 5 +++-- onionshare/strings.py | 5 +++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/onionshare/common.py b/onionshare/common.py index 232328d7..58e7b886 100644 --- a/onionshare/common.py +++ b/onionshare/common.py @@ -94,7 +94,9 @@ def get_version(): """ Returns the version of OnionShare that is running. """ - return open(get_resource_path('version.txt')).read().strip() + with open(get_resource_path('version.txt')) as f: + version = f.read().strip() + return version def constant_time_compare(val1, val2): @@ -133,8 +135,9 @@ def build_slug(): """ Returns a random string made from two words from the wordlist, such as "deter-trig". """ - wordlist = open(get_resource_path('wordlist.txt')).read().split('\n') - wordlist.remove('') + with open(get_resource_path('wordlist.txt')) as f: + wordlist = f.read().split('\n') + wordlist.remove('') r = SystemRandom() return '-'.join(r.choice(wordlist) for x in range(2)) diff --git a/onionshare/onion.py b/onionshare/onion.py index 4d69ebeb..84639718 100644 --- a/onionshare/onion.py +++ b/onionshare/onion.py @@ -178,7 +178,8 @@ class Onion(object): self.tor_torrc = os.path.join(self.tor_data_directory.name, 'torrc') else: # Linux and Mac can use unix sockets - torrc_template = open(common.get_resource_path('torrc_template')).read() + with open(common.get_resource_path('torrc_template')) as f: + torrc_template = f.read() self.tor_control_port = None self.tor_control_socket = os.path.join(self.tor_data_directory.name, 'control_socket') self.tor_cookie_auth_file = os.path.join(self.tor_data_directory.name, 'cookie') @@ -192,7 +193,8 @@ class Onion(object): torrc_template = torrc_template.replace('{{geo_ip_file}}', self.tor_geo_ip_file_path) torrc_template = torrc_template.replace('{{geo_ipv6_file}}', self.tor_geo_ipv6_file_path) torrc_template = torrc_template.replace('{{socks_port}}', str(self.tor_socks_port)) - open(self.tor_torrc, 'w').write(torrc_template) + with open(self.tor_torrc, 'w') as f: + f.write(torrc_template) # Execute a tor subprocess start_ts = time.time() diff --git a/onionshare/settings.py b/onionshare/settings.py index b5f873aa..97c67742 100644 --- a/onionshare/settings.py +++ b/onionshare/settings.py @@ -85,8 +85,9 @@ class Settings(object): # If the settings file exists, load it if os.path.exists(self.filename): try: - self._settings = json.loads(open(self.filename, 'r').read()) - self.fill_in_defaults() + with open(self.filename, 'r') as f: + self._settings = json.loads(f.read()) + self.fill_in_defaults() except: pass diff --git a/onionshare/strings.py b/onionshare/strings.py index 95fcc107..5a499a4b 100644 --- a/onionshare/strings.py +++ b/onionshare/strings.py @@ -38,8 +38,9 @@ def load_strings(common, default="en"): abs_filename = os.path.join(locale_dir, filename) lang, ext = os.path.splitext(filename) if abs_filename.endswith('.json'): - lang_json = open(abs_filename, encoding='utf-8').read() - translations[lang] = json.loads(lang_json) + with open(abs_filename, encoding='utf-8') as f: + lang_json = f.read() + translations[lang] = json.loads(lang_json) strings = translations[default] lc, enc = locale.getdefaultlocale() From 36a27b3b7d4d027cdcdcb6dfb6df28c008c9b732 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 23 May 2017 15:16:27 -0700 Subject: [PATCH 2/2] Fix indenting --- onionshare/common.py | 8 ++++---- onionshare/onion.py | 4 ++-- onionshare/settings.py | 4 ++-- onionshare/strings.py | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/onionshare/common.py b/onionshare/common.py index 58e7b886..cff2224b 100644 --- a/onionshare/common.py +++ b/onionshare/common.py @@ -95,8 +95,8 @@ def get_version(): Returns the version of OnionShare that is running. """ with open(get_resource_path('version.txt')) as f: - version = f.read().strip() - return version + version = f.read().strip() + return version def constant_time_compare(val1, val2): @@ -136,8 +136,8 @@ def build_slug(): Returns a random string made from two words from the wordlist, such as "deter-trig". """ with open(get_resource_path('wordlist.txt')) as f: - wordlist = f.read().split('\n') - wordlist.remove('') + wordlist = f.read().split('\n') + wordlist.remove('') r = SystemRandom() return '-'.join(r.choice(wordlist) for x in range(2)) diff --git a/onionshare/onion.py b/onionshare/onion.py index 84639718..41342b7e 100644 --- a/onionshare/onion.py +++ b/onionshare/onion.py @@ -179,7 +179,7 @@ class Onion(object): else: # Linux and Mac can use unix sockets with open(common.get_resource_path('torrc_template')) as f: - torrc_template = f.read() + torrc_template = f.read() self.tor_control_port = None self.tor_control_socket = os.path.join(self.tor_data_directory.name, 'control_socket') self.tor_cookie_auth_file = os.path.join(self.tor_data_directory.name, 'cookie') @@ -194,7 +194,7 @@ class Onion(object): torrc_template = torrc_template.replace('{{geo_ipv6_file}}', self.tor_geo_ipv6_file_path) torrc_template = torrc_template.replace('{{socks_port}}', str(self.tor_socks_port)) with open(self.tor_torrc, 'w') as f: - f.write(torrc_template) + f.write(torrc_template) # Execute a tor subprocess start_ts = time.time() diff --git a/onionshare/settings.py b/onionshare/settings.py index 97c67742..765b96d5 100644 --- a/onionshare/settings.py +++ b/onionshare/settings.py @@ -86,8 +86,8 @@ class Settings(object): if os.path.exists(self.filename): try: with open(self.filename, 'r') as f: - self._settings = json.loads(f.read()) - self.fill_in_defaults() + self._settings = json.loads(f.read()) + self.fill_in_defaults() except: pass diff --git a/onionshare/strings.py b/onionshare/strings.py index 5a499a4b..9b26b4b1 100644 --- a/onionshare/strings.py +++ b/onionshare/strings.py @@ -39,8 +39,8 @@ def load_strings(common, default="en"): lang, ext = os.path.splitext(filename) if abs_filename.endswith('.json'): with open(abs_filename, encoding='utf-8') as f: - lang_json = f.read() - translations[lang] = json.loads(lang_json) + lang_json = f.read() + translations[lang] = json.loads(lang_json) strings = translations[default] lc, enc = locale.getdefaultlocale()