summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md7
-rw-r--r--config/config.exs3
-rw-r--r--config/runtime.exs6
-rw-r--r--lib/farside/application.ex13
-rw-r--r--lib/farside/instances.ex4
-rw-r--r--test/farside_test.exs4
6 files changed, 24 insertions, 13 deletions
diff --git a/README.md b/README.md
index 4be0952..8a05aff 100644
--- a/README.md
+++ b/README.md
@@ -63,8 +63,8 @@ Farside's routing is very minimal, with only the following routes:
particular service with the specified path
- Ex: `/libreddit/r/popular` would navigate to `<libreddit instance
URL>/r/popular`
- - If the service provided is actually a URL to a "parent" service
- (i.e. "youtube.com" instead of "piped" or "invidious"), Farside
+ - If the service provided is actually a URL to a "parent" service
+ (i.e. "youtube.com" instead of "piped" or "invidious"), Farside
will determine the correct frontend to use for the specified URL.
- Note that a path is not required. `/libreddit` for example will still
redirect the user to a working libreddit instance
@@ -108,3 +108,6 @@ request per second per IP.
| Name | Purpose |
| -- | -- |
| FARSIDE_TEST | If enabled, bypasses the instance availability check and adds all instances to the pool. |
+| FARSIDE_PORT | The port to run Farside on (default: `4001`) |
+| FARSIDE_REDIS_PORT | The Redis server port to use (default: `6379`, same as the default for Redis) |
+| FARSIDE_SERVICES_JSON | The "services" JSON file to use for selecting instances (default: `services.json`) |
diff --git a/config/config.exs b/config/config.exs
index d1ec18d..11f61d9 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -1,13 +1,10 @@
import Config
config :farside,
- port: 4001,
- redis_conn: "redis://localhost:6379",
update_file: ".update-results",
service_prefix: "service-",
fallback_suffix: "-fallback",
previous_suffix: "-previous",
- services_json: "services.json",
index: "index.eex",
route: "route.eex",
headers: [
diff --git a/config/runtime.exs b/config/runtime.exs
new file mode 100644
index 0000000..e4491ff
--- /dev/null
+++ b/config/runtime.exs
@@ -0,0 +1,6 @@
+import Config
+
+config :farside,
+ port: System.get_env("FARSIDE_PORT", "4001"),
+ redis_conn: "redis://localhost:#{System.get_env("FARSIDE_REDIS_PORT", "6379")}",
+ services_json: System.get_env("FARSIDE_SERVICES_JSON", "services.json")
diff --git a/lib/farside/application.ex b/lib/farside/application.ex
index 9fd6e9d..0ab77ea 100644
--- a/lib/farside/application.ex
+++ b/lib/farside/application.ex
@@ -1,22 +1,27 @@
defmodule Farside.Application do
- @farside_port Application.fetch_env!(:farside, :port)
- @redis_conn Application.fetch_env!(:farside, :redis_conn)
+ #@farside_port Application.fetch_env!(:farside, :port)
+ #@redis_conn Application.fetch_env!(:farside, :redis_conn)
@moduledoc false
use Application
@impl true
def start(_type, _args) do
+ redis_conn = Application.fetch_env!(:farside, :redis_conn)
+ farside_port = Application.fetch_env!(:farside, :port)
+ IO.puts "Runing on http://localhost:#{farside_port}"
+ IO.puts "Redis conn: #{redis_conn}"
+
children = [
Plug.Cowboy.child_spec(
scheme: :http,
plug: Farside.Router,
options: [
- port: @farside_port
+ port: String.to_integer(farside_port)
]
),
{PlugAttack.Storage.Ets, name: Farside.Throttle.Storage, clean_period: 60_000},
- {Redix, {@redis_conn, [name: :redix]}},
+ {Redix, {redis_conn, [name: :redix]}},
Farside.Scheduler,
Farside.Server
]
diff --git a/lib/farside/instances.ex b/lib/farside/instances.ex
index 625bbb4..f37f306 100644
--- a/lib/farside/instances.ex
+++ b/lib/farside/instances.ex
@@ -1,7 +1,6 @@
defmodule Farside.Instances do
@fallback_suffix Application.fetch_env!(:farside, :fallback_suffix)
@update_file Application.fetch_env!(:farside, :update_file)
- @services_json Application.fetch_env!(:farside, :services_json)
@service_prefix Application.fetch_env!(:farside, :service_prefix)
@headers Application.fetch_env!(:farside, :headers)
@queries Application.fetch_env!(:farside, :queries)
@@ -42,7 +41,8 @@ defmodule Farside.Instances do
end
def update() do
- {:ok, file} = File.read(@services_json)
+ services_json = Application.fetch_env!(:farside, :services_json)
+ {:ok, file} = File.read(services_json)
{:ok, json} = Jason.decode(file)
# Loop through all instances and check each for availability
diff --git a/test/farside_test.exs b/test/farside_test.exs
index 25828c6..d47396e 100644
--- a/test/farside_test.exs
+++ b/test/farside_test.exs
@@ -1,5 +1,4 @@
defmodule FarsideTest do
- @services_json Application.fetch_env!(:farside, :services_json)
use ExUnit.Case
use Plug.Test
@@ -49,7 +48,8 @@ defmodule FarsideTest do
end
test "/:service" do
- {:ok, file} = File.read(@services_json)
+ services_json = Application.fetch_env!(:farside, :services_json)
+ {:ok, file} = File.read(services_json)
{:ok, service_list} = Jason.decode(file)
service_names =