mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-23 20:18:00 +01:00
dd8c2c81d9
* prelim work on vite reload * the best solution to a problem is usually the easiest one
155 lines
5.1 KiB
Elixir
155 lines
5.1 KiB
Elixir
import Config
|
|
|
|
# ## Using releases (Elixir v1.9+)
|
|
#
|
|
# If you are doing OTP releases, you can assemble a release
|
|
# by calling `mix release`.
|
|
#
|
|
# See `mix help release` for more information.
|
|
{:ok, _} = Application.ensure_all_started(:tls_certificate_check)
|
|
|
|
config :bcrypt_elixir,
|
|
log_rounds: String.to_integer(System.get_env("BCRYPT_ROUNDS", "12"))
|
|
|
|
config :philomena,
|
|
anonymous_name_salt: System.fetch_env!("ANONYMOUS_NAME_SALT"),
|
|
hcaptcha_secret_key: System.fetch_env!("HCAPTCHA_SECRET_KEY"),
|
|
hcaptcha_site_key: System.fetch_env!("HCAPTCHA_SITE_KEY"),
|
|
elasticsearch_url: System.get_env("ELASTICSEARCH_URL", "http://localhost:9200"),
|
|
advert_file_root: System.fetch_env!("ADVERT_FILE_ROOT"),
|
|
avatar_file_root: System.fetch_env!("AVATAR_FILE_ROOT"),
|
|
badge_file_root: System.fetch_env!("BADGE_FILE_ROOT"),
|
|
password_pepper: System.fetch_env!("PASSWORD_PEPPER"),
|
|
avatar_url_root: System.fetch_env!("AVATAR_URL_ROOT"),
|
|
advert_url_root: System.fetch_env!("ADVERT_URL_ROOT"),
|
|
image_file_root: System.fetch_env!("IMAGE_FILE_ROOT"),
|
|
tumblr_api_key: System.fetch_env!("TUMBLR_API_KEY"),
|
|
otp_secret_key: System.fetch_env!("OTP_SECRET_KEY"),
|
|
image_url_root: System.fetch_env!("IMAGE_URL_ROOT"),
|
|
badge_url_root: System.fetch_env!("BADGE_URL_ROOT"),
|
|
mailer_address: System.fetch_env!("MAILER_ADDRESS"),
|
|
tag_file_root: System.fetch_env!("TAG_FILE_ROOT"),
|
|
site_domains: System.fetch_env!("SITE_DOMAINS"),
|
|
tag_url_root: System.fetch_env!("TAG_URL_ROOT"),
|
|
redis_host: System.get_env("REDIS_HOST", "localhost"),
|
|
proxy_host: System.get_env("PROXY_HOST"),
|
|
camo_host: System.get_env("CAMO_HOST"),
|
|
camo_key: System.get_env("CAMO_KEY"),
|
|
cdn_host: System.fetch_env!("CDN_HOST")
|
|
|
|
app_dir = System.get_env("APP_DIR", File.cwd!())
|
|
|
|
json_config =
|
|
%{
|
|
aggregation: "aggregation.json",
|
|
avatar: "avatar.json",
|
|
footer: "footer.json",
|
|
quick_tag_table: "quick_tag_table.json",
|
|
tag: "tag.json"
|
|
}
|
|
|> Map.new(fn {name, file} ->
|
|
{name, Jason.decode!(File.read!("#{app_dir}/config/#{file}"))}
|
|
end)
|
|
|
|
config :philomena,
|
|
config: json_config
|
|
|
|
config :exq,
|
|
host: System.get_env("REDIS_HOST", "localhost"),
|
|
queues: [
|
|
{"videos", 2},
|
|
{"images", 4},
|
|
{"indexing", 12},
|
|
{"notifications", 2}
|
|
]
|
|
|
|
if is_nil(System.get_env("START_WORKER")) do
|
|
# Make queueing available but don't process any jobs
|
|
config :exq, queues: []
|
|
end
|
|
|
|
# S3/Object store config
|
|
config :philomena, :s3_primary_options,
|
|
region: System.get_env("S3_REGION", "us-east-1"),
|
|
scheme: System.fetch_env!("S3_SCHEME"),
|
|
host: System.fetch_env!("S3_HOST"),
|
|
port: System.fetch_env!("S3_PORT"),
|
|
access_key_id: System.fetch_env!("AWS_ACCESS_KEY_ID"),
|
|
secret_access_key: System.fetch_env!("AWS_SECRET_ACCESS_KEY"),
|
|
http_opts: [timeout: 180_000, recv_timeout: 180_000]
|
|
|
|
config :philomena, :s3_primary_bucket, System.fetch_env!("S3_BUCKET")
|
|
|
|
config :philomena, :s3_secondary_options,
|
|
region: System.get_env("ALT_S3_REGION", "us-east-1"),
|
|
scheme: System.get_env("ALT_S3_SCHEME"),
|
|
host: System.get_env("ALT_S3_HOST"),
|
|
port: System.get_env("ALT_S3_PORT"),
|
|
access_key_id: System.get_env("ALT_AWS_ACCESS_KEY_ID"),
|
|
secret_access_key: System.get_env("ALT_AWS_SECRET_ACCESS_KEY"),
|
|
http_opts: [timeout: 180_000, recv_timeout: 180_000]
|
|
|
|
config :philomena, :s3_secondary_bucket, System.get_env("ALT_S3_BUCKET")
|
|
|
|
config :ex_aws, :hackney_opts,
|
|
timeout: 180_000,
|
|
recv_timeout: 180_000,
|
|
use_default_pool: false,
|
|
pool: false
|
|
|
|
config :ex_aws, :retries,
|
|
max_attempts: 20,
|
|
base_backoff_in_ms: 10,
|
|
max_backoff_in_ms: 10_000
|
|
|
|
if config_env() != :test do
|
|
# Database config
|
|
config :philomena, Philomena.Repo,
|
|
url: System.fetch_env!("DATABASE_URL"),
|
|
pool_size: String.to_integer(System.get_env("POOL_SIZE", "16")),
|
|
timeout: 60_000,
|
|
ownership_timeout: 60_000
|
|
end
|
|
|
|
if config_env() == :prod do
|
|
# Production mailer config
|
|
config :philomena, Philomena.Mailer,
|
|
adapter: Bamboo.SMTPAdapter,
|
|
server: System.fetch_env!("SMTP_RELAY"),
|
|
hostname: System.fetch_env!("SMTP_DOMAIN"),
|
|
port: System.get_env("SMTP_PORT") || 587,
|
|
username: System.fetch_env!("SMTP_USERNAME"),
|
|
password: System.fetch_env!("SMTP_PASSWORD"),
|
|
tls: :always,
|
|
auth: :always,
|
|
tls_options:
|
|
[middlebox_comp_mode: false] ++
|
|
:tls_certificate_check.options(System.fetch_env!("SMTP_RELAY"))
|
|
|
|
# Production endpoint config
|
|
{:ok, ip} = :inet.parse_address(System.get_env("APP_IP", "127.0.0.1") |> String.to_charlist())
|
|
|
|
config :philomena, PhilomenaWeb.Endpoint,
|
|
http: [ip: ip, port: System.fetch_env!("PORT")],
|
|
url: [host: System.fetch_env!("APP_HOSTNAME"), scheme: "https", port: 443],
|
|
secret_key_base: System.fetch_env!("SECRET_KEY_BASE"),
|
|
server: not is_nil(System.get_env("START_ENDPOINT"))
|
|
|
|
# Do not relax CSP in production
|
|
config :philomena, csp_relaxed: false
|
|
|
|
# Disable Vite HMR in prod
|
|
config :philomena, vite_reload: false
|
|
else
|
|
# Don't send email in development
|
|
config :philomena, Philomena.Mailer, adapter: Bamboo.LocalAdapter
|
|
|
|
# Use this to debug slime templates
|
|
# config :slime, :keep_lines, true
|
|
|
|
# Relax CSP rules in development and test servers
|
|
config :philomena, csp_relaxed: true
|
|
|
|
# Enable Vite HMR
|
|
config :philomena, vite_reload: true
|
|
end
|