@highstate/mullvad 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/peer/index.js +64 -0
  2. package/package.json +30 -0
@@ -0,0 +1,64 @@
1
+ import { mullvad } from '@highstate/library';
2
+ import { dynamic, forUnit, interpolate } from '@highstate/pulumi';
3
+
4
+ class ServerListProvider {
5
+ async create() {
6
+ const servers = await fetchServers();
7
+ return { id: "all", outs: { servers } };
8
+ }
9
+ async update() {
10
+ return { outs: { servers: await fetchServers() } };
11
+ }
12
+ async read() {
13
+ return { props: { servers: await fetchServers() } };
14
+ }
15
+ }
16
+ class ServerList extends dynamic.Resource {
17
+ constructor(name, args, opts) {
18
+ super(new ServerListProvider(), name, { servers: void 0, ...args }, opts);
19
+ }
20
+ }
21
+ async function fetchServers() {
22
+ const response = await fetch("https://api.mullvad.net/www/relays/all/");
23
+ return await response.json();
24
+ }
25
+
26
+ const { name, args, outputs } = forUnit(mullvad.peer);
27
+ const hostname = args.hostname ?? name;
28
+ const serverList = new ServerList("servers", { now: Date.now() });
29
+ const server = serverList.servers.apply((servers) => {
30
+ const server2 = servers.find((server3) => server3.hostname === hostname);
31
+ if (!server2) {
32
+ throw new Error(`Server not found: ${args.hostname}`);
33
+ }
34
+ if (server2.type !== "wireguard") {
35
+ throw new Error(`Server is not a WireGuard server: ${args.hostname}`);
36
+ }
37
+ return server2;
38
+ });
39
+ const endpoint = server.apply((server2) => {
40
+ switch (args.endpointType) {
41
+ case "ipv4":
42
+ return server2.ipv4_addr_in;
43
+ case "ipv6":
44
+ return server2.ipv6_addr_in;
45
+ default:
46
+ return server2.fqdn;
47
+ }
48
+ });
49
+ var index = outputs({
50
+ peer: {
51
+ name,
52
+ publicKey: server.pubkey,
53
+ endpoint: interpolate`${endpoint}:51820`,
54
+ allowedIps: ["0.0.0.0/0", "::0/0"]
55
+ },
56
+ $status: {
57
+ fqdn: server.fqdn,
58
+ ipv4: server.ipv4_addr_in,
59
+ ipv6: server.ipv6_addr_in,
60
+ publicKey: server.pubkey
61
+ }
62
+ });
63
+
64
+ export { index as default };
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@highstate/mullvad",
3
+ "version": "0.7.1",
4
+ "type": "module",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "exports": {
9
+ "./peer": "./dist/peer/index.js"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "scripts": {
15
+ "build": "pkgroll --tsconfig=tsconfig.build.json"
16
+ },
17
+ "dependencies": {
18
+ "@highstate/k8s": "^0.7.1",
19
+ "@highstate/pulumi": "^0.7.1",
20
+ "@noble/curves": "^1.8.0",
21
+ "@pulumi/kubernetes": "^4.18.0"
22
+ },
23
+ "peerDependencies": {
24
+ "@highstate/library": "workspace:^0.4.4"
25
+ },
26
+ "devDependencies": {
27
+ "pkgroll": "^2.5.1"
28
+ },
29
+ "gitHead": "76c38ce5dbf7a710cf0e6339f52e86358537a99a"
30
+ }