diff --git a/_config.yml b/_config.yml
index e76e9a43..d1cb9561 100644
--- a/_config.yml
+++ b/_config.yml
@@ -340,6 +340,8 @@ post_process:
- /assets/js/plugins/smooth-scroll.js
- /assets/js/plugins/jquery.auto-redirect.js
- /assets/js/_main.js
+ /assets/js/hmcl-signature-verify.min.js:
+ - /assets/js/hmcl-signature-verify.js
remove_dirs:
- /assets/images/
- /assets/js/plugins/
@@ -350,3 +352,4 @@ post_process:
- /assets/js/theme.js
- /assets/js/settings.js
- /assets/js/main.min.js.map
+ - /assets/js/hmcl-signature-verify.js
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 24900581..c3183b89 100644
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -49,7 +49,7 @@ docs:
url: /changelog/dev.html
- title: 其他
children:
- - title: 验证 HMCL
+ - title: HMCL 校验
url: /verify.html
- title: 用户协议
url: /eula/hmcl.html
diff --git a/_pages/verify.md b/_pages/verify.md
index 623492fe..efc59621 100644
--- a/_pages/verify.md
+++ b/_pages/verify.md
@@ -1,98 +1,40 @@
---
-title: 验证 HMCL 文件
+title: HMCL 校验
permalink: /verify.html
+classes: wide
toc: false
---
-
-
检查 HMCL 文件是否是官方构建。
+检查 HMCL 文件是否是官方构建。
-
-
- 未选择文件
-
-
-
-
+
+
点击并选择文件或将文件拖拽到此处进行校验
+
+
-
+
diff --git a/_plugins/kramdown_enhancer.rb b/_plugins/kramdown_enhancer.rb
index 5ad64746..d1d9810b 100644
--- a/_plugins/kramdown_enhancer.rb
+++ b/_plugins/kramdown_enhancer.rb
@@ -105,6 +105,10 @@ def convert_html_element(el, indent)
if el.value == "a" && el.attr["href"].is_a?(String)
el.attr["href"] = relative_url(el.attr["href"])
el.options[:relative] = true
+ elsif el.value == "script" && el.attr["src"].is_a?(String)
+ puts el.attr["src"]
+ el.attr["src"] = relative_url(el.attr["src"])
+ el.options[:relative] = true
elsif el.value == "img" && el.attr["src"].is_a?(String)
src = el.attr["src"]
el.attr["src"] = relative_url(el.attr["src"])
diff --git a/assets/js/hmcl-signature-verify.js b/assets/js/hmcl-signature-verify.js
index a8ea3b3d..911aecbf 100644
--- a/assets/js/hmcl-signature-verify.js
+++ b/assets/js/hmcl-signature-verify.js
@@ -27,26 +27,53 @@
}
}
- const fileInput = document.getElementById("hmcl-verify-file");
- const resultElement = document.getElementById("hmcl-verify-result");
- const selectedFileElement = document.getElementById("hmcl-verify-selected-file");
- let verificationRequestId = 0;
+ const container = document.getElementById("hmcl-verify");
+ if (!container) return;
+ ["dragenter", "dragover", "dragleave", "drop"].forEach(eventName => {
+ container.addEventListener(eventName, (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ }, false);
+ });
+
+ ["dragenter", "dragover"].forEach(eventName => {
+ container.addEventListener(eventName, () => {
+ container.className = "notice--info";
+ }, false);
+ });
+
+ ["dragleave", "drop"].forEach(eventName => {
+ container.addEventListener(eventName, () => {
+ container.className = "notice";
+ }, false);
+ });
+
+ container.addEventListener("drop", (event) => handleFiles(event.dataTransfer.files), false);
+
+ const fileInput = document.getElementById("hmcl-verify-input");
+ if (!fileInput) return;
+
+ container.addEventListener("click", () => fileInput.click());
+ const resultElement = document.getElementById("hmcl-verify-alert");
+ const selectedFileElement = document.getElementById("hmcl-verify-file");
if (!fileInput || !resultElement) {
return;
}
- fileInput.addEventListener("change", async () => {
+ fileInput.addEventListener("change", async () => handleFiles(fileInput.files));
+
+ let verificationRequestId = 0;
+ async function handleFiles(files) {
const requestId = ++verificationRequestId;
- const file = fileInput.files && fileInput.files[0];
+ const file = files && files[0];
if (!file) {
setSelectedFileName("");
- hideResult();
return;
}
setSelectedFileName(file.name);
- setResult("正在验证,请稍候...");
+ setResult("正在校验中");
try {
await verifyHmclFile(file);
@@ -54,16 +81,16 @@
return;
}
setResult(
- "验证通过,该文件是 HMCL 的官方构建,可以放心使用。",
+ "校验成功,该文件是 HMCL 的官方构建,可以放心使用",
"ok"
);
} catch (error) {
if (!isCurrentVerification(requestId)) {
return;
}
- setResult(`验证失败。\n${formatVerificationError(error)}`, "error");
+ setResult(`校验失败,${formatVerificationError(error)}`, "error");
}
- });
+ }
function isCurrentVerification(requestId) {
return requestId === verificationRequestId;
@@ -359,46 +386,42 @@
function formatVerificationError(error) {
switch (error && error.code) {
case VerificationErrorCode.MISSING_PUBLIC_KEY:
- return "这不是可验证的 HMCL 文件,或者 HMCL 版本过低,无法验证。";
+ return "这不是可验证的 HMCL 文件,或者 HMCL 版本过低,无法验证";
case VerificationErrorCode.MISSING_SIGNATURE:
- return "这是非官方构建,请谨慎甄别其来源。";
+ return "这是非官方构建,请谨慎甄别其来源";
case VerificationErrorCode.INVALID_PUBLIC_KEY:
case VerificationErrorCode.INVALID_SIGNATURE:
case VerificationErrorCode.INVALID_LAUNCHER_HEADER:
- return "该 HMCL 文件可能被篡改或已损坏,请不要使用此文件。你可以从 HMCL 官方网站重新下载 HMCL。";
+ return "该 HMCL 文件可能被篡改或已损坏,请不要使用此文件;你可以从 HMCL 官方网站重新下载 HMCL";
case VerificationErrorCode.INVALID_ZIP:
- return "这个文件不是有效的 HMCL 文件,或文件已经损坏。";
+ return "这个文件不是有效的 HMCL 文件,或文件已经损坏";
case VerificationErrorCode.UNSUPPORTED_ZIP:
- return "暂不支持验证这种文件格式。";
+ return "暂不支持验证这种文件格式";
case VerificationErrorCode.UNSUPPORTED_BROWSER:
- return "当前浏览器不支持读取这个文件,请换用新版 Chrome、Edge 或 Firefox。";
+ return "当前浏览器不支持读取这个文件,请换用新版 Chrome、Edge 或 Firefox";
default:
- return "无法完成验证,请确认你选择的是从官方渠道下载的 HMCL 文件。";
+ return "无法完成验证,请确认你选择的是从官方渠道下载的 HMCL 文件";
}
}
function setResult(message, state) {
resultElement.textContent = message;
- resultElement.hidden = false;
- if (state) {
- resultElement.dataset.state = state;
+ resultElement.style.display = "block";
+ if (state === "ok") {
+ container.className = "notice--success";
+ } else if (state === "error") {
+ container.className = "notice--danger";
} else {
- delete resultElement.dataset.state;
+ container.className = "notice";
}
}
- function hideResult() {
- resultElement.textContent = "";
- resultElement.hidden = true;
- delete resultElement.dataset.state;
- }
-
function setSelectedFileName(fileName) {
if (selectedFileElement) {
selectedFileElement.textContent = fileName || "未选择文件";