summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/update-instances.yml68
1 files changed, 68 insertions, 0 deletions
diff --git a/.github/workflows/update-instances.yml b/.github/workflows/update-instances.yml
new file mode 100644
index 0000000..d16bddd
--- /dev/null
+++ b/.github/workflows/update-instances.yml
@@ -0,0 +1,68 @@
+on:
+ schedule:
+ - cron: '0 0 * * *'
+
+jobs:
+ update-instances:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install dependencies
+ run: sudo apt-get install -y jq
+ - name: Fetch instances
+ run: |
+ function apply_update() {
+ mv services-tmp.json services.json
+ rm -f *-tmp.json
+
+ # Ensure no trailing slashes for any instance
+ sed -i '' 's/\/"/"/g' services.json
+ }
+
+ # ==============================================================
+ # Git config
+ # ==============================================================
+ git config --global user.name github-actions
+ git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com
+ git remote set-url origin git@github.com:benbusby/farside.git
+ git checkout main
+
+ # ==============================================================
+ # Searx update
+ # ==============================================================
+ curl -s https://searx.space/data/instances.json | \
+ jq '[
+ .instances |
+ to_entries[] |
+ select(.value.network_type == "normal") |
+ select(.value.version | . != null) |
+ select(.value.version | startswith("1.0.0")) |
+ select(.value.network.asn_privacy == 0) |
+ select(.value.http.error == null) |
+ 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") |
+ .key
+ ] | sort' > searx-tmp.json
+
+ jq --slurpfile searx searx-tmp.json \
+ '( .[] | select(.type == "searx") )
+ .instances |= $searx[0]' services.json > services-tmp.json
+
+ apply_update
+
+ # ==============================================================
+ # TODO: Update instances for other services
+ # ==============================================================
+
+ # ==============================================================
+ # Push changes
+ # ==============================================================
+ if [[ $(git diff-index --quiet HEAD) ]]; then
+ echo "No updates"
+ else
+ git add services.json
+ git commit -m '[CI] Auto update instances'
+ git push
+ fi