Commit Graph

49 Commits

Author SHA1 Message Date
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
Ben Busby 0abf463069
Fix file typo in CI 2023-08-24 14:55:36 -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
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
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
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