mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-09-28 04:49:21 +02:00
Allow for CORS Origin Setting (#2449)
* allow setting of CORS origin * simplify * add environment variable + rename * slightly more efficient * simplify so mypy doens't complain * temp * go back to my preferred formatting
This commit is contained in:
@@ -125,10 +125,10 @@ from danswer.utils.telemetry import RecordType
|
|||||||
from danswer.utils.variable_functionality import fetch_versioned_implementation
|
from danswer.utils.variable_functionality import fetch_versioned_implementation
|
||||||
from danswer.utils.variable_functionality import global_version
|
from danswer.utils.variable_functionality import global_version
|
||||||
from danswer.utils.variable_functionality import set_is_ee_based_on_env_variable
|
from danswer.utils.variable_functionality import set_is_ee_based_on_env_variable
|
||||||
|
from shared_configs.configs import CORS_ALLOWED_ORIGIN
|
||||||
from shared_configs.configs import MODEL_SERVER_HOST
|
from shared_configs.configs import MODEL_SERVER_HOST
|
||||||
from shared_configs.configs import MODEL_SERVER_PORT
|
from shared_configs.configs import MODEL_SERVER_PORT
|
||||||
|
|
||||||
|
|
||||||
logger = setup_logger()
|
logger = setup_logger()
|
||||||
|
|
||||||
|
|
||||||
@@ -591,7 +591,7 @@ def get_application() -> FastAPI:
|
|||||||
|
|
||||||
application.add_middleware(
|
application.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["*"], # Change this to the list of allowed origins if needed
|
allow_origins=CORS_ALLOWED_ORIGIN, # Configurable via environment variable
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
# Used for logging
|
# Used for logging
|
||||||
SLACK_CHANNEL_ID = "channel_id"
|
SLACK_CHANNEL_ID = "channel_id"
|
||||||
@@ -73,3 +74,18 @@ PRESERVED_SEARCH_FIELDS = [
|
|||||||
"passage_prefix",
|
"passage_prefix",
|
||||||
"query_prefix",
|
"query_prefix",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# CORS
|
||||||
|
def validate_cors_origin(origin: str) -> None:
|
||||||
|
parsed = urlparse(origin)
|
||||||
|
if parsed.scheme not in ["http", "https"] or not parsed.netloc:
|
||||||
|
raise ValueError(f"Invalid CORS origin: '{origin}'")
|
||||||
|
|
||||||
|
|
||||||
|
CORS_ALLOWED_ORIGIN = os.environ.get("CORS_ALLOWED_ORIGIN", "*").split(",") or ["*"]
|
||||||
|
|
||||||
|
# Validate non-wildcard origins
|
||||||
|
for origin in CORS_ALLOWED_ORIGIN:
|
||||||
|
if origin != "*" and (stripped_origin := origin.strip()):
|
||||||
|
validate_cors_origin(stripped_origin)
|
||||||
|
@@ -34,6 +34,7 @@ services:
|
|||||||
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET:-}
|
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET:-}
|
||||||
- OPENID_CONFIG_URL=${OPENID_CONFIG_URL:-}
|
- OPENID_CONFIG_URL=${OPENID_CONFIG_URL:-}
|
||||||
- TRACK_EXTERNAL_IDP_EXPIRY=${TRACK_EXTERNAL_IDP_EXPIRY:-}
|
- TRACK_EXTERNAL_IDP_EXPIRY=${TRACK_EXTERNAL_IDP_EXPIRY:-}
|
||||||
|
- CORS_ALLOWED_ORIGIN=${CORS_ALLOWED_ORIGIN:-}
|
||||||
# Gen AI Settings
|
# Gen AI Settings
|
||||||
- GEN_AI_MAX_TOKENS=${GEN_AI_MAX_TOKENS:-}
|
- GEN_AI_MAX_TOKENS=${GEN_AI_MAX_TOKENS:-}
|
||||||
- QA_TIMEOUT=${QA_TIMEOUT:-}
|
- QA_TIMEOUT=${QA_TIMEOUT:-}
|
||||||
|
@@ -31,6 +31,7 @@ services:
|
|||||||
- SMTP_PASS=${SMTP_PASS:-}
|
- SMTP_PASS=${SMTP_PASS:-}
|
||||||
- EMAIL_FROM=${EMAIL_FROM:-}
|
- EMAIL_FROM=${EMAIL_FROM:-}
|
||||||
- TRACK_EXTERNAL_IDP_EXPIRY=${TRACK_EXTERNAL_IDP_EXPIRY:-}
|
- TRACK_EXTERNAL_IDP_EXPIRY=${TRACK_EXTERNAL_IDP_EXPIRY:-}
|
||||||
|
- CORS_ALLOWED_ORIGIN=${CORS_ALLOWED_ORIGIN:-}
|
||||||
# Gen AI Settings
|
# Gen AI Settings
|
||||||
- GEN_AI_MAX_TOKENS=${GEN_AI_MAX_TOKENS:-}
|
- GEN_AI_MAX_TOKENS=${GEN_AI_MAX_TOKENS:-}
|
||||||
- QA_TIMEOUT=${QA_TIMEOUT:-}
|
- QA_TIMEOUT=${QA_TIMEOUT:-}
|
||||||
|
@@ -13,6 +13,7 @@ data:
|
|||||||
SMTP_USER: "" # 'your-email@company.com'
|
SMTP_USER: "" # 'your-email@company.com'
|
||||||
SMTP_PASS: "" # 'your-gmail-password'
|
SMTP_PASS: "" # 'your-gmail-password'
|
||||||
EMAIL_FROM: "" # 'your-email@company.com' SMTP_USER missing used instead
|
EMAIL_FROM: "" # 'your-email@company.com' SMTP_USER missing used instead
|
||||||
|
CORS_ALLOWED_ORIGIN: ""
|
||||||
# Gen AI Settings
|
# Gen AI Settings
|
||||||
GEN_AI_MAX_TOKENS: ""
|
GEN_AI_MAX_TOKENS: ""
|
||||||
QA_TIMEOUT: "60"
|
QA_TIMEOUT: "60"
|
||||||
|
Reference in New Issue
Block a user