ซอร์สที่เผยแพร่
ดาวน์โหลด ZIP ของซอร์ส
CH-J Server Manager
เรียกดูไดเรกทอรีและไฟล์ของรุ่นแอปพลิเคชันที่ระบุ
CH-J / Server Manager
368 ไฟล์
core-20261017T201717Z-057348c4a70f
วันที่เพิ่ม: ไม่ได้บันทึกวันที่ · วันที่บิลด์:
1
"use strict";3
const api = window.chjPlugin;4
const elements = Object.fromEntries(["pluginVersion", "closeButton", "generatorForm", "keyType", "bitsLabel", "keyBits", "keyFormat", "keyComment", "keyPassphrase", "legacyField", "legacyConfirmed", "saveButton", "status", "result", "privateKey", "privateFormat", "publicKey", "publicFormat", "notice"].map((id) => [id, document.querySelector(`#${id}`)]));5
const bits = { rsa: [2048, 3072, 4096], ecdsa: [256, 384, 521], dsa: [1024], rsa1: [1024] };6
let generationId = null;8
function setStatus(message, error = false) {9
elements.status.textContent = message;10
elements.status.classList.toggle("error", error);11
}13
function updateType() {14
const type = elements.keyType.value;15
const choices = bits[type] || [];16
elements.keyBits.replaceChildren(...choices.map((value) => new Option(String(value), String(value), value === (type === "rsa" ? 4096 : choices[0]), value === (type === "rsa" ? 4096 : choices[0]))));17
elements.bitsLabel.hidden = choices.length === 0;18
elements.legacyField.hidden = type !== "dsa" && type !== "rsa1";19
if (elements.legacyField.hidden) elements.legacyConfirmed.checked = false;20
if (type === "rsa1") elements.keyFormat.value = "ppk";21
elements.keyFormat.disabled = type === "rsa1";22
}24
elements.keyType.addEventListener("change", updateType);25
elements.closeButton.addEventListener("click", () => api.close());26
elements.generatorForm.addEventListener("submit", async (event) => {27
event.preventDefault();28
setStatus("Generuji klíčový pár…");29
generationId = null; elements.saveButton.disabled = true;30
try {31
const generated = await api.keys.generate({32
type: elements.keyType.value,33
bits: Number(elements.keyBits.value || 0),34
comment: elements.keyComment.value,35
passphrase: elements.keyPassphrase.value,36
privateKeyFormat: elements.keyFormat.value,37
legacyConfirmed: elements.legacyConfirmed.checked38
});39
generationId = generated.generationId;40
elements.privateKey.value = generated.privateKey;41
elements.privateFormat.textContent = { openssh: "OpenSSH", pem: "PEM / PKCS#8", ppk: "PuTTY PPK v2" }[generated.privateKeyFormat] || generated.privateKeyFormat;42
elements.publicKey.value = generated.publicKey;43
elements.publicFormat.textContent = generated.publicKeyOpenSsh ? "OpenSSH" : "SPKI PEM";44
elements.notice.hidden = !generated.notice;45
elements.notice.textContent = generated.notice;46
elements.result.hidden = false;47
elements.saveButton.disabled = false;48
setStatus(`${generated.type}${generated.bits ? ` / ${generated.bits}` : ""} bylo vygenerováno.`);49
} catch (error) { setStatus(error?.message || String(error), true); }50
});51
elements.saveButton.addEventListener("click", async () => {52
if (!generationId) return;53
try {54
const result = await api.keys.save(generationId);55
if (!result.canceled) setStatus(`Uloženo: ${result.privatePath} a ${result.publicPath}`);56
} catch (error) { setStatus(error?.message || String(error), true); }57
});59
(async () => {60
const info = await api.getInfo();61
elements.pluginVersion.textContent = `${info.name} v${info.version} · ${info.publisher}`;62
updateType();63
})().catch((error) => setStatus(error?.message || String(error), true));SHA-256
b19b0e58b4a9223c0a27920ca3db65d2d0b576954a1fb6881b7576eaaf04df98CH-J Proprietary Software License 1.14 · ซอร์สโค้ดนี้ให้ไว้ภายใต้ CH-J Proprietary Software License 1.14 การเปิดให้เข้าถึงไม่ได้เปลี่ยนแปลงเงื่อนไขของสัญญาอนุญาตหรือให้สิทธิ์เพิ่มเติม
SHA-256 ของไฟล์บีบอัด
cf4455b698f0f28e456a37b1834976a0194d8486acb7101052d59a838745cca3