mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-23 11:17:02 -04:00
prevent running as root
This commit is contained in:
parent
3fb10dbf35
commit
fafdef1e6d
2 changed files with 17 additions and 5 deletions
|
@ -0,0 +1 @@
|
||||||
|
__package__ = 'archivebox'
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
import getpass
|
||||||
import django
|
import django
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ from subprocess import run, PIPE, DEVNULL
|
||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
# Documentation: https://github.com/pirate/ArchiveBox/wiki/Configuration
|
# Documentation: https://github.com/pirate/ArchiveBox/wiki/Configuration
|
||||||
# Use the 'env' command to pass config options to ArchiveBox. e.g.:
|
# Use the 'env' command to pass config options to ArchiveBox. e.g.:
|
||||||
# env USE_COLOR=True CHROME_BINARY=google-chrome ./archive export.html
|
# env USE_COLOR=True CHROME_BINARY=chromium archivebox add < example.html
|
||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
|
|
||||||
IS_TTY = sys.stdout.isatty()
|
IS_TTY = sys.stdout.isatty()
|
||||||
|
@ -78,6 +79,10 @@ if not USE_COLOR:
|
||||||
# dont show colors if USE_COLOR is False
|
# dont show colors if USE_COLOR is False
|
||||||
ANSI = {k: '' for k in ANSI.keys()}
|
ANSI = {k: '' for k in ANSI.keys()}
|
||||||
|
|
||||||
|
def stderr(*args):
|
||||||
|
sys.stderr.write(' '.join(str(a) for a in args) + '\n')
|
||||||
|
|
||||||
|
USER = getpass.getuser() or os.getlogin()
|
||||||
|
|
||||||
REPO_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..'))
|
REPO_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..'))
|
||||||
if OUTPUT_DIR:
|
if OUTPUT_DIR:
|
||||||
|
@ -112,25 +117,31 @@ GIT_SHA = VERSION.split('+')[-1] or 'unknown'
|
||||||
HAS_INVALID_DEPENDENCIES = False
|
HAS_INVALID_DEPENDENCIES = False
|
||||||
HAS_INVALID_DB = not os.path.exists(os.path.join(OUTPUT_DIR, 'index.json'))
|
HAS_INVALID_DB = not os.path.exists(os.path.join(OUTPUT_DIR, 'index.json'))
|
||||||
|
|
||||||
def stderr(*args):
|
### Check system environment
|
||||||
sys.stderr.write(' '.join(str(a) for a in args) + '\n')
|
if USER == 'root':
|
||||||
|
stderr('{red}[!] ArchiveBox should never be run as root!{reset}'.format(**ANSI))
|
||||||
|
stderr(' For more information, see the security overview documentation:')
|
||||||
|
stderr(' https://github.com/pirate/ArchiveBox/wiki/Security-Overview#do-not-run-as-root')
|
||||||
|
raise SystemExit(1)
|
||||||
|
|
||||||
### Check Python environment
|
### Check Python environment
|
||||||
python_vers = float('{}.{}'.format(sys.version_info.major, sys.version_info.minor))
|
python_vers = float('{}.{}'.format(sys.version_info.major, sys.version_info.minor))
|
||||||
if python_vers < 3.5:
|
if python_vers < 3.6:
|
||||||
stderr('{}[X] Python version is not new enough: {} (>3.5 is required){}'.format(ANSI['red'], python_vers, ANSI['reset']))
|
stderr('{}[X] Python version is not new enough: {} (>3.6 is required){}'.format(ANSI['red'], python_vers, ANSI['reset']))
|
||||||
stderr(' See https://github.com/pirate/ArchiveBox/wiki/Troubleshooting#python for help upgrading your Python installation.')
|
stderr(' See https://github.com/pirate/ArchiveBox/wiki/Troubleshooting#python for help upgrading your Python installation.')
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
|
||||||
if sys.stdout.encoding.upper() not in ('UTF-8', 'UTF8'):
|
if sys.stdout.encoding.upper() not in ('UTF-8', 'UTF8'):
|
||||||
stderr('[X] Your system is running python3 scripts with a bad locale setting: {} (it should be UTF-8).'.format(sys.stdout.encoding))
|
stderr('[X] Your system is running python3 scripts with a bad locale setting: {} (it should be UTF-8).'.format(sys.stdout.encoding))
|
||||||
stderr(' To fix it, add the line "export PYTHONIOENCODING=UTF-8" to your ~/.bashrc file (without quotes)')
|
stderr(' To fix it, add the line "export PYTHONIOENCODING=UTF-8" to your ~/.bashrc file (without quotes)')
|
||||||
|
stderr(' Or if you\'re using ubuntu/debian, run "dpkg-reconfigure locales"')
|
||||||
stderr('')
|
stderr('')
|
||||||
stderr(' Confirm that it\'s fixed by opening a new shell and running:')
|
stderr(' Confirm that it\'s fixed by opening a new shell and running:')
|
||||||
stderr(' python3 -c "import sys; print(sys.stdout.encoding)" # should output UTF-8')
|
stderr(' python3 -c "import sys; print(sys.stdout.encoding)" # should output UTF-8')
|
||||||
stderr('')
|
stderr('')
|
||||||
stderr(' Alternatively, run this script with:')
|
stderr(' Alternatively, run this script with:')
|
||||||
stderr(' env PYTHONIOENCODING=UTF-8 ./archive.py export.html')
|
stderr(' env PYTHONIOENCODING=UTF-8 ./archive.py export.html')
|
||||||
|
raise SystemExit(1)
|
||||||
|
|
||||||
# ******************************************************************************
|
# ******************************************************************************
|
||||||
# ***************************** Helper Functions *******************************
|
# ***************************** Helper Functions *******************************
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue