Compare commits

...

1125 Commits
v0.1.0 ... main

Author SHA1 Message Date
github-actions
6822d25fd6 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-14 00:16:00 +00:00
github-actions
26b6a0d53b [CI] Auto update instances
Some checks are pending
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-13 00:17:01 +00:00
github-actions
ece6e525ef [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-12 00:16:05 +00:00
github-actions
1525c5df0a [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-11 00:16:59 +00:00
github-actions
a8c11f05e7 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
2025-03-10 00:15:31 +00:00
github-actions
e00ab4d092 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-09 00:15:39 +00:00
github-actions
88f68ca37e [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
2025-03-08 00:13:34 +00:00
github-actions
25b4ccc6d3 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-07 00:15:52 +00:00
github-actions
ecf9baaba6 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-06 00:17:11 +00:00
github-actions
d1c724905f [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-05 00:17:17 +00:00
github-actions
ea20a3f909 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-04 00:16:19 +00:00
github-actions
3e2ae8117a [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-03 00:17:32 +00:00
github-actions
deb5cd20cd [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-02 00:17:00 +00:00
github-actions
90f2fe404e [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-03-01 00:17:44 +00:00
github-actions
76d20b1aa6 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-28 00:18:26 +00:00
github-actions
8d9089a592 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-27 00:18:03 +00:00
Ben Busby
6970db9c5b
Run cron init in goroutine
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
Cron init blocks the server from starting until it finishes, which is
not ideal.
2025-02-26 12:38:18 -07:00
Ben Busby
d15e05d39e
Allow skipping instance checks for particular services
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
Services like searxng don't need to have instance checks performed since
the nightly cron task filters out the instances already.
2025-02-25 17:21:05 -07:00
github-actions
99e5dfcac2 [CI] Auto update instances 2025-02-26 00:18:50 +00:00
Ben Busby
356ea3b3c2
Use originally requested service if not using URL redirect
The specified service (i.e. whoogle) should be used for the redirect if
explicitly stated, rather than randomly fetching an instance for the
provided URL.

For instance:

- farside.link/https://google.com/search?q=balatro can redirect to a
  whoogle or searxng instance.
- farside.link/whoogle/search?q=balatro will always redirect to a
  whoogle instance.
2025-02-25 16:42:23 -07:00
Ben Busby
e2ac4a20f8
Add missing tent mapping 2025-02-25 16:01:05 -07:00
Ben Busby
f3ab726cec
Add missing handling for 4get and LibreY, remove LibreX 2025-02-25 15:38:33 -07:00
Ben Busby
4b19ad5228
Include original url query in redirect
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
Query params were previously getting ignored in farside redirects, this
updates the routing to append the original url query params to the end
of the redirected instance.
2025-02-25 11:20:13 -07:00
Will
37b0df5c36
Add missing services from services.json to mappings (#190) 2025-02-25 11:07:25 -07:00
github-actions
8978b9bc73 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-25 00:17:40 +00:00
github-actions
b71075216e [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-24 00:16:23 +00:00
github-actions
deb1cd62ae [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-23 00:17:30 +00:00
github-actions
ef2e71971f [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-22 00:17:06 +00:00
github-actions
746f8ec0bc [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-21 00:16:02 +00:00
github-actions
fc93ddbb3e [CI] Auto update instances
Some checks failed
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
2025-02-20 00:16:32 +00:00
github-actions
b961c60041 [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
/ update-instances (push) Has been cancelled
2025-02-19 00:16:21 +00:00
github-actions
22c172f27a [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
/ update-instances (push) Has been cancelled
2025-02-18 00:17:42 +00:00
github-actions
c948bebd7c [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-17 00:17:17 +00:00
github-actions
c12f8c8435 [CI] Auto update instances 2025-02-16 00:18:50 +00:00
github-actions
900a043e6c [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
2025-02-15 00:17:31 +00:00
github-actions
8b8baca99a [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
/ update-instances (push) Has been cancelled
2025-02-14 00:16:39 +00:00
github-actions
62875f6edc [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
2025-02-13 00:16:26 +00:00
github-actions
b0879526fd [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-12 00:16:53 +00:00
github-actions
3490639f03 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-11 00:17:23 +00:00
github-actions
e4fdef870f [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-10 00:17:44 +00:00
github-actions
481c348891 [CI] Auto update instances
Some checks are pending
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
2025-02-09 00:19:27 +00:00
github-actions
f492e5bb18 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-08 00:16:41 +00:00
github-actions
d5f1aa4575 [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
2025-02-07 00:18:30 +00:00
github-actions
f946a2d977 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-06 00:17:59 +00:00
github-actions
44f9f9e59f [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-05 00:17:46 +00:00
github-actions
42afcb4b9f [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-04 00:21:17 +00:00
github-actions
d42668a621 [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
2025-02-03 00:17:41 +00:00
github-actions
c02ebcebfb [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
/ update-instances (push) Has been cancelled
2025-02-02 00:17:46 +00:00
github-actions
fd723b0b05 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-02-01 00:17:20 +00:00
github-actions
70d06396e4 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-01-31 00:15:37 +00:00
github-actions
4d9824e8a1 [CI] Auto update instances
Some checks failed
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
/ update-instances (push) Has been cancelled
2025-01-30 00:16:40 +00:00
Ben Busby
4ec94a141d
Add cross compiler script [skip ci] 2025-01-29 12:45:56 -07:00
Ben Busby
6682d5c59a
Update "last updated" time when fetching from primary node
Fetches from the primary farside node were not updating the "last
updated" time, and would only show a placeholder UTC timestamp.
2025-01-29 12:39:10 -07:00
github-actions
f140cdfd66 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-01-29 00:16:20 +00:00
Ben Busby
627f8a8b2e
Add search engine links to readme [skip ci]
Adds links for Kagi and Whoogle
2025-01-27 12:56:00 -07:00
Ben Busby
e0044ed885
Update readme [skip ci]
Adds search integration docs to readme
2025-01-27 12:53:57 -07:00
Ben Busby
56a4202827
Update tests 2025-01-27 12:48:18 -07:00
Ben Busby
6e64a93fd1
Update breezewiki routing behavior, update readme
BreezeWiki requires the subdomain of a fandom link to be preserved when
routing, otherwise the redirect doesn't work correctly.

Cleaned up readme examples
2025-01-27 12:17:20 -07:00
github-actions
3d52cddc66 [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Has been cancelled
Tests / test (1.21.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.21.x, windows-latest) (push) Has been cancelled
Tests / test (1.22.x, macos-latest) (push) Has been cancelled
Tests / test (1.22.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.22.x, windows-latest) (push) Has been cancelled
Tests / test (1.23.x, macos-latest) (push) Has been cancelled
Tests / test (1.23.x, ubuntu-latest) (push) Has been cancelled
Tests / test (1.23.x, windows-latest) (push) Has been cancelled
2025-01-27 00:17:47 +00:00
github-actions
dd97e12edf [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-01-26 00:17:39 +00:00
github-actions
1b5cec37eb [CI] Auto update instances
Some checks failed
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
/ update-instances (push) Has been cancelled
2025-01-25 00:17:13 +00:00
github-actions
f8017075e7 [CI] Auto update instances
Some checks are pending
Tests / test (1.21.x, windows-latest) (push) Waiting to run
Tests / test (1.22.x, macos-latest) (push) Waiting to run
Tests / test (1.22.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.22.x, windows-latest) (push) Waiting to run
Tests / test (1.23.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, macos-latest) (push) Waiting to run
Tests / test (1.21.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, ubuntu-latest) (push) Waiting to run
Tests / test (1.23.x, windows-latest) (push) Waiting to run
2025-01-24 00:17:14 +00:00
github-actions
680b2d09d3 [CI] Auto update instances 2025-01-23 00:17:22 +00:00
Namhyeon, Go
4a673ed15a
Add translate.catswords.net instance (#185) 2025-01-22 14:52:42 -07:00
JdM
891aaf9c61
Add futureofthe.tech 4get instance (#188)
* Update services-full.json

* Update services.json
2025-01-22 14:52:17 -07:00
Ben Busby
6ae7c60dd1
Run initial service fetch in goroutine 2025-01-22 14:51:00 -07:00
github-actions
603a355449 [CI] Auto update instances 2025-01-22 00:15:54 +00:00
Ben Busby
b5bad4defc
Rewrite project, add daily update of services list
The project was rewritten from Elixir to Go, primarily because:

- I don't write Elixir anymore and don't want to maintain a project in a
  language I no longer write
- I already write Go for other projects, including my day job, so it's
  a safer bet for a project that I want to maintain long term
- Go allows me to build portable executables that will make it easier
  for others to run farside on their own machines

The Go version of Farsside also has a built in task to fetch the latest
services{-full}.json file from the repo and ingest it, which makes
running a farside server a lot simpler.

It also automatically fetches the latest instance state from
https://farside.link unless configured as a primary farside node, which
will allow others to use farside without increasing traffic to all
instances that are queried by farside (just to the farside node itself).
2025-01-21 13:46:29 -07:00
github-actions
e0e395f3c8 [CI] Auto update instances 2025-01-20 00:17:29 +00:00
github-actions
cdd032c9de [CI] Auto update instances 2025-01-19 00:18:35 +00:00
github-actions
939e00d852 [CI] Auto update instances 2025-01-18 00:15:58 +00:00
github-actions
a8e59789d2 [CI] Auto update instances 2025-01-16 00:18:06 +00:00
github-actions
ff2d9fb197 [CI] Auto update instances 2025-01-15 00:17:38 +00:00
github-actions
398b3388c1 [CI] Auto update instances 2025-01-13 00:17:11 +00:00
github-actions
4c8f70023e [CI] Auto update instances 2025-01-12 00:18:42 +00:00
github-actions
533023bdf1 [CI] Auto update instances 2025-01-11 00:16:23 +00:00
github-actions
033ad28242 [CI] Auto update instances 2025-01-10 00:16:52 +00:00
github-actions
731c9d0ec4 [CI] Auto update instances 2025-01-09 00:19:09 +00:00
github-actions
8bc5b3559b [CI] Auto update instances 2025-01-08 00:18:36 +00:00
github-actions
5118faf7ce [CI] Auto update instances 2025-01-07 00:17:07 +00:00
github-actions
0f33deefb1 [CI] Auto update instances 2025-01-06 00:18:16 +00:00
github-actions
dc188ec6ba [CI] Auto update instances 2025-01-05 00:18:24 +00:00
github-actions
0afad0aff6 [CI] Auto update instances 2025-01-04 00:20:09 +00:00
github-actions
7cac76e50e [CI] Auto update instances 2025-01-03 00:16:59 +00:00
github-actions
560f46a644 [CI] Auto update instances 2025-01-02 00:18:09 +00:00
github-actions
276170655a [CI] Auto update instances 2025-01-01 00:19:05 +00:00
github-actions
0d44292869 [CI] Auto update instances 2024-12-31 00:16:40 +00:00
github-actions
ff953fb268 [CI] Auto update instances 2024-12-30 00:17:23 +00:00
github-actions
68ba9e037a [CI] Auto update instances 2024-12-29 00:18:14 +00:00
github-actions
9baa4de191 [CI] Auto update instances 2024-12-28 00:17:00 +00:00
github-actions
28f3238579 [CI] Auto update instances 2024-12-27 00:17:05 +00:00
github-actions
b79b02a78b [CI] Auto update instances 2024-12-26 00:17:27 +00:00
github-actions
053b65049e [CI] Auto update instances 2024-12-25 00:19:42 +00:00
github-actions
c526ff57f5 [CI] Auto update instances 2024-12-24 00:17:53 +00:00
github-actions
de852934ae [CI] Auto update instances 2024-12-23 00:18:54 +00:00
github-actions
1e09a3894c [CI] Auto update instances 2024-12-22 00:19:32 +00:00
github-actions
11aa553faf [CI] Auto update instances 2024-12-21 00:17:46 +00:00
github-actions
c33c64eec0 [CI] Auto update instances 2024-12-20 00:16:56 +00:00
github-actions
680fe9197d [CI] Auto update instances 2024-12-19 00:20:03 +00:00
github-actions
58d567f092 [CI] Auto update instances 2024-12-18 00:18:33 +00:00
github-actions
6f3bbced41 [CI] Auto update instances 2024-12-17 00:18:02 +00:00
github-actions
c7df4ca588 [CI] Auto update instances 2024-12-03 00:18:14 +00:00
github-actions
f9e83bfcb6 [CI] Auto update instances 2024-12-02 00:18:12 +00:00
github-actions
69b7bdccea [CI] Auto update instances 2024-12-01 00:20:20 +00:00
github-actions
4251747676 [CI] Auto update instances 2024-11-30 00:17:39 +00:00
github-actions
020f110b88 [CI] Auto update instances 2024-11-29 00:17:36 +00:00
github-actions
feea27a23b [CI] Auto update instances 2024-11-28 00:17:40 +00:00
github-actions
94facbe9f8 [CI] Auto update instances 2024-11-27 00:16:56 +00:00
github-actions
d94f0097ef [CI] Auto update instances 2024-11-26 00:17:23 +00:00
github-actions
77e0eff834 [CI] Auto update instances 2024-11-25 00:16:50 +00:00
github-actions
430c65eb18 [CI] Auto update instances 2024-11-24 00:19:26 +00:00
github-actions
28580e2afd [CI] Auto update instances 2024-11-23 00:17:10 +00:00
github-actions
72d7e749a7 [CI] Auto update instances 2024-11-22 00:19:45 +00:00
github-actions
9624d67cc0 [CI] Auto update instances 2024-11-21 00:17:57 +00:00
github-actions
9ed8648f28 [CI] Auto update instances 2024-11-20 00:17:36 +00:00
github-actions
ea93036f95 [CI] Auto update instances 2024-11-19 00:18:46 +00:00
github-actions
4f794e7a77 [CI] Auto update instances 2024-11-18 00:18:01 +00:00
github-actions
1930e6ebd6 [CI] Auto update instances 2024-11-17 00:17:57 +00:00
github-actions
62aeef1959 [CI] Auto update instances 2024-11-16 00:17:42 +00:00
github-actions
c7f4e034d5 [CI] Auto update instances 2024-11-15 00:17:33 +00:00
github-actions
b1fab86303 [CI] Auto update instances 2024-11-13 00:17:00 +00:00
github-actions
3288aa12b4 [CI] Auto update instances 2024-11-12 00:18:50 +00:00
github-actions
a54500e871 [CI] Auto update instances 2024-11-11 00:18:18 +00:00
github-actions
9bad15565a [CI] Auto update instances 2024-11-10 00:19:07 +00:00
github-actions
0b66267145 [CI] Auto update instances 2024-11-09 00:15:57 +00:00
github-actions
0639ef96f6 [CI] Auto update instances 2024-11-08 00:15:54 +00:00
github-actions
878ada652a [CI] Auto update instances 2024-11-07 00:17:47 +00:00
github-actions
0c295d136f [CI] Auto update instances 2024-11-06 00:17:31 +00:00
github-actions
11c31a9883 [CI] Auto update instances 2024-11-05 00:17:08 +00:00
github-actions
96f75f4c37 [CI] Auto update instances 2024-11-04 00:18:16 +00:00
github-actions
784db09c59 [CI] Auto update instances 2024-11-03 00:18:24 +00:00
github-actions
aa2b311159 [CI] Auto update instances 2024-11-01 00:20:19 +00:00
github-actions
4467e0f43a [CI] Auto update instances 2024-10-31 00:19:17 +00:00
github-actions
4ef65c60ef [CI] Auto update instances 2024-10-30 00:17:46 +00:00
github-actions
bc0961e3ef [CI] Auto update instances 2024-10-29 00:16:57 +00:00
github-actions
c7820be110 [CI] Auto update instances 2024-10-28 00:18:02 +00:00
github-actions
8bf827587e [CI] Auto update instances 2024-10-27 00:18:50 +00:00
github-actions
b3a854aff6 [CI] Auto update instances 2024-10-26 00:18:23 +00:00
github-actions
a8a1287264 [CI] Auto update instances 2024-10-25 00:17:09 +00:00
github-actions
b2bcaa913c [CI] Auto update instances 2024-10-24 00:17:53 +00:00
github-actions
2997ebfa09 [CI] Auto update instances 2024-10-23 00:18:09 +00:00
github-actions
2db58b73a6 [CI] Auto update instances 2024-10-22 00:17:24 +00:00
github-actions
29b548e37f [CI] Auto update instances 2024-10-20 00:17:40 +00:00
github-actions
f5795d84e5 [CI] Auto update instances 2024-10-19 00:16:06 +00:00
github-actions
e3fc66e10d [CI] Auto update instances 2024-10-18 00:16:18 +00:00
github-actions
c2b27415c3 [CI] Auto update instances 2024-10-17 00:17:06 +00:00
github-actions
9fae6a0153 [CI] Auto update instances 2024-10-16 00:15:59 +00:00
github-actions
f44d17e86a [CI] Auto update instances 2024-10-15 00:16:13 +00:00
github-actions
0a1b832df2 [CI] Auto update instances 2024-10-14 00:16:41 +00:00
github-actions
b68856948d [CI] Auto update instances 2024-10-13 00:17:26 +00:00
github-actions
75b4d0b068 [CI] Auto update instances 2024-10-12 00:16:43 +00:00
github-actions
487326958b [CI] Auto update instances 2024-10-11 00:18:52 +00:00
github-actions
2387e9c06d [CI] Auto update instances 2024-10-10 00:17:12 +00:00
github-actions
d0bdee1659 [CI] Auto update instances 2024-10-09 00:17:22 +00:00
github-actions
2490f861fc [CI] Auto update instances 2024-10-08 00:16:17 +00:00
github-actions
32d8018c0f [CI] Auto update instances 2024-10-07 00:18:59 +00:00
github-actions
fc90a9c146 [CI] Auto update instances 2024-10-06 00:19:30 +00:00
github-actions
886efac07e [CI] Auto update instances 2024-10-05 00:18:48 +00:00
github-actions
950716218f [CI] Auto update instances 2024-10-04 00:18:15 +00:00
github-actions
e9796603ee [CI] Auto update instances 2024-10-03 00:18:35 +00:00
github-actions
74dca941cc [CI] Auto update instances 2024-10-02 00:18:28 +00:00
github-actions
4e7b0768d6 [CI] Auto update instances 2024-10-01 00:20:53 +00:00
butyoutried
217836a857
Remove expired palveluntarjoaja.eu (#176) 2024-09-30 12:31:26 -06:00
nyuuzyou
5ab2675714
Add ducks.party instances (#173) 2024-09-30 12:30:56 -06:00
Hendursaga
24256ee03c
Add owo.si instances (#172) 2024-09-30 12:26:25 -06:00
github-actions
7095231f66 [CI] Auto update instances 2024-09-30 00:19:46 +00:00
github-actions
b59213d860 [CI] Auto update instances 2024-09-29 00:19:37 +00:00
github-actions
d6e4b4a8de [CI] Auto update instances 2024-09-28 00:17:30 +00:00
github-actions
b3ce1cf39a [CI] Auto update instances 2024-09-27 00:17:13 +00:00
github-actions
6701635847 [CI] Auto update instances 2024-09-26 00:16:55 +00:00
github-actions
6e4e54268e [CI] Auto update instances 2024-09-25 00:18:20 +00:00
github-actions
f201f82c75 [CI] Auto update instances 2024-09-24 00:17:36 +00:00
github-actions
7bcd933ec6 [CI] Auto update instances 2024-09-23 00:18:21 +00:00
github-actions
16f8525da2 [CI] Auto update instances 2024-09-22 00:19:12 +00:00
github-actions
5bedf6801e [CI] Auto update instances 2024-09-21 00:17:49 +00:00
github-actions
462797be00 [CI] Auto update instances 2024-09-20 00:18:15 +00:00
github-actions
cbc71005d1 [CI] Auto update instances 2024-09-18 00:18:11 +00:00
github-actions
acd4f25385 [CI] Auto update instances 2024-09-02 00:16:28 +00:00
github-actions
5a69963515 [CI] Auto update instances 2024-09-01 00:19:27 +00:00
github-actions
2c780a9a01 [CI] Auto update instances 2024-08-31 00:15:47 +00:00
github-actions
1794783809 [CI] Auto update instances 2024-08-30 00:16:09 +00:00
github-actions
9cf723768f [CI] Auto update instances 2024-08-29 00:15:53 +00:00
github-actions
f8d180b732 [CI] Auto update instances 2024-08-28 00:16:30 +00:00
github-actions
61212623dc [CI] Auto update instances 2024-08-27 00:16:56 +00:00
github-actions
429d9ac6c4 [CI] Auto update instances 2024-08-26 00:16:12 +00:00
github-actions
578e1b1c8c [CI] Auto update instances 2024-08-25 00:18:28 +00:00
github-actions
b708cf7ce5 [CI] Auto update instances 2024-08-24 00:15:45 +00:00
github-actions
aac842d5dd [CI] Auto update instances 2024-08-23 00:15:48 +00:00
github-actions
00eef25205 [CI] Auto update instances 2024-08-22 00:17:23 +00:00
github-actions
e36062de90 [CI] Auto update instances 2024-08-21 00:15:51 +00:00
github-actions
cc06f7c7aa [CI] Auto update instances 2024-08-20 00:16:26 +00:00
github-actions
d433782527 [CI] Auto update instances 2024-08-19 00:17:02 +00:00
github-actions
af304afed4 [CI] Auto update instances 2024-08-18 00:17:58 +00:00
github-actions
ae90e05866 [CI] Auto update instances 2024-08-17 00:16:07 +00:00
github-actions
8589f35041 [CI] Auto update instances 2024-08-16 00:16:33 +00:00
github-actions
b947014d7e [CI] Auto update instances 2024-08-15 00:16:50 +00:00
github-actions
229e5398be [CI] Auto update instances 2024-08-14 00:17:20 +00:00
github-actions
288b3457a8 [CI] Auto update instances 2024-08-13 00:17:42 +00:00
github-actions
eaa2729fe4 [CI] Auto update instances 2024-08-12 00:16:54 +00:00
github-actions
5e28da7224 [CI] Auto update instances 2024-08-11 00:19:00 +00:00
github-actions
b7e9480e8e [CI] Auto update instances 2024-08-10 00:16:50 +00:00
github-actions
5322502c3d [CI] Auto update instances 2024-08-09 00:16:25 +00:00
github-actions
d635f38f8b [CI] Auto update instances 2024-08-08 00:17:13 +00:00
github-actions
d9497a2bd1 [CI] Auto update instances 2024-08-07 00:16:52 +00:00
github-actions
17f3d68181 [CI] Auto update instances 2024-08-06 00:18:43 +00:00
github-actions
72b6eba91e [CI] Auto update instances 2024-08-05 00:16:59 +00:00
github-actions
2f7a57ff39 [CI] Auto update instances 2024-08-04 00:19:23 +00:00
github-actions
1cf1be3734 [CI] Auto update instances 2024-08-03 00:18:43 +00:00
github-actions
1f5b4e6b6f [CI] Auto update instances 2024-08-02 00:17:38 +00:00
github-actions
32ab837f19 [CI] Auto update instances 2024-08-01 00:21:18 +00:00
github-actions
de2e7e3a97 [CI] Auto update instances 2024-07-31 00:15:50 +00:00
github-actions
cfef570a0e [CI] Auto update instances 2024-07-30 00:17:02 +00:00
github-actions
ba27e4a2df [CI] Auto update instances 2024-07-29 00:17:55 +00:00
github-actions
8047f9ef14 [CI] Auto update instances 2024-07-28 00:20:13 +00:00
github-actions
e1b6904cc8 [CI] Auto update instances 2024-07-27 00:16:58 +00:00
github-actions
aa7984a872 [CI] Auto update instances 2024-07-26 00:15:51 +00:00
github-actions
182aa1ca10 [CI] Auto update instances 2024-07-25 00:17:31 +00:00
github-actions
9faab7b27e [CI] Auto update instances 2024-07-24 00:17:00 +00:00
github-actions
ee6dd7de92 [CI] Auto update instances 2024-07-23 00:17:37 +00:00
github-actions
ad4a607efa [CI] Auto update instances 2024-07-22 00:17:04 +00:00
github-actions
e00ece44bd [CI] Auto update instances 2024-07-21 00:18:59 +00:00
github-actions
53fbe97229 [CI] Auto update instances 2024-07-20 00:17:20 +00:00
github-actions
c25c05cbb1 [CI] Auto update instances 2024-07-19 00:17:16 +00:00
github-actions
a5b2432e45 [CI] Auto update instances 2024-07-18 00:15:06 +00:00
github-actions
f41d500072 [CI] Auto update instances 2024-07-17 00:17:48 +00:00
github-actions
e9f7da9a90 [CI] Auto update instances 2024-07-16 00:16:44 +00:00
github-actions
fa576e3241 [CI] Auto update instances 2024-07-15 00:16:24 +00:00
github-actions
08d8d3004e [CI] Auto update instances 2024-07-14 00:16:50 +00:00
github-actions
766181ac5e [CI] Auto update instances 2024-07-13 00:16:24 +00:00
github-actions
2c415c6436 [CI] Auto update instances 2024-07-12 00:16:23 +00:00
github-actions
33363bf40a [CI] Auto update instances 2024-07-11 00:15:49 +00:00
github-actions
5e721db775 [CI] Auto update instances 2024-07-10 00:15:45 +00:00
github-actions
40ef9bb91e [CI] Auto update instances 2024-07-09 00:14:53 +00:00
github-actions
8f259ee0b9 [CI] Auto update instances 2024-07-08 00:15:54 +00:00
github-actions
17a7399b8d [CI] Auto update instances 2024-07-07 00:16:43 +00:00
github-actions
fe68bec43d [CI] Auto update instances 2024-07-06 00:15:12 +00:00
github-actions
97f2c5a0a3 [CI] Auto update instances 2024-07-05 00:16:31 +00:00
github-actions
079b36f945 [CI] Auto update instances 2024-07-04 00:16:32 +00:00
github-actions
5442e9782a [CI] Auto update instances 2024-07-03 00:15:21 +00:00
github-actions
e9e4c7a121 [CI] Auto update instances 2024-07-02 00:15:51 +00:00
github-actions
1df693b0cc [CI] Auto update instances 2024-07-01 00:16:38 +00:00
github-actions
a36a771c23 [CI] Auto update instances 2024-06-30 00:17:09 +00:00
github-actions
37644da0b1 [CI] Auto update instances 2024-06-29 00:15:14 +00:00
github-actions
fab0590040 [CI] Auto update instances 2024-06-28 00:15:01 +00:00
github-actions
be878dc39c [CI] Auto update instances 2024-06-27 00:14:37 +00:00
github-actions
a97666c7e3 [CI] Auto update instances 2024-06-26 00:14:45 +00:00
github-actions
e4bd29c901 [CI] Auto update instances 2024-06-25 00:15:23 +00:00
github-actions
f31aba3401 [CI] Auto update instances 2024-06-24 00:16:25 +00:00
github-actions
987aee55c0 [CI] Auto update instances 2024-06-23 00:16:43 +00:00
github-actions
c4c35134b1 [CI] Auto update instances 2024-06-22 00:16:16 +00:00
github-actions
f06c65b08a [CI] Auto update instances 2024-06-21 00:16:00 +00:00
github-actions
86cade1563 [CI] Auto update instances 2024-06-20 00:15:42 +00:00
github-actions
f3370e8345 [CI] Auto update instances 2024-06-19 00:14:49 +00:00
github-actions
717fa74ec3 [CI] Auto update instances 2024-06-18 00:15:04 +00:00
github-actions
cd83780e9a [CI] Auto update instances 2024-06-17 00:15:41 +00:00
github-actions
124b9932bd [CI] Auto update instances 2024-06-16 00:16:22 +00:00
github-actions
95e604f568 [CI] Auto update instances 2024-06-15 00:16:32 +00:00
github-actions
e48e486857 [CI] Auto update instances 2024-06-14 00:15:54 +00:00
github-actions
70aa23d5b7 [CI] Auto update instances 2024-06-13 00:16:27 +00:00
github-actions
11ecea50d4 [CI] Auto update instances 2024-06-12 00:16:06 +00:00
github-actions
f17a20ed6d [CI] Auto update instances 2024-06-11 00:15:39 +00:00
github-actions
0b1e61abb4 [CI] Auto update instances 2024-06-10 00:15:54 +00:00
github-actions
9eb8fab43c [CI] Auto update instances 2024-06-09 00:17:40 +00:00
github-actions
39b5b3c02b [CI] Auto update instances 2024-06-08 00:16:21 +00:00
github-actions
d05c479bd0 [CI] Auto update instances 2024-06-07 00:16:25 +00:00
github-actions
a7aa1bcc29 [CI] Auto update instances 2024-06-06 00:16:07 +00:00
github-actions
5103d32bf2 [CI] Auto update instances 2024-06-05 00:15:37 +00:00
github-actions
f72c7fa126 [CI] Auto update instances 2024-06-04 00:15:45 +00:00
github-actions
251c7ec264 [CI] Auto update instances 2024-06-03 00:16:33 +00:00
github-actions
39cfc7e4a1 [CI] Auto update instances 2024-06-02 00:15:15 +00:00
github-actions
9ec44c4249 [CI] Auto update instances 2024-06-01 00:15:42 +00:00
github-actions
14a92436bb [CI] Auto update instances 2024-05-31 00:14:02 +00:00
github-actions
4349767f67 [CI] Auto update instances 2024-05-29 00:16:22 +00:00
github-actions
9ed8801fd8 [CI] Auto update instances 2024-05-28 00:14:35 +00:00
github-actions
22faab6d15 [CI] Auto update instances 2024-05-27 00:15:01 +00:00
github-actions
155f0ba004 [CI] Auto update instances 2024-05-26 00:16:39 +00:00
github-actions
594f6bab59 [CI] Auto update instances 2024-05-25 00:16:52 +00:00
github-actions
19837d973b [CI] Auto update instances 2024-05-24 00:15:55 +00:00
github-actions
888136f907 [CI] Auto update instances 2024-05-23 00:15:31 +00:00
github-actions
fa57890f5d [CI] Auto update instances 2024-05-22 00:13:59 +00:00
github-actions
c28e7a60e6 [CI] Auto update instances 2024-05-21 00:14:36 +00:00
github-actions
8a89797451 [CI] Auto update instances 2024-05-20 00:14:08 +00:00
github-actions
795d1cdbb9 [CI] Auto update instances 2024-05-19 00:16:30 +00:00
github-actions
9fe04c0f65 [CI] Auto update instances 2024-05-18 00:13:36 +00:00
github-actions
6a4218055f [CI] Auto update instances 2024-05-17 00:15:52 +00:00
github-actions
c0c47c64b1 [CI] Auto update instances 2024-05-16 00:14:40 +00:00
github-actions
e119fa9501 [CI] Auto update instances 2024-05-15 00:14:52 +00:00
github-actions
574964bf53 [CI] Auto update instances 2024-05-14 00:14:41 +00:00
github-actions
67f3dcea94 [CI] Auto update instances 2024-05-13 00:15:11 +00:00
github-actions
63ea7fc1d3 [CI] Auto update instances 2024-05-12 00:14:55 +00:00
github-actions
6a135cdfbb [CI] Auto update instances 2024-05-11 00:14:09 +00:00
github-actions
c15b1adc57 [CI] Auto update instances 2024-05-10 00:14:18 +00:00
github-actions
d0cdd3b60c [CI] Auto update instances 2024-05-09 00:14:25 +00:00
github-actions
c4b71c6999 [CI] Auto update instances 2024-05-08 00:13:56 +00:00
github-actions
81f21aded1 [CI] Auto update instances 2024-05-07 00:13:49 +00:00
github-actions
1744cbede3 [CI] Auto update instances 2024-05-06 00:16:24 +00:00
github-actions
5b3be48111 [CI] Auto update instances 2024-05-05 00:15:58 +00:00
github-actions
f510591296 [CI] Auto update instances 2024-05-04 00:13:54 +00:00
github-actions
7e482279a5 [CI] Auto update instances 2024-05-03 00:14:53 +00:00
github-actions
3ce3538562 [CI] Auto update instances 2024-05-02 00:14:08 +00:00
github-actions
805d946d37 [CI] Auto update instances 2024-05-01 00:14:50 +00:00
github-actions
36e55d67cc [CI] Auto update instances 2024-04-30 00:14:07 +00:00
github-actions
88963cbcd9 [CI] Auto update instances 2024-04-29 00:14:06 +00:00
github-actions
b60765e45d [CI] Auto update instances 2024-04-28 00:16:40 +00:00
github-actions
85a827f6ee [CI] Auto update instances 2024-04-27 00:15:09 +00:00
github-actions
29ed0cfc4f [CI] Auto update instances 2024-04-26 00:14:21 +00:00
github-actions
5fe7146cc2 [CI] Auto update instances 2024-04-24 00:15:03 +00:00
github-actions
015ddca4c4 [CI] Auto update instances 2024-04-23 00:15:07 +00:00
github-actions
1d5bc03888 [CI] Auto update instances 2024-04-22 00:14:35 +00:00
github-actions
f49c5965b6 [CI] Auto update instances 2024-04-21 00:16:25 +00:00
github-actions
d597c3e561 [CI] Auto update instances 2024-04-20 00:14:00 +00:00
Sunny
818f9f360d
Add support for Tent (#171)
Added support for Bandcamp front-end Tent

No regex, as Bandcamp URLs don't 1:1 translate to Tent URLs
2024-04-19 12:16:41 -06:00
Newcool1230
2e449257d6
Remove il.ax and encrypted-data.xyz instances (#167)
* Removed `il.ax` domain expired

* Removed `encrypted-data.xyz` domain expired
2024-04-19 12:14:18 -06:00
Ben Busby
4081ab63ce
Skip nitter in tests
Nitter has been gone for a while, so it's now excluded from tests
related to redirecting functionality. Since other instances occasionally
pop up still, it's being kept in Farside for now.
2024-04-19 12:12:43 -06:00
Hendursaga
5dcc7a2041
Remove st.odyssey346.dev instance (#165)
Domain has expired.
2024-04-19 12:03:44 -06:00
github-actions
2129f88ae1 [CI] Auto update instances 2024-04-19 00:14:47 +00:00
github-actions
efd439b9e8 [CI] Auto update instances 2024-04-18 00:16:26 +00:00
github-actions
6b0badbefb [CI] Auto update instances 2024-04-17 00:15:40 +00:00
github-actions
ea70e144c6 [CI] Auto update instances 2024-04-16 00:14:47 +00:00
github-actions
23405b481c [CI] Auto update instances 2024-04-15 02:32:45 +00:00
github-actions
6cc39ff7c7 [CI] Auto update instances 2024-04-14 00:18:05 +00:00
github-actions
16cf880ff7 [CI] Auto update instances 2024-04-13 00:14:09 +00:00
github-actions
a9a6e579e8 [CI] Auto update instances 2024-04-12 00:14:32 +00:00
github-actions
dec3e6262a [CI] Auto update instances 2024-04-11 00:15:07 +00:00
github-actions
540c8f65f6 [CI] Auto update instances 2024-04-10 00:14:58 +00:00
github-actions
195e1a5421 [CI] Auto update instances 2024-04-09 00:15:29 +00:00
github-actions
b61b309be3 [CI] Auto update instances 2024-04-08 00:15:55 +00:00
github-actions
f63b07d851 [CI] Auto update instances 2024-04-07 00:16:30 +00:00
github-actions
fb6cfeae69 [CI] Auto update instances 2024-04-06 00:13:49 +00:00
github-actions
8d66e50761 [CI] Auto update instances 2024-04-04 00:14:57 +00:00
github-actions
e76d2f12f7 [CI] Auto update instances 2024-04-03 00:14:12 +00:00
github-actions
90bdec9d73 [CI] Auto update instances 2024-04-02 00:16:12 +00:00
github-actions
49bbec2287 [CI] Auto update instances 2024-04-01 00:15:17 +00:00
github-actions
d2e8c2778d [CI] Auto update instances 2024-03-31 00:16:09 +00:00
github-actions
6e32663a39 [CI] Auto update instances 2024-03-30 00:14:56 +00:00
github-actions
2c5a1498a0 [CI] Auto update instances 2024-03-29 00:14:32 +00:00
github-actions
431ef11756 [CI] Auto update instances 2024-03-28 00:14:48 +00:00
github-actions
294d47d6bb [CI] Auto update instances 2024-03-27 00:17:21 +00:00
github-actions
f26205ee04 [CI] Auto update instances 2024-03-26 00:14:13 +00:00
github-actions
a4f23b69e5 [CI] Auto update instances 2024-03-25 00:16:42 +00:00
github-actions
0c841326f6 [CI] Auto update instances 2024-03-24 00:15:34 +00:00
github-actions
2f5fa7d2ae [CI] Auto update instances 2024-03-23 00:13:33 +00:00
github-actions
42657380f5 [CI] Auto update instances 2024-03-22 00:16:01 +00:00
github-actions
808c6a1253 [CI] Auto update instances 2024-03-20 00:13:27 +00:00
github-actions
ac544a38b7 [CI] Auto update instances 2024-03-19 00:14:34 +00:00
github-actions
7ed8d7eeb9 [CI] Auto update instances 2024-03-18 00:15:49 +00:00
github-actions
f1a313dd3d [CI] Auto update instances 2024-03-17 00:14:48 +00:00
github-actions
f3d184cce0 [CI] Auto update instances 2024-03-16 00:13:39 +00:00
github-actions
0338652fe6 [CI] Auto update instances 2024-03-15 00:13:29 +00:00
github-actions
70d06d3d4c [CI] Auto update instances 2024-03-14 00:14:03 +00:00
github-actions
9fc41c5441 [CI] Auto update instances 2024-03-13 00:14:32 +00:00
github-actions
41804865cb [CI] Auto update instances 2024-03-12 00:13:36 +00:00
github-actions
cd58f3916b [CI] Auto update instances 2024-03-11 00:13:41 +00:00
github-actions
837867b3f0 [CI] Auto update instances 2024-03-10 00:15:02 +00:00
github-actions
a2622ef48b [CI] Auto update instances 2024-03-09 00:13:32 +00:00
github-actions
5da9f82397 [CI] Auto update instances 2024-03-08 00:15:09 +00:00
github-actions
190c1bdf46 [CI] Auto update instances 2024-03-07 00:12:13 +00:00
Ben Busby
cd840214d2
Include content type header on home page
Closes #158
2024-03-06 09:18:28 -07:00
Ben Busby
ee11e28b5d
Fix Scribe repo URL in readme [skip ci]
Closes #159
2024-03-06 09:07:41 -07:00
Ben Busby
d3e4e0f0f6
Update SimplyTranslate repo URL in readme [skip ci]
Closes #160
2024-03-06 09:06:35 -07:00
Lanius-collaris
36219f728a
Remove dead wikiless link (#161)
https://wiki.604kph.xyz is redirected to 
http://ww25.wiki.604kph.xyz/?subid1=x
2024-03-06 09:05:34 -07:00
Jakub Wilk
a5962bdf21
Fix typo [skip ci] (#157) 2024-03-06 09:03:03 -07:00
github-actions
28e223b22e [CI] Auto update instances 2024-03-06 00:16:19 +00:00
github-actions
f2e3f7ac1a [CI] Auto update instances 2024-03-05 00:13:39 +00:00
github-actions
17ac4f2dcf [CI] Auto update instances 2024-03-04 00:14:47 +00:00
github-actions
833a5e685f [CI] Auto update instances 2024-03-03 00:16:02 +00:00
github-actions
316baab4d4 [CI] Auto update instances 2024-03-02 00:13:22 +00:00
github-actions
65ec0af73c [CI] Auto update instances 2024-03-01 00:15:11 +00:00
github-actions
56eb8bd436 [CI] Auto update instances 2024-02-29 00:13:34 +00:00
github-actions
d3f728bbba [CI] Auto update instances 2024-02-28 00:13:38 +00:00
github-actions
20fb10ce21 [CI] Auto update instances 2024-02-27 00:13:30 +00:00
github-actions
6ebee43224 [CI] Auto update instances 2024-02-26 00:13:43 +00:00
github-actions
75bede2948 [CI] Auto update instances 2024-02-24 00:13:32 +00:00
github-actions
5dc3f8eb05 [CI] Auto update instances 2024-02-23 00:12:52 +00:00
github-actions
d4ce55ed76 [CI] Auto update instances 2024-02-22 00:13:07 +00:00
github-actions
131ccbec5f [CI] Auto update instances 2024-02-21 00:13:21 +00:00
github-actions
0bfa685500 [CI] Auto update instances 2024-02-20 00:13:59 +00:00
github-actions
22a7508e22 [CI] Auto update instances 2024-02-19 00:14:41 +00:00
github-actions
ffe7d621c2 [CI] Auto update instances 2024-02-18 00:14:55 +00:00
github-actions
3b2aa6b69f [CI] Auto update instances 2024-02-17 00:14:02 +00:00
github-actions
88affb083d [CI] Auto update instances 2024-02-16 00:14:43 +00:00
github-actions
dbfa815a5f [CI] Auto update instances 2024-02-15 00:13:52 +00:00
github-actions
ec4bcb4d07 [CI] Auto update instances 2024-02-14 00:13:57 +00:00
github-actions
c5b54a8c9c [CI] Auto update instances 2024-02-13 00:15:00 +00:00
github-actions
29a8d3d942 [CI] Auto update instances 2024-02-12 00:14:37 +00:00
github-actions
989945ce21 [CI] Auto update instances 2024-02-11 00:17:24 +00:00
github-actions
90c00aee20 [CI] Auto update instances 2024-02-10 00:14:25 +00:00
github-actions
36a4a95157 [CI] Auto update instances 2024-02-09 00:14:48 +00:00
github-actions
65b176d125 [CI] Auto update instances 2024-02-08 00:16:05 +00:00
Ben Busby
ede4620fe8
Update Whoogle fallback url
Closes #156
2024-02-07 11:26:44 -07:00
github-actions
961f0a9d73 [CI] Auto update instances 2024-02-07 00:14:14 +00:00
github-actions
b5cdea767a [CI] Auto update instances 2024-02-06 00:14:46 +00:00
sian1468
4308e286a8
Update 4get's instances list (#153) 2024-02-05 09:39:05 -07:00
sian1468
40855bb77e
Add auto update for rimgo (#152) 2024-02-05 09:38:42 -07:00
github-actions
42386394f9 [CI] Auto update instances 2024-02-05 00:15:28 +00:00
github-actions
d56cbfcd89 [CI] Auto update instances 2024-02-04 00:16:07 +00:00
github-actions
e1bdac9566 [CI] Auto update instances 2024-02-03 00:15:04 +00:00
github-actions
c21c693476 [CI] Auto update instances 2024-02-02 00:14:48 +00:00
github-actions
b91d17487b [CI] Auto update instances 2024-02-01 00:16:42 +00:00
github-actions
de79781ade [CI] Auto update instances 2024-01-31 00:15:20 +00:00
github-actions
6bfed12014 [CI] Auto update instances 2024-01-30 00:15:00 +00:00
github-actions
d61c868197 [CI] Auto update instances 2024-01-29 00:13:41 +00:00
github-actions
d408f2557e [CI] Auto update instances 2024-01-28 00:15:36 +00:00
github-actions
fa7e4c5600 [CI] Auto update instances 2024-01-27 00:13:52 +00:00
github-actions
76bf20d7f1 [CI] Auto update instances 2024-01-26 00:14:00 +00:00
github-actions
759ca5817e [CI] Auto update instances 2024-01-25 00:14:13 +00:00
github-actions
04c6b795c5 [CI] Auto update instances 2024-01-24 00:13:58 +00:00
github-actions
6776af66aa [CI] Auto update instances 2024-01-23 00:14:38 +00:00
github-actions
fe8c69b94b [CI] Auto update instances 2024-01-22 00:14:43 +00:00
github-actions
ba18510016 [CI] Auto update instances 2024-01-21 00:16:26 +00:00
github-actions
9c389d3b6f [CI] Auto update instances 2024-01-20 00:15:14 +00:00
github-actions
9790a8975e [CI] Auto update instances 2024-01-19 00:14:23 +00:00
github-actions
3713dd68d7 [CI] Auto update instances 2024-01-18 00:14:34 +00:00
github-actions
51be3e2805 [CI] Auto update instances 2024-01-17 00:15:32 +00:00
github-actions
9e89f2ff53 [CI] Auto update instances 2024-01-16 00:15:03 +00:00
github-actions
cf275a1362 [CI] Auto update instances 2024-01-15 00:15:22 +00:00
github-actions
eb053ac40f [CI] Auto update instances 2024-01-11 00:15:03 +00:00
github-actions
4433e558a5 [CI] Auto update instances 2024-01-10 00:14:39 +00:00
Ben Busby
60c318b5a3
Extract remote ip from X-Forwarded-For
The remote IP returned in plug.conn is meant to be overwritten by the
developer, and doesn't reflect the origin of the request based on
headers. A new dependency has been added to make this change quicker to
roll out.
2024-01-09 09:55:55 -07:00
Ben Busby
3499caf487
Sync LibreX and LibreY instances 2024-01-09 09:43:25 -07:00
Ben Busby
28dac7e740
Use LibreY instances for LibreX requests
LibreX is maybe abandoned and has been replaced by LibreY. Requests to
LibreX are now forwarded to LibreY instances to avoid issues.
2024-01-09 09:28:30 -07:00
github-actions
30d3da8593 [CI] Auto update instances 2024-01-09 00:15:07 +00:00
Ben Busby
247114d328
Update reddit + ig frontends, update rate limiting
Farside ratelimiting has been updated to return a 429 when a user
exceeds 1 request/sec. This should help eliminate a lot of scraping type
behavior that instance maintainers have been dealing with from Farside
lately.

Service changes:
- Teddit removed (not maintained)
- Bibliogram replaced by Proxigram
- Libreddit merged with redlib
2024-01-08 12:37:17 -07:00
Ben Busby
99b13b3aa6
Replace bibliogram w/ proxigram
Closes #149
2024-01-08 12:07:38 -07:00
Ben Busby
7f26ab3bbf
Return 429 for users exceeding 1 req/sec
Farside has been getting used by some to rapidly scrape sites, which
puts increased load and effort on maintainers of instances. Rather than
funneling traffic towards the last selected instance, farside will now
just return a 429 error when this behavior occurs.

Closes #147
2024-01-08 11:49:18 -07:00
Ben Busby
4f60a39d7f
Replace libreddit w/ redlib, remove teddit
Teddit is no longer maintained

Libreddit has been forked to redlib, which seems to be actively trying
to work around the changes to Reddit's API.

Libreddit instances are now a mirror of redlib instances for the time
being.
2024-01-08 11:32:59 -07:00
Ben Busby
85510edc54
Add dark theme
Closes #145
2023-12-20 10:40:05 -07:00
github-actions
284710c7a9 [CI] Auto update instances 2023-12-20 00:12:46 +00:00
github-actions
201615b6a3 [CI] Auto update instances 2023-12-19 00:13:49 +00:00
github-actions
7633f24f4d [CI] Auto update instances 2023-12-18 00:14:06 +00:00
github-actions
100b18fe9f [CI] Auto update instances 2023-12-17 00:14:53 +00:00
github-actions
964a0740b5 [CI] Auto update instances 2023-12-16 00:13:17 +00:00
github-actions
ee457dc99d [CI] Auto update instances 2023-12-15 00:13:46 +00:00
github-actions
ef930043f2 [CI] Auto update instances 2023-12-14 00:13:43 +00:00
github-actions
d322060cc3 [CI] Auto update instances 2023-12-13 00:14:00 +00:00
github-actions
de3b3af512 [CI] Auto update instances 2023-12-12 00:13:55 +00:00
github-actions
694d2efb82 [CI] Auto update instances 2023-12-11 00:15:31 +00:00
github-actions
34fa2b3473 [CI] Auto update instances 2023-12-09 00:13:32 +00:00
github-actions
3a2738af93 [CI] Auto update instances 2023-12-08 00:14:43 +00:00
github-actions
6be70ee610 [CI] Auto update instances 2023-12-07 00:13:40 +00:00
github-actions
63b1723163 [CI] Auto update instances 2023-12-06 00:14:52 +00:00
github-actions
2004d617a8 [CI] Auto update instances 2023-12-05 00:14:25 +00:00
github-actions
57dd18b4ad [CI] Auto update instances 2023-12-04 00:13:46 +00:00
github-actions
3befd0a823 [CI] Auto update instances 2023-12-03 00:14:20 +00:00
github-actions
0c5e46519e [CI] Auto update instances 2023-12-02 00:12:46 +00:00
github-actions
07ae6f7adb [CI] Auto update instances 2023-12-01 00:14:51 +00:00
github-actions
7553925935 [CI] Auto update instances 2023-11-30 00:14:40 +00:00
github-actions
7051212bcc [CI] Auto update instances 2023-11-29 00:14:10 +00:00
github-actions
8ec3f55785 [CI] Auto update instances 2023-11-28 00:13:08 +00:00
github-actions
4f63ad91a0 [CI] Auto update instances 2023-11-27 00:13:18 +00:00
github-actions
c249e9a16c [CI] Auto update instances 2023-11-26 00:14:52 +00:00
github-actions
07f9c56ce9 [CI] Auto update instances 2023-11-25 00:13:00 +00:00
github-actions
d55e23d7aa [CI] Auto update instances 2023-11-24 00:13:20 +00:00
github-actions
5100db545e [CI] Auto update instances 2023-11-23 00:13:55 +00:00
github-actions
d49b460a38 [CI] Auto update instances 2023-11-22 00:13:48 +00:00
cynic
1dafc61ddd
add 4get instances from decentralized instance list (#144) 2023-11-21 09:12:36 -07:00
github-actions
d595899f60 [CI] Auto update instances 2023-11-21 00:13:26 +00:00
github-actions
c5652d5046 [CI] Auto update instances 2023-11-20 00:13:53 +00:00
github-actions
03c9a4c498 [CI] Auto update instances 2023-11-19 00:14:35 +00:00
github-actions
8d4bf1ef7f [CI] Auto update instances 2023-11-18 00:14:14 +00:00
github-actions
740b1cdc05 [CI] Auto update instances 2023-11-17 00:15:38 +00:00
github-actions
edd45c873a [CI] Auto update instances 2023-11-16 00:15:02 +00:00
Ben Busby
ed4b885868
Update 4get test endpoint
Closes #142
2023-11-15 14:51:51 -07:00
toyboatcash
e7d27ea1d6
Update services-full.json (#143) 2023-11-15 14:49:10 -07:00
github-actions
b18f4a4d19 [CI] Auto update instances 2023-11-15 00:16:26 +00:00
github-actions
a162a387ad [CI] Auto update instances 2023-11-14 00:14:57 +00:00
github-actions
6014c43416 [CI] Auto update instances 2023-11-13 00:14:54 +00:00
github-actions
2955688ce1 [CI] Auto update instances 2023-11-12 00:15:34 +00:00
github-actions
502a269c7f [CI] Auto update instances 2023-11-11 00:15:14 +00:00
github-actions
762e7b33ea [CI] Auto update instances 2023-11-10 00:15:20 +00:00
github-actions
80e20dfda1 [CI] Auto update instances 2023-11-09 00:15:07 +00:00
github-actions
4225588b8b [CI] Auto update instances 2023-11-08 00:14:24 +00:00
github-actions
b83d3557ce [CI] Auto update instances 2023-11-07 00:15:04 +00:00
github-actions
06b038707d [CI] Auto update instances 2023-11-06 00:15:33 +00:00
github-actions
7ffff0665e [CI] Auto update instances 2023-11-05 00:16:51 +00:00
github-actions
81b1c39c57 [CI] Auto update instances 2023-11-04 00:15:37 +00:00
github-actions
96983b6085 [CI] Auto update instances 2023-11-03 00:14:20 +00:00
github-actions
ab6efd5405 [CI] Auto update instances 2023-11-02 00:14:35 +00:00
Ben Busby
bdc9cd01a2
Add catsarch instances for rimgo/quetre/libremdb
Closes #138
2023-11-01 15:03:46 -06:00
github-actions
03a39c65d5 [CI] Auto update instances 2023-11-01 00:16:45 +00:00
github-actions
8687e133e8 [CI] Auto update instances 2023-10-31 00:14:09 +00:00
github-actions
d96d1b0b0c [CI] Auto update instances 2023-10-30 00:14:19 +00:00
github-actions
d2162a10f4 [CI] Auto update instances 2023-10-29 00:15:44 +00:00
github-actions
7959f513af [CI] Auto update instances 2023-10-28 00:14:29 +00:00
github-actions
09c5a3c43d [CI] Auto update instances 2023-10-27 00:15:34 +00:00
github-actions
e9fa1bcfb8 [CI] Auto update instances 2023-10-26 00:14:43 +00:00
github-actions
b4045a9451 [CI] Auto update instances 2023-10-25 00:15:14 +00:00
github-actions
52ce216497 [CI] Auto update instances 2023-10-24 00:14:27 +00:00
github-actions
07b74cd305 [CI] Auto update instances 2023-10-23 00:15:47 +00:00
github-actions
1cc3f20449 [CI] Auto update instances 2023-10-22 00:15:39 +00:00
github-actions
aa839fe293 [CI] Auto update instances 2023-10-21 00:14:00 +00:00
github-actions
b070d49ab6 [CI] Auto update instances 2023-10-20 00:15:22 +00:00
github-actions
ff5f216907 [CI] Auto update instances 2023-10-19 00:14:41 +00:00
github-actions
a64b4a68aa [CI] Auto update instances 2023-10-18 00:15:10 +00:00
github-actions
241c6350db [CI] Auto update instances 2023-10-17 00:13:23 +00:00
github-actions
41de2f9470 [CI] Auto update instances 2023-10-16 00:14:35 +00:00
github-actions
1c3c5b1a52 [CI] Auto update instances 2023-10-15 00:14:32 +00:00
github-actions
e6820c85da [CI] Auto update instances 2023-10-14 00:13:14 +00:00
github-actions
ea2eb5eb80 [CI] Auto update instances 2023-10-13 00:13:54 +00:00
github-actions
63a9300868 [CI] Auto update instances 2023-10-12 00:12:31 +00:00
github-actions
1cc6f2c9fb [CI] Auto update instances 2023-10-11 00:13:51 +00:00
github-actions
eba6d5a552 [CI] Auto update instances 2023-10-10 00:13:36 +00:00
github-actions
087235f4f4 [CI] Auto update instances 2023-10-09 00:15:25 +00:00
github-actions
67e405b150 [CI] Auto update instances 2023-10-08 00:16:14 +00:00
github-actions
4d95ca71f9 [CI] Auto update instances 2023-10-07 00:14:55 +00:00
github-actions
538b0eec60 [CI] Auto update instances 2023-10-06 00:14:08 +00:00
github-actions
b9ad985021 [CI] Auto update instances 2023-10-05 00:14:31 +00:00
github-actions
2a1ac937e2 [CI] Auto update instances 2023-10-04 00:15:23 +00:00
github-actions
fb8c5384b1 [CI] Auto update instances 2023-10-03 00:14:11 +00:00
github-actions
cb089501ca [CI] Auto update instances 2023-10-02 00:15:10 +00:00
github-actions
3f0ded08c3 [CI] Auto update instances 2023-10-01 00:16:42 +00:00
github-actions
902c9d5657 [CI] Auto update instances 2023-09-30 00:13:44 +00:00
github-actions
f2def9b870 [CI] Auto update instances 2023-09-29 00:13:47 +00:00
අලුයම
117bb65b16
Update Lingva instances (#137) 2023-09-28 14:34:59 -06:00
Ben Busby
a843b322c9
Redirect x.com links to nitter instances
Closes #136
2023-09-28 14:24:01 -06:00
github-actions
bc7c96b431 [CI] Auto update instances 2023-09-28 00:13:05 +00:00
github-actions
4acd50d4c3 [CI] Auto update instances 2023-09-27 00:13:21 +00:00
github-actions
1c018e8067 [CI] Auto update instances 2023-09-26 00:13:29 +00:00
github-actions
e22e824a15 [CI] Auto update instances 2023-09-25 00:16:06 +00:00
github-actions
4eb71134e2 [CI] Auto update instances 2023-09-24 00:15:17 +00:00
github-actions
402571366f [CI] Auto update instances 2023-09-23 00:13:26 +00:00
github-actions
38a0c390c4 [CI] Auto update instances 2023-09-22 00:13:52 +00:00
github-actions
75384fa65c [CI] Auto update instances 2023-09-21 00:13:46 +00:00
github-actions
b55a4b6fa4 [CI] Auto update instances 2023-09-20 00:13:58 +00:00
github-actions
8b0b22ed52 [CI] Auto update instances 2023-09-19 00:14:38 +00:00
github-actions
5d61c7cb9d [CI] Auto update instances 2023-09-18 00:14:03 +00:00
github-actions
ecdfda2a9e [CI] Auto update instances 2023-09-17 00:15:39 +00:00
github-actions
5b324d1d2b [CI] Auto update instances 2023-09-16 00:14:09 +00:00
Ben Busby
ad7941c4d2
[CI] Ensure teddit urls are not null before filter
Teddit's instance file contains null URL entries, which was breaking the
nightly build. This ensures that the URL exists for an entry before
continuing with processing.
2023-09-14 18:29:55 -06:00
sian1468
21c15528a5
Change auto-update procedure for SearX instances (#134) 2023-09-13 13:55:48 -06:00
sian1468
4a655c7580
Add librey support (#133)
Co-authored-by: Ben Busby <contact@benbusby.com>
2023-09-13 13:53:05 -06:00
sian1468
fc4d7d5136
Add auto update for librex (#132) 2023-09-13 13:45:52 -06:00
sian1468
b549e4bb71
Update 4get instances (#131) 2023-09-13 13:43:15 -06:00
github-actions
6385dca3f6 [CI] Auto update instances 2023-09-09 00:12:06 +00:00
github-actions
0730cef2f1 [CI] Auto update instances 2023-09-08 00:13:02 +00:00
github-actions
40fa67a2c8 [CI] Auto update instances 2023-09-07 00:12:51 +00:00
github-actions
e6c92513f8 [CI] Auto update instances 2023-09-06 00:13:33 +00:00
github-actions
1f9b99a45f [CI] Auto update instances 2023-09-05 00:12:13 +00:00
github-actions
8f9d14773d [CI] Auto update instances 2023-09-04 00:12:22 +00:00
github-actions
a8ede27813 [CI] Auto update instances 2023-09-03 00:14:21 +00:00
github-actions
956dd61ab9 [CI] Auto update instances 2023-09-02 00:11:45 +00:00
github-actions
c12f6bf2b2 [CI] Auto update instances 2023-09-01 00:12:57 +00:00
github-actions
4ab84e4a3a [CI] Auto update instances 2023-08-31 00:11:51 +00:00
github-actions
eb88b025c6 [CI] Auto update instances 2023-08-30 00:13:38 +00:00
github-actions
25ed325348 [CI] Auto update instances 2023-08-29 00:13:30 +00:00
Ben Busby
1b884da16f
Add 4get metasearch engine
Closes #129
2023-08-28 17:28:39 -06:00
github-actions
626c4345bd [CI] Auto update instances 2023-08-28 00:13:28 +00:00
github-actions
f3762cb08a [CI] Auto update instances 2023-08-27 00:12:10 +00:00
github-actions
9566144d77 [CI] Auto update instances 2023-08-26 00:12:29 +00:00
github-actions
90dcdc93f0 [CI] Auto update instances 2023-08-25 00:11:45 +00:00
Ben Busby
0abf463069
Fix file typo in CI 2023-08-24 14:55:36 -06:00
Ben Busby
a5eea91f2b
Manually update nitter instances
Instance updates are now performed nightly, rather than during Farside's
5 min polling update.
2023-08-23 13:57:20 -06:00
Ben Busby
7e47e9536a
Poll nitter instances only in nightly build
From the recent changes to twitter/X, it sounds like guest accounts are
now required for nitter, which are more easily rate limited. To avoid
any impact from Farside, the instances are now health checked in the
nightly build using https://status.d420.de (this doesn't seem to be
directly associated with the nitter maintainers, so might not be
entirely future-proof).
2023-08-23 13:46:51 -06:00
github-actions
cc1a040991 [CI] Auto update instances 2023-08-23 00:12:04 +00:00
github-actions
c72bf6a4fa [CI] Auto update instances 2023-08-22 00:12:14 +00:00
github-actions
e26a1c88d5 [CI] Auto update instances 2023-08-21 00:15:02 +00:00
github-actions
37c3d7fde9 [CI] Auto update instances 2023-08-20 00:13:29 +00:00
github-actions
3163906fb8 [CI] Auto update instances 2023-08-19 00:11:30 +00:00
github-actions
783d289fe4 [CI] Auto update instances 2023-08-18 00:12:57 +00:00
github-actions
6895e1a3cc [CI] Auto update instances 2023-08-17 00:12:54 +00:00
github-actions
bf9593b82e [CI] Auto update instances 2023-08-16 00:12:10 +00:00
github-actions
805e381265 [CI] Auto update instances 2023-08-15 00:12:22 +00:00
github-actions
04eff2025c [CI] Auto update instances 2023-08-14 00:13:11 +00:00
github-actions
066810a389 [CI] Auto update instances 2023-08-13 00:12:16 +00:00
github-actions
18910975b5 [CI] Auto update instances 2023-08-12 00:11:55 +00:00
github-actions
a68dcf52e2 [CI] Auto update instances 2023-08-11 00:12:19 +00:00
github-actions
32c2672579 [CI] Auto update instances 2023-08-10 00:14:16 +00:00
github-actions
800b944ce4 [CI] Auto update instances 2023-08-09 00:14:02 +00:00
github-actions
6c0045cd75 [CI] Auto update instances 2023-08-08 00:13:56 +00:00
github-actions
40c1aafe59 [CI] Auto update instances 2023-08-07 00:15:07 +00:00
github-actions
32af8c68fc [CI] Auto update instances 2023-08-06 00:14:07 +00:00
github-actions
e3d475b915 [CI] Auto update instances 2023-08-05 00:13:07 +00:00
github-actions
ea19a12dfb [CI] Auto update instances 2023-08-04 00:14:34 +00:00
github-actions
57d7109b4f [CI] Auto update instances 2023-08-03 00:14:48 +00:00
github-actions
297b1491e1 [CI] Auto update instances 2023-08-02 00:12:42 +00:00
github-actions
b805146a15 [CI] Auto update instances 2023-08-01 00:17:32 +00:00
github-actions
fe8972014e [CI] Auto update instances 2023-07-31 00:14:16 +00:00
github-actions
ac9ab45d19 [CI] Auto update instances 2023-07-30 00:14:47 +00:00
github-actions
883a7177c6 [CI] Auto update instances 2023-07-29 00:12:48 +00:00
github-actions
034fe57044 [CI] Auto update instances 2023-07-28 00:13:46 +00:00
github-actions
cf8b6e9347 [CI] Auto update instances 2023-07-26 00:13:34 +00:00
github-actions
6ebd0803cd [CI] Auto update instances 2023-07-25 00:13:54 +00:00
github-actions
6d01b21782 [CI] Auto update instances 2023-07-24 00:15:01 +00:00
github-actions
8fc45c8fa1 [CI] Auto update instances 2023-07-23 00:15:04 +00:00
github-actions
a984860cc6 [CI] Auto update instances 2023-07-22 00:13:10 +00:00
github-actions
37a1944191 [CI] Auto update instances 2023-07-21 00:14:08 +00:00
github-actions
66f8ed0a07 [CI] Auto update instances 2023-07-20 00:13:42 +00:00
Ben Busby
2b6795ae3c
Add missing jq var name in nightly build
GotHub auto update missing the "gothub" variable name before applying
the results
2023-07-18 21:39:08 -06:00
Ben Busby
7693a6b063
Add env var for toggling cron task on/off
FARSIDE_CRON allows turning on/off the scheduled instance availability
check that occurs every 5 minutes by setting the variable to 1 (on) or 0
(off). The default behavior is "on".
2023-07-17 17:46:39 -06:00
NoPlagiarism
9104650cfe
Add GotHub support (#116)
Adds support for GotHub, an alternative frontend for GitHub

---------

Co-authored-by: Ben Busby <contact@benbusby.com>
2023-07-17 15:15:51 -06:00
github-actions
46c9b66478 [CI] Auto update instances 2023-07-17 00:15:43 +00:00
github-actions
1dd20d7276 [CI] Auto update instances 2023-07-16 00:15:53 +00:00
github-actions
2b32622d52 [CI] Auto update instances 2023-07-15 00:14:26 +00:00
github-actions
ef494f51b3 [CI] Auto update instances 2023-07-14 00:14:49 +00:00
github-actions
a48021a116 [CI] Auto update instances 2023-07-13 00:16:30 +00:00
github-actions
ff5c6cf56f [CI] Auto update instances 2023-07-12 00:15:38 +00:00
Ben Busby
430bbe11d5
Remove instance API urls when testing for cf proxy
This is related to the previous commit, where instances can now specify
a separate API url. Since users aren't visiting the API urls directly,
however, they shouldn't be included in the cf proxy test.
2023-07-11 12:35:22 -06:00
Ben Busby
c0706bfe9b
Allow separation of instance and API URLs
Instance URLs and API URLs are not always the same, and require
different testing strategies. This allows the two types of URLs for an
instance, as well as the testing path, to be separated by a "|" character.
When Farside runs the instance checker, it will split instance strings
by that character and perform separate tests. Instances without a
separate API URL will only be tested once against their primary instance
URL.

Currently the only service using this paradigm is Piped, but allows for
others using the same approach to be added/tested in Farside in the
future.

Closes #115
2023-07-11 12:34:31 -06:00
Ben Busby
dcc4a9f4b1
Mark redirecting instances as inacessible
Too many instances redirect to either non-functional or spam sites. The
new behavior is to only allow 200-300 responses to mark an instance as
accessible.
2023-07-11 11:27:45 -06:00
github-actions
2200cabaef [CI] Auto update instances 2023-07-11 00:15:54 +00:00
Ben Busby
c772cde195
Update nitter instance test URL
Profiles without any tweets still return a 200, whereas looking for a
specific tweet will return a 404 (or other error code) if the instance
isn't able to fetch the tweet.
2023-07-10 12:05:21 -06:00
github-actions
ca15b2e5df [CI] Auto update instances 2023-07-10 00:16:28 +00:00
github-actions
3cbb46c4a6 [CI] Auto update instances 2023-07-09 00:16:34 +00:00
github-actions
5a4fdc2a04 [CI] Auto update instances 2023-07-08 00:13:56 +00:00
github-actions
cd3937e1a7 [CI] Auto update instances 2023-07-07 00:15:34 +00:00
Ben Busby
ef0b830566
Update proxitok instances
Closes #114
2023-07-06 15:56:06 -06:00
github-actions
39aaa8c1df [CI] Auto update instances 2023-07-06 00:15:45 +00:00
github-actions
a9b4394be4 [CI] Auto update instances 2023-07-05 00:16:47 +00:00
github-actions
8fd8f4c9fd [CI] Auto update instances 2023-07-04 00:15:31 +00:00
github-actions
e2f3010023 [CI] Auto update instances 2023-07-03 00:16:25 +00:00
github-actions
868cfe4e93 [CI] Auto update instances 2023-07-02 00:16:37 +00:00
github-actions
aaa5438e1c [CI] Auto update instances 2023-07-01 00:16:08 +00:00
github-actions
09dc536556 [CI] Auto update instances 2023-06-30 00:14:42 +00:00
github-actions
a7fde711cf [CI] Auto update instances 2023-06-29 00:15:42 +00:00
github-actions
d2cc4e1c1f [CI] Auto update instances 2023-06-28 00:15:04 +00:00
github-actions
cac3c0d325 [CI] Auto update instances 2023-06-27 00:14:58 +00:00
github-actions
806c7946a1 [CI] Auto update instances 2023-06-26 00:16:36 +00:00
github-actions
850469d70d [CI] Auto update instances 2023-06-25 00:16:12 +00:00
github-actions
c753e6d408 [CI] Auto update instances 2023-06-24 00:14:18 +00:00
github-actions
c48d6c02e5 [CI] Auto update instances 2023-06-23 00:15:31 +00:00
github-actions
fb705ab2c8 [CI] Auto update instances 2023-06-22 00:15:01 +00:00
github-actions
8d5381fa41 [CI] Auto update instances 2023-06-21 00:13:28 +00:00
github-actions
b5dec81714 [CI] Auto update instances 2023-06-20 00:13:25 +00:00
github-actions
6109b462db [CI] Auto update instances 2023-06-19 00:13:57 +00:00
github-actions
91705ff49c [CI] Auto update instances 2023-06-18 00:15:23 +00:00
Ben Busby
21022d9d85
Update AO instances
Fixes #112
2023-06-16 18:25:36 -06:00
github-actions
450464a8af [CI] Auto update instances 2023-06-17 00:12:49 +00:00
github-actions
f7d375c89e [CI] Auto update instances 2023-06-16 00:13:32 +00:00
github-actions
16c4248f2e [CI] Auto update instances 2023-06-15 00:13:50 +00:00
github-actions
9e3d6f5c0f [CI] Auto update instances 2023-06-14 00:12:02 +00:00
github-actions
26ec60f344 [CI] Auto update instances 2023-06-13 00:12:40 +00:00
github-actions
9babedc614 [CI] Auto update instances 2023-06-12 00:14:43 +00:00
Hendursaga
60d0aeae09
Add / update whatitworks.org instances (#110)
code.xbdm.fun redirects to code.whateveritworks.org

See also: https://codeberg.org/teddit/teddit/pulls/403
2023-06-07 11:29:36 -06:00
Hendursaga
51355857f9
Add colinslegacy instances (#109)
New piped and lingva instances
2023-06-07 11:28:27 -06:00
github-actions
60eb5c1fc2 [CI] Auto update instances 2023-06-06 00:14:01 +00:00
github-actions
317850e41b [CI] Auto update instances 2023-06-05 00:14:16 +00:00
github-actions
4b20a0d691 [CI] Auto update instances 2023-06-04 00:14:57 +00:00
github-actions
b2a0d0a676 [CI] Auto update instances 2023-06-03 00:13:21 +00:00
github-actions
fd2317da24 [CI] Auto update instances 2023-06-02 00:14:42 +00:00
Hendursaga
880e295561
Update Quetre instances (#108) 2023-05-31 18:29:24 -06:00
github-actions
dd0174908d [CI] Auto update instances 2023-06-01 00:15:19 +00:00
github-actions
ecb4a344ed [CI] Auto update instances 2023-05-31 00:13:35 +00:00
github-actions
e54ea2707a [CI] Auto update instances 2023-05-30 00:13:46 +00:00
Hendursaga
889e2a6d01
Update Rimgo instances (#107) 2023-05-28 18:18:55 -06:00
github-actions
8101e26e96 [CI] Auto update instances 2023-05-29 00:13:31 +00:00
github-actions
7e8328c7ec [CI] Auto update instances 2023-05-28 00:14:57 +00:00
github-actions
63c931d7f1 [CI] Auto update instances 2023-05-26 00:12:54 +00:00
github-actions
ab1228dc6d [CI] Auto update instances 2023-05-25 00:12:24 +00:00
Hendursaga
7102b17b17
Update Lingva instances (#106) 2023-05-24 13:27:54 -06:00
github-actions
19768dad66 [CI] Auto update instances 2023-05-24 00:12:46 +00:00
github-actions
45c29865f3 [CI] Auto update instances 2023-05-23 00:13:05 +00:00
github-actions
e99ae370e4 [CI] Auto update instances 2023-05-22 00:13:47 +00:00
github-actions
6488ad2a82 [CI] Auto update instances 2023-05-21 00:13:18 +00:00
github-actions
fa99a36e7f [CI] Auto update instances 2023-05-20 00:12:02 +00:00
Ben Busby
6f647f52ae
Add support for Anonymous Overflow
A Stack Overflow frontend, see:
https://github.com/httpjamesm/AnonymousOverflow
2023-05-19 12:42:06 -06:00
Ben Busby
27b3ee85a7
Fix breezewiki tmp filename in nightly build 2023-05-19 11:01:57 -06:00
Ben Busby
0ce0832a28
Add support for BreezeWiki
Includes nightly build support for automatically pulling the most up to
date instance list.

Closes #104
2023-05-19 10:57:43 -06:00
github-actions
dd51523faf [CI] Auto update instances 2023-05-19 00:13:43 +00:00
Ben Busby
0eb2b75e77
Update libremdb instances
- Removed lmdb.tokhmi.xyz
- Added binge.whateveritworks.org
- Updated un-cloudflared services

Closes #103
2023-05-18 16:13:45 -06:00
Hendursaga
f5a9cef7c0
Add new libremdb instances (#102)
Courtesy of https://github.com/zyachel/libremdb#instances
2023-05-18 10:44:17 -06:00
github-actions
e6cdf0c220 [CI] Auto update instances 2023-05-18 00:12:11 +00:00
github-actions
26fb048c21 [CI] Auto update instances 2023-05-17 00:13:15 +00:00
Ben Busby
1112a9fe3a
Replace SimplyTranslate instance source in nightly build
Closes #101
2023-05-16 18:06:42 -06:00
Ben Busby
765592b938
Update proxitok instances 2023-05-16 16:03:21 -06:00
github-actions
1c6de7dd06 [CI] Auto update instances 2023-05-16 00:13:45 +00:00
github-actions
b711a781ae [CI] Auto update instances 2023-05-15 00:13:33 +00:00
github-actions
a6f029493a [CI] Auto update instances 2023-05-14 00:14:21 +00:00
github-actions
8ae3e9f47e [CI] Auto update instances 2023-05-13 00:12:33 +00:00
github-actions
88355f6c00 [CI] Auto update instances 2023-05-11 00:13:46 +00:00
github-actions
4f0a0ecb01 [CI] Auto update instances 2023-05-10 00:13:55 +00:00
github-actions
a9b97976d7 [CI] Auto update instances 2023-05-09 00:14:12 +00:00
github-actions
bff9fde2d5 [CI] Auto update instances 2023-05-08 00:13:02 +00:00
github-actions
0c2f8a7768 [CI] Auto update instances 2023-05-07 00:14:02 +00:00
github-actions
55ebee3800 [CI] Auto update instances 2023-05-06 00:11:55 +00:00
github-actions
19972a063b [CI] Auto update instances 2023-05-05 00:12:51 +00:00
github-actions
1ac71f7ba8 [CI] Auto update instances 2023-05-04 00:13:14 +00:00
Ben Busby
e13b91f236
Manually remove dead quetre instance
Fixes #98
2023-05-03 14:42:40 -06:00
github-actions
4a43745f4f [CI] Auto update instances 2023-05-03 00:13:29 +00:00
github-actions
79e147318a [CI] Auto update instances 2023-05-02 00:14:16 +00:00
github-actions
b5878e2605 [CI] Auto update instances 2023-05-01 00:14:15 +00:00
github-actions
9c0d06ed20 [CI] Auto update instances 2023-04-30 00:13:58 +00:00
github-actions
b077b13f3f [CI] Auto update instances 2023-04-29 00:12:53 +00:00
github-actions
9d061e7980 [CI] Auto update instances 2023-04-28 00:16:05 +00:00
github-actions
18877133de [CI] Auto update instances 2023-04-27 00:12:15 +00:00
github-actions
a26f1a7086 [CI] Auto update instances 2023-04-26 00:13:16 +00:00
github-actions
8ed5e57058 [CI] Auto update instances 2023-04-25 00:13:55 +00:00
github-actions
fe1afaa45b [CI] Auto update instances 2023-04-23 00:14:53 +00:00
github-actions
220b9b739e [CI] Auto update instances 2023-04-22 00:14:14 +00:00
github-actions
0117e2d071 [CI] Auto update instances 2023-04-21 00:13:20 +00:00
github-actions
acf66ac875 [CI] Auto update instances 2023-04-20 00:14:06 +00:00
github-actions
e41552a3f1 [CI] Auto update instances 2023-04-19 00:13:48 +00:00
github-actions
42183aca53 [CI] Auto update instances 2023-04-18 00:13:11 +00:00
github-actions
63e64dc19f [CI] Auto update instances 2023-04-17 00:14:13 +00:00
github-actions
6f668b9d2f [CI] Auto update instances 2023-04-16 00:14:11 +00:00
github-actions
d5e0583fb4 [CI] Auto update instances 2023-04-15 00:14:44 +00:00
Ben Busby
6ff757425a
Remove SimplyTranslate from nightly update
The ST website has been down for > 1 week, which seems to indicate that
it isn't coming back online anytime soon. Should reevaluate later to see
if it's back. Individual instances seem to be working fine.
2023-04-13 12:30:46 -06:00
Ben Busby
98f793d4c7
Remove ig.tokhmi.xyz
Closes #97
2023-04-13 12:29:39 -06:00
Ben Busby
cea40b225f
Manually update instances
The nightly CI has been broken due to a problem with SimplyTranslate,
which hasn't been fixed for some time. This will be fixed (on Farside's
end) shortly, but the CI build should also be updated to skip instance
update routines if there's a connection error or an empty list is
returned.
2023-04-13 12:27:13 -06:00
namazso
2b620ad831
Remove *.namazso.eu (#96) 2023-04-13 11:50:25 -06:00
github-actions
dab1e6e1e0 [CI] Auto update instances 2023-04-06 00:13:54 +00:00
Ben Busby
0830ee5a3d
Add support for "dumb" (Genius front-end)
Closes #94
2023-04-05 13:27:55 -06:00
Ben Busby
bb3a01f8c1
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
2023-04-05 13:04:17 -06:00
github-actions
65c12769bf [CI] Auto update instances 2023-04-05 00:11:57 +00:00
github-actions
5cde8ff154 [CI] Auto update instances 2023-04-04 00:14:07 +00:00
github-actions
4f7ced05e2 [CI] Auto update instances 2023-04-03 00:12:29 +00:00
github-actions
6048d3c23e [CI] Auto update instances 2023-04-02 00:14:32 +00:00
github-actions
5385c8c55f [CI] Auto update instances 2023-04-01 00:14:47 +00:00
github-actions
8d89bb08bb [CI] Auto update instances 2023-03-30 00:14:39 +00:00
github-actions
03bb451546 [CI] Auto update instances 2023-03-29 00:15:03 +00:00
github-actions
65389f7243 [CI] Auto update instances 2023-03-28 00:15:23 +00:00
Ben Busby
c94191a416
Add more librex instances
Closes #93
2023-03-27 15:45:31 -06:00
github-actions
ab10a041c6 [CI] Auto update instances 2023-03-27 00:14:19 +00:00
github-actions
c55ca95f2b [CI] Auto update instances 2023-03-26 00:14:48 +00:00
github-actions
60b3035a25 [CI] Auto update instances 2023-03-25 00:12:53 +00:00
github-actions
07385d6795 [CI] Auto update instances 2023-03-24 00:14:48 +00:00
github-actions
1591f3363e [CI] Auto update instances 2023-03-23 00:13:08 +00:00
Ben Busby
9eb11ed264
Allow compiling to standalone binary via bakeware
This introduces a simple way of compiling Farside to a somewhat portable,
standalone binary. The resulting binary isn't completely portable since it
depends on the C runtime of the host system. As a result, it's advised to use
systems with older library versions when compiling for true portability.

Closes #50

Co-authored-by: Jason Clark <mithereal@gmail.com>
2023-03-22 11:56:22 -06:00
github-actions
b75355ed75 [CI] Auto update instances 2023-03-22 00:12:12 +00:00
github-actions
e8d2594434 [CI] Auto update instances 2023-03-18 00:14:04 +00:00
github-actions
f0d8342696 [CI] Auto update instances 2023-03-17 00:13:26 +00:00
github-actions
ff0acdddd9 [CI] Auto update instances 2023-03-16 00:14:10 +00:00
github-actions
1457fe1fed [CI] Auto update instances 2023-03-15 00:13:34 +00:00
Ben Busby
7f430a5c41
Fix auto-redirect regex for gtranslate vs gsearch
The redirect regex for google search (~r/google.com) would also match
for google translate requests. This updates the search regex to also
require the "/search" path to be present in the original link.
2023-03-14 12:38:02 -06:00
github-actions
6ffe796f19 [CI] Auto update instances 2023-03-13 00:14:34 +00:00
github-actions
7cca6c6d50 [CI] Auto update instances 2023-03-12 00:15:25 +00:00
github-actions
11ab0c5be7 [CI] Auto update instances 2023-03-11 00:13:29 +00:00
github-actions
0573c4f72f [CI] Auto update instances 2023-03-10 00:15:02 +00:00
github-actions
22e8a8890c [CI] Auto update instances 2023-03-09 00:14:28 +00:00
github-actions
97d175e993 [CI] Auto update instances 2023-03-08 00:14:11 +00:00
github-actions
b74b86ee20 [CI] Auto update instances 2023-03-07 00:15:03 +00:00
github-actions
13c50df3ca [CI] Auto update instances 2023-03-06 00:14:32 +00:00
github-actions
00bdb258d2 [CI] Auto update instances 2023-03-05 00:14:24 +00:00
github-actions
f81544b2ab [CI] Auto update instances 2023-03-04 00:14:03 +00:00
github-actions
68d39b9176 [CI] Auto update instances 2023-03-03 01:54:06 +00:00
github-actions
7fbba07c60 [CI] Auto update instances 2023-03-02 00:15:31 +00:00
github-actions
6f5557672b [CI] Auto update instances 2023-02-28 00:14:57 +00:00
Ben Busby
a3bb1b534a
Update nitter instances
Closes #92
2023-02-27 12:48:51 -07:00
github-actions
65d5480875 [CI] Auto update instances 2023-02-27 00:14:31 +00:00
github-actions
cc1d42976a [CI] Auto update instances 2023-02-26 00:15:38 +00:00
github-actions
3284135a34 [CI] Auto update instances 2023-02-25 00:14:11 +00:00
github-actions
9c559c7038 [CI] Auto update instances 2023-02-23 00:14:34 +00:00
github-actions
bf9a1ce724 [CI] Auto update instances 2023-02-22 00:13:46 +00:00
github-actions
bb64e3edd4 [CI] Auto update instances 2023-02-21 00:13:31 +00:00
github-actions
b6a273012d [CI] Auto update instances 2023-02-20 00:14:34 +00:00
github-actions
4abd0b3c7e [CI] Auto update instances 2023-02-19 00:14:20 +00:00
github-actions
dd492ee233 [CI] Auto update instances 2023-02-18 00:14:12 +00:00
github-actions
463d4192b2 [CI] Auto update instances 2023-02-17 00:15:00 +00:00
github-actions
de4e0397fa [CI] Auto update instances 2023-02-16 00:13:10 +00:00
github-actions
401f617147 [CI] Auto update instances 2023-02-15 00:13:46 +00:00
github-actions
b08c663b5c [CI] Auto update instances 2023-02-13 00:14:43 +00:00
github-actions
ac115bf6c6 [CI] Auto update instances 2023-02-12 00:15:36 +00:00
github-actions
ca912ac6f5 [CI] Auto update instances 2023-02-11 00:13:27 +00:00
github-actions
e4a1aa0b9b [CI] Auto update instances 2023-02-10 00:14:33 +00:00
github-actions
952b63fbc0 [CI] Auto update instances 2023-02-09 00:13:14 +00:00
github-actions
49eb2085d9 [CI] Auto update instances 2023-02-08 00:13:54 +00:00
github-actions
5b312f3f71 [CI] Auto update instances 2023-02-07 00:14:25 +00:00
github-actions
9213304b3b [CI] Auto update instances 2023-02-06 00:14:13 +00:00
github-actions
d158093108 [CI] Auto update instances 2023-02-05 00:14:17 +00:00
github-actions
d3e42121d4 [CI] Auto update instances 2023-02-04 00:12:44 +00:00
github-actions
9e734fb30e [CI] Auto update instances 2023-02-03 00:12:37 +00:00
github-actions
d91e3cd23b [CI] Auto update instances 2023-02-02 00:13:02 +00:00
github-actions
a6d142de2e [CI] Auto update instances 2023-02-01 00:15:13 +00:00
github-actions
ad8d6c82eb [CI] Auto update instances 2023-01-31 00:14:22 +00:00
github-actions
6bfe44db3b [CI] Auto update instances 2023-01-30 00:13:12 +00:00
github-actions
861e2ceee6 [CI] Auto update instances 2023-01-29 00:13:51 +00:00
github-actions
4e7bb6e8e7 [CI] Auto update instances 2023-01-28 00:11:50 +00:00
github-actions
958fa111af [CI] Auto update instances 2023-01-27 00:13:21 +00:00
github-actions
4d3c5d5777 [CI] Auto update instances 2023-01-26 00:13:34 +00:00
github-actions
32a34891a7 [CI] Auto update instances 2023-01-25 00:13:52 +00:00
Ben Busby
dfc70bd0f5
Update piped instances
Fixes #86
2023-01-24 16:28:22 -07:00
github-actions
35b144c21b [CI] Auto update instances 2023-01-24 00:14:21 +00:00
github-actions
9193cce38e [CI] Auto update instances 2023-01-21 00:12:35 +00:00
github-actions
76e72374de [CI] Auto update instances 2023-01-20 00:12:45 +00:00
Ben Busby
83cfe34452
Update beparanoid.de domains
Moved to femboy.hu.

Fixes #85
2023-01-19 10:21:05 -07:00
github-actions
6b9f76bea7 [CI] Auto update instances 2023-01-19 00:12:52 +00:00
github-actions
d68b992a04 [CI] Auto update instances 2023-01-18 00:13:28 +00:00
github-actions
e98ce15f9c [CI] Auto update instances 2023-01-17 00:12:31 +00:00
github-actions
bdee21d8be [CI] Auto update instances 2023-01-16 00:13:23 +00:00
github-actions
ae5733643d [CI] Auto update instances 2023-01-15 00:13:47 +00:00
Ben Busby
557aa72f33
Update quetre instance list
Updates quetre instance list from the table provided here:
https://github.com/zyachel/quetre#instances.

Fixes #75
2023-01-13 19:53:21 -07:00
FriendlyPigeon
16cc680c7d
Add parent relation for whoogle (#84) 2023-01-13 19:49:35 -07:00
github-actions
b232389779 [CI] Auto update instances 2023-01-13 00:16:44 +00:00
github-actions
54e811fa56 [CI] Auto update instances 2023-01-12 00:13:18 +00:00
github-actions
3499fdfba1 [CI] Auto update instances 2023-01-10 00:14:48 +00:00
Dominick Peluso
bbec9552de
Cleanup nitter instances (#82)
* Remove nttr.stream

This domain is for sale.

* Remove nitter.ca

ERR_NAME_NOT_RESOLVED

* Remove n.0x0.st

NET::ERR_CERT_COMMON_NAME_INVALID

* Remove nitter.ir

ERR_CONNECTION_TIMED_OUT

* Remove n.hyperborea.cloud

ERR_CONNECTION_TIMED_OUT

* Remove nitter.koyu.space

ERR_NAME_NOT_RESOLVED

* Remove nitter.exonip.de

ERR_SSL_PROTOCOL_ERROR

* Remove twitr.gq

ERR_CONNECTION_TIMED_OUT

* Remove nitter.hu

ERR_CONNECTION_RESET

* Remove nitter.cattube.org

Redirects to chrome security check fake malware site

* Remove nitter.mailstation.de

403 Forbidden

* Remove nitter.eu

ERR_NAME_NOT_RESOLVED

* Remove nitter.vxempire.xyz

Redirects to something picked up by my pihole lists

* Remove nitter.nixnet.services

Requires Basic Authorization
2023-01-09 09:49:54 -07:00
github-actions
c1178e5a29 [CI] Auto update instances 2023-01-09 00:14:28 +00:00
github-actions
cf6edd1982 [CI] Auto update instances 2023-01-07 00:13:22 +00:00
github-actions
8cf4519530 [CI] Auto update instances 2023-01-05 00:14:58 +00:00
Ben Busby
73a53f8dbe
Add cf filter to nightly build, update services
The cloudflare filter has been added back into the nightly build. Now
that the filtering method uses direct querying of the instance IP(s), it
should be more reliable than the namespace lookup (and more accurate).

services.json has been updated with the latest filtered results from
services-full.json as well.
2023-01-04 10:03:03 -07:00
github-actions
d2229a6372 [CI] Auto update instances 2023-01-04 00:09:34 +00:00
Dominick Peluso
52fdb4238c
Add nitter.ungovernable.men nitter instance (#81) 2023-01-03 10:26:41 -07:00
github-actions
a9582780d9 [CI] Auto update instances 2023-01-03 00:09:22 +00:00
github-actions
e1bbacef4e [CI] Auto update instances 2023-01-02 00:09:38 +00:00
github-actions
183f46e494 [CI] Auto update instances 2023-01-01 00:11:19 +00:00
github-actions
060a3619cb [CI] Auto update instances 2022-12-31 00:08:59 +00:00
github-actions
ed1ec71195 [CI] Auto update instances 2022-12-30 00:09:32 +00:00
github-actions
0aefe45992 [CI] Auto update instances 2022-12-29 00:09:23 +00:00
github-actions
27be231733 [CI] Auto update instances 2022-12-28 00:09:29 +00:00
github-actions
b8b15bd855 [CI] Auto update instances 2022-12-27 00:09:34 +00:00
github-actions
5ce7d27c91 [CI] Auto update instances 2022-12-26 00:09:28 +00:00
github-actions
19ff92ebc1 [CI] Auto update instances 2022-12-25 00:09:56 +00:00
github-actions
0aa9b2428e [CI] Auto update instances 2022-12-24 00:08:22 +00:00
github-actions
5b534c0cff [CI] Auto update instances 2022-12-23 00:10:01 +00:00
Ben Busby
a1d3437a32
Update cloudflare filtered service list 2022-12-21 15:23:02 -07:00
github-actions
e539ddc95c [CI] Auto update instances 2022-12-21 00:09:30 +00:00
github-actions
ed88da067d [CI] Auto update instances 2022-12-20 00:09:34 +00:00
github-actions
f8bca7f921 [CI] Auto update instances 2022-12-19 00:10:20 +00:00
github-actions
25acd0a489 [CI] Auto update instances 2022-12-18 00:09:34 +00:00
github-actions
6ced58a0f4 [CI] Auto update instances 2022-12-17 00:09:12 +00:00
github-actions
843341a6a3 [CI] Auto update instances 2022-12-16 00:09:46 +00:00
github-actions
e91a9b014b [CI] Auto update instances 2022-12-15 00:09:32 +00:00
github-actions
45d9984da8 [CI] Auto update instances 2022-12-14 00:10:37 +00:00
github-actions
000fec398d [CI] Auto update instances 2022-12-12 00:10:02 +00:00
sian1468
f676d12988
Add auto update instances for libreddit (#80)
* Change libreddit's fallback URL to official instance's URL

* Add auto update instances for libreddit
2022-12-11 13:45:13 -07:00
Ben Busby
2a858b89d2
Ignore request types in router
Request types don't really matter in Farside, and should be ignored.
This updates the router to handle all request types (GET, HEAD, POST,
etc) the same as GET requests were handled previously.
2022-12-11 13:14:40 -07:00
github-actions
f91e490696 [CI] Auto update instances 2022-12-11 00:11:01 +00:00
github-actions
329b8bbad5 [CI] Auto update instances 2022-12-10 00:09:31 +00:00
Ben Busby
d9f0291853
Enable auto compact for cubdb
This reduces the number of redundant db files created by cubdb.
2022-12-09 11:30:25 -07:00
Ben Busby
1c83d822d6
Filter against cloudflare proxy (not nameservers)
The previous approach to filtering cloudflare instances was checking if
cloudflare nameservers were assigned to that domain. I believe this was
too harsh of a filter, as quite a few instances were removed even though
they were not using cloudflare's proxying feature.

To solve this, the filtering script has been updated to manually fetch
each IP associated with a domain and see if it returns the 1003 error
that cloudflare proxied sites return when queried directly.
2022-12-09 11:00:06 -07:00
Ben Busby
47852145e3
Manually update piped instances
- piped.mint.lgbt
+ watch.whatever.social
+ watch.whatevertinfoil.de

Fixes #79
2022-12-09 10:56:34 -07:00
github-actions
e9a2cf055a [CI] Auto update instances 2022-12-09 00:10:21 +00:00
github-actions
c21a3ee77d [CI] Auto update instances 2022-12-07 00:09:25 +00:00
github-actions
ac209ca966 [CI] Auto update instances 2022-12-06 00:09:50 +00:00
github-actions
4f75661997 [CI] Auto update instances 2022-12-05 00:10:27 +00:00
github-actions
85a647defb [CI] Auto update instances 2022-12-03 00:08:47 +00:00
github-actions
7074aba5a2 [CI] Auto update instances 2022-12-02 00:09:36 +00:00
github-actions
c420f96945 [CI] Auto update instances 2022-12-01 00:11:58 +00:00
github-actions
d3cf1aead9 [CI] Auto update instances 2022-11-30 00:11:24 +00:00
github-actions
2264373a25 [CI] Auto update instances 2022-11-29 00:11:01 +00:00
github-actions
00183343e1 [CI] Auto update instances 2022-11-28 00:10:39 +00:00
github-actions
4b49fb7dea [CI] Auto update instances 2022-11-27 00:11:30 +00:00
github-actions
69267132f0 [CI] Auto update instances 2022-11-26 00:09:31 +00:00
github-actions
21391a1d6f [CI] Auto update instances 2022-11-25 00:09:42 +00:00
github-actions
e08ddfb150 [CI] Auto update instances 2022-11-24 00:10:50 +00:00
github-actions
cb19eb6b1c [CI] Auto update instances 2022-11-23 00:10:58 +00:00
github-actions
8a0382350d [CI] Auto update instances 2022-11-22 00:11:50 +00:00
github-actions
09f4f1e405 [CI] Auto update instances 2022-11-20 00:11:13 +00:00
github-actions
d62d634f9e [CI] Auto update instances 2022-11-19 00:10:50 +00:00
github-actions
7fe474dbf2 [CI] Auto update instances 2022-11-16 00:11:18 +00:00
github-actions
4e61d14c75 [CI] Auto update instances 2022-11-14 00:12:17 +00:00
github-actions
faece6021e [CI] Auto update instances 2022-11-13 00:11:22 +00:00
github-actions
45a5d01a98 [CI] Auto update instances 2022-11-12 00:11:33 +00:00
github-actions
197cdb65af [CI] Auto update instances 2022-11-08 00:12:32 +00:00
Ben Busby
1a780b630f
Remove version req from searx instance auto-update
The majority of searx instances returned by
https://searx.space/data/instances.json seem to be running non-release
versions of searx (i.e. versions like "2022.11.06-ae54c7d5" and not
"1.0.0"). Since the version itself doesn't indicate reliability alone
imo, I don't think it's necessary to exclude instances based on this
criteria in the auto-update nightly build.
2022-11-07 16:36:38 -07:00
github-actions
1f7e08c634 [CI] Auto update instances 2022-11-07 23:02:18 +00:00
github-actions
4ed36c0aca [CI] Auto update instances 2022-11-07 00:12:54 +00:00
github-actions
8a1a9f2b56 [CI] Auto update instances 2022-11-06 00:12:59 +00:00
github-actions
f0206bbe48 [CI] Auto update instances 2022-11-04 00:12:27 +00:00
github-actions
bddfb9496d [CI] Auto update instances 2022-11-03 00:12:41 +00:00
github-actions
48932eb3f5 [CI] Auto update instances 2022-11-02 00:11:53 +00:00
Kian-Meng Ang
f0150c6160
Use erlef/setup-beam, bump gha versions (#76)
Remove extra redirection. See https://github.com/erlef/setup-beam/issues/20
2022-10-31 17:30:07 -06:00
Ben Busby
e58d6e23ed
Remove Redis dep, replace w/ native Elixir lib
This removes the dependency on Redis for core app functionality. Rather
than using the key/value store provided by Redis, Farside now uses a
key/val store provided by [cubdb](https://github.com/lucaong/cubdb) for
identical functionality but without reliance on a non-Elixir service.

This solution was chosen instead of ets, because storing instance data
in memory leads to a period of broken functionality whenever the app
restarts and hasn't re-populated instance data yet. It was also chosen
instead of dets, because the documentation for dets was pretty hard to
understand at first glance.

Tests and the CI build were updated to reflect the removed dependency on
Redis.

New environment variable `FARSIDE_DATA_DIR` can be used to point to a
directory where the instance data can be stored by cubdb.

Co-authored-by: Jason Clark <mithereal@gmail.com>
2022-10-31 16:45:31 -06:00
github-actions
540822d867 [CI] Auto update instances 2022-10-31 00:13:23 +00:00
github-actions
a96751833b [CI] Auto update instances 2022-10-30 00:13:34 +00:00
github-actions
73cc7edc09 [CI] Auto update instances 2022-10-29 00:10:58 +00:00
github-actions
ebff5b1460 [CI] Auto update instances 2022-10-28 00:12:46 +00:00
github-actions
eab75be01c [CI] Auto update instances 2022-10-27 00:12:23 +00:00
Kian-Meng Ang
9d13d60a25
Fix typo [skip ci] (#72)
"Runing" -> "Running"

Found via `codespell -S deps -L neet`
2022-10-26 10:14:30 -06:00
github-actions
4c7748394d [CI] Auto update instances 2022-10-25 00:18:59 +00:00
github-actions
de5379a346 [CI] Auto update instances 2022-10-24 00:17:26 +00:00
github-actions
3358fe5bc8 [CI] Auto update instances 2022-10-23 00:17:01 +00:00
github-actions
6f1c624e6d [CI] Auto update instances 2022-10-22 00:15:44 +00:00
github-actions
b1cfae01d6 [CI] Auto update instances 2022-10-21 00:15:59 +00:00
Ben Busby
9ef2ec9071
Remove Wikiless from nightly auto-update build
The wikiless repo has been removed by Codeberg until the maintainer
makes some changes requested by Wikimedia. Follow https://orenom.fi for
updates.
2022-10-20 12:00:43 -06:00
Ben Busby
7f9134c570
Manually remove teddit instance
See #68
2022-10-20 11:49:16 -06:00
casualuser1998
7021cf334e
Remove dead libreddit link (#71) 2022-10-20 11:46:41 -06:00
Ben Busby
4875147321
Remove dead lingva instance
Fixes #70
2022-10-13 16:00:09 -06:00
github-actions
14fb6fec26 [CI] Auto update instances 2022-10-05 00:16:08 +00:00
github-actions
d684911d41 [CI] Auto update instances 2022-10-04 00:17:10 +00:00
github-actions
fd0ddc573b [CI] Auto update instances 2022-10-03 00:15:27 +00:00
github-actions
ebd54f7a17 [CI] Auto update instances 2022-10-02 00:17:01 +00:00
github-actions
25b3c2cd78 [CI] Auto update instances 2022-10-01 00:18:30 +00:00
uranuspucksaxophone
25eac189d2
Move artemislena libreddit instance to teddit [skip ci] (#66)
* Move artemislena libreddit instance to teddit

Co-authored-by: Ben Busby <contact@benbusby.com>
2022-09-30 14:25:29 -06:00
notarun
36162de575
Fix packages.debian.org readme link [skip ci] (#65) 2022-09-30 14:20:57 -06:00
github-actions
1f018fedcb [CI] Auto update instances 2022-09-30 00:19:57 +00:00
Ben Busby
40448dc7f6
Remove libreddit instances w/ bad redirects 2022-09-29 12:38:39 -06:00
github-actions
9ef2daa4b8 [CI] Auto update instances 2022-09-28 00:18:53 +00:00
github-actions
d50fb280dd [CI] Auto update instances 2022-09-27 00:18:17 +00:00
github-actions
9258aa4651 [CI] Auto update instances 2022-09-26 00:14:00 +00:00
github-actions
14a45550cf [CI] Auto update instances 2022-09-25 00:13:59 +00:00
Ben Busby
a0a3f01847
Include link to browser extension setup in readme 2022-09-22 14:35:40 -06:00
github-actions
76b630b1dc [CI] Auto update instances 2022-09-21 00:13:47 +00:00
github-actions
613781980b [CI] Auto update instances 2022-09-20 00:15:55 +00:00
github-actions
1e8c205866 [CI] Auto update instances 2022-09-19 00:11:56 +00:00
github-actions
6e9faf1d37 [CI] Auto update instances 2022-09-17 00:11:42 +00:00
github-actions
50162e7c6d [CI] Auto update instances 2022-09-16 00:14:40 +00:00
Ben Busby
0b2e554deb
Remove bibliogram from readme [skip ci] 2022-09-15 11:20:53 -06:00
Ben Busby
b901d8a69c
Manually clear out dead bibliogram instances
Also removes bibliogram from the auto-updater

Bibliogram is discontinued, and many instances are going offline as a
result. This clears out the ones that have already been deactivated, but
the better solution would probably be to stop supporting bibliogram.
2022-09-15 11:19:18 -06:00
Ben Busby
4f18793048
Test bibliogram instances with post URL, not profile
User profile pages are no longer accessible from Bibliogram. This should
be addressed by Farside at some point, but for now, we should at least
be checking if posts are accessible for a particular instance.

Closes #63
2022-09-07 13:05:18 -06:00
github-actions
c169c321ec [CI] Auto update instances 2022-09-06 00:11:49 +00:00
github-actions
8452e60d32 [CI] Auto update instances 2022-09-05 00:13:19 +00:00
github-actions
0365033027 [CI] Auto update instances 2022-09-04 00:11:42 +00:00
github-actions
aa10efc6f9 [CI] Auto update instances 2022-09-03 00:10:10 +00:00
github-actions
2df71a3902 [CI] Auto update instances 2022-09-02 00:10:34 +00:00
github-actions
87a2b9f983 [CI] Auto update instances 2022-09-01 00:11:57 +00:00
github-actions
d327135c33 [CI] Auto update instances 2022-08-31 00:11:49 +00:00
github-actions
1788d4dddf [CI] Auto update instances 2022-08-30 00:12:21 +00:00
github-actions
9a570acc7d [CI] Auto update instances 2022-08-29 00:11:28 +00:00
github-actions
d568f14b89 [CI] Auto update instances 2022-08-28 00:13:52 +00:00
github-actions
d2d56396fd [CI] Auto update instances 2022-08-27 00:11:23 +00:00
github-actions
352a86ddfd [CI] Auto update instances 2022-08-26 00:11:37 +00:00
github-actions
621793a75f [CI] Auto update instances 2022-08-25 00:11:52 +00:00
github-actions
3af695d7f7 [CI] Auto update instances 2022-08-24 00:11:32 +00:00
github-actions
94b5a230bd [CI] Auto update instances 2022-08-23 00:12:04 +00:00
Ben Busby
0de21e329b
Remove bibliogram.privacydev.net instance
The bibliogram.privacydev.net instance has been removed, as it doesn't
actually redirect to a bibliogram instance. The site it redirects to,
imginn, does work as an instagram alternative, but has not been vetted
and should not be used by Farside as a drop-in replacement for
bibliogram yet.

Closes #61
2022-08-22 15:46:21 -06:00
github-actions
882ae993a9 [CI] Auto update instances 2022-08-22 00:11:40 +00:00
github-actions
9825b44629 [CI] Auto update instances 2022-08-21 00:11:52 +00:00
github-actions
9a26b0932b [CI] Auto update instances 2022-08-20 00:09:47 +00:00
github-actions
134a6118d5 [CI] Auto update instances 2022-08-19 00:12:11 +00:00
github-actions
c9bbd59fbb [CI] Auto update instances 2022-08-18 00:10:24 +00:00
github-actions
4be20650a2 [CI] Auto update instances 2022-08-17 00:11:19 +00:00
github-actions
405bbb2447 [CI] Auto update instances 2022-08-16 00:13:03 +00:00
github-actions
ad1ef799d4 [CI] Auto update instances 2022-08-15 00:10:36 +00:00
github-actions
9f85abe3b3 [CI] Auto update instances 2022-08-14 00:10:46 +00:00
github-actions
8cdad0605c [CI] Auto update instances 2022-08-13 00:11:29 +00:00
github-actions
71f1dd072e [CI] Auto update instances 2022-08-12 00:09:51 +00:00
github-actions
171e9cadd2 [CI] Auto update instances 2022-08-11 00:10:37 +00:00
github-actions
e8f3cc7871 [CI] Auto update instances 2022-08-10 00:10:03 +00:00
github-actions
d77040b7a4 [CI] Auto update instances 2022-08-09 00:11:24 +00:00
github-actions
e6b47888ee [CI] Auto update instances 2022-08-08 00:09:40 +00:00
github-actions
f24232af35 [CI] Auto update instances 2022-08-07 00:12:35 +00:00
github-actions
3861b93604 [CI] Auto update instances 2022-08-06 00:10:23 +00:00
github-actions
6d40562166 [CI] Auto update instances 2022-08-05 00:12:08 +00:00
Ben Busby
e1e46dcd92
Remove cloudflare filter from update workflow
The cloudflare filter, when performed as part of the github action
workflow, doesn't seem to work nearly as reliably when run on an actual
machine.

The farside server will instead run the un-cloudflare script whenever it
pulls in new changes to services-full.json, which should be a much more
reliable approach to filtering out cloudflare instances.
2022-08-04 13:16:58 -06:00
github-actions
e16d4bb330 [CI] Auto update instances 2022-08-04 00:11:16 +00:00
Ben Busby
768351cfc3
Add sr.ht link to index list view, update instance list 2022-08-03 10:58:22 -06:00
github-actions
9989237589 [CI] Auto update instances 2022-08-03 00:12:50 +00:00
Ben Busby
80698331cb
Fix readme logo spacing [skip ci] 2022-08-02 13:33:20 -06:00
Ben Busby
3be0c1b992
Remove leftover markdown table in readme [skip ci] 2022-08-02 13:26:22 -06:00
Ben Busby
ddd89ac8e8
Use html tables in readme [skip ci]
Sourcehut doesn't support markdown table formatting, but does support
html tables.
2022-08-02 13:25:12 -06:00
jlund
6a6bc2d5a1
Add "unofficialbird.com" Nitter instance [skip ci] (#58) 2022-08-02 09:21:08 -06:00
uranuspucksaxophone
7b36eaac59
Center README.md logo and badges [skip ci] (#56) 2022-08-02 09:20:26 -06:00
Ben Busby
650f28f1d5
[CI] Check for NOERROR return status in dig query 2022-08-01 22:37:58 -06:00
github-actions
6bfc92fb58 [CI] Auto update instances 2022-08-02 04:24:46 +00:00
Ben Busby
0749d01206
Add missing flag for sed replacement in update workflow 2022-08-01 22:20:51 -06:00
Ben Busby
3c776d55b0
Auto update bibliogram instances w/ instance api
Closes #57
2022-08-01 12:04:53 -06:00
Ben Busby
3460986481
Handle dig return code 9 in update workflow
If dig returns exit code 9 (no reply from server) when checking an
instance for cloudflare records, it shouldn't fail the CI build but
rather just skip adding the instance to the non-cloudflare services
list.

This should be re-evaluated soon to see if the CI build routinely has
issues with getting a server reply. If so, a different approach needs to
be taken to check if an instance is using cloudflare.
2022-07-31 11:47:28 -06:00
alvv-z
431ea613d1
Fix spelling of quetre (#55) 2022-07-31 11:05:48 -06:00
Ben Busby
11b8e8466a
Remove dead/broken nitter instances 2022-07-28 09:45:01 -06:00
Ben Busby
e611375e75
Force remove cf filter output in auto update workflow 2022-07-28 09:19:25 -06:00
Ben Busby
8fbe016cdb
Support libremdb and querte (imdb and quora alts)
Includes support for redirecting via full url, ie:

-> farside.link/https://www.imdb.com/title/tt0133093/

will redirect to a libremdb instance.

Closes #48
2022-07-27 17:14:15 -06:00
Ben Busby
bf59789c45
Add tools dir, include script for removing cf instances
This new dir will probably stay fairly empty, but this script could come
in handy for anyone seeking to add a new instance (for services that
aren't supported by the auto update workflow).
2022-07-27 16:58:29 -06:00
Ben Busby
a526d03fa2
Add support for librex search
See: https://github.com/hnhx/librex

Closes #47
2022-07-27 16:56:34 -06:00
Ben Busby
2e7d4355c5
Use full service list in auto update workflow 2022-07-27 16:36:31 -06:00
Ben Busby
3597799cf3
Add note about Cloudflare to readme [skip ci] 2022-07-27 15:46:07 -06:00
Ben Busby
592e492a62
Use full service list for tests
The filtered service list isn't guaranteed to have more than one
instance per service, which fails a test that was designed to ensure
back-to-back requests don't use the same instance. Using the full
services json file more accurately tests the intended functionality for
Farside.
2022-07-27 14:12:48 -06:00
Ben Busby
00225fdbc6
Exclude Cloudflare instances from services.json by default
This updates the services json file to exclude all instances that are
detected to be using Cloudflare nameservers.

A separate "services-full.json" file will continue to be tracked in the
repo, which will include the full list of all instances for each
service and can be used with the `FARSIDE_SERVICES_JSON` environment
variable for anyone wanting to access the full instance list for each
service.

See #43
2022-07-27 14:08:57 -06:00
Grant Bacon
7248af0d5f
Include n.l5.ca as a nitter instance (#51) 2022-07-27 13:55:07 -06:00
Ben Busby
a6dabe8bf3
Make conn values and services path configurable at runtime
Connection values (such as redis server port and the port to run farside
on) as well as the services json file to use can now be set via
environment variables:

FARSIDE_PORT sets the port for Farside to run on
FARSIDE_REDIS_PORT sets the redis server port for Farside to use
FARSIDE_SERVICES_JSON sets the services json file for Farside to use

This partially addresses the move towards de-listing Cloudflare
instances by default by allowing different services json files to be
used with different redis servers.

See #43
2022-07-27 13:53:33 -06:00
github-actions
7045b62ccf [CI] Auto update instances 2022-07-27 00:12:25 +00:00
github-actions
e431eadb62 [CI] Auto update instances 2022-07-26 00:10:41 +00:00
github-actions
84900b6c00 [CI] Auto update instances 2022-07-25 00:10:41 +00:00
github-actions
4c3913b418 [CI] Auto update instances 2022-07-24 00:12:11 +00:00
github-actions
796a3da0cf [CI] Auto update instances 2022-07-23 00:10:53 +00:00
github-actions
c88caf2833 [CI] Auto update instances 2022-07-22 00:11:27 +00:00
github-actions
0dc96613e8 [CI] Auto update instances 2022-07-21 00:10:26 +00:00
github-actions
80a5170bcc [CI] Auto update instances 2022-07-20 00:11:04 +00:00
github-actions
70631fef9a [CI] Auto update instances 2022-07-19 00:11:50 +00:00
github-actions
b0b539ecd0 [CI] Auto update instances 2022-07-18 00:09:56 +00:00
github-actions
707ca81b44 [CI] Auto update instances 2022-07-17 00:10:55 +00:00
github-actions
b7b687d327 [CI] Auto update instances 2022-07-16 00:12:10 +00:00
github-actions
dcad90826d [CI] Auto update instances 2022-07-15 00:11:37 +00:00
github-actions
0a2ff01d35 [CI] Auto update instances 2022-07-14 00:11:53 +00:00
Ben Busby
1b88e67ed0
Exclude i2p address from searx(ng) auto update 2022-07-13 10:53:27 -06:00
Ben Busby
0202677a94
Remove dead instances from non-auto updated services 2022-07-13 10:38:12 -06:00
github-actions
431c087f42 [CI] Auto update instances 2022-07-13 00:11:30 +00:00
github-actions
1e9fb1a973 [CI] Auto update instances 2022-07-12 00:10:06 +00:00
github-actions
d4213ba691 [CI] Auto update instances 2022-07-11 00:10:10 +00:00
github-actions
9f19a3db1f [CI] Auto update instances 2022-07-10 00:12:13 +00:00
github-actions
be2ea5d213 [CI] Auto update instances 2022-07-09 00:10:04 +00:00
github-actions
beb6d5b45d [CI] Auto update instances 2022-07-08 00:12:14 +00:00
github-actions
39e31b87f3 [CI] Auto update instances 2022-07-07 00:11:40 +00:00
github-actions
826a0c5dff [CI] Auto update instances 2022-07-05 00:09:17 +00:00
github-actions
232ae3f91b [CI] Auto update instances 2022-07-04 00:11:31 +00:00
github-actions
c230499f64 [CI] Auto update instances 2022-07-03 00:11:53 +00:00
github-actions
21a8856b3e [CI] Auto update instances 2022-07-02 00:10:41 +00:00
github-actions
85aeaaf75d [CI] Auto update instances 2022-07-01 00:10:58 +00:00
github-actions
4a85af3121 [CI] Auto update instances 2022-06-30 00:10:12 +00:00
github-actions
7d42f7e177 [CI] Auto update instances 2022-06-29 00:09:25 +00:00
github-actions
f1edff4477 [CI] Auto update instances 2022-06-28 00:11:59 +00:00
github-actions
e73c602a80 [CI] Auto update instances 2022-06-27 00:10:19 +00:00
github-actions
c9800af82e [CI] Auto update instances 2022-06-26 00:11:37 +00:00
github-actions
50e52a2f07 [CI] Auto update instances 2022-06-25 00:09:59 +00:00
github-actions
e30dd7509a [CI] Auto update instances 2022-06-24 00:09:15 +00:00
github-actions
faa9231d27 [CI] Auto update instances 2022-06-23 00:09:26 +00:00
github-actions
5bc5d3032f [CI] Auto update instances 2022-06-22 00:11:46 +00:00
Ben Busby
58e9fa572a
Add note to demo table in readme
The demo table doesn't include all available services that are supported by
Farside, and likely shouldn't anyways since it already clutters up the readme a
bit. The existing demos should give a good enough idea of how Farside works and
how to use it.
2022-06-21 16:17:39 -06:00
Ben Busby
32259f849b
Add proxitok (TikTok frontend)
Closes #19
2022-06-21 16:12:12 -06:00
Ben Busby
d280f961f5
Prepend /u/ for Bibliogram redirects if not present
Bibliogram links require a "/u/" prefix when viewing a user's profile,
which does not match Instagram's URL paradigm. This adds a bit of logic
for Bibliogram links to prepend this prefix if the user is not visiting
a post (indicated by a "/p/" prefix, which Bibliogram and Instagram BOTH
use) or the home page of an instance (indicated by an empty path value).
2022-06-21 15:53:16 -06:00
Ben Busby
52833ef89e
Redirect youtu.be links to the correct instance
Farside was previously only looking for links containing "youtube.com"
when performing the redirect for full URLs to youtube, which obviously
doesn't work for youtu.be shortened links. This updates the matching
logic to use a regex element for every key in the services map in order
to match against multiple possible domains for each parent service.

Fixes #40
2022-06-21 15:01:23 -06:00
Ben Busby
fb286398bc
Fix Wikiless auto update workflow
Wikiless updated their instance json with a couple of changes that broke
Farside's auto update workflow:
- The protocol for each instance is now included by default (no need to prepend
  "https://")
- The instances are differentiated between regular, onion, and i2p (no need to
  check for ".onion" in regular instance URLs)
2022-06-21 14:04:59 -06:00
github-actions
3654fee2b3 [CI] Auto update instances 2022-06-18 00:10:20 +00:00
github-actions
8714233bf3 [CI] Auto update instances 2022-06-17 00:10:05 +00:00
github-actions
6eda012332 [CI] Auto update instances 2022-06-16 00:09:25 +00:00
github-actions
a8e3bfdb43 [CI] Auto update instances 2022-06-15 00:11:13 +00:00
github-actions
4911410337 [CI] Auto update instances 2022-06-14 00:10:48 +00:00
Ben Busby
6210ed56e7
Include query params for all /_/ prefixed links
Query params were not included when using the "/_/" prefix for farside
links. This extracts the logic for parsing query params into a function
that is then used for both /_/ and non-/_/ links.
2022-06-13 10:20:39 -06:00
github-actions
213658ae6c [CI] Auto update instances 2022-06-13 00:11:04 +00:00
Ben Busby
7e31ea0ec3
Update services.json 2022-06-12 13:25:19 -06:00
github-actions
0f31b31f2a [CI] Auto update instances 2022-06-12 00:10:17 +00:00
github-actions
668d49a96c [CI] Auto update instances 2022-06-11 00:09:20 +00:00
github-actions
6011b989e4 [CI] Auto update instances 2022-06-10 00:09:41 +00:00
Ben Busby
4590170a61
Include new URL functionality in readme 2022-06-09 17:11:09 -06:00
Ben Busby
5006b97dfa
Auto select frontend for links to "parent" service
Farside now supports redirecting based on a provided link to a "parent"
service, if such a parent service is supported.

For example, a link such as:

farside.link/https://www.youtube.com/watch?v=dQw4w9WgXcQ

will now redirect to any of the available YouTube related frontends.

This works by matching against a mapping of "parent" service domains
("youtube.com", "reddit.com", etc) to a list of their respective frontend
alternatives (["invidious", "piped"], ["libreddit", "teddit"], etc). A
random element is chosen from this list, and the remainder of Farside's
routing logic proceeds as if the user had chosen the service directly to
begin with.

Closes #37
2022-06-09 13:08:01 -06:00
github-actions
ff8d220e90 [CI] Auto update instances 2022-06-09 00:09:21 +00:00
github-actions
4b9e326c12 [CI] Auto update instances 2022-06-08 00:08:41 +00:00
Ben Busby
ba43533dcc
Add librarian (LBRY/Odysee frontend)
Closes #36
2022-06-07 11:17:57 -06:00
github-actions
0822ad4902 [CI] Auto update instances 2022-06-07 00:08:45 +00:00
github-actions
a05ed94cd1 [CI] Auto update instances 2022-06-06 00:08:44 +00:00
github-actions
4e0916353e [CI] Auto update instances 2022-06-05 00:11:36 +00:00
github-actions
74531a5651 [CI] Auto update instances 2022-06-04 00:09:56 +00:00
github-actions
5127f9ad5a [CI] Auto update instances 2022-06-01 00:11:38 +00:00
github-actions
22f284ccc3 [CI] Auto update instances 2022-05-29 00:11:18 +00:00
github-actions
dae9a50943 [CI] Auto update instances 2022-05-27 00:09:55 +00:00
github-actions
5fdbbec4cb [CI] Auto update instances 2022-05-25 00:11:19 +00:00
github-actions
53125f2c7b [CI] Auto update instances 2022-05-24 00:10:47 +00:00
github-actions
cc171e32b3 [CI] Auto update instances 2022-05-23 00:10:31 +00:00
github-actions
6fc27f99fe [CI] Auto update instances 2022-05-22 00:11:03 +00:00
github-actions
a54d899b23 [CI] Auto update instances 2022-05-21 00:09:29 +00:00
github-actions
8e6b69489a [CI] Auto update instances 2022-05-19 00:09:39 +00:00
invokah
c1ed4ff60d
Add required debian package to README [skip ci] (#35)
Add a required package (erlang dev) for debian people hoping to run farside
themselves
2022-05-18 16:55:23 -06:00
github-actions
e8518fc83b [CI] Auto update instances 2022-05-18 00:10:34 +00:00
github-actions
59385561ce [CI] Auto update instances 2022-05-15 00:13:44 +00:00
github-actions
df41be4f69 [CI] Auto update instances 2022-05-14 00:12:38 +00:00
github-actions
869e232fd7 [CI] Auto update instances 2022-05-13 00:11:29 +00:00
github-actions
6542ee09e7 [CI] Auto update instances 2022-05-12 00:10:24 +00:00
github-actions
73a4bd9dfb [CI] Auto update instances 2022-05-11 00:09:12 +00:00
github-actions
ae32066b32 [CI] Auto update instances 2022-05-10 00:09:51 +00:00
github-actions
eea0701edd [CI] Auto update instances 2022-05-07 00:08:36 +00:00
github-actions
4fa58757aa [CI] Auto update instances 2022-05-06 00:09:28 +00:00
github-actions
3845ee8328 [CI] Auto update instances 2022-05-05 00:09:26 +00:00
github-actions
818fb6816c [CI] Auto update instances 2022-05-04 00:09:08 +00:00
github-actions
842b769d10 [CI] Auto update instances 2022-05-03 00:09:29 +00:00
github-actions
0ccaeedaf4 [CI] Auto update instances 2022-05-02 00:09:24 +00:00
github-actions
c5c48d1e19 [CI] Auto update instances 2022-05-01 00:12:16 +00:00
github-actions
b1b726a559 [CI] Auto update instances 2022-04-28 00:11:43 +00:00
github-actions
cb11a28e24 [CI] Auto update instances 2022-04-27 00:10:11 +00:00
github-actions
282a3a81c4 [CI] Auto update instances 2022-04-26 00:09:38 +00:00
github-actions
5cf27a8922 [CI] Auto update instances 2022-04-25 00:08:50 +00:00
github-actions
cdae4e04ce [CI] Auto update instances 2022-04-24 00:09:55 +00:00
github-actions
7a84bdb323 [CI] Auto update instances 2022-04-22 00:10:39 +00:00
github-actions
698bcf446e [CI] Auto update instances 2022-04-19 00:08:32 +00:00
github-actions
98db0e945b [CI] Auto update instances 2022-04-18 00:10:02 +00:00
github-actions
cc8d35c40a [CI] Auto update instances 2022-04-17 00:09:47 +00:00
github-actions
fb6416b26a [CI] Auto update instances 2022-04-16 00:09:22 +00:00
github-actions
8ffbe923c4 [CI] Auto update instances 2022-04-15 00:08:46 +00:00
github-actions
8f1804d56b [CI] Auto update instances 2022-04-14 00:09:31 +00:00
github-actions
9a75098d58 [CI] Auto update instances 2022-04-11 00:08:48 +00:00
github-actions
bfb8f0a980 [CI] Auto update instances 2022-04-10 00:09:05 +00:00
github-actions
3c1f4e16fa [CI] Auto update instances 2022-04-09 00:09:54 +00:00
github-actions
8abe2746ee [CI] Auto update instances 2022-04-08 00:08:37 +00:00
github-actions
cfed71acfc [CI] Auto update instances 2022-04-07 00:09:17 +00:00
github-actions
c7276e61ac [CI] Auto update instances 2022-04-06 00:08:42 +00:00
Ben Busby
29178e02c3
Use 'generator' field to filter SearXNG instances
See #23

More info: searxng/searxng#1046
2022-04-05 16:06:05 -06:00
github-actions
2d4fa1f6b9 [CI] Auto update instances 2022-04-05 00:08:16 +00:00
github-actions
5439c3a0e3 [CI] Auto update instances 2022-04-04 00:08:37 +00:00
github-actions
d9818ede94 [CI] Auto update instances 2022-04-03 00:08:54 +00:00
github-actions
8dad8cd0a8 [CI] Auto update instances 2022-04-02 00:08:03 +00:00
github-actions
86e2431ec7 [CI] Auto update instances 2022-04-01 00:09:23 +00:00
github-actions
d04e25b967 [CI] Auto update instances 2022-03-31 00:08:30 +00:00
github-actions
cb049efa4f [CI] Auto update instances 2022-03-30 00:08:47 +00:00
github-actions
cb2b458c9b [CI] Auto update instances 2022-03-29 00:09:39 +00:00
github-actions
3015382914 [CI] Auto update instances 2022-03-28 00:09:04 +00:00
github-actions
3356303b56 [CI] Auto update instances 2022-03-27 00:08:46 +00:00
github-actions
8c91e589eb [CI] Auto update instances 2022-03-26 00:08:34 +00:00
github-actions
6c06faefee [CI] Auto update instances 2022-03-25 00:08:16 +00:00
github-actions
0bac381ddb [CI] Auto update instances 2022-03-24 00:07:49 +00:00
github-actions
a9f50070d9 [CI] Auto update instances 2022-03-23 00:08:25 +00:00
Kazi
aa499e8760
Add new libreddit and nitter instances (#25)
https://leddit.xyz,
https://de.leddit.xyz

https://nttr.stream
https://de.nttr.stream
2022-03-22 09:32:30 -06:00
Seth For Privacy
186dd0d1e8
Remove https://libreddit.sethforprivacy.com (#24) 2022-03-22 09:27:21 -06:00
github-actions
1cb01c95d8 [CI] Auto update instances 2022-03-22 00:09:08 +00:00
github-actions
99364b2e82 [CI] Auto update instances 2022-03-21 00:08:33 +00:00
github-actions
62cac26e2d [CI] Auto update instances 2022-03-20 00:08:30 +00:00
github-actions
b49e43a300 [CI] Auto update instances 2022-03-19 00:07:33 +00:00
Ben Busby
1be19a8a29
Update throttle test to reflect new behavior
The "throttling" performed by Farside now redirects to the same instance
as before, rather than outright blocking the connection.
2022-03-18 13:59:35 -06:00
Ben Busby
22e9135e0c
Reuse previous instance within rate-limit interval
Rather than blocking <1s back-to-back queries from the same IP, Farside
will now re-use the previously selected instance.

Fixes #20
2022-03-18 13:51:37 -06:00
Ben Busby
20347822da
Support SearXNG
Added a new seperate service for only redirecting to SearXNG instances.
Note that plain "searx" redirects will use both SearX and SearXNG
instances for those who don't have a preference between the two.

Closes #23
2022-03-18 13:28:45 -06:00
github-actions
7647c1c101 [CI] Auto update instances 2022-03-18 00:19:51 +00:00
Ben Busby
9e0b026e47
Add Scribe to examples in readme
Closes #22
2022-03-14 12:15:19 -06:00
github-actions
e125d23773 [CI] Auto update instances 2022-03-12 00:07:40 +00:00
github-actions
d4b0cbc3d0 [CI] Auto update instances 2022-03-11 00:09:00 +00:00
github-actions
d74ff730ef [CI] Auto update instances 2022-03-10 00:08:08 +00:00
github-actions
64f6f0bab8 [CI] Auto update instances 2022-03-09 00:08:15 +00:00
github-actions
88b000a5e3 [CI] Auto update instances 2022-03-08 00:07:42 +00:00
github-actions
e270c124fe [CI] Auto update instances 2022-03-07 00:08:10 +00:00
github-actions
3116302daf [CI] Auto update instances 2022-03-06 00:09:43 +00:00
github-actions
990fb6a7cf [CI] Auto update instances 2022-03-05 00:07:52 +00:00
github-actions
a60a2f6d4b [CI] Auto update instances 2022-03-04 00:08:43 +00:00
github-actions
263a326f41 [CI] Auto update instances 2022-03-03 00:08:36 +00:00
github-actions
3064b8a121 [CI] Auto update instances 2022-03-01 00:09:28 +00:00
github-actions
b5e402ac1f [CI] Auto update instances 2022-02-28 00:08:35 +00:00
github-actions
d4cecb8815 [CI] Auto update instances 2022-02-27 00:08:58 +00:00
github-actions
1b2b27941f [CI] Auto update instances 2022-02-26 00:07:27 +00:00
Ben Busby
21646f8f29
Add support for Wikiless instances
"A free open source alternative Wikipedia front-end focused on privacy"
- https://codeberg.org/orenom/Wikiless
2022-02-24 17:27:34 -07:00
github-actions
ee2996e258 [CI] Auto update instances 2022-02-25 00:07:47 +00:00
github-actions
43519b1ad7 [CI] Auto update instances 2022-02-23 00:08:05 +00:00
github-actions
8c989d9fbe [CI] Auto update instances 2022-02-22 00:07:38 +00:00
github-actions
1048e7eca7 [CI] Auto update instances 2022-02-20 00:09:14 +00:00
github-actions
6240b2212e [CI] Auto update instances 2022-02-19 00:07:33 +00:00
github-actions
da02848075 [CI] Auto update instances 2022-02-18 00:47:56 +00:00
github-actions
f340c765bc [CI] Auto update instances 2022-02-17 00:38:22 +00:00
github-actions
d655f63c87 [CI] Auto update instances 2022-02-16 00:42:41 +00:00
github-actions
314e1bc29d [CI] Auto update instances 2022-02-15 00:46:28 +00:00
Ben Busby
5235f5a3bf
Replace poison dependency w/ jason
The dependency took a long time to compile, and was causing problems for
a user who was attempting to build the project.

Since it wasn't a strictly necessary dependency, and `jason` was already
included in the project, all instances of `poison` have been replaced
with `jason`.

The only additional code that this introduced was converting from
generic maps returned by `Jason.decode` into Service structs.
2022-02-14 11:21:32 -07:00
Ben Busby
51aba2ad78
Remove redis config file from command in readme
Specifying the default redis.conf file is not required, and should be excluded
from the project documentation.
2022-02-14 10:40:46 -07:00
github-actions
bff6a2287f [CI] Auto update instances 2022-02-14 00:39:54 +00:00
github-actions
180a51bc2e [CI] Auto update instances 2022-02-13 00:44:27 +00:00
github-actions
7e3292a56b [CI] Auto update instances 2022-02-11 00:45:49 +00:00
github-actions
dde98c8a0f [CI] Auto update instances 2022-02-10 00:42:22 +00:00
github-actions
ed42cfbe5b [CI] Auto update instances 2022-02-09 00:43:04 +00:00
github-actions
0be392d04e [CI] Auto update instances 2022-02-08 00:41:14 +00:00
Ben Busby
25052a2a7c
Restore missing invidious instances
The latest CI update removed all invidious instances. Need to update CI
to skip applying an update for a particular service if there is an error
when fetching.
2022-02-07 11:40:56 -07:00
Austin Huang
e55fc0fb0f
Update services.json (#16)
Add "*.bus-hit.me" instances, remove a few dead instances
2022-02-07 11:33:49 -07:00
github-actions
bf99f44f1d [CI] Auto update instances 2022-02-07 00:40:35 +00:00
github-actions
1105fc6b9a [CI] Auto update instances 2022-02-06 00:46:19 +00:00
github-actions
7a18f766b6 [CI] Auto update instances 2022-02-05 00:34:22 +00:00
github-actions
1b153b2276 [CI] Auto update instances 2022-02-04 00:39:53 +00:00
Austin Huang
2cd82adeb9
Auto update teddit and Scribe instances (#15) 2022-02-03 15:10:48 -07:00
github-actions
87b1e15c77 [CI] Auto update instances 2022-02-03 00:38:41 +00:00
Ben Busby
11e75dc66b
Identify farside in user agent
Fixes #14
2022-02-02 12:38:21 -07:00
github-actions
23df011cf3 [CI] Auto update instances 2022-02-02 00:41:12 +00:00
github-actions
58a29c1130 [CI] Auto update instances 2022-02-01 00:41:00 +00:00
github-actions
9f7abe3e3b [CI] Auto update instances 2022-01-31 00:38:33 +00:00
github-actions
3cb3739429 [CI] Auto update instances 2022-01-30 00:39:38 +00:00
github-actions
6c11e9a06a [CI] Auto update instances 2022-01-29 00:36:22 +00:00
37 changed files with 2626 additions and 836 deletions

View File

@ -1,4 +0,0 @@
# Used by "mix format"
[
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]

View File

@ -1,41 +0,0 @@
name: Elixir CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
name: Build and test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Elixir
uses: erlef/setup-elixir@885971a72ed1f9240973bd92ab57af8c1aa68f24
with:
elixir-version: '1.12.3'
otp-version: '24'
- name: Restore dependencies cache
uses: actions/cache@v2
with:
path: deps
key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
restore-keys: ${{ runner.os }}-mix-
- name: Start Redis
uses: supercharge/redis-github-action@1.2.0
- name: Install dependencies
run: mix deps.get
- name: Initialize services
run: FARSIDE_TEST=1 mix run -e Farside.Instances.sync
- name: Run tests
run: FARSIDE_TEST=1 mix test --trace

19
.github/workflows/tests.yml vendored Normal file
View File

@ -0,0 +1,19 @@
on: [push, pull_request]
name: Tests
jobs:
test:
strategy:
matrix:
go-version: [1.21.x, 1.22.x, 1.23.x]
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v2
- name: Test
run: go test -v ./...

View File

@ -8,9 +8,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Install dependencies
run: sudo apt-get install -y jq
run: |
sudo apt-get install -y jq dnsutils
sudo curl -L https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/local/bin/yq
sudo chmod a+rx /usr/local/bin/yq
- uses: webfactory/ssh-agent@v0.5.3
with:
@ -20,11 +23,11 @@ jobs:
- name: Fetch instances
run: |
function apply_update() {
mv services-tmp.json services.json
mv services-tmp.json services-full.json
rm -f *-tmp.json
# Ensure no trailing slashes for any instance
sed -i 's/\/"/"/g' services.json
sed -i 's/\/"/"/g' services-full.json
}
# ==============================================================
@ -36,42 +39,91 @@ jobs:
git checkout main
# ==============================================================
# Searx update
# Bibliogram update
# NOTE: Bibliogram has been discontinued and the official instance
# at bibliogram.art is no longer around. Unless a new "official"
# instance pops up, Bibliogram will likely be removed from farside
# ==============================================================
#curl -s https://bibliogram.art/api/instances | \
#jq '[
#.data |
#.[] |
#select(.onion_site | not) |
#.address
#] | sort' > bibliogram-tmp.json
#jq --slurpfile bibliogram bibliogram-tmp.json \
#'( .[] | select(.type == "bibliogram") )
#.instances |= $bibliogram[0]' services-full.json > services-tmp.json
#apply_update
# ==============================================================
# searx update
# ==============================================================
curl -s https://raw.githubusercontent.com/searx/searx-instances/master/searxinstances/instances.yml | \
yq -o=json 'keys | sort' > searx-tmp.json
jq --slurpfile searx searx-tmp.json \
'( .[] | select(.type == "searx") )
.instances |= $searx[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# SearXNG update
# ==============================================================
echo "Fetching searx instances..."
curl -s https://searx.space/data/instances.json | \
jq '[
.instances |
to_entries[] |
select(.value.network_type == "normal") |
select(.value.generator | . != null) |
select(.value.generator | contains("searxng")) |
select(.value.version | . != null) |
select(.value.version | startswith("1.0.0")) |
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") |
select(.key | contains(".i2p") | not) |
.key
] | sort' > searx-tmp.json
] | sort' > searxng-tmp.json
cat searx-tmp.json | jq .
cat searxng-tmp.json | jq .
jq --slurpfile searx searx-tmp.json \
'( .[] | select(.type == "searx") )
.instances |= $searx[0]' services.json > services-tmp.json
jq --slurpfile searxng searxng-tmp.json \
'( .[] | select(.type == "searxng") )
.instances |= $searxng[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# Simply Translate update
# Nitter update
# ==============================================================
curl -s https://simple-web.org/instances/simplytranslate > st-out
curl -s https://status.d420.de/api/v1/instances | \
jq '[
.hosts |
to_entries[] |
select(.value.healthy == true) |
.value.url ] |
sort' > nitter-tmp.json
jq --slurpfile nitter nitter-tmp.json \
'( .[] | select(.type == "nitter") )
.instances |= $nitter[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# SimplyTranslate update
# ==============================================================
curl -s https://codeberg.org/SimpleWeb/Website/raw/branch/master/config.json | jq -r '.projects | map(select(.id == "simplytranslate"))[0].instances | .[]' > st-out
sed -i -e 's/^/https:\/\//' st-out
jq -ncR '[inputs]' <<< "$(cat st-out | sort)" > st-tmp.json
jq --slurpfile simplytranslate st-tmp.json \
'( .[] | select(.type == "simplytranslate") )
.instances |= $simplytranslate[0]' services.json > services-tmp.json
.instances |= $simplytranslate[0]' services-full.json > services-tmp.json
apply_update
@ -83,32 +135,174 @@ jobs:
jq --slurpfile whoogle whoogle-tmp.json \
'( .[] | select(.type == "whoogle") )
.instances |= $whoogle[0]' services.json > services-tmp.json
.instances |= $whoogle[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# Invidious update
# ==============================================================
curl -s https://api.invidious.io/instances.json | \
jq '[
.[] |
select(.[1].type | contains("https")) ] |
[.[][1].uri] |
.[] |
select(.[1].type | contains("https")) ] |
[.[][1].uri] |
sort' > invidious-tmp.json
jq --slurpfile invidious invidious-tmp.json \
'( .[] | select(.type == "invidious") )
.instances |= $invidious[0]' services.json > services-tmp.json
.instances |= $invidious[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# Scribe update
# ==============================================================
curl -s https://git.sr.ht/~edwardloveall/scribe/blob/main/docs/instances.json > scribe-tmp.json
jq --slurpfile scribe scribe-tmp.json \
'( .[] | select(.type == "scribe") )
.instances |= $scribe[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# teddit update
# Note: no longer maintained
# ==============================================================
#curl -s https://codeberg.org/teddit/teddit/raw/branch/main/instances.json | \
#jq '[
#.[] |
#select(.url | contains("https")) |
#.url ] |
#sort' > teddit-tmp.json
#jq --slurpfile teddit teddit-tmp.json \
#'( .[] | select(.type == "teddit") )
#.instances |= $teddit[0]' services-full.json > services-tmp.json
#apply_update
# ==============================================================
# Wikiless update
# NOTE: Codeberg has removed the Wikiless repo until the maintainer
# makes changes. See https://orenom.fi for updates.
# ==============================================================
#curl -s https://codeberg.org/orenom/Wikiless/raw/branch/main/instances.json | \
#jq '[
#.[] |
#select((.url | contains(".onion") | not) and (.url | contains("https"))).url ] |
#sort' > wikiless-tmp.json
#jq --slurpfile wikiless wikiless-tmp.json \
#'( .[] | select(.type == "wikiless") )
#.instances |= $wikiless[0]' services-full.json > services-tmp.json
#apply_update
# ==============================================================
# libreddit + redlib update
# ==============================================================
curl -s https://raw.githubusercontent.com/redlib-org/redlib-instances/main/instances.json | \
jq '[
.instances[] |
select(.url) |
.url ] |
sort' > libreddit-tmp.json
jq --slurpfile libreddit libreddit-tmp.json \
'( .[] | select(.type == "libreddit") )
.instances |= $libreddit[0]' services-full.json > services-tmp.json
mv services-tmp.json services-full.json
jq --slurpfile redlib libreddit-tmp.json \
'( .[] | select(.type == "redlib") )
.instances |= $redlib[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# BreezeWiki update
# ==============================================================
curl -s https://docs.breezewiki.com/files/instances.json | \
jq '[.[] | .instance]' > breezewiki-tmp.json
jq --slurpfile breezewiki breezewiki-tmp.json \
'(.[] | select(.type == "breezewiki") )
.instances |= $breezewiki[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# GotHub update
# ==============================================================
curl -s https://codeberg.org/gothub/gothub-instances/raw/branch/master/instances.json | \
jq '[.[] | .link]' > gothub-tmp.json
jq --slurpfile gothub gothub-tmp.json \
'(.[] | select(.type == "gothub") )
.instances |= $gothub[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# LibreX/LibreY update
# ==============================================================
curl -s https://raw.githubusercontent.com/Ahwxorg/LibreY/main/instances.json | \
jq '[
.instances |
.[] |
.clearnet] |
sort' > librey-tmp.json
jq --slurpfile librey librey-tmp.json \
'( .[] | select(.type == "librey") )
.instances |= $librey[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# Rimgo update
# ==============================================================
curl -s https://rimgo.codeberg.page/api.json | \
jq '[
.clearnet[] |
.url] |
sort' > rimgo-tmp.json
jq --slurpfile rimgo rimgo-tmp.json \
'(.[] | select(.type == "rimgo") )
.instances |= $rimgo[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# Tent update
# ==============================================================
curl -s https://forgejo.sny.sh/sun/Tent/raw/branch/main/instances.json | \
jq '[
.[] |
select(.type == "http") |
.url] |
sort' > tent-tmp.json
jq --slurpfile tent tent-tmp.json \
'(.[] | select(.type == "tent") )
.instances |= $tent[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# TODO: Update instances for other services
# ==============================================================
# ==============================================================
# Filter out Cloudflared instances from services-full.json into
# services.json
# ==============================================================
./tools/un-cloudflare.sh
# ==============================================================
# Push changes
# ==============================================================
git add services.json
git add services.json services-full.json
git commit -m '[CI] Auto update instances' || exit 0
git push

19
.gitignore vendored
View File

@ -1,15 +1,4 @@
/_build
/cover
/deps
/doc
/.fetch
erl_crash.dump
*.ez
*.beam
/config/*.secret.exs
.elixir_ls/
# Ignore results from update script
.update-result*
*.rdb
badger-db
farside
deploy.sh
out

187
README.md
View File

@ -1,8 +1,35 @@
![Farside](img/farside.svg)
<div align="center" style="margin-bottom: 10px;">
<img src="https://benbusby.com/assets/images/farside.svg" alt="Farside">
</div>
<br>
<div align="center">
[![Latest Release](https://img.shields.io/github/v/release/benbusby/farside?label=Release)](https://github.com/benbusby/farside/releases)
[![MIT License](https://img.shields.io/github/license/benbusby/earthbound-themes.svg)](http://opensource.org/licenses/MIT)
[![Elixir CI](https://github.com/benbusby/privacy-revolver/actions/workflows/elixir.yml/badge.svg)](https://github.com/benbusby/privacy-revolver/actions/workflows/elixir.yml)
[![Tests](https://github.com/benbusby/farside/actions/workflows/tests.yml/badge.svg)](https://github.com/benbusby/farside/actions/workflows/tests.yml)
<table>
<tr>
<td><a href="https://sr.ht/~benbusby/farside">SourceHut</a></td>
<td><a href="https://github.com/benbusby/farside">GitHub</a></td>
</tr>
</table>
</div>
Contents
1. [About](#about)
2. [Demo](#demo)
3. [How It Works](#how-it-works)
4. [Cloudflare](#regarding-cloudflare)
5. [Development](#development)
1. [Environment Variables](#environment-variables)
6. [Search Integration](#search-integration)
1. [Kagi](#kagi)
2. [Whoogle Search](#whoogle-search)
## About
A redirecting service for FOSS alternative frontends.
@ -13,25 +40,66 @@ available public instances for a particular service, while also helping to
distribute traffic more evenly across all instances and avoid performance
bottlenecks and rate-limiting.
Farside also integrates smoothly with basic redirector extensions in most
browsers. For a simple example setup,
[refer to the wiki](https://github.com/benbusby/farside/wiki/Browser-Extension).
## Demo
Farside's links work with the following structure: `farside.link/<service>/<path>`
For example:
| Service | Page | Farside Link |
| -- | -- | -- |
| [Libreddit](https://github.com/spikecodes/libreddit) | /r/popular | https://farside.link/libreddit/r/popular
| [Teddit](https://codeberg.org/teddit/teddit) | /r/popular | https://farside.link/teddit/r/popular
| [Nitter](https://github.com/zedeus/nitter) | User Profile | https://farside.link/nitter/josevalim
| [Invidious](https://github.com/iv-org/invidious) | Home Page | https://farside.link/invidious
| [Piped](https://github.com/TeamPiped/Piped) | Video Page | https://farside.link/piped/watch?v=eBGIQ7ZuuiU
| [Bibliogram](https://sr.ht/~cadence/bibliogram/) | User Profile | https://farside.link/bibliogram/u/kbdfans
| [Whoogle](https://github.com/benbusby/whoogle-search) | Search "Elixir" | https://farside.link/whoogle/search?q=elixir&lang_interface=en
| [Searx](https://github.com/searx/searx) | Search "Redis" | https://farside.link/searx/search?q=redis
| [SimplyTranslate](https://git.sr.ht/~metalune/simplytranslate_web) | Translate "hola" | https://farside.link/simplytranslate/?engine=google&text=hola
| [Lingva](https://github.com/TheDavidDelta/lingva-translate) | Translate "bonjour" | https://farside.link/lingva/auto/en/bonjour
| [Rimgo](https://codeberg.org/video-prize-ranch/rimgo) | View photo album | https://farside.link/rimgo/a/H8M4rcp
<table>
<tr>
<td>Service</td>
<td>Page</td>
<td>Farside Link</td>
</tr>
<tr>
<td><a href="https://sr.ht/~edwardloveall/Scribe/">Scribe</a></td>
<td>View Medium post</td>
<td><a href="https://farside.link/scribe/@ftrain/big-data-small-effort-b62607a43a8c">https://farside.link/scribe/@ftrain/big-data-small-effort-b62607a43a8c</a></td>
</tr>
<tr>
<td><a href="https://github.com/spikecodes/libreddit">Libreddit</a></td>
<td>/r/popular</td>
<td><a href="https://farside.link/libreddit/r/popular">https://farside.link/libreddit/r/popular</a></td>
</tr>
<tr>
<td><a href="https://gitdab.com/cadence/breezewiki">BreezeWiki</a></td>
<td>Balatro Wiki</td>
<td><a href="https://farside.link/breezewiki/balatrogame">https://farside.link/https://balatrogame.fandom.com</a></td>
</tr>
<tr>
<td><a href="https://github.com/searxng/searxng">SearXNG</a></td>
<td>Search "EFF"</td>
<td><a href="https://farside.link/searxng/search?q=EFF">https://farside.link/searxng/search?q=EFF</a></td>
</tr>
<tr>
<td><a href="https://codeberg.org/ManeraKai/simplytranslate">SimplyTranslate</a></td>
<td>Translate "hola"</td>
<td><a href="https://farside.link/simplytranslate/?engine=google&text=hola">https://farside.link/simplytranslate/?engine=google&text=hola</a></td>
</tr>
<tr>
<td><a href="https://github.com/TheDavidDelta/lingva-translate">Lingva</a></td>
<td>Translate "bonjour"</td>
<td><a href="https://farside.link/lingva/auto/en/bonjour">https://farside.link/lingva/auto/en/bonjour</a></td>
</tr>
<tr>
<td><a href="https://codeberg.org/video-prize-ranch/rimgo">Rimgo</a></td>
<td>View photo album</td>
<td><a href="https://farside.link/rimgo/a/H8M4rcp">https://farside.link/rimgo/a/H8M4rcp</a></td>
</tr>
</table>
<sup>Note: This table doesn't include all available services. For a complete list of supported frontends, see: https://farside.link</sup>
Farside also accepts URLs to "parent" services, and will redirect to an appropriate front end service, for example:
- https://farside.link/https://balatrogame.fandom.com/wiki/Abandoned_Deck will redirect to a [BreezeWiki](https://gitdab.com/cadence/breezewiki) instance
- https://farside.link/reddit.com/r/popular will redirect to a [Libreddit](https://github.com/spikecodes/libreddit) or [Teddit](https://codeberg.org/teddit/teddit) instance
- etc.
## How It Works
@ -46,13 +114,14 @@ Farside's routing is very minimal, with only the following routes:
- `/`
- The app home page, displaying all live instances for every service
- `/ping`
- A passthrough "ping" to redis to ensure both app and redis are working
- `/:service/*glob`
- The main endpoint for redirecting a user to a working instance of a
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
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
- `/_/:service/*glob`
@ -64,8 +133,8 @@ Farside's routing is very minimal, with only the following routes:
- *Note: Uses Javascript to preserve the page in history*
When a service is requested with the `/:service/...` endpoint, Farside requests
the list of working instances from Redis and returns a random one from the list
and adds that instance as a new entry in Redis to remove from subsequent
the list of working instances from the db and returns a random one from the list
and adds that instance as a new entry in the db to remove from subsequent
requests for that service. For example:
A user navigates to `/nitter` and is redirected to `nitter.net`. The next user
@ -80,18 +149,78 @@ ensure better distribution of traffic to available instances for each service.
Farside also has built-in IP ratelimiting for all requests, enforcing only one
request per second per IP.
## Regarding Cloudflare
Instances for each supported service that are deployed behind Cloudflare are
not included when using [farside.link](https://farside.link). If you would like
to also access instances that use Cloudflare (in addition to instances that do
not), you can either use [cf.farside.link](https://cf.farside.link) instead, or
deploy your own instance of Farside and set
`FARSIDE_SERVICES_JSON=services-full.json` when running.
If you do decide to use [cf.farside.link](https://cf.farside.link) or use the
full instance list provided by `services-full.json`, please be aware that
Cloudflare takes steps to block site visitors using Tor (and some VPNs), and
that their mission to centralize the entire web behind their service ultimately
goes against what Farside is trying to solve. Use at your own discretion.
## Development
- Install [redis](https://redis.io)
- Install [elixir](https://elixir-lang.org/install.html)
- Start redis: `redis-server /usr/local/etc/redis.conf`
- Install dependencies: `mix deps.get`
- Initialize redis contents: `mix run -e Farside.Instances.sync`
- Run Farside: `mix run --no-halt`
- Uses localhost:4001
- Install [Go](https://go.dev/doc/install)
- Compile with `go build`
### Environment Variables
| Name | Purpose |
| -- | -- |
| FARSIDE_TEST | If enabled, bypasses the instance availability check and adds all instances to the pool. |
<table>
<tr>
<td>Name</td>
<td>Purpose</td>
</tr>
<tr>
<td>FARSIDE_TEST</td>
<td>If enabled, bypasses the instance availability check and adds all instances to the pool</td>
</tr>
<tr>
<td>FARSIDE_PORT</td>
<td>The port to run Farside on (default: `4001`)</td>
</tr>
<tr>
<td>FARSIDE_DB_DIR</td>
<td>The path to the directory to use for storing instance data (default: `./`)</td>
</tr>
<tr>
<td>FARSIDE_CF_ENABLED</td>
<td>Set to 1 to enable redirecting to instances behind cloudflare</td>
</tr>
<tr>
<td>FARSIDE_CRON</td>
<td>Set to 0 to deactivate the periodic instance availability check</td>
</tr>
</table>
## Search Integration
### Kagi
https://kagi.com
On the settings page, go to `Search > Advanced > Open Redirects` and setup your redirects.
With the exception of BreezeWiki, most redirect rules can just extract the path of the
link you're visiting and append them to whichever Farside redirect you want to use.
For example:
##### Medium -> Scribe
`^https://medium.com/(.*)|https://farside.link/scribe/$1`
##### Fandom -> BreezeWiki
`^https://([^/]+).fandom.com/(.*)|https://farside.link/breezewiki/$1/$2`
### Whoogle Search
https://github.com/benbusby/whoogle-search
Whoogle automatically routes eligible links through Farside when the `Replace
Social Media Links` option in the home page settings menu is enabled.

View File

@ -1,22 +0,0 @@
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: [
{"User-Agent", "Mozilla/5.0 (Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0"},
{"Accept", "text/html"},
{"Accept-Language", "en-US,en;q=0.5"},
{"Accept-Encoding", "gzip, deflate, br"}
],
queries: [
"weather",
"time"
]

45
cross_compile.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash
dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
mkdir -p $dir/out/
rm -f $dir/out/*
platforms=(
"linux/arm"
"linux/amd64"
"linux/arm64"
"linux/386"
"darwin/amd64"
"darwin/arm64"
"windows/386"
"windows/amd64"
"windows/arm64")
for platform in "${platforms[@]}"
do
platform_split=(${platform//\// })
GOOS=${platform_split[0]}
GOARCH=${platform_split[1]}
output_name="farside"
tar_name="farside_${GOOS}_${GOARCH}.tar.gz"
if [ $GOOS = "darwin" ]; then
tar_name="farside_macOS_${GOARCH}.tar.gz"
fi
if [ $GOOS = "windows" ]; then
output_name+=".exe"
fi
compile_cmd="GOOS=$GOOS GOARCH=$GOARCH go build -ldflags='-s -w' -o $output_name ."
echo "$compile_cmd"
eval $compile_cmd
if [ $? -ne 0 ]; then
echo "An error has occurred! Aborting the script execution..."
exit 1
fi
tar -czvf out/$tar_name $output_name
rm -f $output_name
done

153
db/cron.go Normal file
View File

@ -0,0 +1,153 @@
package db
import (
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
"slices"
"strings"
"time"
"github.com/benbusby/farside/services"
"github.com/robfig/cron/v3"
)
const defaultPrimary = "https://farside.link/state"
const defaultCFPrimary = "https://cf.farside.link/state"
var LastUpdate time.Time
var skipInstanceChecks = []string{
"searx",
"searxng",
}
func InitCronTasks() {
log.Println("Initializing cron tasks...")
updateServiceList()
cronDisabled := os.Getenv("FARSIDE_CRON")
if len(cronDisabled) == 0 || cronDisabled == "1" {
c := cron.New()
c.AddFunc("@every 10m", queryServiceInstances)
c.AddFunc("@daily", updateServiceList)
c.Start()
}
queryServiceInstances()
}
func updateServiceList() {
fileName := services.GetServicesFileName()
_, _ = services.FetchServicesFile(fileName)
services.InitializeServices()
}
func queryServiceInstances() {
log.Println("Starting instance queries...")
isPrimary := os.Getenv("FARSIDE_PRIMARY")
if len(isPrimary) == 0 || isPrimary != "1" {
remoteServices, err := fetchInstancesFromPrimary()
if err != nil {
log.Println("Unable to fetch instances from primary", err)
}
for _, service := range remoteServices {
SetInstances(service.Type, service.Instances)
}
LastUpdate = time.Now().UTC()
return
}
for _, service := range services.ServiceList {
canSkip := slices.Contains[[]string, string](skipInstanceChecks, service.Type)
fmt.Printf("===== %s =====\n", service.Type)
var instances []string
for _, instance := range service.Instances {
testURL := strings.ReplaceAll(
service.TestURL,
"<%=query%>",
"current+weather")
available := queryServiceInstance(
instance,
testURL,
canSkip)
if available {
instances = append(instances, instance)
}
}
SetInstances(service.Type, instances)
}
LastUpdate = time.Now().UTC()
}
func fetchInstancesFromPrimary() ([]services.Service, error) {
primaryURL := defaultPrimary
useCF := os.Getenv("FARSIDE_CF_ENABLED")
if len(useCF) > 0 && useCF == "1" {
primaryURL = defaultCFPrimary
}
resp, err := http.Get(primaryURL)
if err != nil {
return nil, err
}
defer resp.Body.Close()
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
var serviceList []services.Service
err = json.Unmarshal(bodyBytes, &serviceList)
return serviceList, err
}
func queryServiceInstance(instance, testURL string, canSkipCheck bool) bool {
testMode := os.Getenv("FARSIDE_TEST")
if len(testMode) > 0 && testMode == "1" {
return true
}
if canSkipCheck {
fmt.Printf(" [INFO] Adding %s\n", instance)
return true
}
ua := "Mozilla/5.0 (compatible; Farside/1.0.0; +https://farside.link)"
url := instance + testURL
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
fmt.Println(" [ERRO] Failed to create new http request!", err)
return false
}
req.Header.Set("User-Agent", ua)
client := &http.Client{
Timeout: 10 * time.Second,
}
resp, err := client.Do(req)
if err != nil {
fmt.Println(" [ERRO] Error fetching instance:", err)
return false
} else if resp.StatusCode != http.StatusOK {
fmt.Printf(" [WARN] Received non-200 status for %s\n", url)
return false
} else {
fmt.Printf(" [INFO] Received 200 status for %s\n", url)
}
return true
}

158
db/db.go Normal file
View File

@ -0,0 +1,158 @@
package db
import (
"encoding/json"
"errors"
"fmt"
"log"
"math/rand"
"os"
"slices"
"strings"
"time"
"github.com/benbusby/farside/services"
"github.com/dgraph-io/badger/v4"
)
var (
badgerDB *badger.DB
selectionMap map[string]string
cachedServiceList []services.Service
cacheUpdated time.Time
)
func InitializeDB() error {
var err error
dbDir := os.Getenv("FARSIDE_DB_DIR")
if len(dbDir) == 0 {
dbDir = "./badger-db"
}
badgerDB, err = badger.Open(badger.DefaultOptions(dbDir))
if err != nil {
return err
}
return nil
}
func SetInstances(service string, instances []string) error {
instancesBytes, err := json.Marshal(instances)
if err != nil {
return err
}
err = badgerDB.Update(func(txn *badger.Txn) error {
err := txn.Set([]byte(service), instancesBytes)
return err
})
if err != nil {
return err
}
return nil
}
func GetInstance(service, path string) (string, error) {
instances, err := GetAllInstances(service)
if err != nil || len(instances) == 0 {
if err != nil {
log.Println("DB err:", err)
}
link, ok := services.FallbackMap[service]
if !ok {
return "", errors.New("invalid service")
}
return link, nil
}
previous, ok := selectionMap[service]
if ok && len(instances) > 2 {
instances = slices.DeleteFunc(instances, func(i string) bool {
return i == previous
})
}
index := rand.Intn(len(instances))
value := instances[index]
selectionMap[service] = value
if len(path) > 0 {
value = strings.TrimSuffix(value, "/")
value = fmt.Sprintf("%s/%s", value, path)
}
return value, nil
}
func GetAllInstances(service string) ([]string, error) {
var instances []string
err := badgerDB.View(func(txn *badger.Txn) error {
item, err := txn.Get([]byte(service))
if err != nil {
return err
}
err = item.Value(func(val []byte) error {
err := json.Unmarshal(val, &instances)
return err
})
return err
})
return instances, err
}
func GetServiceList() []services.Service {
if cacheUpdated.Add(5 * time.Minute).After(time.Now().UTC()) {
return cachedServiceList
}
canCache := true
var serviceList []services.Service
for _, service := range services.ServiceList {
instances, err := GetAllInstances(service.Type)
if err != nil {
canCache = false
instances = []string{service.Fallback}
}
storedService := services.Service{
Type: service.Type,
Instances: instances,
}
serviceList = append(serviceList, storedService)
}
if canCache {
cachedServiceList = serviceList
cacheUpdated = time.Now().UTC()
}
return serviceList
}
func CloseDB() error {
log.Println("Closing database...")
err := badgerDB.Close()
if err != nil {
log.Println("Error closing database", err)
return err
}
log.Println("Database closed!")
return nil
}
func init() {
selectionMap = make(map[string]string)
}

60
db/db_test.go Normal file
View File

@ -0,0 +1,60 @@
package db
import (
"log"
"os"
"slices"
"testing"
)
func TestMain(m *testing.M) {
err := InitializeDB()
if err != nil {
log.Fatalln("Failed to initialize database")
}
exitCode := m.Run()
_ = CloseDB()
os.Exit(exitCode)
}
func TestDatabase(t *testing.T) {
var (
service = "test"
siteA = "a.com"
siteB = "b.com"
siteC = "c.com"
)
instances := []string{siteA, siteB, siteC}
err := SetInstances(service, instances)
if err != nil {
t.Fatalf("Failed to set instances: %v\n", err)
}
dbInstances, err := GetAllInstances(service)
if err != nil {
t.Fatalf("Failed to retrieve instances: %v\n", err)
}
for _, instance := range instances {
idx := slices.Index(dbInstances, instance)
if idx < 0 {
t.Fatalf("Failed to find instance in list")
}
}
firstInstance, err := GetInstance(service, "")
if err != nil {
t.Fatalf("Failed to fetch single instance: %v\n", err)
}
secondInstance, err := GetInstance(service, "")
if err != nil {
t.Fatalf("Failed to fetch single instance (second): %v\n", err)
} else if firstInstance == secondInstance {
t.Fatalf("Same instance was selected twice")
}
_ = CloseDB()
}

29
go.mod Normal file
View File

@ -0,0 +1,29 @@
module github.com/benbusby/farside
go 1.23.4
require (
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charmbracelet/lipgloss v0.10.0 // indirect
github.com/dgraph-io/badger/v4 v4.5.0 // indirect
github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/google/flatbuffers v24.3.25+incompatible // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-isatty v0.0.18 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/robfig/cron/v3 v3.0.0 // indirect
go.opencensus.io v0.24.0 // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/net v0.31.0 // indirect
golang.org/x/sys v0.27.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
)

141
go.sum Normal file
View File

@ -0,0 +1,141 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s=
github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE=
github.com/charmbracelet/log v0.4.0 h1:G9bQAcx8rWA2T3pWvx7YtPTPwgqpk7D68BX21IRW8ZM=
github.com/charmbracelet/log v0.4.0/go.mod h1:63bXt/djrizTec0l11H20t8FDSvA4CRZJ1KH22MdptM=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgraph-io/badger/v4 v4.5.0 h1:TeJE3I1pIWLBjYhIYCA1+uxrjWEoJXImFBMEBVSm16g=
github.com/dgraph-io/badger/v4 v4.5.0/go.mod h1:ysgYmIeG8dS/E8kwxT7xHyc7MkmwNYLRoYnFbr7387A=
github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ=
github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI=
github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E=
github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo=
golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@ -1,53 +0,0 @@
<head>
<title>Farside</title>
<style>
html {
font-family: monospace;
font-size: 16px;
color: #66397C;
}
#parent-div {
text-align: center;
}
#child-div {
text-align: left;
width: 50%;
display: inline-block;
}
hr {
border: 1px dashed;
}
a:link, a:visited {
color: #66397C;
}
@media only screen and (max-width: 1000px) {
#child-div {
width: 90%;
}
}
ul {
margin: 10px;
}
</style>
</head>
<body>
<div id="parent-div">
<div id="child-div">
<h1>Farside | <a href="https://github.com/benbusby/farside">View on GitHub</a></h1>
<hr>
<h3>Last synced <%= last_updated %> UTC</h2>
<div>
<ul>
<%= for {service, instance_list} <- services do %>
<li><a href="/<%= service %>"><%= service %></a></li>
<ul>
<%= for url <- instance_list do %>
<li><a href="<%= url %>"><%= url %></a></li>
<% end%>
</ul>
<% end %>
</ul>
</div>
</div>
</div>
</body>

View File

@ -1,90 +0,0 @@
defmodule Farside do
@service_prefix Application.fetch_env!(:farside, :service_prefix)
@fallback_suffix Application.fetch_env!(:farside, :fallback_suffix)
@previous_suffix Application.fetch_env!(:farside, :previous_suffix)
def get_services_map do
{:ok, service_list} = Redix.command(:redix, ["KEYS", "#{@service_prefix}*"])
# Match service name to list of available instances
Enum.reduce(service_list, %{}, fn service, acc ->
{:ok, instance_list} =
Redix.command(
:redix,
["LRANGE", service, "0", "-1"]
)
Map.put(
acc,
String.replace_prefix(
service,
@service_prefix,
""
),
instance_list
)
end)
end
def pick_instance(service) do
{:ok, instances} =
Redix.command(
:redix,
[
"LRANGE",
"#{@service_prefix}#{service}",
"0",
"-1"
]
)
# Either pick a random available instance,
# or fall back to the default one
instance =
if Enum.count(instances) > 0 do
if Enum.count(instances) == 1 do
# If there's only one instance, just return that one...
List.first(instances)
else
# ...otherwise pick a random one from the list, ensuring
# that the same instance is never picked twice in a row.
{:ok, previous} =
Redix.command(
:redix,
["GET", "#{service}#{@previous_suffix}"]
)
instance =
Enum.filter(instances, &(&1 != previous))
|> Enum.random()
Redix.command(
:redix,
["SET", "#{service}#{@previous_suffix}", instance]
)
instance
end
else
{:ok, result} =
Redix.command(
:redix,
["GET", "#{service}#{@fallback_suffix}"]
)
result
end
instance
end
def get_last_updated do
{:ok, last_updated} =
Redix.command(
:redix,
["GET", "last_updated"]
)
last_updated
end
end

View File

@ -1,27 +0,0 @@
defmodule Farside.Application do
@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
children = [
Plug.Cowboy.child_spec(
scheme: :http,
plug: Farside.Router,
options: [
port: @farside_port
]
),
{PlugAttack.Storage.Ets, name: Farside.Throttle.Storage, clean_period: 60_000},
{Redix, {@redis_conn, [name: :redix]}},
Farside.Scheduler,
Farside.Server
]
opts = [strategy: :one_for_one, name: Farside.Supervisor]
Supervisor.start_link(children, opts)
end
end

View File

@ -1,109 +0,0 @@
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)
@debug_header "======== "
@debug_spacer " "
def sync() do
File.rename(@update_file, "#{@update_file}-prev")
update()
# Add UTC time of last update
Redix.command(:redix, [
"SET",
"last_updated",
Calendar.strftime(DateTime.utc_now(), "%c")
])
end
def request(url) do
cond do
System.get_env("FARSIDE_TEST") ->
:good
true ->
HTTPoison.get(url, @headers)
|> then(&elem(&1, 1))
|> Map.get(:status_code)
|> case do
n when n < 400 ->
IO.puts("#{@debug_spacer}✓ [#{n}]")
:good
n ->
IO.puts("#{@debug_spacer}x [#{(n && n) || "error"}]")
:bad
end
end
end
def update() do
{:ok, file} = File.read(@services_json)
{:ok, json} = Poison.decode(file, as: [%Service{}])
# Loop through all instances and check each for availability
for service <- json 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)
add_to_redis(service, result)
log_results(service.type, result)
end
end
def add_to_redis(service, instances) do
# Remove previous list of instances
Redix.command(:redix, [
"DEL",
"#{@service_prefix}#{service.type}"
])
# Update with new list of available instances
Redix.command(
:redix,
[
"LPUSH",
"#{@service_prefix}#{service.type}"
] ++ instances
)
# Set fallback to one of the available instances,
# or the default instance if all are "down"
if Enum.count(instances) > 0 do
Redix.command(:redix, [
"SET",
"#{service.type}#{@fallback_suffix}",
Enum.random(instances)
])
else
Redix.command(:redix, [
"SET",
"#{service.type}#{@fallback_suffix}",
service.fallback
])
end
end
def log_results(service_name, results) do
{:ok, file} = File.open(@update_file, [:append, {:delayed_write, 100, 20}])
IO.write(file, "#{service_name}: #{inspect(results)}\n")
File.close(file)
end
end

View File

@ -1,62 +0,0 @@
defmodule Farside.Router do
@index Application.fetch_env!(:farside, :index)
@route Application.fetch_env!(:farside, :route)
use Plug.Router
plug(Farside.Throttle)
plug(:match)
plug(:dispatch)
get "/" do
resp =
EEx.eval_file(
@index,
last_updated: Farside.get_last_updated(),
services: Farside.get_services_map()
)
send_resp(conn, 200, resp)
end
get "/ping" do
# Useful for app healthcheck
{:ok, resp} = Redix.command(:redix, ["PING"])
send_resp(conn, 200, resp)
end
get "/_/:service/*glob" do
r_path = String.slice(conn.request_path, 2..-1)
resp =
EEx.eval_file(
@route,
service: service,
instance_url: r_path
)
send_resp(conn, 200, resp)
end
get "/:service/*glob" do
path = Enum.join(glob, "/")
instance = Farside.pick_instance(service)
params =
cond do
String.length(conn.query_string) > 0 ->
"?#{conn.query_string}"
true ->
""
end
# Redirect to the available instance
conn
|> Plug.Conn.resp(:found, "")
|> Plug.Conn.put_resp_header(
"location",
"#{instance}/#{path}#{params}"
)
end
end

View File

@ -1,3 +0,0 @@
defmodule Farside.Scheduler do
use Quantum, otp_app: :farside
end

View File

@ -1,22 +0,0 @@
defmodule Farside.Server do
use GenServer
import Crontab.CronExpression
def init(init_arg) do
{:ok, init_arg}
end
def start_link(arg) do
if System.get_env("FARSIDE_TEST") do
IO.puts("Skipping sync job setup...")
else
Farside.Scheduler.new_job()
|> Quantum.Job.set_name(:sync)
|> Quantum.Job.set_schedule(~e[*/5 * * * *])
|> Quantum.Job.set_task(fn -> Farside.Instances.sync() end)
|> Farside.Scheduler.add_job()
end
GenServer.start_link(__MODULE__, arg)
end
end

View File

@ -1,21 +0,0 @@
defmodule Farside.Throttle do
import Plug.Conn
use PlugAttack
rule "throttle per ip", conn do
# throttle to 1 request per second
throttle(conn.remote_ip,
period: 1_000,
limit: 1,
storage: {PlugAttack.Storage.Ets, Farside.Throttle.Storage}
)
end
def allow_action(conn, _data, _opts), do: conn
def block_action(conn, _data, _opts) do
conn
|> send_resp(:forbidden, "Exceeded rate limit\n")
|> halt
end
end

View File

@ -1,6 +0,0 @@
defmodule Service do
defstruct type: nil,
test_url: nil,
fallback: nil,
instances: []
end

39
main.go Normal file
View File

@ -0,0 +1,39 @@
package main
import (
"log"
"os"
"os/signal"
"syscall"
"github.com/benbusby/farside/db"
"github.com/benbusby/farside/server"
"github.com/benbusby/farside/services"
)
func main() {
err := db.InitializeDB()
if err != nil {
log.Fatal(err)
}
go func() {
err = services.InitializeServices()
if err != nil {
log.Println("Error intializing services", err)
}
}()
go db.InitCronTasks()
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, os.Interrupt, syscall.SIGTERM)
go func() {
<-signalChan
_ = db.CloseDB()
os.Exit(0)
}()
server.RunServer()
}

34
mix.exs
View File

@ -1,34 +0,0 @@
defmodule Farside.MixProject do
use Mix.Project
def project do
[
app: :farside,
version: "0.1.0",
elixir: "~> 1.8",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger],
mod: {Farside.Application, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:httpoison, "~> 1.8"},
{:jason, "~> 1.1"},
{:plug_attack, "~> 0.4.2"},
{:plug_cowboy, "~> 2.0"},
{:poison, "~> 5.0"},
{:quantum, "~> 3.0"},
{:redix, "~> 1.1"}
]
end
end

View File

@ -1,29 +0,0 @@
%{
"certifi": {:hex, :certifi, "2.8.0", "d4fb0a6bb20b7c9c3643e22507e42f356ac090a1dcea9ab99e27e0376d695eba", [:rebar3], [], "hexpm", "6ac7efc1c6f8600b08d625292d4bbf584e14847ce1b6b5c44d983d273e1097ea"},
"cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
"crontab": {:hex, :crontab, "1.1.10", "dc9bb1f4299138d47bce38341f5dcbee0aa6c205e864fba7bc847f3b5cb48241", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "1347d889d1a0eda997990876b4894359e34bfbbd688acbb0ba28a2795ca40685"},
"gen_stage": {:hex, :gen_stage, "1.1.2", "b1656cd4ba431ed02c5656fe10cb5423820847113a07218da68eae5d6a260c23", [:mix], [], "hexpm", "9e39af23140f704e2b07a3e29d8f05fd21c2aaf4088ff43cb82be4b9e3148d02"},
"hackney": {:hex, :hackney, "1.18.0", "c4443d960bb9fba6d01161d01cd81173089686717d9490e5d3606644c48d121f", [:rebar3], [{:certifi, "~>2.8.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "9afcda620704d720db8c6a3123e9848d09c87586dc1c10479c42627b905b5c5e"},
"httpoison": {:hex, :httpoison, "1.8.0", "6b85dea15820b7804ef607ff78406ab449dd78bed923a49c7160e1886e987a3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "28089eaa98cf90c66265b6b5ad87c59a3729bea2e74e9d08f9b51eb9729b3c3a"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mime": {:hex, :mime, "2.0.2", "0b9e1a4c840eafb68d820b0e2158ef5c49385d17fb36855ac6e7e087d4b1dcc5", [:mix], [], "hexpm", "e6a3f76b4c277739e36c2e21a2c640778ba4c3846189d5ab19f97f126df5f9b7"},
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
"mustache": {:hex, :mustache, "0.3.1", "4c6ee79b13aae954035fe31b83c94480ddc7b536d09c44d4c65e61a9ead38d6b", [:mix], [], "hexpm", "8dc92b9b92a0d7449628f4fc981f8018a16a5b8c9907249e59db461482dac143"},
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
"phoenix_view": {:hex, :phoenix_view, "1.0.0", "fea71ecaaed71178b26dd65c401607de5ec22e2e9ef141389c721b3f3d4d8011", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "82be3e2516f5633220246e2e58181282c71640dab7afc04f70ad94253025db0c"},
"plug": {:hex, :plug, "1.12.1", "645678c800601d8d9f27ad1aebba1fdb9ce5b2623ddb961a074da0b96c35187d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d57e799a777bc20494b784966dc5fbda91eb4a09f571f76545b72a634ce0d30b"},
"plug_attack": {:hex, :plug_attack, "0.4.3", "88e6c464d68b1491aa083a0347d59d58ba71a7e591a7f8e1b675e8c7792a0ba8", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9ed6fb8a6f613a36040f2875130a21187126c5625092f24bc851f7f12a8cbdc1"},
"plug_cowboy": {:hex, :plug_cowboy, "2.5.2", "62894ccd601cf9597e2c23911ff12798a8a18d237e9739f58a6b04e4988899fe", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ea6e87f774c8608d60c8d34022a7d073bd7680a0a013f049fc62bf35efea1044"},
"plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"},
"poison": {:hex, :poison, "5.0.0", "d2b54589ab4157bbb82ec2050757779bfed724463a544b6e20d79855a9e43b24", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "11dc6117c501b80c62a7594f941d043982a1bd05a1184280c0d9166eb4d8d3fc"},
"quantum": {:hex, :quantum, "3.4.0", "5a53c3c52b0d55f2323940232ba6ab4c98e7e14c73dfacbba3a1ed799b037ce5", [:mix], [{:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.14 or ~> 1.0", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d0eb64957d3dc49c8ed730cc2203108334226496535965b8dfa3f3dbcf430f87"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"redix": {:hex, :redix, "1.1.4", "d66fc83d2d4f136c838568d1ec8b0c1a72acfcecfac88a40f86f60aaee883c93", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "515eff055b7de8967e835f4de22a6cfe8311bc1b8fe72f48200238fb43f6a803"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"},
"telemetry": {:hex, :telemetry, "1.0.0", "0f453a102cdf13d506b7c0ab158324c337c41f1cc7548f0bc0e130bbf0ae9452", [:rebar3], [], "hexpm", "73bc09fa59b4a0284efb4624335583c528e07ec9ae76aca96ea0673850aec57a"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
}

View File

@ -1,10 +0,0 @@
<head>
<title>Farside Redirect - <%= service %></title>
<meta http-equiv="refresh" content="1; url=<%= instance_url %>">
<script>
history.pushState({page: 1}, "Farside Redirect");
</script>
</head>
<body>
<span>Redirecting to <%= service %> instance...
</body>

66
server/index.html Normal file
View File

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Farside</title>
<style>
html {
font-family: monospace;
font-size: 16px;
color: #66397C;
}
#parent-div {
text-align: center;
}
#child-div {
text-align: left;
width: 50%;
display: inline-block;
}
hr {
border: 1px dashed;
}
a:link, a:visited {
color: #66397C;
}
@media only screen and (max-width: 1000px) {
#child-div {
width: 90%;
}
}
ul {
margin: 10px;
}
@media (prefers-color-scheme: dark) {
html {
color: #fff;
background: #121517;
}
a:link, a:visited {
color: #AA8AC1;
}
}
</style>
</head>
<body>
<div id="parent-div">
<div id="child-div">
<h1>Farside [<a href="https://sr.ht/~benbusby/farside">SourceHut</a>, <a href="https://github.com/benbusby/farside">GitHub</a>]</h1>
<hr>
<h3>Updated: {{ .LastUpdated }}</h2>
<div>
<ul>
{{ range $i, $service := .ServiceList }}
<li><a href="/{{ $service.Type }}">{{ $service.Type }}</a></li>
<ul>
{{ range $j, $instance := $service.Instances }}
<li><a href="{{ $instance }}">{{ $instance }}</li>
{{ end }}
</ul>
{{ end }}
</ul>
</div>
</div>
</div>
</body>

10
server/route.html Normal file
View File

@ -0,0 +1,10 @@
<head>
<title>Farside Redirect</title>
<meta http-equiv="refresh" content="1; url={{ .InstanceURL }}">
<script>
history.pushState({page: 1}, "Farside Redirect");
</script>
</head>
<body>
<span>Redirecting to {{ .InstanceURL }}...</span>
</body>

155
server/server.go Normal file
View File

@ -0,0 +1,155 @@
package server
import (
_ "embed"
"encoding/json"
"fmt"
"html/template"
"log"
"net/http"
"net/url"
"os"
"strings"
"time"
"github.com/benbusby/farside/db"
"github.com/benbusby/farside/services"
)
//go:embed index.html
var indexHTML string
//go:embed route.html
var routeHTML string
type indexData struct {
LastUpdated time.Time
ServiceList []services.Service
}
type routeData struct {
InstanceURL string
}
func home(w http.ResponseWriter, r *http.Request) {
serviceList := db.GetServiceList()
data := indexData{
LastUpdated: db.LastUpdate,
ServiceList: serviceList,
}
tmpl, err := template.New("").Parse(indexHTML)
if err != nil {
log.Println(err)
http.Error(w, "Error parsing template", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "text/html")
err = tmpl.Execute(w, data)
if err != nil {
log.Println(err)
http.Error(w, "Error executing template", http.StatusInternalServerError)
}
}
func state(w http.ResponseWriter, r *http.Request) {
storedServices := db.GetServiceList()
jsonData, _ := json.Marshal(storedServices)
w.Header().Set("Content-Type", "application/json")
_, _ = w.Write(jsonData)
}
func baseRouting(w http.ResponseWriter, r *http.Request) {
routing(w, r, false, r.URL.RawQuery)
}
func jsRouting(w http.ResponseWriter, r *http.Request) {
r.URL.Path = strings.Replace(r.URL.Path, "/_", "", 1)
routing(w, r, true, r.URL.RawQuery)
}
func routing(w http.ResponseWriter, r *http.Request, jsEnabled bool, query string) {
value := r.PathValue("routing")
if len(value) == 0 {
value = r.URL.Path
}
parsedURL, _ := url.Parse(value)
path := strings.TrimPrefix(parsedURL.Path, "/")
segments := strings.Split(path, "/")
if len(segments[0]) == 0 {
http.Redirect(w, r, "", http.StatusTemporaryRedirect)
}
target, err := services.MatchRequest(segments[0])
if err != nil {
errMsg := fmt.Sprintf("No routing found for '%s'", segments[0])
log.Printf("Error during match request: %v\n", err)
http.Error(w, errMsg, http.StatusBadRequest)
return
}
var servicePath string
if target == "breezewiki" {
// Breezewiki requires the subdomain of the instance to be
// preserved for correct routing
splitDomain := strings.Split(path, ".")
if len(splitDomain) > 2 {
servicePath = strings.Split(path, ".")[0]
}
}
instance, err := db.GetInstance(target, servicePath)
if err != nil {
log.Printf("Error fetching instance from db: %v\n", err)
http.Error(
w,
"Error fetching instance for "+target,
http.StatusInternalServerError)
return
}
if len(segments) > 1 {
targetPath := strings.Join(segments[1:], "/")
instance = instance + "/" + targetPath
}
w.Header().Set("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0")
w.Header().Set("Pragma", "no-cache")
w.Header().Set("Expires", "0")
instance += fmt.Sprintf("?%s", query)
if jsEnabled {
data := routeData{
InstanceURL: instance,
}
tmpl, _ := template.New("").Parse(routeHTML)
w.Header().Set("Content-Type", "text/html")
_ = tmpl.Execute(w, data)
} else {
http.Redirect(w, r, instance, http.StatusFound)
}
}
func RunServer() {
mux := http.NewServeMux()
mux.HandleFunc("/{$}", home)
mux.HandleFunc("/state/{$}", state)
mux.HandleFunc("/{routing...}", baseRouting)
mux.HandleFunc("/_/{routing...}", jsRouting)
port := os.Getenv("FARSIDE_PORT")
if len(port) == 0 {
port = "4001"
}
log.Println("Starting server on http://localhost:" + port)
err := http.ListenAndServe(":"+port, mux)
if err != nil {
log.Fatal(err)
}
}

80
server/server_test.go Normal file
View File

@ -0,0 +1,80 @@
package server
import (
"io"
"log"
"net/http"
"net/http/httptest"
"net/url"
"os"
"strings"
"testing"
"github.com/benbusby/farside/db"
)
const breezewikiTestSite = "https://breezewikitest.com"
func TestMain(m *testing.M) {
err := db.InitializeDB()
if err != nil {
log.Fatalln("Failed to initialize database", err)
}
err = db.SetInstances("breezewiki", []string{breezewikiTestSite})
if err != nil {
log.Fatalln("Failed to set instances in db")
}
exitCode := m.Run()
_ = db.CloseDB()
os.Exit(exitCode)
}
func TestBaseRouting(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/fandom.com", nil)
w := httptest.NewRecorder()
baseRouting(w, req)
res := w.Result()
defer res.Body.Close()
if res.StatusCode != http.StatusFound {
t.Fatalf("Incorrect resp code (%d) in base routing", res.StatusCode)
}
expectedHost, _ := url.Parse(breezewikiTestSite)
redirect, err := res.Location()
if err != nil {
t.Fatalf("Error retrieving direct from request: %v\n", err)
} else if redirect.Host != expectedHost.Host {
t.Fatalf("Incorrect redirect site -- expected: %s, actual: %s\n",
expectedHost.Host,
redirect.Host)
}
}
func TestJSRouting(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/_/fandom.com", nil)
w := httptest.NewRecorder()
jsRouting(w, req)
res := w.Result()
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
t.Fatalf("Incorrect resp code (%d) in base routing", res.StatusCode)
}
data, err := io.ReadAll(res.Body)
if err != nil {
t.Fatalf("Error reading response body: %v", err)
}
if !strings.Contains(string(data), breezewikiTestSite) {
t.Fatalf("%s not found in response body (%s)", breezewikiTestSite, string(data))
}
}

569
services-full.json Normal file
View File

@ -0,0 +1,569 @@
[
{
"type": "libreddit",
"test_url": "/r/popular",
"fallback": "https://redlib.freedit.eu",
"instances": [
"https://libreddit.privacydev.net",
"https://red.arancia.click",
"https://red.artemislena.eu",
"https://red.ngn.tf",
"https://reddit.nerdvpn.de",
"https://redlib.baczek.me",
"https://redlib.catsarch.com",
"https://redlib.ducks.party",
"https://redlib.kittywi.re",
"https://redlib.nadeko.net",
"https://redlib.perennialte.ch",
"https://redlib.privacy.com.de",
"https://redlib.privacyredirect.com",
"https://redlib.private.coffee",
"https://redlib.seasi.dev",
"https://rl.bloat.cat"
]
},
{
"type": "redlib",
"test_url": "/r/popular",
"fallback": "https://redlib.freedit.eu",
"instances": [
"https://libreddit.privacydev.net",
"https://red.arancia.click",
"https://red.artemislena.eu",
"https://red.ngn.tf",
"https://reddit.nerdvpn.de",
"https://redlib.baczek.me",
"https://redlib.catsarch.com",
"https://redlib.ducks.party",
"https://redlib.kittywi.re",
"https://redlib.nadeko.net",
"https://redlib.perennialte.ch",
"https://redlib.privacy.com.de",
"https://redlib.privacyredirect.com",
"https://redlib.private.coffee",
"https://redlib.seasi.dev",
"https://rl.bloat.cat"
]
},
{
"type": "teddit",
"test_url": "/r/popular",
"fallback": "https://teddit.net",
"instances": [
"https://i.opnxng.com",
"https://incogsnoo.com",
"https://rdt.trom.tf",
"https://reddit.lol",
"https://snoo.ioens.is",
"https://t.sneed.network",
"https://td.vern.cc",
"https://teddit.adminforge.de",
"https://teddit.bus-hit.me",
"https://teddit.domain.glass",
"https://teddit.froth.zone",
"https://teddit.garudalinux.org",
"https://teddit.ggc-project.de",
"https://teddit.hostux.net",
"https://teddit.httpjames.space",
"https://teddit.laserdisc.tokyo",
"https://teddit.net",
"https://teddit.no-logs.com",
"https://teddit.privacytools.io",
"https://teddit.projectsegfau.lt",
"https://teddit.pussthecat.org",
"https://teddit.rawbit.ninja",
"https://teddit.sethforprivacy.com",
"https://teddit.tinfoil-hat.net",
"https://teddit.tokhmi.xyz",
"https://teddit.xbdm.fun",
"https://teddit.zaggy.nl"
]
},
{
"type": "proxigram",
"test_url": "/p/Ch2WRmiLMjj",
"fallback": "https://ig.opnxng.com",
"instances": [
"https://ig.opnxng.com",
"https://proxigram.lunar.icu",
"https://gram.whatever.social",
"https://ig.snine.nl",
"https://ig.floppa.one",
"https://proxigram.kyun.li"
]
},
{
"type": "invidious",
"test_url": "/watch?v=eBGIQ7ZuuiU",
"fallback": "https://invidious.snopyta.org",
"instances": [
"https://inv.nadeko.net"
]
},
{
"type": "piped",
"test_url": "/watch?v=dQw4w9WgXcQ|/streams/dQw4w9WgXcQ",
"fallback": "https://piped.video",
"instances": [
"https://piped.video|https://pipedapi.kavin.rocks",
"https://piped.tokhmi.xyz|https://pipedapi.tokhmi.xyz",
"https://piped.moomoo.me|https://pipedapi.moomoo.me",
"https://piped.mha.fi|https://api-piped.mha.fi",
"https://efy.piped.pages.dev|https://pipedapi.aeong.one",
"https://watch.whatever.social|https://watchapi.whatever.social",
"https://piped.garudalinux.org|https://piped-api.garudalinux.org",
"https://watch.leptons.xyz|https://pipedapi.leptons.xyz",
"https://piped.lunar.icu|https://piped-api.lunar.icu",
"https://piped.projectsegfau.lt|https://api.piped.projectsegfau.lt",
"https://piped.privacydev.net|https://api.piped.privacydev.net",
"https://piped.smnz.de|https://pipedapi.smnz.de",
"https://piped.adminforge.de|https://pipedapi.adminforge.de",
"https://piped.qdi.fi|https://pipedapi.qdi.fi",
"https://piped.hostux.net|https://piped-api.hostux.net",
"https://pd.vern.cc|https://pdapi.vern.cc",
"https://piped.colinslegacy.com|https://pipedapi.colinslegacy.com",
"https://piped.ducks.party|https://pipedapi.ducks.party"
]
},
{
"type": "nitter",
"test_url": "/jack/status/20",
"fallback": "https://nitter.net",
"instances": [
"https://lightbrd.com",
"https://nitter.net",
"https://nitter.poast.org",
"https://nitter.privacydev.net",
"https://nitter.privacyredirect.com",
"https://nitter.space",
"https://xcancel.com"
]
},
{
"type": "scribe",
"test_url": "/@ftrain/big-data-small-effort-b62607a43a8c",
"fallback": "https://scribe.rip",
"instances": [
"https://scribe.rip",
"https://scribe.nixnet.services",
"https://scribe.citizen4.eu",
"https://scribe.bus-hit.me",
"https://scribe.froth.zone",
"https://scribe.privacydev.net",
"https://scribe.rawbit.ninja",
"https://sc.vern.cc",
"https://m.opnxng.com",
"https://scribe.manasiwibi.com",
"https://scribe.r4fo.com",
"https://scribe.privacyredirect.com"
]
},
{
"type": "simplytranslate",
"test_url": "/?engine=google&text=simplicado",
"fallback": "https://simplytranslate.org",
"instances": [
"https://simplytranslate.esmailelbob.xyz",
"https://simplytranslate.leemoon.network",
"https://simplytranslate.manerakai.com",
"https://simplytranslate.org",
"https://simplytranslate.pussthecat.org",
"https://st.odyssey346.dev",
"https://st.privacydev.net",
"https://st.tokhmi.xyz",
"https://tl.vern.cc",
"https://translate.bus-hit.me",
"https://translate.josias.dev",
"https://translate.northboot.xyz",
"https://translate.priv.pw",
"https://translate.riverside.rocks",
"https://translate.slipfox.xyz",
"https://translate.tiekoetter.com"
]
},
{
"type": "lingva",
"test_url": "/auto/en/hola",
"fallback": "https://lingva.ml",
"instances": [
"https://lingva.ml",
"https://lingva.garudalinux.org",
"https://lingva.frontendfriendly.xyz",
"https://lingva.retiolus.net",
"https://translate.plausibility.cloud",
"https://lingva.lunar.icu",
"https://translate.dr460nf1r3.org",
"https://translate.whateveritworks.org",
"https://translate.sapti.me",
"https://lingva.fuk.world",
"https://translate.colinslegacy.com",
"https://translate.catswords.net"
]
},
{
"type": "rimgo",
"test_url": "/a/H8M4rcp",
"fallback": "https://rimgo.projectsegfau.lt",
"instances": [
"https://i.habedieeh.re",
"https://imgur.010032.xyz",
"https://imgur.artemislena.eu",
"https://imgur.fsky.io",
"https://imgur.nerdvpn.de",
"https://ri.nadeko.net",
"https://rimgo.4o1x5.dev",
"https://rimgo.aketawi.space",
"https://rimgo.astrial.org",
"https://rimgo.bloat.cat",
"https://rimgo.bus-hit.me",
"https://rimgo.canine.tools",
"https://rimgo.catsarch.com",
"https://rimgo.darkness.services",
"https://rimgo.drgns.space",
"https://rimgo.ducks.party",
"https://rimgo.eu.projectsegfau.lt",
"https://rimgo.fascinated.cc",
"https://rimgo.frontendfriendly.xyz",
"https://rimgo.frylo.net",
"https://rimgo.gitro.xyz",
"https://rimgo.hostux.net",
"https://rimgo.in.projectsegfau.lt",
"https://rimgo.lunar.icu",
"https://rimgo.nohost.network",
"https://rimgo.perennialte.ch",
"https://rimgo.privacyredirect.com",
"https://rimgo.projectsegfau.lt",
"https://rimgo.pussthecat.org",
"https://rimgo.quantenzitrone.eu",
"https://rimgo.reallyaweso.me",
"https://rimgo.thebunny.zone",
"https://rimgo.totaldarkness.net",
"https://rimgo.us.projectsegfau.lt",
"https://rmgur.com"
]
},
{
"type": "whoogle",
"test_url": "/search?cookies_disabled=1&q=<%=query%>",
"fallback": "https://search.sethforprivacy.com",
"instances": [
"https://search.garudalinux.org",
"https://search.sethforprivacy.com",
"https://wg.vern.cc",
"https://whoogle.4040940.xyz",
"https://whoogle.lunar.icu",
"https://whoogle.privacydev.net"
]
},
{
"type": "searx",
"test_url": "/search?q=<%=query%>",
"fallback": "https://searx.be",
"instances": [
"https://search.stinpriza.org",
"https://searx.dresden.network",
"https://searx.gnu.style",
"https://searx.mastodontech.de",
"https://searx.mxchange.org",
"https://searx.nixnet.services",
"https://searx.roflcopter.fr",
"https://searx.ru",
"https://searx.zapashcanon.fr"
]
},
{
"type": "searxng",
"test_url": "/search?q=<%=query%>",
"fallback": "https://searx.be",
"instances": [
"https://baresearch.org",
"https://kantan.cat",
"https://northboot.xyz",
"https://opnxng.com",
"https://paulgo.io",
"https://priv.au",
"https://s.datuan.dev",
"https://s.mble.dk",
"https://search.080609.xyz",
"https://search.canine.tools",
"https://search.catboy.house",
"https://search.einfachzocken.eu",
"https://search.gcomm.ch",
"https://search.im-in.space",
"https://search.ipv6s.net",
"https://search.leptons.xyz",
"https://search.mdosch.de",
"https://search.nerdvpn.de",
"https://search.ononoki.org",
"https://search.projectsegfau.lt",
"https://search.rhscz.eu",
"https://search.rowie.at",
"https://search.sapti.me",
"https://search.tinfoil.ch",
"https://search.url4irl.com",
"https://searx.ankha.ac",
"https://searx.be",
"https://searx.dresden.network",
"https://searx.foobar.vip",
"https://searx.foss.family",
"https://searx.namejeff.xyz",
"https://searx.oloke.xyz",
"https://searx.ox2.fr",
"https://searx.perennialte.ch",
"https://searx.rhscz.eu",
"https://searx.tiekoetter.com",
"https://searxng.f24o.zip",
"https://searxng.shreven.org",
"https://searxng.site",
"https://searxng.world",
"https://seek.fyi"
]
},
{
"type": "wikiless",
"test_url": "/wiki/Wikipedia?lang=en",
"fallback": "https://wikiless.org",
"instances": [
"https://wiki.owo.si",
"https://wiki.adminforge.de",
"https://wiki.froth.zone",
"https://wiki.privacytools.io",
"https://wiki.slipfox.xyz",
"https://wikiless.esmailelbob.xyz",
"https://wikiless.funami.tech",
"https://wikiless.lunar.icu",
"https://wikiless.northboot.xyz",
"https://wikiless.org",
"https://wikiless.rawbit.ninja",
"https://wikiless.sethforprivacy.com",
"https://wikiless.tiekoetter.com",
"https://wl.vern.cc"
]
},
{
"type": "librarian",
"test_url": "",
"fallback": "https://lbry.bcow.xyz",
"instances": [
"https://lbry.bcow.xyz",
"https://odysee.076.ne.jp",
"https://librarian.pussthecat.org",
"https://lbry.mutahar.rocks",
"https://librarian.esmailelbob.xyz",
"https://lbry.vern.cc"
]
},
{
"type": "proxitok",
"test_url": "/discover",
"fallback": "https://proxitok.pabloferreiro.es",
"instances": [
"https://proxitok.pabloferreiro.es",
"https://proxitok.pussthecat.org",
"https://proxitok.privacydev.net",
"https://tok.habedieeh.re",
"https://proxitok.esmailelbob.xyz",
"https://tok.artemislena.eu",
"https://tok.adminforge.de",
"https://tik.hostux.net",
"https://proxitok.lunar.icu",
"https://proxitok.privacy.com.de",
"https://tiktok.chauvet.pro",
"https://cringe.whateveritworks.org"
]
},
{
"type": "quetre",
"test_url": "/How-does-the-Z-boson-decay",
"fallback": "https://quetre.iket.me",
"instances": [
"https://quetre.iket.me",
"https://quora.vern.cc",
"https://quetre.pussthecat.org",
"https://quetre.tokhmi.xyz",
"https://quetre.projectsegfau.lt",
"https://quetre.esmailelbob.xyz",
"https://quetre.privacydev.net",
"https://ask.habedieeh.re",
"https://quetre.marcopisco.com",
"https://quetre.blackdrgn.nl",
"https://quetre.pufe.org",
"https://quetre.lunar.icu",
"https://que.wilbvr.me",
"https://questions.whateveritworks.org",
"https://quetre.fascinated.cc",
"https://quetre.catsarch.com",
"https://quetre.frontendfriendly.xyz",
"https://quetre.ducks.party"
]
},
{
"type": "libremdb",
"test_url": "/title/tt0133093",
"fallback": "https://libremdb.herokuapp.com",
"instances": [
"https://libremdb.herokuapp.com",
"https://libremdb.pussthecat.org",
"https://libremdbeu.herokuapp.com",
"https://libremdb.esmailelbob.xyz",
"https://libremdb.iket.me",
"https://ld.vern.cc",
"https://binge.whatever.social",
"https://binge.whateveritworks.social",
"https://libremdb.lunar.icu",
"https://lmdb.hostux.net",
"https://libremdb.nerdyfam.tech",
"https://libremdb.fascinated.cc",
"https://libremdb.catsarch.com",
"https://libremdb.frontendfriendly.xyz",
"https://libremdb.ducks.party"
]
},
{
"type": "dumb",
"test_url": "/Naughty-boy-la-la-la-lyrics",
"fallback": "https://dumb.privacydev.net",
"instances": [
"https://dumb.privacydev.net",
"https://dm.vern.cc",
"https://sing.whatever.social",
"https://dumb.nunosempere.com",
"https://dumb.lunar.icu",
"https://dumb.esmailelbob.xyz",
"https://dumb.ducks.party"
]
},
{
"type": "breezewiki",
"test_url": "/balatrogame/wiki/Abandoned_Deck",
"fallback": "https://breezewiki.com",
"instances": [
"https://breezewiki.com",
"https://antifandom.com",
"https://breezewiki.pussthecat.org",
"https://bw.hamstro.dev",
"https://bw.projectsegfau.lt",
"https://breeze.hostux.net",
"https://bw.artemislena.eu",
"https://nerd.whatever.social",
"https://breezewiki.frontendfriendly.xyz",
"https://breeze.nohost.network",
"https://breeze.whateveritworks.org",
"https://z.opnxng.com",
"https://breezewiki.hyperreal.coffee",
"https://breezewiki.catsarch.com",
"https://breeze.mint.lgbt",
"https://breezewiki.woodland.cafe",
"https://breezewiki.nadeko.net",
"https://fandom.reallyaweso.me",
"https://breezewiki.4o1x5.dev",
"https://breezewiki.r4fo.com",
"https://breezewiki.private.coffee",
"https://fan.blitzw.in",
"http://bw.skunky7dhv7nohsoalpwe3sxfz3fbkad7r3wk632riye25vqm3meqead.onion",
"http://breezewiki.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion",
"http://breezewiki.nadekonfkhwlxwwk4ycbvq42zvcjmvo5iakl4tajojjwxd4a5dcetuyd.onion",
"http://breezewiki.catsarchywsyuss6jdxlypsw5dc7owd5u5tr6bujxb7o6xw2hipqehyd.onion",
"http://breezewiki.r4focoma7gu2zdwwcjjad47ysxt634lg73sxmdbkdozanwqslho5ohyd.onion",
"http://breezewiki.coffee2m3bjsrrqqycx6ghkxrnejl2q6nl7pjw2j4clchjj6uk5zozad.onion"
]
},
{
"type": "gothub",
"test_url": "/benbusby/farside",
"fallback": "https://gothub.projectsegfau.lt",
"instances": [
"https://gothub.lunar.icu",
"https://g.opnxng.com",
"https://gh.owo.si",
"https://gothub.projectsegfau.lt",
"https://gothub.r4fo.com",
"https://gothub.dev.projectsegfau.lt",
"https://gh.phreedom.club",
"https://gothub.ducks.party"
]
},
{
"type": "anonymousoverflow",
"test_url": "/questions/6591213/how-do-i-rename-a-local-git-branch",
"fallback": "https://code.whatever.social",
"instances": [
"https://ao.owo.si",
"https://code.whatever.social",
"https://ao.vern.cc",
"https://overflow.smnz.de",
"https://overflow.lunar.icu",
"https://overflow.adminforge.de",
"https://overflow.hostux.net",
"https://overflow.projectsegfau.lt",
"https://code.xbdm.fun",
"https://overflow.fascinated.cc",
"https://ao.bloatcat.tk",
"https://anonoverflow.frontendfriendly.xyz",
"https://overflow.ducks.party"
]
},
{
"type": "4get",
"test_url": "/ami4get",
"fallback": "https://4get.ca",
"instances": [
"https://4g.ggtyler.dev",
"https://4g.opnxng.com",
"https://4get.ca",
"https://4get.dcs0.hu",
"https://4get.etenie.pl",
"https://4get.hbubli.cc",
"https://4get.kizuki.lol",
"https://4get.konakona.moe",
"https://4get.lunar.icu",
"https://4get.lvkaszus.pl",
"https://4get.perennialte.ch",
"https://4get.plunked.party",
"https://4get.psily.garden",
"https://4get.seitan-ayoub.lol",
"https://4get.sijh.net",
"https://4get.silly.computer",
"https://4get.zzls.xyz",
"https://4getus.zzls.xyz",
"https://4get.ducks.party",
"https://s.futureofthe.tech"
]
},
{
"type": "librey",
"test_url": "/search.php?q=<%=query%>",
"fallback": "https://search.ahwx.org",
"instances": [
"https://libre.blitzw.in",
"https://librex.nohost.network",
"https://librey.4o1x5.dev",
"https://librey.baczek.me",
"https://librey.darkness.services",
"https://librey.nube-gran.de",
"https://librey.org",
"https://librey.sny.sh",
"https://ly.owo.si",
"https://search.davidovski.xyz",
"https://search.funami.tech",
"https://search.liv.town",
"https://search.revvy.de",
"https://search.technicalvoid.dev",
"https://search.uwabaki.party",
"https://serp.catswords.net"
]
},
{
"type": "tent",
"test_url": "/search.php?query=<%=query%>",
"fallback": "https://tent.sny.sh",
"instances": [
"https://bandcamp.lurkmore.com",
"https://tent.bloat.cat",
"https://tent.deep-swarm.xyz",
"https://tent.qunn.link",
"https://tent.sny.sh",
"https://tn.vern.cc"
]
}
]

View File

@ -2,37 +2,45 @@
{
"type": "libreddit",
"test_url": "/r/popular",
"fallback": "https://libredd.it",
"fallback": "https://redlib.freedit.eu",
"instances": [
"https://libreddit.albony.xyz",
"https://libredd.it",
"https://libreddit.spike.codes",
"https://libreddit.dothq.co",
"https://libreddit.kavin.rocks",
"https://libreddit.40two.app",
"https://reddit.invak.id",
"https://reddit.phii.me",
"https://lr.riverside.rocks",
"https://libreddit.silkky.cloud",
"https://libreddit.database.red",
"https://libreddit.exonip.de",
"https://libreddit.domain.glass",
"https://libreddit.sugoma.tk",
"https://libreddit.trevorthalacker.com",
"https://reddit.artemislena.eu",
"https://r.nf",
"https://libreddit.awesomehub.io",
"https://libreddit.some-things.org",
"https://reddit.stuehieyr.com",
"https://lr.mint.lgbt",
"https://libreddit.alefvanoon.xyz",
"https://libreddit.igna.rocks",
"https://libreddit.autarkic.org",
"https://libreddit.flux.industries",
"https://libreddit.drivet.xyz",
"https://lr.oversold.host",
"https://libreddit.de",
"https://libreddit.sethforprivacy.com"
"https://libreddit.privacydev.net",
"https://red.arancia.click",
"https://red.artemislena.eu",
"https://red.ngn.tf",
"https://reddit.nerdvpn.de",
"https://redlib.baczek.me",
"https://redlib.catsarch.com",
"https://redlib.ducks.party",
"https://redlib.kittywi.re",
"https://redlib.nadeko.net",
"https://redlib.privacy.com.de",
"https://redlib.privacyredirect.com",
"https://redlib.private.coffee",
"https://redlib.seasi.dev",
"https://rl.bloat.cat"
]
},
{
"type": "redlib",
"test_url": "/r/popular",
"fallback": "https://redlib.freedit.eu",
"instances": [
"https://libreddit.privacydev.net",
"https://red.arancia.click",
"https://red.artemislena.eu",
"https://red.ngn.tf",
"https://reddit.nerdvpn.de",
"https://redlib.baczek.me",
"https://redlib.catsarch.com",
"https://redlib.ducks.party",
"https://redlib.kittywi.re",
"https://redlib.nadeko.net",
"https://redlib.privacy.com.de",
"https://redlib.privacyredirect.com",
"https://redlib.private.coffee",
"https://redlib.seasi.dev",
"https://rl.bloat.cat"
]
},
{
@ -40,35 +48,41 @@
"test_url": "/r/popular",
"fallback": "https://teddit.net",
"instances": [
"https://teddit.ggc-project.de",
"https://teddit.kavin.rocks",
"https://teddit.zaggy.nl",
"https://teddit.namazso.eu",
"https://teddit.nautolan.racing",
"https://teddit.tinfoil-hat.net",
"https://teddit.domain.glass",
"https://snoo.ioens.is",
"https://teddit.httpjames.space",
"https://teddit.alefvanoon.xyz",
"https://i.opnxng.com",
"https://incogsnoo.com",
"https://teddit.pussthecat.org",
"https://rdt.trom.tf",
"https://reddit.lol",
"https://teddit.sethforprivacy.com"
"https://snoo.ioens.is",
"https://td.vern.cc",
"https://teddit.adminforge.de",
"https://teddit.bus-hit.me",
"https://teddit.froth.zone",
"https://teddit.garudalinux.org",
"https://teddit.ggc-project.de",
"https://teddit.hostux.net",
"https://teddit.laserdisc.tokyo",
"https://teddit.net",
"https://teddit.no-logs.com",
"https://teddit.projectsegfau.lt",
"https://teddit.pussthecat.org",
"https://teddit.sethforprivacy.com",
"https://teddit.tinfoil-hat.net",
"https://teddit.tokhmi.xyz",
"https://teddit.xbdm.fun",
"https://teddit.zaggy.nl"
]
},
{
"type": "bibliogram",
"test_url": "/u/officialrickastley",
"fallback": "https://bibliogram.art",
"type": "proxigram",
"test_url": "/p/Ch2WRmiLMjj",
"fallback": "https://ig.opnxng.com",
"instances": [
"https://bibliogram.art",
"https://bibliogram.snopyta.org",
"https://bibliogram.pussthecat.org",
"https://bibliogram.1d4.us",
"https://insta.trom.tf",
"https://bibliogram.hamster.dance",
"https://bib.actionsack.com",
"https://biblio.alefvanoon.xyz"
"https://ig.opnxng.com",
"https://proxigram.lunar.icu",
"https://gram.whatever.social",
"https://ig.snine.nl",
"https://ig.floppa.one",
"https://proxigram.kyun.li"
]
},
{
@ -76,73 +90,38 @@
"test_url": "/watch?v=eBGIQ7ZuuiU",
"fallback": "https://invidious.snopyta.org",
"instances": [
"https://inv.cthd.icu",
"https://inv.riverside.rocks",
"https://invidio.xamh.de",
"https://invidious-us.kavin.rocks",
"https://invidious.kavin.rocks",
"https://invidious.namazso.eu",
"https://invidious.osi.kr",
"https://invidious.snopyta.org",
"https://vid.puffyan.us",
"https://yewtu.be",
"https://youtube.076.ne.jp",
"https://yt.artemislena.eu"
"https://inv.nadeko.net"
]
},
{
"type": "piped",
"test_url": "/watch?v=eBGIQ7ZuuiU",
"fallback": "https://piped.kavin.rocks",
"test_url": "/watch?v=dQw4w9WgXcQ|/streams/dQw4w9WgXcQ",
"fallback": "https://piped.video",
"instances": [
"https://piped.kavin.rocks",
"https://piped.silkky.cloud",
"https://piped.mutahar.rocks",
"https://piped.albony.xyz"
"https://watch.whatever.social|https://watchapi.whatever.social",
"https://piped.garudalinux.org|https://piped-api.garudalinux.org",
"https://piped.lunar.icu|https://piped-api.lunar.icu",
"https://piped.projectsegfau.lt|https://api.piped.projectsegfau.lt",
"https://piped.privacydev.net|https://api.piped.privacydev.net",
"https://piped.smnz.de|https://pipedapi.smnz.de",
"https://piped.adminforge.de|https://pipedapi.adminforge.de",
"https://piped.qdi.fi|https://pipedapi.qdi.fi",
"https://piped.hostux.net|https://piped-api.hostux.net",
"https://pd.vern.cc|https://pdapi.vern.cc",
"https://piped.colinslegacy.com|https://pipedapi.colinslegacy.com",
"https://piped.ducks.party|https://pipedapi.ducks.party"
]
},
{
"type": "nitter",
"test_url": "/twitter",
"test_url": "/jack/status/20",
"fallback": "https://nitter.net",
"instances": [
"https://nitter.net",
"https://nitter.42l.fr",
"https://nitter.pussthecat.org",
"https://nitter.nixnet.services",
"https://nitter.fdn.fr",
"https://nitter.1d4.us",
"https://nitter.kavin.rocks",
"https://nitter.vxempire.xyz",
"https://nitter.unixfox.eu",
"https://nitter.domain.glass",
"https://nitter.eu",
"https://nitter.namazso.eu",
"https://nitter.mailstation.de",
"https://nitter.actionsack.com",
"https://nitter.cattube.org",
"https://birdsite.xanny.family",
"https://nitter.hu",
"https://nitter.exonip.de",
"https://twitr.gq",
"https://nitter.moomoo.me",
"https://bird.trom.tf",
"https://nitter.it",
"https://twitter.censors.us",
"https://nitter.grimneko.de",
"https://nitter.koyu.space",
"https://nitter.alefvanoon.xyz",
"https://nitter.ir",
"https://nitter.autarkic.org",
"https://n.0x0.st",
"https://n.hyperborea.cloud",
"https://nitter.ca",
"https://twitter.076.ne.jp",
"https://lu-nitter.resolv.ee",
"https://is-nitter.resolv.ee",
"https://cy-nitter.resolv.ee",
"https://tweet.lambda.dance",
"https://nitter.sethforprivacy.com"
"https://nitter.poast.org",
"https://nitter.privacydev.net",
"https://nitter.privacyredirect.com",
"https://xcancel.com"
]
},
{
@ -152,7 +131,15 @@
"instances": [
"https://scribe.rip",
"https://scribe.nixnet.services",
"https://scribe.citizen4.eu"
"https://scribe.citizen4.eu",
"https://scribe.bus-hit.me",
"https://scribe.froth.zone",
"https://scribe.privacydev.net",
"https://sc.vern.cc",
"https://m.opnxng.com",
"https://scribe.manasiwibi.com",
"https://scribe.r4fo.com",
"https://scribe.privacyredirect.com"
]
},
{
@ -160,14 +147,22 @@
"test_url": "/?engine=google&text=simplicado",
"fallback": "https://simplytranslate.org",
"instances": [
"https://manerakai.asuscomm.com:447",
"https://simplytranslate.esmailelbob.xyz",
"https://simplytranslate.leemoon.network",
"https://simplytranslate.manerakai.com",
"https://simplytranslate.org",
"https://simplytranslate.pussthecat.org",
"https://st.alefvanoon.xyz",
"https://st.odyssey346.dev",
"https://st.privacydev.net",
"https://st.tokhmi.xyz",
"https://tl.vern.cc",
"https://translate.bus-hit.me",
"https://translate.josias.dev",
"https://translate.namazso.eu",
"https://translate.riverside.rocks"
"https://translate.northboot.xyz",
"https://translate.priv.pw",
"https://translate.riverside.rocks",
"https://translate.slipfox.xyz",
"https://translate.tiekoetter.com"
]
},
{
@ -175,38 +170,66 @@
"test_url": "/auto/en/hola",
"fallback": "https://lingva.ml",
"instances": [
"https://lingva.ml",
"https://translate.alefvanoon.xyz",
"https://translate.igna.rocks",
"https://lingva.pussthecat.org"
"https://lingva.frontendfriendly.xyz",
"https://lingva.retiolus.net",
"https://translate.plausibility.cloud",
"https://lingva.lunar.icu",
"https://translate.dr460nf1r3.org",
"https://translate.whateveritworks.org",
"https://translate.sapti.me",
"https://translate.colinslegacy.com",
"https://translate.catswords.net"
]
},
{
"type": "rimgo",
"test_url": "/a/H8M4rcp",
"fallback": "https://i.bcow.xyz",
"fallback": "https://rimgo.projectsegfau.lt",
"instances": [
"https://i.bcow.xyz",
"https://i.habedieeh.re",
"https://imgur.010032.xyz",
"https://imgur.artemislena.eu",
"https://imgur.fsky.io",
"https://imgur.nerdvpn.de",
"https://ri.nadeko.net",
"https://rimgo.4o1x5.dev",
"https://rimgo.astrial.org",
"https://rimgo.bloat.cat",
"https://rimgo.bus-hit.me",
"https://rimgo.canine.tools",
"https://rimgo.catsarch.com",
"https://rimgo.darkness.services",
"https://rimgo.drgns.space",
"https://rimgo.ducks.party",
"https://rimgo.eu.projectsegfau.lt",
"https://rimgo.frontendfriendly.xyz",
"https://rimgo.frylo.net",
"https://rimgo.gitro.xyz",
"https://rimgo.hostux.net",
"https://rimgo.in.projectsegfau.lt",
"https://rimgo.lunar.icu",
"https://rimgo.nohost.network",
"https://rimgo.perennialte.ch",
"https://rimgo.privacyredirect.com",
"https://rimgo.projectsegfau.lt",
"https://rimgo.pussthecat.org",
"https://img.riverside.rocks",
"https://rimgo.quantenzitrone.eu",
"https://rimgo.reallyaweso.me",
"https://rimgo.thebunny.zone",
"https://rimgo.totaldarkness.net",
"https://rimgo.bus-hit.me"
"https://rimgo.us.projectsegfau.lt",
"https://rmgur.com"
]
},
{
"type": "whoogle",
"test_url": "/search?cookies_disabled=1&q=<%=query%>",
"fallback": "https://whoogle.fossho.st",
"fallback": "https://search.sethforprivacy.com",
"instances": [
"https://s.alefvanoon.xyz",
"https://search.albony.xyz",
"https://search.exonip.de",
"https://search.garudalinux.org",
"https://search.sethforprivacy.com",
"https://whoogle.dcs0.hu",
"https://whoogle.fossho.st",
"https://whooglesearch.net",
"https://www.whooglesearch.ml"
"https://wg.vern.cc",
"https://whoogle.lunar.icu",
"https://whoogle.privacydev.net"
]
},
{
@ -214,39 +237,302 @@
"test_url": "/search?q=<%=query%>",
"fallback": "https://searx.be",
"instances": [
"https://anon.sx",
"https://northboot.xyz",
"https://paulgo.io",
"https://procurx.pt",
"https://s.zhaocloud.net",
"https://search.asynchronousexchange.com",
"https://search.bus-hit.me",
"https://search.mdosch.de",
"https://search.ononoki.org",
"https://searx.bar",
"https://searx.be",
"https://searx.divided-by-zero.eu",
"https://searx.fmac.xyz",
"https://search.stinpriza.org",
"https://searx.dresden.network",
"https://searx.gnu.style",
"https://searx.hummel-web.at",
"https://searx.mha.fi",
"https://searx.nevrlands.de",
"https://searx.prvcy.eu",
"https://searx.rasp.fr",
"https://searx.mastodontech.de",
"https://searx.mxchange.org",
"https://searx.nixnet.services",
"https://searx.roflcopter.fr",
"https://searx.ru",
"https://searx.sp-codes.de",
"https://searx.stuehieyr.com",
"https://searx.theanonymouse.xyz",
"https://searx.zapashcanon.fr"
]
},
{
"type": "searxng",
"test_url": "/search?q=<%=query%>",
"fallback": "https://searx.be",
"instances": [
"https://baresearch.org",
"https://kantan.cat",
"https://northboot.xyz",
"https://opnxng.com",
"https://paulgo.io",
"https://priv.au",
"https://s.datuan.dev",
"https://s.mble.dk",
"https://search.080609.xyz",
"https://search.canine.tools",
"https://search.catboy.house",
"https://search.einfachzocken.eu",
"https://search.gcomm.ch",
"https://search.im-in.space",
"https://search.ipv6s.net",
"https://search.leptons.xyz",
"https://search.mdosch.de",
"https://search.nerdvpn.de",
"https://search.ononoki.org",
"https://search.projectsegfau.lt",
"https://search.rhscz.eu",
"https://search.rowie.at",
"https://search.sapti.me",
"https://search.tinfoil.ch",
"https://search.url4irl.com",
"https://searx.ankha.ac",
"https://searx.be",
"https://searx.dresden.network",
"https://searx.foobar.vip",
"https://searx.foss.family",
"https://searx.namejeff.xyz",
"https://searx.oloke.xyz",
"https://searx.ox2.fr",
"https://searx.perennialte.ch",
"https://searx.rhscz.eu",
"https://searx.tiekoetter.com",
"https://searx.tux.land",
"https://searx.tuxcloud.net",
"https://searx.webheberg.info",
"https://searx.xyz",
"https://searx.zackptg5.com",
"https://serx.cf",
"https://swag.pw",
"https://sx.fedi.tech",
"https://www.webrats.xyz"
"https://searxng.f24o.zip",
"https://searxng.shreven.org",
"https://searxng.site",
"https://searxng.world",
"https://seek.fyi"
]
},
{
"type": "wikiless",
"test_url": "/wiki/Wikipedia?lang=en",
"fallback": "https://wikiless.org",
"instances": [
"https://wiki.owo.si",
"https://wiki.adminforge.de",
"https://wiki.froth.zone",
"https://wiki.slipfox.xyz",
"https://wikiless.esmailelbob.xyz",
"https://wikiless.funami.tech",
"https://wikiless.lunar.icu",
"https://wikiless.northboot.xyz",
"https://wikiless.org",
"https://wikiless.sethforprivacy.com",
"https://wikiless.tiekoetter.com",
"https://wl.vern.cc"
]
},
{
"type": "librarian",
"test_url": "",
"fallback": "https://lbry.bcow.xyz",
"instances": [
"https://lbry.bcow.xyz",
"https://odysee.076.ne.jp",
"https://librarian.pussthecat.org",
"https://lbry.mutahar.rocks",
"https://librarian.esmailelbob.xyz",
"https://lbry.vern.cc"
]
},
{
"type": "proxitok",
"test_url": "/discover",
"fallback": "https://proxitok.pabloferreiro.es",
"instances": [
"https://proxitok.pabloferreiro.es",
"https://proxitok.pussthecat.org",
"https://proxitok.privacydev.net",
"https://tok.habedieeh.re",
"https://proxitok.esmailelbob.xyz",
"https://tok.artemislena.eu",
"https://tok.adminforge.de",
"https://tik.hostux.net",
"https://proxitok.lunar.icu",
"https://proxitok.privacy.com.de",
"https://tiktok.chauvet.pro",
"https://cringe.whateveritworks.org"
]
},
{
"type": "quetre",
"test_url": "/How-does-the-Z-boson-decay",
"fallback": "https://quetre.iket.me",
"instances": [
"https://quetre.iket.me",
"https://quora.vern.cc",
"https://quetre.pussthecat.org",
"https://quetre.tokhmi.xyz",
"https://quetre.projectsegfau.lt",
"https://quetre.esmailelbob.xyz",
"https://quetre.privacydev.net",
"https://ask.habedieeh.re",
"https://quetre.marcopisco.com",
"https://quetre.blackdrgn.nl",
"https://quetre.pufe.org",
"https://quetre.lunar.icu",
"https://que.wilbvr.me",
"https://questions.whateveritworks.org",
"https://quetre.catsarch.com",
"https://quetre.frontendfriendly.xyz",
"https://quetre.ducks.party"
]
},
{
"type": "libremdb",
"test_url": "/title/tt0133093",
"fallback": "https://libremdb.herokuapp.com",
"instances": [
"https://libremdb.herokuapp.com",
"https://libremdb.pussthecat.org",
"https://libremdbeu.herokuapp.com",
"https://libremdb.esmailelbob.xyz",
"https://libremdb.iket.me",
"https://ld.vern.cc",
"https://binge.whatever.social",
"https://binge.whateveritworks.social",
"https://libremdb.lunar.icu",
"https://lmdb.hostux.net",
"https://libremdb.catsarch.com",
"https://libremdb.frontendfriendly.xyz",
"https://libremdb.ducks.party"
]
},
{
"type": "dumb",
"test_url": "/Naughty-boy-la-la-la-lyrics",
"fallback": "https://dumb.privacydev.net",
"instances": [
"https://dumb.privacydev.net",
"https://dm.vern.cc",
"https://sing.whatever.social",
"https://dumb.nunosempere.com",
"https://dumb.lunar.icu",
"https://dumb.esmailelbob.xyz",
"https://dumb.ducks.party"
]
},
{
"type": "breezewiki",
"test_url": "/balatrogame/wiki/Abandoned_Deck",
"fallback": "https://breezewiki.com",
"instances": [
"https://breezewiki.com",
"https://antifandom.com",
"https://breezewiki.pussthecat.org",
"https://bw.hamstro.dev",
"https://bw.projectsegfau.lt",
"https://breeze.hostux.net",
"https://bw.artemislena.eu",
"https://nerd.whatever.social",
"https://breezewiki.frontendfriendly.xyz",
"https://breeze.nohost.network",
"https://breeze.whateveritworks.org",
"https://z.opnxng.com",
"https://breezewiki.hyperreal.coffee",
"https://breezewiki.catsarch.com",
"https://breeze.mint.lgbt",
"https://breezewiki.woodland.cafe",
"https://breezewiki.nadeko.net",
"https://fandom.reallyaweso.me",
"https://breezewiki.4o1x5.dev",
"https://breezewiki.r4fo.com",
"https://breezewiki.private.coffee",
"https://fan.blitzw.in",
"http://bw.skunky7dhv7nohsoalpwe3sxfz3fbkad7r3wk632riye25vqm3meqead.onion",
"http://breezewiki.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion",
"http://breezewiki.nadekonfkhwlxwwk4ycbvq42zvcjmvo5iakl4tajojjwxd4a5dcetuyd.onion",
"http://breezewiki.catsarchywsyuss6jdxlypsw5dc7owd5u5tr6bujxb7o6xw2hipqehyd.onion",
"http://breezewiki.r4focoma7gu2zdwwcjjad47ysxt634lg73sxmdbkdozanwqslho5ohyd.onion",
"http://breezewiki.coffee2m3bjsrrqqycx6ghkxrnejl2q6nl7pjw2j4clchjj6uk5zozad.onion"
]
},
{
"type": "gothub",
"test_url": "/benbusby/farside",
"fallback": "https://gothub.projectsegfau.lt",
"instances": [
"https://gothub.lunar.icu",
"https://g.opnxng.com",
"https://gh.owo.si",
"https://gothub.projectsegfau.lt",
"https://gothub.r4fo.com",
"https://gothub.dev.projectsegfau.lt",
"https://gh.phreedom.club",
"https://gothub.ducks.party"
]
},
{
"type": "anonymousoverflow",
"test_url": "/questions/6591213/how-do-i-rename-a-local-git-branch",
"fallback": "https://code.whatever.social",
"instances": [
"https://ao.owo.si",
"https://code.whatever.social",
"https://ao.vern.cc",
"https://overflow.smnz.de",
"https://overflow.lunar.icu",
"https://overflow.adminforge.de",
"https://overflow.hostux.net",
"https://overflow.projectsegfau.lt",
"https://code.xbdm.fun",
"https://ao.bloatcat.tk",
"https://anonoverflow.frontendfriendly.xyz",
"https://overflow.ducks.party"
]
},
{
"type": "4get",
"test_url": "/ami4get",
"fallback": "https://4get.ca",
"instances": [
"https://4g.ggtyler.dev",
"https://4g.opnxng.com",
"https://4get.ca",
"https://4get.dcs0.hu",
"https://4get.etenie.pl",
"https://4get.hbubli.cc",
"https://4get.kizuki.lol",
"https://4get.konakona.moe",
"https://4get.lunar.icu",
"https://4get.lvkaszus.pl",
"https://4get.perennialte.ch",
"https://4get.psily.garden",
"https://4get.seitan-ayoub.lol",
"https://4get.silly.computer",
"https://4get.zzls.xyz",
"https://4getus.zzls.xyz",
"https://4get.ducks.party",
"https://s.futureofthe.tech"
]
},
{
"type": "librey",
"test_url": "/search.php?q=<%=query%>",
"fallback": "https://search.ahwx.org",
"instances": [
"https://libre.blitzw.in",
"https://librex.nohost.network",
"https://librey.4o1x5.dev",
"https://librey.baczek.me",
"https://librey.darkness.services",
"https://librey.nube-gran.de",
"https://librey.org",
"https://librey.sny.sh",
"https://ly.owo.si",
"https://search.davidovski.xyz",
"https://search.funami.tech",
"https://search.liv.town",
"https://search.revvy.de",
"https://search.technicalvoid.dev",
"https://search.uwabaki.party",
"https://serp.catswords.net"
]
},
{
"type": "tent",
"test_url": "/search.php?query=<%=query%>",
"fallback": "https://tent.sny.sh",
"instances": [
"https://bandcamp.lurkmore.com",
"https://tent.bloat.cat",
"https://tent.deep-swarm.xyz",
"https://tent.qunn.link",
"https://tent.sny.sh",
"https://tn.vern.cc"
]
}
]

143
services/mappings.go Normal file
View File

@ -0,0 +1,143 @@
package services
import (
"errors"
"math/rand"
"regexp"
"strings"
)
type RegexMapping struct {
Pattern *regexp.Regexp
Targets []string
}
var regexMap = []RegexMapping{
{
// YouTube
Pattern: regexp.MustCompile(`youtu(\.be|be\.com)|invidious|piped`),
Targets: []string{"piped", "invidious"},
},
{
// Twitter / X
Pattern: regexp.MustCompile(`twitter\.com|x\.com|nitter`),
Targets: []string{"nitter"},
},
{
// Reddit
Pattern: regexp.MustCompile(`reddit\.com|libreddit|redlib|teddit`),
Targets: []string{"libreddit", "redlib", "teddit"},
},
{
// Google Search
Pattern: regexp.MustCompile(`google\.com|whoogle|searx|searxng`),
Targets: []string{"whoogle", "searxng"},
},
{
// Instagram
Pattern: regexp.MustCompile(`instagram\.com|proxigram`),
Targets: []string{"proxigram"},
},
{
// Wikipedia
Pattern: regexp.MustCompile(`wikipedia\.org|wikiless`),
Targets: []string{"wikiless"},
},
{
// Medium
Pattern: regexp.MustCompile(`medium\.com|scribe`),
Targets: []string{"scribe"},
},
{
// Odysee
Pattern: regexp.MustCompile(`odysee\.com|librarian`),
Targets: []string{"librarian"},
},
{
// Imgur
Pattern: regexp.MustCompile(`imgur\.com|rimgo`),
Targets: []string{"rimgo"},
},
{
// Google Translate
Pattern: regexp.MustCompile(`translate\.google\.com|lingva|simplytranslate`),
Targets: []string{"lingva", "simplytranslate"},
},
{
// TikTok
Pattern: regexp.MustCompile(`tiktok\.com|proxitok`),
Targets: []string{"proxitok"},
},
{
// Fandom
Pattern: regexp.MustCompile(`.*fandom\.com|breezewiki`),
Targets: []string{"breezewiki"},
},
{
// IMDB
Pattern: regexp.MustCompile(`imdb\.com|libremdb`),
Targets: []string{"libremdb"},
},
{
// Quora
Pattern: regexp.MustCompile(`quora\.com|quetre`),
Targets: []string{"quetre"},
},
{
// GitHub
Pattern: regexp.MustCompile(`github\.com|gothub`),
Targets: []string{"gothub"},
},
{
// StackOverflow
Pattern: regexp.MustCompile(`stackoverflow\.com|anonymousoverflow`),
Targets: []string{"anonymousoverflow"},
},
{
// Genius
Pattern: regexp.MustCompile(`genius\.com|dumb`),
Targets: []string{"dumb"},
},
{
// 4get
// Note: Could be used for redirecting other search engine
// requests, but would need special handling
Pattern: regexp.MustCompile("4get"),
Targets: []string{"4get"},
},
{
// LibreY
// Note: Could be used for redirecting other search engine
// requests, but would need special handling
Pattern: regexp.MustCompile("librex|librey"),
Targets: []string{"librey"},
},
{
// Tent
// Note: This is a Bandcamp alternative, but the endpoints are
// completely different than Bandcamp, so 1-to-1 mapping of URLs
// is not possible without some additional work
Pattern: regexp.MustCompile("tent"),
Targets: []string{"tent"},
},
}
func MatchRequest(service string) (string, error) {
for _, mapping := range regexMap {
hasMatch := mapping.Pattern.MatchString(service)
if !hasMatch {
continue
}
if !strings.Contains(service, ".") {
return service, nil
}
index := rand.Intn(len(mapping.Targets))
value := mapping.Targets[index]
return value, nil
}
return "", errors.New("no match found")
}

92
services/services.go Normal file
View File

@ -0,0 +1,92 @@
package services
import (
"encoding/json"
"io"
"net/http"
"os"
)
var (
ServiceList []Service
FallbackMap map[string]string
)
const (
baseRepoLink = "https://git.sr.ht/~benbusby/farside/blob/main/"
noCFServicesJSON = "services.json"
fullServicesJSON = "services-full.json"
)
type Service struct {
Type string `json:"type"`
TestURL string `json:"test_url,omitempty"`
Fallback string `json:"fallback,omimtempty"`
Instances []string `json:"instances"`
}
func ingestServicesList(servicesBytes []byte) error {
err := json.Unmarshal(servicesBytes, &ServiceList)
return err
}
func GetServicesFileName() string {
cloudflareEnabled := false
cfEnabledVar := os.Getenv("FARSIDE_CF_ENABLED")
if len(cfEnabledVar) > 0 && cfEnabledVar == "1" {
cloudflareEnabled = true
}
serviceJSON := noCFServicesJSON
if cloudflareEnabled {
serviceJSON = fullServicesJSON
}
return serviceJSON
}
func FetchServicesFile(serviceJSON string) ([]byte, error) {
resp, err := http.Get(baseRepoLink + serviceJSON)
if err != nil {
return nil, err
}
defer resp.Body.Close()
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
err = os.WriteFile(serviceJSON, bodyBytes, 0666)
if err != nil {
return nil, err
}
return bodyBytes, nil
}
func InitializeServices() error {
serviceJSON := GetServicesFileName()
fileBytes, err := os.ReadFile(serviceJSON)
if err != nil {
fileBytes, err = FetchServicesFile(serviceJSON)
if err != nil {
return err
}
}
err = ingestServicesList(fileBytes)
if err != nil {
return err
}
FallbackMap = make(map[string]string)
for _, serviceElement := range ServiceList {
FallbackMap[serviceElement.Type] = serviceElement.Fallback
}
return nil
}

View File

@ -1,75 +0,0 @@
defmodule FarsideTest do
@services_json Application.fetch_env!(:farside, :services_json)
use ExUnit.Case
use Plug.Test
alias Farside.Router
@opts Router.init([])
def test_conn(path) do
:timer.sleep(1000)
:get
|> conn(path, "")
|> Router.call(@opts)
end
test "throttle" do
:get
|> conn("/", "")
|> Router.call(@opts)
throttled_conn =
:get
|> conn("/", "")
|> Router.call(@opts)
assert throttled_conn.state == :sent
assert throttled_conn.status == 403
end
test "/" do
conn = test_conn("/")
assert conn.state == :sent
assert conn.status == 200
end
test "/ping" do
conn = test_conn("/ping")
assert conn.state == :sent
assert conn.status == 200
assert conn.resp_body == "PONG"
end
test "/:service" do
{:ok, file} = File.read(@services_json)
{:ok, service_list} = Poison.decode(file, as: [%{}])
service_names =
Enum.map(
service_list,
fn service -> service["type"] end
)
IO.puts("")
Enum.map(service_names, fn service_name ->
conn = test_conn("/#{service_name}")
first_redirect = elem(List.last(conn.resp_headers), 1)
IO.puts(" /#{service_name} (#1) -- #{first_redirect}")
assert conn.state == :set
assert conn.status == 302
conn = test_conn("/#{service_name}")
second_redirect = elem(List.last(conn.resp_headers), 1)
IO.puts(" /#{service_name} (#2) -- #{second_redirect}")
assert conn.state == :set
assert conn.status == 302
assert first_redirect != second_redirect
end)
end
end

View File

@ -1 +0,0 @@
ExUnit.start()

42
tools/un-cloudflare.sh Executable file
View File

@ -0,0 +1,42 @@
#!/bin/bash
# Remove cloudflare instances from services-full.json
rm -f out.json
file="services-full.json"
while read -r line; do
if [[ "$line" == "\"https://"* ]]; then
domain=$(echo "$line" | sed -e "s/^\"https:\/\///" -e "s/\",//" -e "s/\"//" | awk -F '|' '{print $1}')
ips=$(dig "$domain" +short || true)
cf=0
echo "$domain"
for ip in $ips
do
echo " - $ip"
resp=$(curl --connect-timeout 5 --max-time 5 -s "$ip")
# Cloudflare does not allow accessing sites using their IP,
# and returns a 1003 error code when attempting to do so. This
# allows us to check for sites using Cloudflare for proxying,
# rather than just their nameservers.
if [[ "$resp" == *"error code: 1003"* ]]; then
cf=1
echo " ! Using cloudflare proxy, skipping..."
break
fi
done
if [ $cf -eq 0 ]; then
echo "$line" >> out.json
fi
else
echo "$line" >> out.json
fi
done <$file
# Remove any trailing commas from new instance lists
sed -i -e ':begin' -e '$!N' -e 's/,\n]/\n]/g' -e 'tbegin' -e 'P' -e 'D' out.json
cat out.json | jq --indent 2 . > services.json
rm -f out.json