[#114] Email confirmation route, action, node setting, User.Info fields.
[akkoma] / lib / pleroma / captcha / captcha.ex
index df33406ee7777f0235ee34db0ffd60293d6b8848..5630f6b571d2e709d3acee4a0c90c6ac47b94e2c 100644 (file)
@@ -14,6 +14,10 @@ defmodule Pleroma.Captcha do
     ets_name = Module.concat(method(), Ets)
     ^ets_name = :ets.new(Module.concat(method(), Ets), @ets_options)
 
+    # Clean up old captchas every few minutes
+    seconds_retained = Pleroma.Config.get!([__MODULE__, :seconds_retained])
+    Process.send_after(self(), :cleanup, 1000 * seconds_retained)
+
     {:ok, nil}
   end
 
@@ -47,5 +51,16 @@ defmodule Pleroma.Captcha do
     {:reply, method().validate(token, captcha), state}
   end
 
+  @doc false
+  def handle_info(:cleanup, state) do
+    :ok = method().cleanup()
+
+    seconds_retained = Pleroma.Config.get!([__MODULE__, :seconds_retained])
+    # Schedule the next clenup
+    Process.send_after(self(), :cleanup, 1000 * seconds_retained)
+
+    {:noreply, state}
+  end
+
   defp method, do: Pleroma.Config.get!([__MODULE__, :method])
 end