소스 검색

Add config options to add admin user on first run

Ben Muthalaly 2 년 전
부모
커밋
11d473e536
2개의 변경된 파일8개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 0
      archivebox/config.py
  2. 6 1
      archivebox/main.py

+ 2 - 0
archivebox/config.py

@@ -91,6 +91,8 @@ CONFIG_SCHEMA: Dict[str, ConfigDefaultDict] = {
         'OUTPUT_PERMISSIONS':       {'type': str,   'default': '644'},
         'OUTPUT_PERMISSIONS':       {'type': str,   'default': '644'},
         'RESTRICT_FILE_NAMES':      {'type': str,   'default': 'windows'},
         'RESTRICT_FILE_NAMES':      {'type': str,   'default': 'windows'},
         'URL_BLACKLIST':            {'type': str,   'default': r'\.(css|js|otf|ttf|woff|woff2|gstatic\.com|googleapis\.com/css)(\?.*)?$'},  # to avoid downloading code assets as their own pages
         'URL_BLACKLIST':            {'type': str,   'default': r'\.(css|js|otf|ttf|woff|woff2|gstatic\.com|googleapis\.com/css)(\?.*)?$'},  # to avoid downloading code assets as their own pages
+        'ARCHIVEBOX_USERNAME':      {'type': str,   'default': None},
+        'ARCHIVEBOX_PASSWORD':      {'type': str,   'default': None},
         'URL_WHITELIST':            {'type': str,   'default': None},
         'URL_WHITELIST':            {'type': str,   'default': None},
         'ENFORCE_ATOMIC_WRITES':    {'type': bool,  'default': True},
         'ENFORCE_ATOMIC_WRITES':    {'type': bool,  'default': True},
         'TAG_SEPARATOR_PATTERN':    {'type': str,   'default': r'[,]'},
         'TAG_SEPARATOR_PATTERN':    {'type': str,   'default': r'[,]'},

+ 6 - 1
archivebox/main.py

@@ -112,6 +112,8 @@ from .config import (
     load_all_config,
     load_all_config,
     CONFIG,
     CONFIG,
     USER_CONFIG,
     USER_CONFIG,
+    ARCHIVEBOX_USERNAME,
+    ARCHIVEBOX_PASSWORD,
     get_real_name,
     get_real_name,
     setup_django,
     setup_django,
 )
 )
@@ -422,7 +424,10 @@ def init(force: bool=False, quick: bool=False, setup: bool=False, out_dir: Path=
     if existing_index:
     if existing_index:
         print('{green}[√] Done. Verified and updated the existing ArchiveBox collection.{reset}'.format(**ANSI))
         print('{green}[√] Done. Verified and updated the existing ArchiveBox collection.{reset}'.format(**ANSI))
     else:
     else:
-        # TODO: allow creating new supersuer via env vars on first init
+        if ARCHIVEBOX_USERNAME and ARCHIVEBOX_PASSWORD:
+            print('{green}[+] ARCHIVEBOX_USERNAME and  ARCHIVEBOX_PASSWORD configuration options found. Creating new admin user with username {} and password {}.{reset}'.format(ARCHIVEBOX_USERNAME, ARCHIVEBOX_PASSWORD, **ANSI))
+            from django.contrib.auth.models import User
+            User.objects.create_superuser(username=ARCHIVEBOX_USERNAME, password=ARCHIVEBOX_PASSWORD)
         # if config.HTTP_USER and config.HTTP_PASS:
         # if config.HTTP_USER and config.HTTP_PASS:
         #     from django.contrib.auth.models import User
         #     from django.contrib.auth.models import User
         #     User.objects.create_superuser(HTTP_USER, '', HTTP_PASS)
         #     User.objects.create_superuser(HTTP_USER, '', HTTP_PASS)