Commit graph

41 commits

Author SHA1 Message Date
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
Ben Busby
1112a9fe3a
Replace SimplyTranslate instance source in nightly build
Closes #101
2023-05-16 18:06:42 -06: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
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
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
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
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
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
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
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
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
Ben Busby
650f28f1d5
[CI] Check for NOERROR return status in dig query 2022-08-01 22:37:58 -06: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
Ben Busby
e611375e75
Force remove cf filter output in auto update workflow 2022-07-28 09:19:25 -06:00
Ben Busby
2e7d4355c5
Use full service list in auto update workflow 2022-07-27 16:36:31 -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
Ben Busby
1b88e67ed0
Exclude i2p address from searx(ng) auto update 2022-07-13 10:53:27 -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
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
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
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
Austin Huang
2cd82adeb9
Auto update teddit and Scribe instances (#15) 2022-02-03 15:10:48 -07:00
Ben Busby
79f24a59f1
Allow manually triggering auto-update workflow 2022-01-26 16:16:59 -07:00
Ben Busby
7cb19579c9
Auto update list of invidious instances
Adds Invidious to the auto-update nightly CI build

Closes #12
2022-01-26 16:11:46 -07:00
Ben Busby
719beb90df
Auto update whoogle instances from CI 2021-12-23 17:33:44 -07:00
Ben Busby
919dd6f602
Support teddit, piped, and simplytranslate
- teddit (https://teddit.net/about)
  A free and open source alternative Reddit front-end focused on
  privacy. Inspired by the Nitter project.

- Piped (https://github.com/TeamPiped/Piped)
  An alternative privacy-friendly YouTube frontend which is efficient
  by design.

- SimplyTranslate (https://simple-web.org/projects/simplytranslate.html)
  We aim to provide fast and private translations to the user without
  wasting much overhead for extensive styling or JavaScript

___

Also adds SimplyTranslate to the github pipeline, since they provide a
list of the service's public instances.

Closes #4
2021-12-15 17:12:59 -07:00
Ben Busby
ac1fa36f6c
Fix instance update commit as gh-bot 2021-11-29 17:45:33 -07:00
Ben Busby
17f83649c1
Print instances found in workflow to log 2021-11-28 18:17:44 -07:00
Ben Busby
d172c5d467
Simplify CI commit in "update" workflow
The steps taken to commit the changes to services.json were overly complicated.
This simplifies the steps to just `exit 0` if there are no changes to commit.
2021-11-27 17:52:21 -07:00
Ben Busby
0d93fee725
Fix sed command in instance update workflow 2021-11-26 17:46:49 -07:00
Ben Busby
8e3455a790
Automate updates for list of searx instances (#3)
* Create nightly update workflow for instances

A nightly GitHub Actions CI workflow has been added to fetch new
instances of supported services within Farside.

Currently only Searx is supported, but obviously others could be added
if there are similarly easy ways to fetch and filter instances
programmatically.

services.json has also been updated with the initial results of the
workflow script.

* Set headers for every HTTPoison request

This serves as a workaround for bot blocking via filtron.

* Expand filtering of searx instances

New filter enforces:
- No Cloudflare
- Good TLS config
- Good HTTP header config
- Vanilla instances or forks
- Instances with 100% search success
2021-11-26 09:12:46 -07:00
Ben Busby
ff97d258f0
Use quantum core for update scheduling
Rather than requiring a traditional crontab install, the app now
leverages quantum-core (link below) to schedule the instance update/sync
task every 5 minutes. Some updates as a result:

  - The new job is scheduled at runtime in server.ex.
  - The update.exs script was refactored to be compiled along with the
    rest of the app as instances.ex.
  - Scheduler and Server modules were added for creating and executing
    the new update task
  - All shell scripts were removed, as they are no longer needed

https://github.com/quantum-elixir/quantum-core
2021-11-24 09:35:21 -07:00
Ben Busby
f33279c41b
Test for valid service redirects
Updates testing to iterate through all available services and validate
that each one correctly produces a 302 redirect.
2021-11-10 11:47:03 -07:00
Ben Busby
85123cb524
Use elixir 1.12 and otp 24 in build/test 2021-11-09 15:22:32 -07:00
Ben Busby
39c244d970
Skip querying all instances w/ "test mode"
Now allows setting FARSIDE_TEST to skip individually fetching each
instance, and instead just adds all of them to redis instantly. This
allows for an easier time in CI builds, for both the sake of speed and
to prevent a scenario where many simultaneous builds have a noticeable
impact on actual instances.
2021-11-09 15:12:58 -07:00
Ben Busby
83bcad2eda
Add elixir CI 2021-10-26 21:21:00 -06:00