diff --git a/config/dev.exs b/config/dev.exs index ff7f8667..4210a939 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -72,10 +72,10 @@ config :erlef, :wild_apricot, client_secret: "client_secret" config :erlef, Erlef.Repo, - hostname: System.get_env("DATABASE_HOST", "localhost"), + hostname: System.get_env("DATABASE_HOST", "erlef-db"), database: "erlef_website_dev", - username: "postgres", - password: "postgres", + username: "erlef_db", + password: "erlef-db-pw", migration_primary_key: [id: :uuid, type: :binary_id], migration_timestamps: [type: :utc_datetime], show_sensitive_data_on_connection_error: true, diff --git a/config/to_json.exs b/config/to_json.exs new file mode 100644 index 00000000..24a36594 --- /dev/null +++ b/config/to_json.exs @@ -0,0 +1,34 @@ +defmodule ToJson do + @moduledoc """ + Emit JSON structure representing all of the configuration state + merged from non-runtime values + """ + + def doit do + Mix.State.start_link([]) + Config.Reader.read_imports!("config/config.exs", env: :dev) + |> case do + {configs, _} -> configs + end + |> custom_encode() + |> IO.puts() + end + + def encoder([{_, _} | _] = value, state) do + :json.encode_key_value_list(value, state) + end + def encoder(tup, state) when is_tuple(tup) do + :json.encode_value(Tuple.to_list(tup), state) + end + def encoder(%Regex{} = re, state) do + :json.encode_value(inspect(re), state) + end + def encoder(%DateTime{} = val, state) do + :json.encode_value(DateTime.to_iso8601(val), state) + end + def encoder(other, state) do + :json.encode_value(other, state) + end + def custom_encode(value), + do: :json.encode(value, &encoder/2) +end diff --git a/lib/erlef_web/plugs/plug_attack.ex b/lib/erlef_web/plugs/plug_attack.ex index ea37c079..031e48d9 100644 --- a/lib/erlef_web/plugs/plug_attack.ex +++ b/lib/erlef_web/plugs/plug_attack.ex @@ -9,6 +9,9 @@ defmodule ErlefWeb.Plug.Attack do rule "allow local", %{remote_ip: {127, 0, 0, 1}} = conn do allow(conn) end + rule "allow local", %{remote_ip: {192, 168, _, _}} = conn do + allow(conn) + end end rule "throttle by ip", %{path_info: ["slack-invite" | _rest]} = conn do diff --git a/mix.exs b/mix.exs index ecfc03aa..f46ee73f 100644 --- a/mix.exs +++ b/mix.exs @@ -16,7 +16,8 @@ defmodule Erlef.MixProject do name: "Erlef", source_url: "https://github.com/erlef/website", homepage_url: "https://erlef.org/", - docs: docs() + docs: docs(), + listeners: [Phoenix.CodeReloader], ] end diff --git a/start_db b/start_db new file mode 100755 index 00000000..39fd2712 --- /dev/null +++ b/start_db @@ -0,0 +1,46 @@ +#!/bin/bash + +get_repo_vars() { + elixir -r config/to_json.exs -e ToJson.doit \ + | jq -r ' + .erlef["Elixir.Erlef.Repo"] + | to_entries + | map(select((.value | type) == "string")) + | map(.key="repo_"+.key) + | map(.key+"="+.value) + | .[] +' +} + +eval $(get_repo_vars) + +test -d tmp_docker || mkdir tmp_docker + +cat > tmp_docker/init-01-user-db.sh <