| """OmniParse AI — Configuration & Secrets. All sensitive values from env vars.""" |
|
|
| import os |
|
|
| |
| HF_TOKEN = os.environ.get("HF_TOKEN") |
| GROQ_API_KEY = os.environ.get("GROQ_API_KEY") |
| SUPABASE_URL = os.environ.get("SUPABASE_URL") |
| SUPABASE_KEY = os.environ.get("SUPABASE_KEY") |
| GOOGLE_VISION_KEY = os.environ.get("GOOGLE_VISION_KEY") |
| STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY") |
| STRIPE_PRICE_BASIC = os.environ.get("STRIPE_PRICE_BASIC") |
| STRIPE_PRICE_PRO = os.environ.get("STRIPE_PRICE_PRO") |
| STRIPE_PRICE_ENTERPRISE = os.environ.get("STRIPE_PRICE_ENTERPRISE") |
| STRIPE_WEBHOOK_SECRET = os.environ.get("STRIPE_WEBHOOK_SECRET") |
| APP_URL = os.environ.get("APP_URL", "http://localhost:7860") |
|
|
| |
| SESSION_TTL_HOURS = 168 |
| COOKIE_NAME = "op_sid" |
| COOKIE_SECURE = os.environ.get("COOKIE_SECURE", "false").lower() == "true" |
| COOKIE_HTTPONLY = True |
| COOKIE_SAMESITE = "lax" |
|
|
| |
| BCRYPT_ROUNDS = 12 |
| MIN_PASSWORD_LENGTH = 10 |
| REQUIRE_MIXED_CASE = True |
| REQUIRE_DIGIT = True |
| REQUIRE_SPECIAL = True |
| BANNED_PASSWORDS = { |
| "password", "1234567890", "qwerty12345", "admin12345", |
| "letmein123", "welcome123", "monkey1234", "dragon1234", |
| "password123", "omniparse123", "invoice1234", "changeme123", |
| } |
|
|
| |
| MAX_FILE_SIZE_MB = 20 |
| MAX_FILES_PER_REQ = 10 |
|
|
| |
| RATE_GLOBAL = "200/minute" |
| RATE_AUTH = "10/minute" |
| RATE_UPLOAD = "30/minute" |
| RATE_API = "60/minute" |
|
|
| |
| PLAN_LIMITS = {"free": 20, "basic": 200, "pro": 2000, "enterprise": float("inf")} |
| PLAN_LABELS = {"free": "Free", "basic": "Basic", "pro": "Pro", "enterprise": "Enterprise"} |
| PLAN_PRICES = {"free": 0, "basic": 29, "pro": 129, "enterprise": 499} |
| PLAN_PRICE_IDS = { |
| "basic": STRIPE_PRICE_BASIC, "pro": STRIPE_PRICE_PRO, |
| "enterprise": STRIPE_PRICE_ENTERPRISE, |
| } |
|
|
| |
| SQLITE_PATH = os.environ.get("SQLITE_PATH", "omniparse.db") |
| USE_SUPABASE = bool(SUPABASE_URL and SUPABASE_KEY) |
|
|