CH-J Server Managergestión de servidores a través de SSH
Menú
Fuente publicada

CH-J Server Manager

Busque directorios y archivos para obtener una versión de aplicación específica.

Descargar fuente ZIP
CH-J / Server Manager 339 archivos
core-20261014T184258Z-3fbed0b93fdf Añadido: Fecha no registrada · Construido:
Archivos
index.js Añadido: Fecha no registrada 3,2 KB · 63 líneas
Descargar archivo
1"use strict";
3const api = window.chjPlugin;
4const 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}`)]));
5const bits = { rsa: [2048, 3072, 4096], ecdsa: [256, 384, 521], dsa: [1024], rsa1: [1024] };
6let generationId = null;
8function setStatus(message, error = false) {
9 elements.status.textContent = message;
10 elements.status.classList.toggle("error", error);
13function 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";
24elements.keyType.addEventListener("change", updateType);
25elements.closeButton.addEventListener("click", () => api.close());
26elements.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.checked
38 });
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});
51elements.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-256b19b0e58b4a9223c0a27920ca3db65d2d0b576954a1fb6881b7576eaaf04df98

CH-J Proprietary Software License 1.14 · La fuente se proporciona en el CH-J Proprietary Software License 1.14. Su disponibilidad no cambia los términos de la licencia ni otorga derechos adicionales.

Archivo SHA-2563df08cf5e899262a6ce92d7ec2caf5c42b683f1f2b57055662b845ff7dde67a8