{% include 'roles/sys-svc-container/templates/env.j2' %}

WEBUI_SECRET_KEY={{ OPENWEBUI_SECRET_KEY | dotenv_quote }}

{% if OPENWEBUI_OPENAI_CONNECTIONS | length > 0 %}
OPENAI_API_BASE_URLS={{ OPENWEBUI_OPENAI_CONNECTIONS | map(attribute='url') | join(';') }}
OPENAI_API_KEYS={{ OPENWEBUI_OPENAI_CONNECTIONS | map(attribute='key') | join(';') | dotenv_quote }}
{% endif %}
{% if OPENWEBUI_AGENT_BROKER_ENABLED | bool %}
ENABLE_FORWARD_USER_INFO_HEADERS=true
AIOHTTP_CLIENT_TIMEOUT={{ OPENWEBUI_AGENT_BROKER_TIMEOUT }}
{% endif %}
{% if OPENWEBUI_COMFYUI_URL | length > 0 %}
ENABLE_IMAGE_GENERATION=true
IMAGE_GENERATION_ENGINE=comfyui
COMFYUI_BASE_URL={{ OPENWEBUI_COMFYUI_URL }}
COMFYUI_API_KEY={{ OPENWEBUI_COMFYUI_API_KEY | dotenv_quote }}
{% elif OPENWEBUI_LITELLM_ENABLED | bool and OPENWEBUI_IMAGE_MODEL | length > 0 %}
ENABLE_IMAGE_GENERATION=true
IMAGE_GENERATION_ENGINE=openai
IMAGE_GENERATION_MODEL={{ OPENWEBUI_IMAGE_MODEL }}
IMAGES_OPENAI_API_BASE_URL={{ LITELLM_BASE_LOCAL_URL }}/v1
IMAGES_OPENAI_API_KEY={{ OPENWEBUI_LITELLM_API_KEY | dotenv_quote }}
{% endif %}
{% if OPENWEBUI_LITELLM_ENABLED | bool and OPENWEBUI_EMBEDDING_MODEL | length > 0 %}
RAG_EMBEDDING_ENGINE=openai
RAG_EMBEDDING_MODEL={{ OPENWEBUI_EMBEDDING_MODEL }}
RAG_OPENAI_API_BASE_URL={{ LITELLM_BASE_LOCAL_URL }}/v1
RAG_OPENAI_API_KEY={{ OPENWEBUI_LITELLM_API_KEY | dotenv_quote }}
{% endif %}
{% if OPENWEBUI_LITELLM_ENABLED | bool and OPENWEBUI_STT_MODEL | length > 0 %}
AUDIO_STT_ENGINE=openai
AUDIO_STT_MODEL={{ OPENWEBUI_STT_MODEL }}
AUDIO_STT_OPENAI_API_BASE_URL={{ LITELLM_BASE_LOCAL_URL }}/v1
AUDIO_STT_OPENAI_API_KEY={{ OPENWEBUI_LITELLM_API_KEY | dotenv_quote }}
{% endif %}
{% if OPENWEBUI_LITELLM_ENABLED | bool and OPENWEBUI_TTS_MODEL | length > 0 %}
AUDIO_TTS_ENGINE=openai
AUDIO_TTS_MODEL={{ OPENWEBUI_TTS_MODEL }}
AUDIO_TTS_OPENAI_API_BASE_URL={{ LITELLM_BASE_LOCAL_URL }}/v1
AUDIO_TTS_OPENAI_API_KEY={{ OPENWEBUI_LITELLM_API_KEY | dotenv_quote }}
{% endif %}
{% if OPENWEBUI_JUPYTER_ENABLED | bool %}
CODE_EXECUTION_ENGINE=jupyter
CODE_EXECUTION_JUPYTER_URL={{ OPENWEBUI_JUPYTER_URL }}
CODE_EXECUTION_JUPYTER_AUTH=token
CODE_EXECUTION_JUPYTER_AUTH_TOKEN={{ OPENWEBUI_JUPYTER_TOKEN | dotenv_quote }}
CODE_INTERPRETER_ENGINE=jupyter
CODE_INTERPRETER_JUPYTER_URL={{ OPENWEBUI_JUPYTER_URL }}
CODE_INTERPRETER_JUPYTER_AUTH=token
CODE_INTERPRETER_JUPYTER_AUTH_TOKEN={{ OPENWEBUI_JUPYTER_TOKEN | dotenv_quote }}
{% endif %}
{% if OPENWEBUI_SEARXNG_ENABLED | bool %}
ENABLE_WEB_SEARCH=true
WEB_SEARCH_ENGINE=searxng
SEARXNG_QUERY_URL={{ OPENWEBUI_SEARXNG_URL }}
{% endif %}
{% if OPENWEBUI_TIKA_ENABLED | bool %}
CONTENT_EXTRACTION_ENGINE=tika
TIKA_SERVER_URL={{ OPENWEBUI_TIKA_URL }}
{% endif %}
{% if OPENWEBUI_QDRANT_ENABLED | bool %}
VECTOR_DB=qdrant
QDRANT_URI={{ OPENWEBUI_QDRANT_URL }}
QDRANT_API_KEY={{ OPENWEBUI_QDRANT_API_KEY | dotenv_quote }}
QDRANT_COLLECTION_PREFIX={{ OPENWEBUI_QDRANT_COLLECTION_PREFIX }}
{% endif %}
{% if OPENWEBUI_MCP_SERVERS | length > 0 %}
TOOL_SERVER_CONNECTIONS={{ OPENWEBUI_MCP_SERVERS | mcp_tool_server_connections(OPENWEBUI_MCP_GROUP_IDS) | to_json(separators=(',', ':')) | dotenv_quote }}
{% endif %}
OFFLINE_MODE={{ OPENWEBUI_OFFLINE_MODE | ternary(1, 0) }}
HF_HUB_OFFLINE={{ OPENWEBUI_HF_HUB_OFFLINE | ternary(1, 0) }}
RAG_EMBEDDING_MODEL_AUTO_UPDATE=false
ENABLE_PERSISTENT_CONFIG=false

{% if lookup('objstore', application_id, 'enabled') | bool %}
STORAGE_PROVIDER=s3
S3_BUCKET_NAME={{ lookup('objstore', application_id, 'bucket') }}
S3_ENDPOINT_URL={{ lookup('objstore', application_id, 'url') }}
S3_ACCESS_KEY_ID={{ lookup('objstore', application_id, 'access_key') }}
S3_SECRET_ACCESS_KEY={{ lookup('objstore', application_id, 'secret_key') }}
S3_REGION_NAME={{ lookup('objstore', application_id, 'region') }}
{% endif %}

ADMIN_EMAIL={{ lookup('users', 'platform_administrator').email }}

SHOW_ADMIN_DETAILS=true

DEFAULT_USER_ROLE=user

ENABLE_API_KEYS={{ OPENWEBUI_ENABLE_API_KEYS | string | lower }}

{% set email = lookup('email', application_id) %}
{% if email.enabled | bool %}
SMTP_HOST={{ email.host }}
SMTP_PORT={{ email.port }}
SMTP_USERNAME={{ email.username }}
SMTP_PASSWORD={{ email.password | dotenv_quote }}
SMTP_FROM_ADDRESS={{ email['from'] }}
{% endif %}

{% if OPENWEBUI_OIDC_ENABLED | bool %}
ENABLE_OAUTH_SIGNUP=true

OAUTH_CLIENT_ID={{ OIDC.CLIENT.ID }}
OAUTH_CLIENT_SECRET={{ OIDC.CLIENT.SECRET }}

OPENID_PROVIDER_URL={{ OIDC.CLIENT.DISCOVERY_DOCUMENT }}

OPENID_REDIRECT_URI={{ OPENWEBUI_OIDC_REDIRECT_URL }}

OAUTH_PROVIDER_NAME={{ OIDC.BUTTON_TEXT }}

OAUTH_SCOPES=openid email profile {{ RBAC.GROUP.CLAIM }}

ENABLE_OAUTH_ROLE_MANAGEMENT=true
OAUTH_ROLES_CLAIM={{ RBAC.GROUP.CLAIM }}
OAUTH_ADMIN_ROLES=/{{ OPENWEBUI_OIDC_ADMIN_GROUP }}
OAUTH_ALLOWED_ROLES=*

ENABLE_OAUTH_GROUP_MANAGEMENT=true
ENABLE_OAUTH_GROUP_CREATION=true
OAUTH_GROUPS_CLAIM={{ RBAC.GROUP.CLAIM }}
BYPASS_ADMIN_ACCESS_CONTROL=false
{% endif %}

BYPASS_MODEL_ACCESS_CONTROL={{ (not (OPENWEBUI_AGENT_BROKER_ENABLED | bool)) | string | lower }}

{% if OPENWEBUI_LDAP_ENABLED | bool %}
ENABLE_LDAP=true

LDAP_SERVER_LABEL=OpenLDAP
LDAP_SERVER_HOST={{ LDAP.SERVER.DOMAIN }}
LDAP_SERVER_PORT={{ LDAP.SERVER.PORT }}

LDAP_USE_TLS={{ ('true' if (LDAP.SERVER.SECURITY | upper) in ['TLS','SSL'] else 'false') }}

LDAP_VALIDATE_CERT={{ ('true' if (LDAP.SERVER.SECURITY | upper) in ['TLS','SSL'] else 'false') }}

LDAP_APP_DN={{ LDAP.DN.ADMINISTRATOR.DATA }}
LDAP_APP_PASSWORD={{ LDAP.BIND_CREDENTIAL | dotenv_quote }}

LDAP_SEARCH_BASE={{ LDAP.DN.ROOT }}
LDAP_ATTRIBUTE_FOR_USERNAME={{ LDAP.USER.ATTRIBUTES.ID }}
LDAP_ATTRIBUTE_FOR_MAIL={{ LDAP.USER.ATTRIBUTES.MAIL }}
LDAP_SEARCH_FILTER=(objectClass=*)
{% endif %}
