From 6eee10d46d7c60fd2cbead717365743362f2edb7 Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Thu, 17 Mar 2022 19:29:30 +0800
Subject: [PATCH] chore: resolve wintun.dll

---
 scripts/check.mjs    | 42 ++++++++++++++++++++++++++++++++++++++++++
 src-tauri/.gitignore |  2 +-
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/scripts/check.mjs b/scripts/check.mjs
index 74698d8..aaef563 100644
--- a/scripts/check.mjs
+++ b/scripts/check.mjs
@@ -91,6 +91,47 @@ async function resolveSidecar() {
   await fs.remove(tempDir);
 }
 
+/**
+ * only Windows
+ * get the wintun.dll (not required)
+ */
+async function resolveWintun() {
+  const { platform } = process;
+
+  if (platform !== "win32") return;
+
+  const url = "https://www.wintun.net/builds/wintun-0.14.1.zip";
+
+  const tempDir = path.join(cwd, "pre-dev-temp");
+  const tempZip = path.join(tempDir, "wintun.zip");
+
+  const wintunPath = path.join(tempDir, "wintun/bin/amd64/wintun.dll");
+  const targetPath = path.join(cwd, "src-tauri/resources", "wintun.dll");
+
+  if (!FORCE && (await fs.pathExists(targetPath))) return;
+
+  await fs.mkdirp(tempDir);
+
+  if (!(await fs.pathExists(tempZip))) {
+    await downloadFile(url, tempZip);
+  }
+
+  // unzip
+  const zip = new AdmZip(tempZip);
+  zip.extractAllTo(tempDir, true);
+
+  if (!(await fs.pathExists(wintunPath))) {
+    throw new Error(`path not found "${wintunPath}"`);
+  }
+
+  // move wintun.dll to resources
+  await fs.rename(wintunPath, targetPath);
+  // delete temp dir
+  await fs.remove(tempDir);
+
+  console.log(`[INFO]: resolve wintun.dll finished`);
+}
+
 /**
  * get the Country.mmdb (not required)
  */
@@ -123,4 +164,5 @@ async function downloadFile(url, path) {
 
 /// main
 resolveSidecar().catch(console.error);
+resolveWintun().catch(console.error);
 resolveMmdb().catch(console.error);
diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore
index 1412c98..7b128ff 100644
--- a/src-tauri/.gitignore
+++ b/src-tauri/.gitignore
@@ -2,5 +2,5 @@
 # will have compiled files and executables
 /target/
 WixTools
-resources/Country.mmdb
+resources
 sidecar
-- 
GitLab