mirror of
https://github.com/ArchiveBox/ArchiveBox
synced 2024-11-23 04:33:11 +00:00
fix umask dir permissions
This commit is contained in:
parent
4715ace7dd
commit
c2d1a57581
2 changed files with 6 additions and 6 deletions
|
@ -337,6 +337,7 @@ DYNAMIC_CONFIG_SCHEMA: ConfigDefaultDict = {
|
||||||
'COOKIES_FILE': {'default': lambda c: c['COOKIES_FILE'] and Path(c['COOKIES_FILE']).resolve()},
|
'COOKIES_FILE': {'default': lambda c: c['COOKIES_FILE'] and Path(c['COOKIES_FILE']).resolve()},
|
||||||
'CHROME_USER_DATA_DIR': {'default': lambda c: find_chrome_data_dir() if c['CHROME_USER_DATA_DIR'] is None else (Path(c['CHROME_USER_DATA_DIR']).resolve() if c['CHROME_USER_DATA_DIR'] else None)}, # None means unset, so we autodetect it with find_chrome_Data_dir(), but emptystring '' means user manually set it to '', and we should store it as None
|
'CHROME_USER_DATA_DIR': {'default': lambda c: find_chrome_data_dir() if c['CHROME_USER_DATA_DIR'] is None else (Path(c['CHROME_USER_DATA_DIR']).resolve() if c['CHROME_USER_DATA_DIR'] else None)}, # None means unset, so we autodetect it with find_chrome_Data_dir(), but emptystring '' means user manually set it to '', and we should store it as None
|
||||||
'URL_BLACKLIST_PTN': {'default': lambda c: c['URL_BLACKLIST'] and re.compile(c['URL_BLACKLIST'] or '', re.IGNORECASE | re.UNICODE | re.MULTILINE)},
|
'URL_BLACKLIST_PTN': {'default': lambda c: c['URL_BLACKLIST'] and re.compile(c['URL_BLACKLIST'] or '', re.IGNORECASE | re.UNICODE | re.MULTILINE)},
|
||||||
|
'DIR_OUTPUT_PERMISSIONS': {'default': lambda c: c['OUTPUT_PERMISSIONS'].replace('6', '7').replace('4', '5')},
|
||||||
|
|
||||||
'ARCHIVEBOX_BINARY': {'default': lambda c: sys.argv[0] or bin_path('archivebox')},
|
'ARCHIVEBOX_BINARY': {'default': lambda c: sys.argv[0] or bin_path('archivebox')},
|
||||||
'VERSION': {'default': lambda c: json.loads((Path(c['PACKAGE_DIR']) / 'package.json').read_text(encoding='utf-8').strip())['version']},
|
'VERSION': {'default': lambda c: json.loads((Path(c['PACKAGE_DIR']) / 'package.json').read_text(encoding='utf-8').strip())['version']},
|
||||||
|
@ -967,7 +968,7 @@ globals().update(CONFIG)
|
||||||
|
|
||||||
# Set timezone to UTC and umask to OUTPUT_PERMISSIONS
|
# Set timezone to UTC and umask to OUTPUT_PERMISSIONS
|
||||||
os.environ["TZ"] = 'UTC'
|
os.environ["TZ"] = 'UTC'
|
||||||
os.umask(0o777 - int(OUTPUT_PERMISSIONS, base=8)) # noqa: F821
|
os.umask(0o777 - int(DIR_OUTPUT_PERMISSIONS, base=8)) # noqa: F821
|
||||||
|
|
||||||
# add ./node_modules/.bin to $PATH so we can use node scripts in extractors
|
# add ./node_modules/.bin to $PATH so we can use node scripts in extractors
|
||||||
NODE_BIN_PATH = str((Path(CONFIG["OUTPUT_DIR"]).absolute() / 'node_modules' / '.bin'))
|
NODE_BIN_PATH = str((Path(CONFIG["OUTPUT_DIR"]).absolute() / 'node_modules' / '.bin'))
|
||||||
|
|
|
@ -14,7 +14,7 @@ from crontab import CronTab
|
||||||
from .vendor.atomicwrites import atomic_write as lib_atomic_write
|
from .vendor.atomicwrites import atomic_write as lib_atomic_write
|
||||||
|
|
||||||
from .util import enforce_types, ExtendedEncoder
|
from .util import enforce_types, ExtendedEncoder
|
||||||
from .config import PYTHON_BINARY, OUTPUT_PERMISSIONS, ENFORCE_ATOMIC_WRITES
|
from .config import PYTHON_BINARY, OUTPUT_PERMISSIONS, DIR_OUTPUT_PERMISSIONS, ENFORCE_ATOMIC_WRITES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ def atomic_write(path: Union[Path, str], contents: Union[dict, str, bytes], over
|
||||||
os.chmod(path, int(permissions, base=8))
|
os.chmod(path, int(permissions, base=8))
|
||||||
|
|
||||||
@enforce_types
|
@enforce_types
|
||||||
def chmod_file(path: str, cwd: str='.', permissions: str=OUTPUT_PERMISSIONS) -> None:
|
def chmod_file(path: str, cwd: str='.') -> None:
|
||||||
"""chmod -R <permissions> <cwd>/<path>"""
|
"""chmod -R <permissions> <cwd>/<path>"""
|
||||||
|
|
||||||
root = Path(cwd) / path
|
root = Path(cwd) / path
|
||||||
|
@ -123,10 +123,9 @@ def chmod_file(path: str, cwd: str='.', permissions: str=OUTPUT_PERMISSIONS) ->
|
||||||
for subpath in Path(path).glob('**/*'):
|
for subpath in Path(path).glob('**/*'):
|
||||||
if subpath.is_dir():
|
if subpath.is_dir():
|
||||||
# directories need execute permissions to be able to list contents
|
# directories need execute permissions to be able to list contents
|
||||||
perms_with_x_allowed = permissions.replace('4', '5').replace('6', '7')
|
os.chmod(subpath, int(DIR_OUTPUT_PERMISSIONS, base=8))
|
||||||
os.chmod(subpath, int(perms_with_x_allowed, base=8))
|
|
||||||
else:
|
else:
|
||||||
os.chmod(subpath, int(permissions, base=8))
|
os.chmod(subpath, int(OUTPUT_PERMISSIONS, base=8))
|
||||||
|
|
||||||
|
|
||||||
@enforce_types
|
@enforce_types
|
||||||
|
|
Loading…
Reference in a new issue