mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-04-06 07:47:53 +10:00
106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
"""
|
|
ArchiveBox config exports.
|
|
|
|
This module provides backwards-compatible config exports for extractors
|
|
and other modules that expect to import config values directly.
|
|
"""
|
|
|
|
__package__ = "archivebox.config"
|
|
__order__ = 200
|
|
|
|
from .paths import (
|
|
PACKAGE_DIR,
|
|
DATA_DIR,
|
|
ARCHIVE_DIR,
|
|
)
|
|
from .constants import CONSTANTS, CONSTANTS_CONFIG, PACKAGE_DIR, DATA_DIR, ARCHIVE_DIR # noqa
|
|
from .version import VERSION # noqa
|
|
|
|
|
|
###############################################################################
|
|
# Config value exports for extractors
|
|
# These provide backwards compatibility with extractors that import from ..config
|
|
###############################################################################
|
|
|
|
|
|
def _get_config():
|
|
"""Lazy import to avoid circular imports."""
|
|
from .common import ARCHIVING_CONFIG, STORAGE_CONFIG
|
|
|
|
return ARCHIVING_CONFIG, STORAGE_CONFIG
|
|
|
|
|
|
# Direct exports (evaluated at import time for backwards compat)
|
|
# These are recalculated each time the module attribute is accessed
|
|
|
|
|
|
def __getattr__(name: str):
|
|
"""
|
|
Module-level __getattr__ for lazy config loading.
|
|
|
|
Only provides backwards compatibility for GENERIC/SHARED config.
|
|
Plugin-specific config (binaries, args, toggles) should come from plugin config.json files.
|
|
"""
|
|
|
|
# Generic timeout settings (used by multiple plugins)
|
|
if name == "TIMEOUT":
|
|
cfg, _ = _get_config()
|
|
return cfg.TIMEOUT
|
|
|
|
# Generic SSL/Security settings (used by multiple plugins)
|
|
if name == "CHECK_SSL_VALIDITY":
|
|
cfg, _ = _get_config()
|
|
return cfg.CHECK_SSL_VALIDITY
|
|
|
|
# Generic storage settings (used by multiple plugins)
|
|
if name == "RESTRICT_FILE_NAMES":
|
|
_, storage = _get_config()
|
|
return storage.RESTRICT_FILE_NAMES
|
|
|
|
# Generic user agent / cookies (used by multiple plugins)
|
|
if name == "COOKIES_FILE":
|
|
cfg, _ = _get_config()
|
|
return cfg.COOKIES_FILE
|
|
if name == "USER_AGENT":
|
|
cfg, _ = _get_config()
|
|
return cfg.USER_AGENT
|
|
|
|
# Generic resolution settings (used by multiple plugins)
|
|
if name == "RESOLUTION":
|
|
cfg, _ = _get_config()
|
|
return cfg.RESOLUTION
|
|
|
|
# Allowlist/Denylist patterns (compiled regexes)
|
|
if name == "SAVE_ALLOWLIST_PTN":
|
|
cfg, _ = _get_config()
|
|
return cfg.SAVE_ALLOWLIST_PTNS
|
|
if name == "SAVE_DENYLIST_PTN":
|
|
cfg, _ = _get_config()
|
|
return cfg.SAVE_DENYLIST_PTNS
|
|
|
|
raise AttributeError(f"module 'archivebox.config' has no attribute '{name}'")
|
|
|
|
|
|
# Re-export common config classes for direct imports
|
|
def get_CONFIG():
|
|
"""Get all config sections as a dict."""
|
|
from .common import (
|
|
SHELL_CONFIG,
|
|
STORAGE_CONFIG,
|
|
GENERAL_CONFIG,
|
|
SERVER_CONFIG,
|
|
ARCHIVING_CONFIG,
|
|
SEARCH_BACKEND_CONFIG,
|
|
)
|
|
from .ldap import LDAP_CONFIG
|
|
|
|
return {
|
|
"SHELL_CONFIG": SHELL_CONFIG,
|
|
"STORAGE_CONFIG": STORAGE_CONFIG,
|
|
"GENERAL_CONFIG": GENERAL_CONFIG,
|
|
"SERVER_CONFIG": SERVER_CONFIG,
|
|
"ARCHIVING_CONFIG": ARCHIVING_CONFIG,
|
|
"SEARCHBACKEND_CONFIG": SEARCH_BACKEND_CONFIG,
|
|
"LDAP_CONFIG": LDAP_CONFIG,
|
|
}
|