about summary refs log tree commit diff
path: root/modules/nm-mullvad/generate-mullvad-peer-list.sh
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2023-09-19 01:26:22 +0900
committersefidel <contact@sefidel.net>2023-09-19 01:26:22 +0900
commit9084e40de72042f10c78b5a423b415bad0a53179 (patch)
treeb9b9ee7598a730fae949debf31d66a09f658eb19 /modules/nm-mullvad/generate-mullvad-peer-list.sh
parent4bcd683f46d3907cff4438e4b3e1804bad4e14c8 (diff)
downloadnixrc-9084e40de72042f10c78b5a423b415bad0a53179.tar.gz
nixrc-9084e40de72042f10c78b5a423b415bad0a53179.zip
feat(modules): add nm-mullvad
Diffstat (limited to 'modules/nm-mullvad/generate-mullvad-peer-list.sh')
-rwxr-xr-xmodules/nm-mullvad/generate-mullvad-peer-list.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/nm-mullvad/generate-mullvad-peer-list.sh b/modules/nm-mullvad/generate-mullvad-peer-list.sh
new file mode 100755
index 0000000..9fe5ed9
--- /dev/null
+++ b/modules/nm-mullvad/generate-mullvad-peer-list.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p curl jq
+
+set -euo pipefail
+
+script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
+output_file="$script_dir/mullvad-servers-list.nix"
+
+servers_json=$(curl -Ss 'https://api.mullvad.net/www/relays/all')
+
+readarray -t servers_arr < <(jq -c '.[] | select(.type == "wireguard")' <<< $servers_json)
+
+printf '# @generated by generate-mullvad-peer-list.sh\n# Do not Edit.\n\n' > $output_file
+printf '[\n' >> $output_file
+
+for item in "${servers_arr[@]}"; do
+    hostname=$(jq -r '.hostname' <<< $item)
+    pubkey=$(jq -r '.pubkey' <<< $item)
+    endpoint=$(jq -r '.ipv4_addr_in' <<< $item)
+    cat <<EOF >> $output_file
+  {
+    id = "$hostname";
+    uuid = "$(uuidgen -n @url --sha1 --name "$hostname-$endpoint")";
+    pubKey = "$pubkey";
+    endpoint = "$endpoint";
+  }
+EOF
+done
+
+printf ']' >> $output_file