summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Busby <contact@benbusby.com>2023-04-05 13:04:17 -0600
committerBen Busby <contact@benbusby.com>2023-04-05 13:04:17 -0600
commitbb3a01f8c1cd182afd92e677898dedd8ef79136e (patch)
tree37ce4c2400974133f62a83c4ec4c6f8833123bf1
parent65c12769bfb2275c9398e246ec2f4ccbba556fb7 (diff)
downloadfarside-bb3a01f8c1cd182afd92e677898dedd8ef79136e.tar.gz
Move SearXNG instance check to nightly build
searx.space includes metrics for instance uptime, which is now implemented as part of farside's nightly build. Accordingly, the instance availability task built into farside now excludes searxng instances. Closes #95
-rw-r--r--.github/workflows/update-instances.yml1
-rw-r--r--lib/farside/instances.ex34
2 files changed, 22 insertions, 13 deletions
diff --git a/.github/workflows/update-instances.yml b/.github/workflows/update-instances.yml
index 1416b46..3eb126f 100644
--- a/.github/workflows/update-instances.yml
+++ b/.github/workflows/update-instances.yml
@@ -93,6 +93,7 @@ jobs:
select(.value.version | . != null) |
select(.value.network.asn_privacy == 0) |
select(.value.http.error == null) |
+ select(.value.uptime.uptimeDay >= 99) |
select(.value.tls.grade == "A+" or .value.tls.grade == "A") |
select(.value.http.grade == "A+" or .value.http.grade == "A") |
select(.value.html.grade == "V" or .value.html.grade == "F") |
diff --git a/lib/farside/instances.ex b/lib/farside/instances.ex
index c358d09..7b743a9 100644
--- a/lib/farside/instances.ex
+++ b/lib/farside/instances.ex
@@ -7,6 +7,10 @@ defmodule Farside.Instances do
@debug_header "======== "
@debug_spacer " "
+ # SearXNG instance uptimes are inspected as part of the nightly Farside build,
+ # and should not be included in the constant periodic update.
+ @skip_service_updates ["searxng"]
+
def sync() do
File.rename(@update_file, "#{@update_file}-prev")
update()
@@ -51,19 +55,23 @@ defmodule Farside.Instances do
IO.puts("#{@debug_header}#{service.type}")
- result =
- Enum.filter(service.instances, fn instance_url ->
- request_url =
- instance_url <>
- EEx.eval_string(
- service.test_url,
- query: Enum.random(@queries)
- )
-
- IO.puts("#{@debug_spacer}#{request_url}")
-
- request(request_url) == :good
- end)
+ result = cond do
+ Enum.member?(@skip_service_updates, service.type) ->
+ service.instances
+ true ->
+ Enum.filter(service.instances, fn instance_url ->
+ request_url =
+ instance_url <>
+ EEx.eval_string(
+ service.test_url,
+ query: Enum.random(@queries)
+ )
+
+ IO.puts("#{@debug_spacer}#{request_url}")
+
+ request(request_url) == :good
+ end)
+ end
add_to_db(service, result)
log_results(service.type, result)