tutil.make_dir: 0o700 permissions on folders (#4357) - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 9b7a449057eb897cb2fa8f609d43f71e15646015 (DIR) parent dbec3af810851666ba16e3c9b9e966974fcb0aa5 (HTM) Author: ghost43 <somber.night@protonmail.com> Date: Mon, 28 May 2018 14:22:54 +0200 util.make_dir: 0o700 permissions on folders (#4357) Diffstat: M lib/blockchain.py | 3 +-- M lib/exchange_rate.py | 5 ++--- M lib/network.py | 4 +--- M lib/simple_config.py | 22 +++++----------------- M lib/util.py | 10 ++++++++++ M plugins/revealer/qt.py | 5 ++--- 6 files changed, 21 insertions(+), 28 deletions(-) --- (DIR) diff --git a/lib/blockchain.py b/lib/blockchain.py t@@ -68,8 +68,7 @@ blockchains = {} def read_blockchains(config): blockchains[0] = Blockchain(config, 0, None) fdir = os.path.join(util.get_headers_dir(config), 'forks') - if not os.path.exists(fdir): - os.mkdir(fdir) + util.make_dir(fdir) l = filter(lambda x: x.startswith('fork_'), os.listdir(fdir)) l = sorted(l, key = lambda x: int(x.split('_')[1])) for filename in l: (DIR) diff --git a/lib/exchange_rate.py b/lib/exchange_rate.py t@@ -12,7 +12,7 @@ from decimal import Decimal from .bitcoin import COIN from .i18n import _ -from .util import PrintError, ThreadJob +from .util import PrintError, ThreadJob, make_dir # See https://en.wikipedia.org/wiki/ISO_4217 t@@ -432,8 +432,7 @@ class FxThread(ThreadJob): self.hist_checkbox = None self.cache_dir = os.path.join(config.path, 'cache') self.set_exchange(self.config_exchange()) - if not os.path.exists(self.cache_dir): - os.mkdir(self.cache_dir) + make_dir(self.cache_dir) def get_currencies(self, h): d = get_exchanges_by_ccy(h) (DIR) diff --git a/lib/network.py b/lib/network.py t@@ -202,9 +202,7 @@ class Network(util.DaemonThread): self.callbacks = defaultdict(list) dir_path = os.path.join( self.config.path, 'certs') - if not os.path.exists(dir_path): - os.mkdir(dir_path) - os.chmod(dir_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) + util.make_dir(dir_path) # subscriptions and requests self.subscribed_addresses = set() (DIR) diff --git a/lib/simple_config.py b/lib/simple_config.py t@@ -8,7 +8,7 @@ from decimal import Decimal from copy import deepcopy from . import util -from .util import (user_dir, print_error, PrintError, +from .util import (user_dir, print_error, PrintError, make_dir, NoDynamicFeeEstimates, format_fee_satoshis, quantize_feerate) from .i18n import _ t@@ -105,21 +105,13 @@ class SimpleConfig(PrintError): if path is None: path = self.user_dir() - def make_dir(path): - # Make directory if it does not yet exist. - if not os.path.exists(path): - if os.path.islink(path): - raise Exception('Dangling link: ' + path) - os.mkdir(path) - os.chmod(path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) - - make_dir(path) + make_dir(path, allow_symlink=False) if self.get('testnet'): path = os.path.join(path, 'testnet') - make_dir(path) + make_dir(path, allow_symlink=False) elif self.get('regtest'): path = os.path.join(path, 'regtest') - make_dir(path) + make_dir(path, allow_symlink=False) self.print_error("electrum directory", path) return path t@@ -240,11 +232,7 @@ class SimpleConfig(PrintError): # default path util.assert_datadir_available(self.path) dirpath = os.path.join(self.path, "wallets") - if not os.path.exists(dirpath): - if os.path.islink(dirpath): - raise Exception('Dangling link: ' + dirpath) - os.mkdir(dirpath) - os.chmod(dirpath, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) + make_dir(dirpath, allow_symlink=False) new_path = os.path.join(self.path, "wallets", "default_wallet") (DIR) diff --git a/lib/util.py b/lib/util.py t@@ -30,6 +30,7 @@ import traceback import urllib import threading import hmac +import stat from .i18n import _ t@@ -880,3 +881,12 @@ def export_meta(meta, fileName): except (IOError, os.error) as e: traceback.print_exc(file=sys.stderr) raise FileExportFailed(e) + + +def make_dir(path, allow_symlink=True): + """Make directory if it does not yet exist.""" + if not os.path.exists(path): + if not allow_symlink and os.path.islink(path): + raise Exception('Dangling link: ' + path) + os.mkdir(path) + os.chmod(path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) (DIR) diff --git a/plugins/revealer/qt.py b/plugins/revealer/qt.py t@@ -28,7 +28,7 @@ from electrum.plugins import BasePlugin, hook from electrum.i18n import _ from electrum_gui.qt.util import * from electrum_gui.qt.qrtextedit import ScanQRTextEdit -from electrum.util import to_bytes +from electrum.util import to_bytes, make_dir class Plugin(BasePlugin): t@@ -52,8 +52,7 @@ class Plugin(BasePlugin): self.abstand_v = 34 self.calibration_noise = int('10' * 128) self.rawnoise = False - if not os.path.exists(self.base_dir): - os.mkdir(self.base_dir) + make_dir(self.base_dir) @hook def set_seed(self, seed, parent):