diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-02-07 09:52:49 +0100 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-02-07 09:52:49 +0100 |
| commit | 562e03da04a41ed11b33df6cfe5c1c25fe17540c (patch) | |
| tree | d5561a867f33ceec3a9572e378cb0eceda07bdcc | |
| parent | 51e2cf9d6e872588b8519b3756c46be8f1045312 (diff) | |
| parent | fe2f278afcfefb4ffd619d8846abbc02165e5d48 (diff) | |
| download | mullvadvpn-562e03da04a41ed11b33df6cfe5c1c25fe17540c.tar.xz mullvadvpn-562e03da04a41ed11b33df6cfe5c1c25fe17540c.zip | |
Merge branch 'upgrade-build-script'
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | README.md | 48 | ||||
| -rwxr-xr-x | build.sh | 63 | ||||
| -rw-r--r-- | dist-assets/relays.json | 8776 | ||||
| -rw-r--r-- | mullvad-daemon/build.rs | 49 | ||||
| -rw-r--r-- | mullvad-daemon/src/bin/problem-report.rs | 9 | ||||
| -rw-r--r-- | mullvad-daemon/src/cli.rs | 5 | ||||
| -rw-r--r-- | mullvad-daemon/src/main.rs | 5 | ||||
| -rwxr-xr-x | prepare_release.sh | 54 |
9 files changed, 185 insertions, 8825 deletions
diff --git a/.gitignore b/.gitignore index be01f23d88..ad720af700 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ dist build .DS_Store *.log +dist-assets/relays.json @@ -27,6 +27,11 @@ homebrew: brew install node yarn ``` +1. Install build dependencies if you are on Linux + ```bash + sudo apt install icnsutils graphicsmagick + ``` + ## Building and running the backend (mullvad-daemon) 1. Build the backend without optimizations (debug mode) with: @@ -34,6 +39,11 @@ homebrew: cargo build ``` +1. Get the latest list of Mullvad relays: + ``` + ./target/debug/list-relays > dist-assets/relays.json + ``` + 1. Run the backend daemon debug binary with verbose logging to the terminal with: ``` sudo ./target/debug/mullvad-daemon -vv --resource-dir dist-assets/ @@ -70,12 +80,7 @@ it and behave accordingly. 1. Build the backend in optimized release mode with: ``` - ./build.sh - ``` - -1. Install build dependencies if you are on Linux - ```bash - sudo apt install icnsutils graphicsmagick + cargo build --release ``` 1. Install all JavaScript dependencies (unless you already have) and package the application with: @@ -95,6 +100,34 @@ it and behave accordingly. The artifact (.dmg, .deb, .msi) version is the `version` property of `package.json`. +## Making a release + +When making a real release there are a couple of steps to follow. `<VERSION>` here will denote +the version of the app you are going to release. For example `2018.3-beta1` or `2018.4`. + +1. Follow the [Install toolchains and dependencies](#install-toolchains-and-dependencies) steps + if you have not already completed them. + +1. Make sure the `CHANGELOG.md` is up to date and has all the changes present in this release. + Also change the `[Unreleased]` header into `[<VERSION>] - <DATE>` and add a new `[Unreleased]` + header at the top. Push this, get it reviewed and merged. + +1. Run `./prepare_release.sh <VERSION>`. This will do the following for you: + 1. Check if your repository is in a sane state and the given version has the correct format + 1. Update `package.json` with the new version and commit that + 1. Add a signed tag to the current commit with the release version in it + + Please verify that the script did the right thing before you push the commit and tag it created. + +1. Run `./build.sh` on each computer/platform where you want to create a release artifact. This will + do the following for you: + 1. Update `relays.json` with the latest relays + 1. Compile and package the app into a distributable artifact for your platform. + + Please pay attention to the output at the end of the script and make sure the version it says + it built matches what you want to release. + + ## Command line tools for frontend development - `$ yarn run develop` - develop app with live-reload enabled @@ -134,7 +167,8 @@ it and behave accordingly. ## Quirks -- If you want to modify babel-configurations please note that `BABEL_ENV=development` must be used for [react-native](https://github.com/facebook/react-native/issues/8723) +- If you want to modify babel-configurations please note that `BABEL_ENV=development` must be used + for [react-native](https://github.com/facebook/react-native/issues/8723) # License @@ -1,12 +1,63 @@ #!/usr/bin/env bash -set -e +# This script is used to build, and sign a release artifact. See `README.md` for instructions on +# how to just build a development/testing version. -export MACOSX_DEPLOYMENT_TARGET="10.7" +set -eu +if [[ "${1:-""}" != "--allow-dirty" ]]; then + if [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]; then + echo "Dirty working directory!" + echo "You should only build releases in clean working directories in order to make it" + echo "easier to reproduce the same build." + echo "" + echo "Use --allow-dirty to skip this check. Never do this for official releases." + exit 1 + fi +fi + +case "$(uname -s)" in + Darwin*) export MACOSX_DEPLOYMENT_TARGET="10.7";; +esac + +binaries=( + ./target/release/mullvad-daemon + ./target/release/mullvad + ./target/release/problem-report +) + +# Remove binaries. To make sure it is rebuilt with the stable toolchain and the latest changes. +for binary in ${binaries[*]}; do + echo "Removing $binary" + rm -f $binary +done + +echo "Compiling Rust backend in release mode..." cargo +stable build --release -# Strip debugging symbols from the binaries. This saves a lot of space. -strip ./target/release/mullvad-daemon -strip ./target/release/mullvad -strip ./target/release/problem-report +for binary in ${binaries[*]}; do + echo "Stripping debugging symbols from $binary" + strip $binary +done + +echo "Updating relay list..." +./target/release/list-relays > dist-assets/relays.json + +echo "Installing JavaScript dependencies..." +yarn install + +echo "Packing final release artifact..." +case "$(uname -s)" in + #Linux*) yarn pack:linux;; + Darwin*) yarn pack:mac;; +esac + +RELEASE_VERSION=`./target/release/mullvad-daemon --version | cut -f2 -d' '` +echo "**********************************" +echo "" +echo " The build finished successfully! " +echo " You have built:" +echo "" +echo " $RELEASE_VERSION" +echo "" +echo "**********************************" diff --git a/dist-assets/relays.json b/dist-assets/relays.json deleted file mode 100644 index 8ccd1a8325..0000000000 --- a/dist-assets/relays.json +++ /dev/null @@ -1,8776 +0,0 @@ -{ - "countries": [ - { - "name": "Australia", - "code": "au", - "cities": [ - { - "name": "Brisbane", - "code": "bne", - "latitude": -27.471, - "longitude": 153.0234, - "has_active_relays": false, - "relays": [ - { - "hostname": "au-bne-001", - "ipv4_addr_in": "43.245.160.162", - "ipv4_addr_exit": "43.245.160.163", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Melbourne", - "code": "mel", - "latitude": -37.815018, - "longitude": 144.946014, - "has_active_relays": false, - "relays": [ - { - "hostname": "au-mel-001", - "ipv4_addr_in": "168.1.133.194", - "ipv4_addr_exit": "209.95.58.68", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Sydney", - "code": "syd", - "latitude": -33.861481, - "longitude": 151.205475, - "has_active_relays": false, - "relays": [ - { - "hostname": "au2", - "ipv4_addr_in": "168.1.6.5", - "ipv4_addr_exit": "31.24.225.96", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "au3", - "ipv4_addr_in": "168.1.23.79", - "ipv4_addr_exit": "31.24.225.108", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Austria", - "code": "at", - "cities": [ - { - "name": "Wien", - "code": "vie", - "latitude": 48.210033, - "longitude": 16.363449, - "has_active_relays": false, - "relays": [ - { - "hostname": "at1", - "ipv4_addr_in": "217.64.127.138", - "ipv4_addr_exit": "217.64.127.139", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "at2", - "ipv4_addr_in": "217.64.127.202", - "ipv4_addr_exit": "217.64.127.203", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Belgium", - "code": "be", - "cities": [ - { - "name": "Brussels", - "code": "bru", - "latitude": 50.833333, - "longitude": 4.333333, - "has_active_relays": false, - "relays": [ - { - "hostname": "be1", - "ipv4_addr_in": "185.104.186.202", - "ipv4_addr_exit": "185.104.186.203", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "be2", - "ipv4_addr_in": "91.207.57.50", - "ipv4_addr_exit": "91.207.57.51", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Bulgaria", - "code": "bg", - "cities": [ - { - "name": "Sofia", - "code": "sof", - "latitude": 42.6833333, - "longitude": 23.3166667, - "has_active_relays": false, - "relays": [ - { - "hostname": "bg1", - "ipv4_addr_in": "185.94.192.42", - "ipv4_addr_exit": "185.94.192.43", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "bg2", - "ipv4_addr_in": "185.94.192.66", - "ipv4_addr_exit": "185.94.192.67", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Canada", - "code": "ca", - "cities": [ - { - "name": "Toronto", - "code": "tor", - "latitude": 43.666667, - "longitude": -79.416667, - "has_active_relays": false, - "relays": [ - { - "hostname": "ca1", - "ipv4_addr_in": "199.66.90.208", - "ipv4_addr_exit": "199.66.90.209", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ca2", - "ipv4_addr_in": "162.219.176.250", - "ipv4_addr_exit": "162.219.176.251", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ca3", - "ipv4_addr_in": "199.66.90.112", - "ipv4_addr_exit": "199.66.90.113", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Vancouver", - "code": "van", - "latitude": 49.25, - "longitude": -123.133333, - "has_active_relays": false, - "relays": [ - { - "hostname": "ca4", - "ipv4_addr_in": "71.19.248.240", - "ipv4_addr_exit": "71.19.248.193", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ca5", - "ipv4_addr_in": "71.19.249.81", - "ipv4_addr_exit": "71.19.249.82", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Czech Republic", - "code": "cz", - "cities": [ - { - "name": "Prague", - "code": "prg", - "latitude": 50.083333, - "longitude": 14.466667, - "has_active_relays": false, - "relays": [ - { - "hostname": "cz1", - "ipv4_addr_in": "185.156.174.146", - "ipv4_addr_exit": "185.156.174.147", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "cz2", - "ipv4_addr_in": "185.156.174.170", - "ipv4_addr_exit": "185.156.174.171", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Denmark", - "code": "dk", - "cities": [ - { - "name": "Copenhagen", - "code": "cph", - "latitude": 55.666667, - "longitude": 12.583333, - "has_active_relays": false, - "relays": [ - { - "hostname": "dk1", - "ipv4_addr_in": "82.103.140.213", - "ipv4_addr_exit": "82.103.140.214", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "dk2", - "ipv4_addr_in": "134.90.149.138", - "ipv4_addr_exit": "134.90.149.139", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "dk3", - "ipv4_addr_in": "185.206.224.114", - "ipv4_addr_exit": "185.206.224.115", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "dk4", - "ipv4_addr_in": "185.206.224.119", - "ipv4_addr_exit": "185.206.224.120", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Finland", - "code": "fi", - "cities": [ - { - "name": "Helsinki", - "code": "hel", - "latitude": 60.192059, - "longitude": 24.945831, - "has_active_relays": false, - "relays": [ - { - "hostname": "fi1", - "ipv4_addr_in": "185.103.110.69", - "ipv4_addr_exit": "185.103.110.70", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "fi2", - "ipv4_addr_in": "149.36.64.200", - "ipv4_addr_exit": "149.36.64.201", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "fi-hel-003", - "ipv4_addr_in": "185.212.149.42", - "ipv4_addr_exit": "185.212.149.43", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "France", - "code": "fr", - "cities": [ - { - "name": "Paris", - "code": "par", - "latitude": 48.866667, - "longitude": 2.333333, - "has_active_relays": false, - "relays": [ - { - "hostname": "fr1", - "ipv4_addr_in": "185.156.173.218", - "ipv4_addr_exit": "185.156.173.219", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "fr2", - "ipv4_addr_in": "185.189.113.82", - "ipv4_addr_exit": "185.189.113.83", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Germany", - "code": "de", - "cities": [ - { - "name": "Berlin", - "code": "ber", - "latitude": 52.520008, - "longitude": 13.404954, - "has_active_relays": false, - "relays": [ - { - "hostname": "de6", - "ipv4_addr_in": "89.249.64.146", - "ipv4_addr_exit": "89.249.64.147", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "de7", - "ipv4_addr_in": "89.249.64.162", - "ipv4_addr_exit": "89.249.64.163", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "de8", - "ipv4_addr_in": "89.249.64.154", - "ipv4_addr_exit": "89.249.64.155", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "de-ber-001", - "ipv4_addr_in": "89.249.64.234", - "ipv4_addr_exit": "89.249.64.235", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Frankfurt", - "code": "fra", - "latitude": 50.110924, - "longitude": 8.682127, - "has_active_relays": false, - "relays": [ - { - "hostname": "de10", - "ipv4_addr_in": "185.104.184.186", - "ipv4_addr_exit": "185.104.184.187", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "de5", - "ipv4_addr_in": "185.62.205.144", - "ipv4_addr_exit": "185.62.205.145", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "de9", - "ipv4_addr_in": "185.104.184.178", - "ipv4_addr_exit": "185.104.184.179", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "de-fra-001", - "ipv4_addr_in": "82.102.16.90", - "ipv4_addr_exit": "82.102.16.91", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Hong Kong", - "code": "hk", - "cities": [ - { - "name": "Hong Kong", - "code": "hkg", - "latitude": 22.2833333, - "longitude": 114.15, - "has_active_relays": false, - "relays": [ - { - "hostname": "hk1", - "ipv4_addr_in": "161.202.48.245", - "ipv4_addr_exit": "209.95.60.204", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "hk-hkg-001", - "ipv4_addr_in": "209.58.184.146", - "ipv4_addr_exit": "209.58.184.136", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Hungary", - "code": "hu", - "cities": [ - { - "name": "Budapest", - "code": "bud", - "latitude": 47.5, - "longitude": 19.083333, - "has_active_relays": false, - "relays": [ - { - "hostname": "hu1", - "ipv4_addr_in": "185.189.114.10", - "ipv4_addr_exit": "185.189.114.11", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Israel", - "code": "il", - "cities": [ - { - "name": "Petach-Tikva", - "code": "pet", - "latitude": 32.084, - "longitude": 34.8878, - "has_active_relays": false, - "relays": [ - { - "hostname": "il1", - "ipv4_addr_in": "213.184.122.34", - "ipv4_addr_exit": "213.184.122.35", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Italy", - "code": "it", - "cities": [ - { - "name": "Milan", - "code": "mil", - "latitude": 45.466667, - "longitude": 9.2, - "has_active_relays": false, - "relays": [ - { - "hostname": "it1", - "ipv4_addr_in": "217.64.113.180", - "ipv4_addr_exit": "217.64.113.181", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "it2", - "ipv4_addr_in": "217.64.113.183", - "ipv4_addr_exit": "217.64.113.184", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Japan", - "code": "jp", - "cities": [ - { - "name": "Tokyo", - "code": "tyo", - "latitude": 35.685, - "longitude": 139.751389, - "has_active_relays": false, - "relays": [ - { - "hostname": "jp1", - "ipv4_addr_in": "161.202.144.203", - "ipv4_addr_exit": "173.244.192.128", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Moldova", - "code": "md", - "cities": [ - { - "name": "Chisinau", - "code": "kiv", - "latitude": 47.00367, - "longitude": 28.907089, - "has_active_relays": false, - "relays": [ - { - "hostname": "md0001", - "ipv4_addr_in": "178.175.142.194", - "ipv4_addr_exit": "178.175.142.195", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Netherlands", - "code": "nl", - "cities": [ - { - "name": "Amsterdam", - "code": "ams", - "latitude": 52.35, - "longitude": 4.916667, - "has_active_relays": false, - "relays": [ - { - "hostname": "nl1", - "ipv4_addr_in": "185.65.134.131", - "ipv4_addr_exit": "185.65.134.161", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl10", - "ipv4_addr_in": "185.65.134.140", - "ipv4_addr_exit": "185.65.134.170", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl11", - "ipv4_addr_in": "185.65.134.141", - "ipv4_addr_exit": "185.65.134.171", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl12", - "ipv4_addr_in": "185.65.134.142", - "ipv4_addr_exit": "185.65.134.172", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl13", - "ipv4_addr_in": "185.65.134.143", - "ipv4_addr_exit": "185.65.134.173", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl14", - "ipv4_addr_in": "185.65.134.144", - "ipv4_addr_exit": "185.65.134.174", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl15", - "ipv4_addr_in": "185.65.134.145", - "ipv4_addr_exit": "185.65.134.175", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl16", - "ipv4_addr_in": "185.65.134.146", - "ipv4_addr_exit": "185.65.134.176", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl17", - "ipv4_addr_in": "185.65.134.147", - "ipv4_addr_exit": "185.65.134.177", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl18", - "ipv4_addr_in": "185.65.134.148", - "ipv4_addr_exit": "185.65.134.178", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl2", - "ipv4_addr_in": "185.65.134.132", - "ipv4_addr_exit": "185.65.134.162", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl3", - "ipv4_addr_in": "185.65.134.133", - "ipv4_addr_exit": "185.65.134.163", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl4", - "ipv4_addr_in": "185.65.134.134", - "ipv4_addr_exit": "185.65.134.164", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl5", - "ipv4_addr_in": "185.65.134.135", - "ipv4_addr_exit": "185.65.134.165", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl6", - "ipv4_addr_in": "185.65.134.136", - "ipv4_addr_exit": "185.65.134.166", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl7", - "ipv4_addr_in": "185.65.134.137", - "ipv4_addr_exit": "185.65.134.167", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl8", - "ipv4_addr_in": "185.65.134.138", - "ipv4_addr_exit": "185.65.134.168", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "nl9", - "ipv4_addr_in": "185.65.134.139", - "ipv4_addr_exit": "185.65.134.169", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Norway", - "code": "no", - "cities": [ - { - "name": "Oslo", - "code": "osl", - "latitude": 59.916667, - "longitude": 10.75, - "has_active_relays": false, - "relays": [ - { - "hostname": "no-osl-001", - "ipv4_addr_in": "91.90.44.11", - "ipv4_addr_exit": "91.90.44.21", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "no-osl-002", - "ipv4_addr_in": "91.90.44.12", - "ipv4_addr_exit": "91.90.44.22", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "no-osl-003", - "ipv4_addr_in": "91.90.44.13", - "ipv4_addr_exit": "91.90.44.23", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "no-osl-004", - "ipv4_addr_in": "91.90.44.14", - "ipv4_addr_exit": "91.90.44.24", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "no-osl-005", - "ipv4_addr_in": "91.90.44.15", - "ipv4_addr_exit": "91.90.44.25", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "no-osl-006", - "ipv4_addr_in": "91.90.44.16", - "ipv4_addr_exit": "91.90.44.26", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "no-osl-007", - "ipv4_addr_in": "91.90.44.17", - "ipv4_addr_exit": "91.90.44.27", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Poland", - "code": "pl", - "cities": [ - { - "name": "Warsaw", - "code": "waw", - "latitude": 52.25, - "longitude": 21.0, - "has_active_relays": false, - "relays": [ - { - "hostname": "pl1", - "ipv4_addr_in": "212.7.217.30", - "ipv4_addr_exit": "212.7.222.10", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Portugal", - "code": "pt", - "cities": [ - { - "name": "Lisbon", - "code": "lis", - "latitude": 38.736946, - "longitude": -9.142685, - "has_active_relays": false, - "relays": [ - { - "hostname": "pt1", - "ipv4_addr_in": "5.206.231.214", - "ipv4_addr_exit": "5.206.231.215", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Romania", - "code": "ro", - "cities": [ - { - "name": "Bucharest", - "code": "buh", - "latitude": 44.433333, - "longitude": 26.1, - "has_active_relays": false, - "relays": [ - { - "hostname": "ro1", - "ipv4_addr_in": "185.45.13.10", - "ipv4_addr_exit": "185.45.13.11", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ro2", - "ipv4_addr_in": "185.181.100.202", - "ipv4_addr_exit": "185.181.100.203", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Singapore", - "code": "sg", - "cities": [ - { - "name": "Singapore", - "code": "sin", - "latitude": 1.2930556, - "longitude": 103.8558333, - "has_active_relays": false, - "relays": [ - { - "hostname": "sg1", - "ipv4_addr_in": "103.254.153.82", - "ipv4_addr_exit": "103.254.153.113", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "sg2", - "ipv4_addr_in": "103.57.72.30", - "ipv4_addr_exit": "103.57.72.31", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "sg-sin-001", - "ipv4_addr_in": "185.128.24.50", - "ipv4_addr_exit": "185.128.24.51", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Spain", - "code": "es", - "cities": [ - { - "name": "Madrid", - "code": "mad", - "latitude": 40.408566, - "longitude": -3.69222, - "has_active_relays": false, - "relays": [ - { - "hostname": "es1", - "ipv4_addr_in": "89.238.178.34", - "ipv4_addr_exit": "89.238.178.35", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "es2", - "ipv4_addr_in": "89.238.178.74", - "ipv4_addr_exit": "89.238.178.75", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Sweden", - "code": "se", - "cities": [ - { - "name": "Helsingborg", - "code": "hel", - "latitude": 56.0465, - "longitude": 12.6945, - "has_active_relays": false, - "relays": [ - { - "hostname": "se1", - "ipv4_addr_in": "185.65.132.102", - "ipv4_addr_exit": "185.65.132.110", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se13", - "ipv4_addr_in": "185.65.132.112", - "ipv4_addr_exit": "185.65.132.113", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se16", - "ipv4_addr_in": "185.65.132.108", - "ipv4_addr_exit": "185.65.132.137", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se2", - "ipv4_addr_in": "185.213.152.132", - "ipv4_addr_exit": "185.213.152.162", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se4", - "ipv4_addr_in": "185.213.152.134", - "ipv4_addr_exit": "185.213.152.164", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se7", - "ipv4_addr_in": "185.213.152.137", - "ipv4_addr_exit": "185.213.152.167", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se9", - "ipv4_addr_in": "185.65.132.105", - "ipv4_addr_exit": "185.65.132.106", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Malmö", - "code": "mma", - "latitude": 55.607075, - "longitude": 13.002716, - "has_active_relays": false, - "relays": [ - { - "hostname": "se0033", - "ipv4_addr_in": "193.138.218.157", - "ipv4_addr_exit": "193.138.218.187", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se10", - "ipv4_addr_in": "193.138.219.227", - "ipv4_addr_exit": "193.138.219.231", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se11", - "ipv4_addr_in": "193.138.219.229", - "ipv4_addr_exit": "193.138.219.233", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se3", - "ipv4_addr_in": "193.138.219.226", - "ipv4_addr_exit": "193.138.219.228", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-001", - "ipv4_addr_in": "193.138.218.131", - "ipv4_addr_exit": "193.138.218.161", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-002", - "ipv4_addr_in": "193.138.218.132", - "ipv4_addr_exit": "193.138.218.162", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-003", - "ipv4_addr_in": "193.138.218.133", - "ipv4_addr_exit": "193.138.218.163", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-004", - "ipv4_addr_in": "193.138.218.134", - "ipv4_addr_exit": "193.138.218.164", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-005", - "ipv4_addr_in": "193.138.218.135", - "ipv4_addr_exit": "193.138.218.165", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-006", - "ipv4_addr_in": "193.138.218.136", - "ipv4_addr_exit": "193.138.218.166", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-007", - "ipv4_addr_in": "193.138.218.137", - "ipv4_addr_exit": "193.138.218.167", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-008", - "ipv4_addr_in": "193.138.218.138", - "ipv4_addr_exit": "193.138.218.168", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-009", - "ipv4_addr_in": "193.138.218.139", - "ipv4_addr_exit": "193.138.218.169", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se-mma-010", - "ipv4_addr_in": "193.138.218.140", - "ipv4_addr_exit": "193.138.218.170", - "include_in_country": true, - "weight": 300, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Stockholm", - "code": "sto", - "latitude": 59.3289, - "longitude": 18.0649, - "has_active_relays": false, - "relays": [ - { - "hostname": "se17", - "ipv4_addr_in": "185.65.135.137", - "ipv4_addr_exit": "185.65.135.167", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se18", - "ipv4_addr_in": "185.65.135.138", - "ipv4_addr_exit": "185.65.135.168", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se19", - "ipv4_addr_in": "185.65.135.139", - "ipv4_addr_exit": "185.65.135.169", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se20", - "ipv4_addr_in": "185.65.135.140", - "ipv4_addr_exit": "185.65.135.170", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se21", - "ipv4_addr_in": "185.65.135.141", - "ipv4_addr_exit": "185.65.135.171", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se22", - "ipv4_addr_in": "185.65.135.142", - "ipv4_addr_exit": "185.65.135.172", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se23", - "ipv4_addr_in": "185.65.135.143", - "ipv4_addr_exit": "185.65.135.173", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se24", - "ipv4_addr_in": "185.65.135.73", - "ipv4_addr_exit": "185.65.135.93", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se25", - "ipv4_addr_in": "185.65.135.145", - "ipv4_addr_exit": "185.65.135.175", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se27", - "ipv4_addr_in": "185.65.135.147", - "ipv4_addr_exit": "185.65.135.177", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se28", - "ipv4_addr_in": "185.65.135.148", - "ipv4_addr_exit": "185.65.135.178", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se29", - "ipv4_addr_in": "185.65.135.149", - "ipv4_addr_exit": "185.65.135.179", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se30", - "ipv4_addr_in": "185.65.135.150", - "ipv4_addr_exit": "185.65.135.180", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se31", - "ipv4_addr_in": "185.65.135.151", - "ipv4_addr_exit": "185.65.135.181", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "se32", - "ipv4_addr_in": "185.65.135.152", - "ipv4_addr_exit": "185.65.135.182", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "Switzerland", - "code": "ch", - "cities": [ - { - "name": "Zurich", - "code": "zrh", - "latitude": 47.366667, - "longitude": 8.55, - "has_active_relays": false, - "relays": [ - { - "hostname": "ch1", - "ipv4_addr_in": "179.43.128.170", - "ipv4_addr_exit": "31.7.59.226", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ch2", - "ipv4_addr_in": "185.183.104.82", - "ipv4_addr_exit": "185.183.104.83", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ch3", - "ipv4_addr_in": "185.9.18.98", - "ipv4_addr_exit": "185.9.18.99", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ch4", - "ipv4_addr_in": "185.212.170.50", - "ipv4_addr_exit": "185.212.170.51", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ch-zrh-005", - "ipv4_addr_in": "82.102.24.130", - "ipv4_addr_exit": "82.102.24.131", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "ch-zrh-006", - "ipv4_addr_in": "82.102.24.186", - "ipv4_addr_exit": "82.102.24.187", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "UK", - "code": "gb", - "cities": [ - { - "name": "London", - "code": "lon", - "latitude": 51.514125, - "longitude": -0.093689, - "has_active_relays": false, - "relays": [ - { - "hostname": "gb2", - "ipv4_addr_in": "185.16.85.170", - "ipv4_addr_exit": "185.16.85.171", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "gb3", - "ipv4_addr_in": "185.16.85.54", - "ipv4_addr_exit": "185.16.85.56", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "gb6", - "ipv4_addr_in": "185.200.118.105", - "ipv4_addr_exit": "185.200.118.106", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "gb7", - "ipv4_addr_in": "185.212.168.244", - "ipv4_addr_exit": "185.212.168.245", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Manchester", - "code": "mnc", - "latitude": 53.5, - "longitude": -2.216667, - "has_active_relays": false, - "relays": [ - { - "hostname": "gb4", - "ipv4_addr_in": "89.238.183.60", - "ipv4_addr_exit": "89.238.183.61", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "gb5", - "ipv4_addr_in": "89.238.183.244", - "ipv4_addr_exit": "89.238.183.245", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "gb8", - "ipv4_addr_in": "217.151.98.68", - "ipv4_addr_exit": "217.151.98.69", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - }, - { - "name": "USA", - "code": "us", - "cities": [ - { - "name": "Atlanta, GA", - "code": "atl", - "latitude": 33.753746, - "longitude": -84.38633, - "has_active_relays": false, - "relays": [ - { - "hostname": "us0010", - "ipv4_addr_in": "107.152.108.62", - "ipv4_addr_exit": "66.71.240.200", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us15", - "ipv4_addr_in": "104.129.24.242", - "ipv4_addr_exit": "104.129.24.243", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Chicago, IL", - "code": "chi", - "latitude": 41.881832, - "longitude": -87.623177, - "has_active_relays": false, - "relays": [ - { - "hostname": "us1", - "ipv4_addr_in": "104.129.31.26", - "ipv4_addr_exit": "104.129.31.27", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us25", - "ipv4_addr_in": "68.235.48.107", - "ipv4_addr_exit": "68.235.48.108", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us29", - "ipv4_addr_in": "68.235.35.187", - "ipv4_addr_exit": "68.235.35.188", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-chi-001", - "ipv4_addr_in": "208.77.22.187", - "ipv4_addr_exit": "208.77.22.188", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Dallas, TX", - "code": "dal", - "latitude": 32.89748, - "longitude": -97.040443, - "has_active_relays": false, - "relays": [ - { - "hostname": "us8", - "ipv4_addr_in": "96.44.145.18", - "ipv4_addr_exit": "96.44.145.19", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us9", - "ipv4_addr_in": "96.44.147.130", - "ipv4_addr_exit": "96.44.147.131", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-dal-001", - "ipv4_addr_in": "75.126.73.46", - "ipv4_addr_exit": "174.127.93.141", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Denver, CO", - "code": "den", - "latitude": 39.7392358, - "longitude": -104.990251, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-den-001", - "ipv4_addr_in": "207.189.30.66", - "ipv4_addr_exit": "207.189.30.67", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Las Vegas, NV", - "code": "las", - "latitude": 36.114647, - "longitude": -115.172813, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-las-001", - "ipv4_addr_in": "82.102.31.34", - "ipv4_addr_exit": "82.102.31.35", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-las-002", - "ipv4_addr_in": "82.102.31.39", - "ipv4_addr_exit": "82.102.31.40", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-las-003", - "ipv4_addr_in": "82.102.31.50", - "ipv4_addr_exit": "82.102.31.51", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Los Angeles, CA", - "code": "lax", - "latitude": 34.052235, - "longitude": -118.243683, - "has_active_relays": false, - "relays": [ - { - "hostname": "us21", - "ipv4_addr_in": "38.95.111.74", - "ipv4_addr_exit": "38.95.111.75", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us22", - "ipv4_addr_in": "38.95.111.66", - "ipv4_addr_exit": "38.95.111.67", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us28", - "ipv4_addr_in": "38.95.108.162", - "ipv4_addr_exit": "38.95.108.163", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us7", - "ipv4_addr_in": "173.199.80.130", - "ipv4_addr_exit": "173.199.80.131", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-lax-005", - "ipv4_addr_in": "38.95.110.18", - "ipv4_addr_exit": "38.95.110.19", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-lax-006", - "ipv4_addr_in": "38.95.110.23", - "ipv4_addr_exit": "38.95.110.24", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Louisville, KY", - "code": "lui", - "latitude": 38.328732, - "longitude": -85.764771, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-lui-001", - "ipv4_addr_in": "207.89.23.114", - "ipv4_addr_exit": "207.89.23.115", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Miami, FL", - "code": "mia", - "latitude": 25.761681, - "longitude": -80.191788, - "has_active_relays": false, - "relays": [ - { - "hostname": "us19", - "ipv4_addr_in": "38.132.120.2", - "ipv4_addr_exit": "38.132.120.4", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us20", - "ipv4_addr_in": "38.132.120.10", - "ipv4_addr_exit": "38.132.120.11", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us26", - "ipv4_addr_in": "38.132.118.82", - "ipv4_addr_exit": "38.132.118.83", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us3", - "ipv4_addr_in": "173.44.37.58", - "ipv4_addr_exit": "173.44.37.59", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Newark, NJ", - "code": "ewr", - "latitude": 40.735657, - "longitude": -74.172363, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-ewr-003", - "ipv4_addr_in": "38.132.124.42", - "ipv4_addr_exit": "38.132.124.43", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-ewr-004", - "ipv4_addr_in": "38.132.124.50", - "ipv4_addr_exit": "38.132.124.51", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-ewr-005", - "ipv4_addr_in": "38.132.124.58", - "ipv4_addr_exit": "38.132.124.59", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "New York, NY", - "code": "nyc", - "latitude": 40.73061, - "longitude": -73.935242, - "has_active_relays": false, - "relays": [ - { - "hostname": "us17", - "ipv4_addr_in": "38.132.107.138", - "ipv4_addr_exit": "38.132.107.139", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us18", - "ipv4_addr_in": "38.132.107.146", - "ipv4_addr_exit": "38.132.107.147", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us27", - "ipv4_addr_in": "38.132.127.74", - "ipv4_addr_exit": "38.132.127.75", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-nyc-004", - "ipv4_addr_in": "38.132.119.90", - "ipv4_addr_exit": "38.132.119.91", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-nyc-005", - "ipv4_addr_in": "38.132.119.162", - "ipv4_addr_exit": "38.132.119.163", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Phoenix, AZ", - "code": "PHX", - "latitude": 33.448376, - "longitude": -112.074036, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-phx-001", - "ipv4_addr_in": "82.102.30.194", - "ipv4_addr_exit": "82.102.30.195", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-phx-002", - "ipv4_addr_in": "82.102.30.199", - "ipv4_addr_exit": "82.102.30.201", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-phx-003", - "ipv4_addr_in": "82.102.30.210", - "ipv4_addr_exit": "82.102.30.211", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Piscataway, NJ", - "code": "pil", - "latitude": 39.833851, - "longitude": -74.871826, - "has_active_relays": false, - "relays": [ - { - "hostname": "us2", - "ipv4_addr_in": "108.61.48.115", - "ipv4_addr_exit": "108.61.48.116", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us6", - "ipv4_addr_in": "66.55.147.59", - "ipv4_addr_exit": "66.55.147.60", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Richmond, VA", - "code": "ric", - "latitude": 37.646152, - "longitude": -77.511429, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-ric-001", - "ipv4_addr_in": "192.64.24.98", - "ipv4_addr_exit": "192.64.24.99", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Salt Lake City, UT", - "code": "slc", - "latitude": 40.758701, - "longitude": -111.876183, - "has_active_relays": false, - "relays": [ - { - "hostname": "us0004", - "ipv4_addr_in": "107.182.238.229", - "ipv4_addr_exit": "173.244.208.35", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us23", - "ipv4_addr_in": "209.95.56.171", - "ipv4_addr_exit": "67.212.238.174", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "San Jose, CA", - "code": "sjc", - "latitude": 37.3382082, - "longitude": -121.8863286, - "has_active_relays": false, - "relays": [ - { - "hostname": "us-sjc-001", - "ipv4_addr_in": "50.23.65.54", - "ipv4_addr_exit": "174.127.103.180", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Seattle, WA", - "code": "sea", - "latitude": 47.608013, - "longitude": -122.335167, - "has_active_relays": false, - "relays": [ - { - "hostname": "us0005", - "ipv4_addr_in": "104.200.129.42", - "ipv4_addr_exit": "104.200.129.48", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us16", - "ipv4_addr_in": "104.200.129.202", - "ipv4_addr_exit": "104.200.129.212", - "include_in_country": false, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - }, - { - "name": "Washington DC", - "code": "was", - "latitude": 38.889484, - "longitude": -77.035278, - "has_active_relays": false, - "relays": [ - { - "hostname": "us24", - "ipv4_addr_in": "174.36.220.200", - "ipv4_addr_exit": "173.244.197.248", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - }, - { - "hostname": "us-was-001", - "ipv4_addr_in": "66.171.37.138", - "ipv4_addr_exit": "66.171.37.139", - "include_in_country": true, - "weight": 100, - "tunnels": { - "openvpn": [ - { - "port": 1194, - "protocol": "udp" - }, - { - "port": 1195, - "protocol": "udp" - }, - { - "port": 1196, - "protocol": "udp" - }, - { - "port": 1197, - "protocol": "udp" - }, - { - "port": 1300, - "protocol": "udp" - }, - { - "port": 1301, - "protocol": "udp" - }, - { - "port": 1302, - "protocol": "udp" - }, - { - "port": 443, - "protocol": "tcp" - }, - { - "port": 80, - "protocol": "tcp" - } - ], - "wireguard": [] - } - } - ] - } - ] - } - ] -} diff --git a/mullvad-daemon/build.rs b/mullvad-daemon/build.rs index 14320da319..9e6c57fc96 100644 --- a/mullvad-daemon/build.rs +++ b/mullvad-daemon/build.rs @@ -1,13 +1,3 @@ -// Copyright 2017 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use std::env; use std::fs::File; use std::io::Write; @@ -18,33 +8,34 @@ use std::process::Command; fn main() { let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap()); - File::create(out_dir.join("git-commit-info.txt")) + File::create(out_dir.join("git-commit-desc.txt")) .unwrap() - .write_all(commit_info().as_bytes()) + .write_all(commit_description().as_bytes()) + .unwrap(); + File::create(out_dir.join("git-commit-date.txt")) + .unwrap() + .write_all(commit_date().as_bytes()) .unwrap(); } -// Implementation borrowed from rustfmt. Returns a string containing commit hash and commit date -// if it was able to obtain it, otherwise an empty string. -fn commit_info() -> String { - match (commit_description(), commit_date()) { - (Some(hash), Some(date)) => format!("{} {}", hash.trim(), date), - _ => String::new(), - } -} - -fn commit_description() -> Option<String> { - Command::new("git") +fn commit_description() -> String { + let output = Command::new("git") .args(&["describe", "--dirty"]) .output() - .ok() - .and_then(|out| String::from_utf8(out.stdout).ok()) + .expect("Unable to get git commit description"); + ::std::str::from_utf8(&output.stdout) + .unwrap() + .trim() + .to_owned() } -fn commit_date() -> Option<String> { - Command::new("git") +fn commit_date() -> String { + let output = Command::new("git") .args(&["log", "-1", "--date=short", "--pretty=format:%cd"]) .output() - .ok() - .and_then(|out| String::from_utf8(out.stdout).ok()) + .expect("Unable to get git commit date"); + ::std::str::from_utf8(&output.stdout) + .unwrap() + .trim() + .to_owned() } diff --git a/mullvad-daemon/src/bin/problem-report.rs b/mullvad-daemon/src/bin/problem-report.rs index 0365771f14..51c10ca20d 100644 --- a/mullvad-daemon/src/bin/problem-report.rs +++ b/mullvad-daemon/src/bin/problem-report.rs @@ -334,10 +334,11 @@ fn collect_metadata() -> HashMap<String, String> { } fn daemon_version() -> String { - String::from(include_str!(concat!( - env!("OUT_DIR"), - "/git-commit-info.txt" - ))) + format!( + "{} {}", + include_str!(concat!(env!("OUT_DIR"), "/git-commit-desc.txt")), + include_str!(concat!(env!("OUT_DIR"), "/git-commit-date.txt")) + ) } #[cfg(target_os = "linux")] diff --git a/mullvad-daemon/src/cli.rs b/mullvad-daemon/src/cli.rs index 676337bcb3..17af99f266 100644 --- a/mullvad-daemon/src/cli.rs +++ b/mullvad-daemon/src/cli.rs @@ -33,7 +33,10 @@ pub fn get_config() -> Config { fn create_app() -> App<'static, 'static> { App::new(crate_name!()) - .version(crate_version!()) + .version(include_str!(concat!( + env!("OUT_DIR"), + "/git-commit-desc.txt" + ))) .author(crate_authors!()) .about(crate_description!()) .arg( diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs index 561c0c0b52..4249714d47 100644 --- a/mullvad-daemon/src/main.rs +++ b/mullvad-daemon/src/main.rs @@ -803,9 +803,10 @@ fn init_logger(log_level: log::LogLevelFilter, log_file: Option<&PathBuf>) -> Re fn log_version() { info!( - "Starting {} {}", + "Starting {} - {} {}", env!("CARGO_PKG_NAME"), - include_str!(concat!(env!("OUT_DIR"), "/git-commit-info.txt")) + include_str!(concat!(env!("OUT_DIR"), "/git-commit-desc.txt")), + include_str!(concat!(env!("OUT_DIR"), "/git-commit-date.txt")) ) } diff --git a/prepare_release.sh b/prepare_release.sh new file mode 100755 index 0000000000..f75732b228 --- /dev/null +++ b/prepare_release.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +# This script prepares for a release. Run it with the release version as the first argument and it +# will update version numbers, commit and add a signed tag. + +set -eu + +if [[ "$#" != "1" ]]; then + echo "Please give the release version as the first and only argument to this script." + echo "For example: '2018.1-beta3' for a beta release, or '2018.6' for a stable one." + exit 1 +fi +VERSION=$1 + +if [[ $(echo $VERSION | egrep '^[0-9]{4}\.[0-9]+(-(beta|alpha)[0-9]+)?$') == "" ]]; then + echo "Invalid version format. Please specify version as:" + echo "<YEAR>.<NUMBER>[-(beta|alpha)<NUMBER>]" + exit 1 +fi + +if [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]; then + echo "Dirty working directory! Will not accept that for an official release." + exit 1 +fi + +if [[ $(grep $VERSION CHANGELOG.md) == "" ]]; then + echo "It looks like you did not add $VERSION to the changelog?" + echo "Please make sure the changelog is up to date and correct before you proceed." + exit 1 +fi + +echo "Updating version in package.json..." +SEMVER_VERSION=`echo $VERSION | sed -re 's/($|-.*)/.0\1/g'` +sed -i -re "s/\"version\": \"[^\"]+\",/\"version\": \"$SEMVER_VERSION\",/g" package.json + +echo "Commiting package.json change to git..." +git commit -S package.json -m "Updating version in package.json" + +echo "Tagging current git commit with release tag $VERSION..." +git tag -s $VERSION -m $VERSION + + +echo "===================================================" +echo "DONE preparing for a release! Now do the following:" +echo " 1. Push the commit and tag created by this script" +echo " after you have verified they are correct" +echo " $ git push" +echo " $ git push origin $VERSION" +echo " 2. On each platform where you want to create a" +echo " release artifact, check out the tag and build:" +echo " $ git fetch" +echo " $ git checkout $VERSION" +echo " $ ./build.sh" +echo "===================================================" |
