115 lines
4.0 KiB
Python
115 lines
4.0 KiB
Python
import os
|
|
from urllib.parse import quote_plus
|
|
|
|
basedir = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
def env_str(name, default=None):
|
|
value = os.environ.get(name)
|
|
return default if value is None else value
|
|
|
|
|
|
def env_int(name, default):
|
|
value = os.environ.get(name)
|
|
if value is None or value == "":
|
|
return default
|
|
try:
|
|
return int(value)
|
|
except (TypeError, ValueError):
|
|
return default
|
|
|
|
|
|
def env_bool(name, default=False):
|
|
value = os.environ.get(name)
|
|
if value is None:
|
|
return default
|
|
return str(value).strip().lower() in ("1", "true", "yes", "on")
|
|
|
|
|
|
class Config:
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
SESSION_COOKIE_SAMESITE = "Lax"
|
|
|
|
SECRET_KEY = env_str("SECRET_KEY", "D8pceNZ8q%YR7^7F&9wAC2")
|
|
|
|
APP_PORT = env_int("APP_PORT", 8000)
|
|
|
|
DB_ENGINE = env_str("DB_ENGINE", "sqlite").lower()
|
|
|
|
if DB_ENGINE == "sqlite":
|
|
SQLALCHEMY_DATABASE_URI = (
|
|
f"sqlite:///{os.path.join(basedir, 'db', 'shopping.db')}"
|
|
)
|
|
|
|
elif DB_ENGINE == "pgsql":
|
|
db_user = quote_plus(env_str("DB_USER", "user"))
|
|
db_password = quote_plus(env_str("DB_PASSWORD", "pass"))
|
|
db_host = env_str("DB_HOST", "pgsql")
|
|
db_port = env_str("DB_PORT", "5432")
|
|
db_name = quote_plus(env_str("DB_NAME", "myapp"))
|
|
|
|
SQLALCHEMY_DATABASE_URI = (
|
|
f"postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}"
|
|
)
|
|
|
|
elif DB_ENGINE == "mysql":
|
|
db_user = quote_plus(env_str("DB_USER", "user"))
|
|
db_password = quote_plus(env_str("DB_PASSWORD", "pass"))
|
|
db_host = env_str("DB_HOST", "mysql")
|
|
db_port = env_str("DB_PORT", "3306")
|
|
db_name = quote_plus(env_str("DB_NAME", "myapp"))
|
|
|
|
SQLALCHEMY_DATABASE_URI = (
|
|
f"mysql+pymysql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}"
|
|
)
|
|
|
|
else:
|
|
raise ValueError("Nieobsługiwany typ bazy danych.")
|
|
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
SYSTEM_PASSWORD = env_str("SYSTEM_PASSWORD", "admin")
|
|
DEFAULT_ADMIN_USERNAME = env_str("DEFAULT_ADMIN_USERNAME", "admin")
|
|
DEFAULT_ADMIN_PASSWORD = env_str("DEFAULT_ADMIN_PASSWORD", "admin123")
|
|
UPLOAD_FOLDER = env_str("UPLOAD_FOLDER", "uploads")
|
|
AUTHORIZED_COOKIE_VALUE = env_str("AUTHORIZED_COOKIE_VALUE", "cookievalue")
|
|
BCRYPT_PEPPER = env_str("BCRYPT_PEPPER", "sekretnyKluczBcrypt")
|
|
SESSION_COOKIE_SECURE = env_bool("SESSION_COOKIE_SECURE", False)
|
|
HEALTHCHECK_TOKEN = env_str("HEALTHCHECK_TOKEN", "alamapsaikota1234")
|
|
|
|
AUTH_COOKIE_MAX_AGE = env_int("AUTH_COOKIE_MAX_AGE", 86400)
|
|
SESSION_TIMEOUT_MINUTES = env_int("SESSION_TIMEOUT_MINUTES", 10080)
|
|
|
|
ENABLE_HSTS = env_bool("ENABLE_HSTS", False)
|
|
ENABLE_XFO = env_bool("ENABLE_XFO", False)
|
|
ENABLE_XCTO = env_bool("ENABLE_XCTO", False)
|
|
ENABLE_CSP = env_bool("ENABLE_CSP", False)
|
|
ENABLE_PP = env_bool("ENABLE_PP", False)
|
|
|
|
REFERRER_POLICY = env_str("REFERRER_POLICY") or None
|
|
|
|
DEBUG_MODE = env_bool("DEBUG_MODE", True)
|
|
DISABLE_ROBOTS = env_bool("DISABLE_ROBOTS", False)
|
|
|
|
CURRENCY_CODE = env_str("CURRENCY_CODE", "PLN").strip().upper() or "PLN"
|
|
|
|
JS_CACHE_CONTROL = env_str("JS_CACHE_CONTROL", "no-cache")
|
|
CSS_CACHE_CONTROL = env_str("CSS_CACHE_CONTROL", "no-cache")
|
|
LIB_JS_CACHE_CONTROL = env_str("LIB_JS_CACHE_CONTROL", "max-age=604800")
|
|
LIB_CSS_CACHE_CONTROL = env_str("LIB_CSS_CACHE_CONTROL", "max-age=604800")
|
|
UPLOADS_CACHE_CONTROL = env_str(
|
|
"UPLOADS_CACHE_CONTROL",
|
|
"public, max-age=2592000, immutable",
|
|
)
|
|
|
|
DEFAULT_CATEGORIES = [
|
|
c.strip()
|
|
for c in env_str(
|
|
"DEFAULT_CATEGORIES",
|
|
"Spożywcze,Budowlane,Zabawki,Chemia,Inne,Elektronika,Odzież i obuwie,Jedzenie poza domem,"
|
|
"Artykuły biurowe,Kosmetyki i higiena,Motoryzacja,Ogród i rośliny,"
|
|
"Zwierzęta,Sprzęt sportowy,Książki i prasa,Narzędzia i majsterkowanie,"
|
|
"RTV / AGD,Apteka i suplementy,Artykuły dekoracyjne,Gry i hobby,Usługi,Pieczywo,Różne,Chiny,Dom,Leki,Odzież,Samochód,Dzieci",
|
|
).split(",")
|
|
if c.strip()
|
|
] |